您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > ARM 开发 学习使用 SkyEye仿真
学习使用SkyEye仿真SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具,这样就可以在没有硬件条件下来进行嵌入式系统的开发。以下操作均在FedoraCore1.0里通过。文档摘要:1、什么是SkyEye?2、SkyEye可以做什么事情?3、安装SkyEye4、安装arm-elf交叉编译器5、测试你的arm-elf-gcc编译器6、执行你的hello程序7、编译并运行uClinux-dist-20030909.tar.gz8、加入网络功能9、安装完成SkyEye后,下一步将做什学习使用SkyEye仿真SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具,这样就可以在没有硬件条件下来进行嵌入式系统的开发。以下操作均在FedoraCore1.0里通过。文档摘要:1、什么是SkyEye?2、SkyEye可以做什么事情?3、安装SkyEye4、安装arm-elf交叉编译器5、测试你的arm-elf-gcc编译器6、执行你的hello程序7、编译并运行uClinux-dist-20030909.tar.gz8、加入网络功能9、安装完成SkyEye后,下一步将做什么?1、什么是SkyEye?SkyEye是开源软件的一个项目,SkyEye的目标是在Linux和Windows操作系统里提供一个完全的仿真环境。SkyEye仿真环境相当于一个嵌入式计算机系统,你可以在SkyEye里运行一些嵌入式Linux操作系统,如ARMLinux,uClinux,uc/OS-II(ucos-ii)等,并能分析和调试它们的源代码。如果你想知道关于SkyEye和嵌入式系统更详细的信息,请访问下面的站点:通过SkyEye能仿真下面的硬件:CPU核心:ARM7TDMI,ARM720T,ARM9,StrongARM,XScaleCPU:AtmelAT91/X40,CirrusCIRRUSLOGICEP7312,IntelSA1100/SA1110,IntelXScalePXA250/255,CS89712,samsung4510B,samsung44B0(还不全)内存:RAM,ROM,Flash周边设备:Timer,UART,ne2k网络芯片,LCD,触摸屏等目前能在SkyEye上运行下面的操作系统和系统软件:uC/OSII-2.5.x(支持网络)uClinux(基于Linux2.4.x内核,支持网络)ARMLinux2.4.x/2.6.xlwIPonuC/OSII基于uC/OSII,uClinux,ARMLinux的应用程序2.SkyEye可以做什么事情?1.通过SkyEye可以帮助促进嵌入式系统的学习,在不需要额外硬件的情况下学习和分析uclinux操作系统和其它嵌入式操作系统,如ucosII等。2.SkyEye可用于嵌入式系统的教学。3.希望通过skyeye促进操作系统的研究,如ucosII,uclinux+RTAI,uclinux2.5.x等。4.可以基于SkyEye进行仿真特定硬件模块的研究。5.SkyEye可以作为嵌入式集成开发环境开发嵌入式系统(当然需要对SkyEye做大量的工作)。注:引自陈渝《SkyEyeProjectFAQ》3、安装SkyEye到下载skyeye-0.7.0.tar.bz2包:tarjxvfskyeye-v0.7.0.tar.bz2进入解压后的skyeye目录,如果SkyEye的版本低于0.6.0,则运行下面的命令:./configure--target=arm-elf--prefix=/usr/local--without-gtk-prefix--without-gtk-exec-prefix--disable-gtktest如果SkyEye的版本高于0.6.0,则运行下面的命令:./configure--target=arm-elf--prefix=/usr/local接下来执行:makemakeinstall安装完成后执行skyeye注意:a.如果你使用的是MandrakeLinux发行版,那么你在编译SkyEye时遇到错误,并且错误与readline,ncurse,termcap等有关,你可以试试下面的方法:ln-s/usr/include/ncurses/termcap.h/usr/local/include/termcap.h接着再make和makeinstall看能否成功!b.如果你的Linux发行版是DebianLinux,那么不要使用gcc2.95或是gcc3.0,请使用gcc3.2+c.gcc的版本要在2.96或以上d.如果SkyEye的版本大于0.6.0,那么使用LCD仿真需要在Linux系统里安装GTK软件。4、安装arm-elf交叉编译器下载arm-elf-tools-20030314.sh或到执行:chmoda+xarm-elf-tools-20030314.sh然后:./arm-elf-tools-20030314.shls/usr/local/bin/你应能看到以arm-elf开头的可执行文件,其中arm-elf-gcc就是用来编译你目标平台的编译器的,当然还有一些小工具,后面将一一讲来。5、测试你的arm-elf-gcc编译器先写一个小程序hello.cPHP源码:#includestdio.hintmain(void){inti;for(i=0;i6;i++){printf(i=%d,i);printf(Hello,embeddedlinux!\n);}return0;}然后执行:arm-elf-gcc-Wl,-elf2flt-ohellohello.c-elf2flt参数是将elf文件格式转为flat文件格式,这个工具是在你安装交叉编译器产生的。或者你可以写个Makefile文件,执行:make这里是我的Makefile文件,仅供参考:PHP源码:#beginCC=arm-elf-gccCFLAGS=-D__PIC__-fpic-msingle-pic-base-O2-pipe-Wall-gLDFLAGS/FONT=-Wl,-elf2fltLIBS=OBJS=hello.oall:hellohello:$(OBJS)$(CC)$(CFLAGS)$(LDFLAGS)-ohello$(OBJS)$(LIBS)clean:rm-rf*.o*.elf*.gdbhello#end如果编译通过,就会产生hello可执行文件。用下面的命令:filehello你会发现,它是BFLT(binaryFLAT),你目标平台所支持的文件格式。6、执行你的hello程序这里,我们将借助genromfs这个小工具来完成测试,这个工具就是你在安装交叉编译器时产生的,你可以直接使用它。到包:tarjxvfskyeye-binary-testutils-1.0.4.tar.bz2cdtestsuits/at91/uclinux2(当然你还可以用别的)mkdirromfs(建一个目录,后面用)mount-oloopboot.rom/mnt/xxxcp-r/mnt/xxx/*romfs另外,把你编译好的可执行程序拷贝到/romfs/bin目录里,这里就是hello了!genromfs-fboot.rom-dromfs/注:可以用genromf-h来获得帮助!OK!执行下面的命令:skyeyelinux(skyeye)targetsim(skyeye)load(skyeye)runkernelstart.....很熟悉了吧。。。cd/binhello可以看到结果了吗?其实到了这一步,你就可以开发自己的程序了!7、编译并运行uClinux-dist-20030909.tar.gz到或到下载uClinux-dist-20030909.tar.gz假设把它下载到/usr/src/目录下,然后依次执行下面的命令:tarzxvfuClinux-dist-20030909.tar.gzcduClinux-dist/在图形方式下可用命令makexconfig或在命令行方式下用命令makemenuconfigvendor/product中选择GDB/ARMulatorkernel版本选择2.4然后saveandexit运行下面这两条命:makedepmake此时在/usr/src/uClinux-dist/linux-2.4.x目录下会生成可执行文件linux在/usr/src/uClinux-dist/images/会生成romfs.img等文件在uClinux-dist目录下建立仿真AT91的skyeye配置文件skyeye.conf,内容如下:cpu:arm7tdmimach:at91mem_bank:map=M,type=RW,addr=0x00000000,size=0x00004000mem_bank:map=M,type=RW,addr=0x01000000,size=0x00400000mem_bank:map=M,type=R,addr=0x01400000,size=0x00400000,file=images/romfs.imgmem_bank:map=M,type=RW,addr=0x02000000,size=0x00400000mem_bank:map=M,type=RW,addr=0x02400000,size=0x00008000mem_bank:map=M,type=RW,addr=0x04000000,size=0x00400000mem_bank:map=I,type=RW,addr=0xf0000000,size=0x10000000这个时候就可以用skyeye来调试运行kernel了,在/usr/src/uClinux-dist执行如下命令:skyeyelinux-2.4.x/linux(skyeye)targetsim(skyeye)load(skyeye)runkernelstart.....注意:要在skyeye.conf所在目录下执行skyeyelinux-2.4.x/linux8、加入网络功能a.用root用户进行操作。b.你要看你的/lib/modules/'uname-r'/kernel/drivers/net/目录里有没有tun.o如果没有的话你就需要编译你的linux内核来获得tun.o了。c.(1)运行tun设备模块:#insmod/lib/modules/'uname-r'/kernel/drivers/net/tun.o如果你没有该设备,那你就要用下面的命令来创建它:#mkdir/dev/net#mknod/dev/net/tunc10200(2)运行vnet(虚拟集线器)设备模块(这一步不是必需的):获取vnet的源码,然后创建设备:#mknod/dev/net/vnetc10201#chmod666/dev/net/vnet创建vnet.o#makevnet.o插入模块vnet.o#insmodvnet.o进入test目录,用test来测度vnet.o#cdtest#make#./testvnet1d.配置skyeye.conf文件cpu:arm7tdmimach:at91mem_bank:map=M,type=RW,addr=
本文标题:ARM 开发 学习使用 SkyEye仿真
链接地址:https://www.777doc.com/doc-3293295 .html