����Linux�Ż�
Linux����

ʹ��SkyEyeģ��ARM Linux

����ʱ��:2017-03-16 10:15:28��Դ:blog.csdn.net/lu_embedded����:�����׶�
����ϣ��ѧϰ 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 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