����ϣ��ѧϰ ARM ����ͬѧ���ԣ� ���� ARM ��������а���ʵ��������һ����Ч�ķ������������� ARM ��������Ҫһ�ʷ��ã�����ÿ�β��Զ���Ҫ���ӿ����壬�Ƚ��鷳���������һ�� ARM ģ����——SkyEye��ͨ�� SkyEye ���ǿ���ֱ����һ̨ PC ����� ARM ������Ŀ����͵����ˣ������� ARM ����������ƣ����Dz�����
����������ʹ�ã�
1������ SkyEye �����°棨https://sourceforge.net/projects/skyeye/���������õ��� skyeye-1.3.4_rc1.tar.gz��ͬʱΪ�˺����ʵ�飬��Ҫ���� testsuite������ skyeye �IJ����ļ�������İ汾�� skyeye-testsuite-1.3.4�������� ArmLinux��
2����װ SkyEye��
$ tar zxvf skyeye-1.3.4_rc1.tar.gz
$ cd skyeye
���� INSTALL �ļ���˵�IJ��裺
./configure
make lib
make
sudo make install
sudo make install_lib
ע�⣬�� make ʱ���ܻ�ȱ�����ļ���apt-get install �Ϳ����ˣ������������������������������ǣ�Python-dev �� llvm û�а�װ����������ܼ�
$ sudo apt-get install python-dev
$ sudo apt-get install llvm
���� SkyEye ���㰲װ���ˡ�
3�����ӻ���������
Ĭ�� SkyEye �ǰ�װ�� /opt/ �µģ����Ϊ�˷��㣬�����ڻ��������������·�����룬����д�� .bashrc �ļ��У�������
$ vi ~/.bashrc
���룺
#SkyEye 1.3.4
export PATH=/opt/skyeye/bin:$PATH
֮��ע���ٵ�¼��ִ�� source .bashrc �Ϳ���ʹ����������Ч�ˡ�
4������ arm_hello ���Գ���
SkyEye ��װ�ú���� /opt/skyeye/testsuite ����һ�� arm_hello �IJ��Գ������·�ʽ���У�
$ cd /opt/skyeye/testsuite/arm_hello
$ skyeye -e arm_hello
ע�⣺skyeye Ҫ����һ������ʱ����Ҫ����������Ŀ¼���Ϊ skyeye Ҫ��ȡ�������� skyeye.conf �����ļ������Ե�һ������Ҫ�л��� /opt/skyeye/testsuite/arm_hello Ŀ¼�¡�
��ʱ���ǻ���� skyeye ����ģʽ������ start �� arm_hello ����ʼ���У��ᵯ��һ��“connecting to Ubuntu:xxx”�������Ĵ��ڡ�
5��ȷ�� arm_hello �������С�
�� skyeye ���������� run ��ʼ���У���ʱ���ڻͣ�����“helloworld”��˵�� arm_hello �Ѿ��ɹ������ˣ�
6��arm_hello ���������
�� skyeye ���������� stop ֹͣ���У����� quit �˳�skyeye������ help �鿴������
��Ȼ������ֻ�ǰ�װ���� SkyEye�����ǵ�Ŀ������ SysEye ��ģ�� ARM Linux����ô������������������ SkyEye ������ Linux���ͺ�����ʵ�� ARM ��������һ����
1����ѹ testsuite �����ļ���
$ tar zxvf skyeye-testsuite-1.3.4_rc1.tar.gz
���е� linux Ŀ¼��������Ҫ��ֲ�������ϵ� amrlinux�����ν��룺s3c2410 –>s3c2410x-2.6.36���������ļ���vmlinux �� Linux �ں˾���skyeye.conf �������ļ���initrd.img ����ʱ���ļ�ϵͳ�������� /opt/skyeye/testsuite ���½�һ��Ŀ¼��Ȼ�� copy ������
$ sudo mkdir /opt/skyeye/testsuite/armlinux
$ cd linux/s3c2410/s3c2410x-2.6.36
$ sudo copy * /opt/skyeye/testsuite/armlinux
2������ vmlinux��
$ cd /opt/skyeye/testsuite/armlinux
$ skyeye -e vmlinux
���� skyeye ����ģʽ������ start ���ڴ��ڡ�
������ִ����һ��ʱ������failed to setup_module (name:net, type:cs8900a)���Ұ� skyeye.conf ��� net ��һ��ע�͵��ˣ������ˡ���
�������û�д����� uart:mod=stdio Ϊ uart:mod=term��Ȼ�������ԡ�
3������ Linux��
�� skyeye ���������� run ����Linux����Ļ�漴�����������Ϣ�������ٶȺ�����
����ͼ��
�������Ǽ��������ʹ�� SkyEye�����ҳɹ������˼��е� arm_hello �������������� arm7 �ģ���������Ҫ�� SkyEye ģ�� s3c2410��arm920T�����������ǿ�ʼ SkyEye �ĵڶ����֡�
1�������� /opt/skyeye/testsuite �½��� myhello Ŀ¼��
$ mkdir /opt/skyeye/testsuite/myhello
2������ myhello.c �ļ���
$ cd /opt/skyeye/testsuite/myhello
$ vi myhello.c
�����������ݣ�
#define INTERVAL 100000
void myhello(void)
{
long * addr = (long *)0x50000020;
int timeout = 0;
while(1) {
timeout = 0;
while(++timeout <= INTERVAL);
*addr = 'a';
}
}
��ַ 0x50000020 ���� UART ��ͨ�� 0��UTXH0���ķ��ͻ��壬������д�������ַ�ͻ��Զ����ͳ�ȥ����Ȼ��ģ�����У����͵�Ŀ���ַ�������ǵ���Ļ����
3�����������롣
myhello.c д����֮�����ǻ�Ҫ��һ�� s3c2410 ���������룬��δ����� s3c2410 һ�ϵ�֮��Ϳ�ʼִ�У���������������У�����ת������д�� myhello.c �������� start.S �ļ���
$ vi start.S
�����������ݣ�
.text
.align 4
.global _start
_start:
ldr sp, =1024*4
bl myhello
halt:
b halt
������κܼ�����������һ�� _start ��ǣ���������������õ�����Ϊ�������ڵ�ַ������ C ���ӵ�Ψһ�����һ���������ö�ջ���������ǰ� sp ָ�� 4k ������Ȼ����ת�����ǵ� c ����myhello ��
4����д���ӽű���
���ӵ�˳������� start.S �� myhello.c���� myhello.lds �ļ���
$ vi myhello.lds
�����������ݣ�
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
.text :
{
start.o
myhello.o
*(.rodata)
}
. = ALIGN(8192);
.data : {*(.data)}
.bss : {*(.bss)}
}
��ʾ��� arm ��ʽ���ڶ����ʾ��ڵ��� _start ��ǣ����ǵ�3�����Ǹ� _start ��ǣ�Ȼ���� 0x00000000 ���Ȳ��� start.o��Ȼ����� myhello.o ��
5����д Makefile �ļ���
$ vi Makefile
�����������ݣ�
CC=arm-linux-gcc
LD=arm-linux-ld
CFLAGS= -c -g -march=armv6 -mtune=arm920t
LDFLAGS= -N -p -X -Thello.lds
myhello: start.o myhello.o
$(LD) $(LDFLAGS) start.o myhello.o -o myhello
arm-linux-objdump -xS myhello > myhello.s
arm-linux-readelf -a myhello > myhello.r
arm-linux-nm myhello > myhello.n
start.o: start.S
$(CC) $(CFLAGS) start.S
myhello.o: myhello.c
$(CC) $(CFLAGS) myhello.c
clean:
rm -rf *.o myhello *.r *.n *.s
arm-linux-objdump -xS myhello > myhello.s
arm-linux-readelf -a myhello > myhello.r
arm-linux-nm myhello > myhello.n
6��������ǻ���Ҫһ�� skyeye �����ļ���
$ vi skyeye.conf
�����������ݣ�
#skyeye config file
arch:arm
cpu: arm920t
mach: s3c2410x
# boot
mem_bank: map=M, type=RW, addr=0x00000000, size=0x04000000, boot=yes
# physical memory
mem_bank: map=M, type=RW, addr=0x30000000, size=0x02000000
# all peripherals I/O mapping area
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000
uart:mod=term
#log: logon=0, logfile=./sk1.log, start=0, end=200000
7�����롣
$ cd /opt/skyeye/testsuite/myhello
$ make
8�����ԡ�
$ cd /opt/skyeye/testsuite/myhello
$ skyeye -e myhello
�� skyeye ����ģʽ�����룺
start
run
���ǻᷢ������������ַ�“a”����ɣ�
��PS�����ѽ��顿Դ����������ֵ����ȶ�ĵط�:
1) Makefile ��3��4��, ����Ϊ:
CFLAGS= -c -g -march=armv4 -mtune=arm920t
LDFLAGS= -N -p -X -Tmyhello.lds
2) skyeye.config ��15��, ����Ϊ:
uart:mod=stdio
�������ø��µ�ַ��//m.ajphoenix.com/linux/29218.html