skyeye模拟Linux硬件平台

在这个过程中,看了网上许多的介绍,但是由于编译的东西比较多,skyeye,arm-elf-tools和uClinux版本又多。如果有版本不一样,或者你的操作系统和作者的不一样的话,操作步骤就会有很多不一样的地方。所以尽量和作者使用一个版本的东西,再加上自己的细心琢磨才有可能成功。去年自己对linux的一些基本命令都搞不懂就开始编译,结果走了很多的弯路,浪费了好多时间,希望初学者先把linux的基本命令学习一下。本文仅供参考。

一、环境介绍

操作系统:Red Hat 9.0
gcc version 3.2.2 20030222(Red Hat Linux 3.2.2-5)
skyeye-1.2-RC8.tar.bz2
arm-elf-tools-20030314.sh
uClinux-dist-20030909.tar.gz

操作系统中最好把GTK装上,否则有可能在编译的时候通不过。在“添加删除程序”中可找到这个自带的安装包。

二、安装skyeye

安装目录可自己选,我的装在/zyt/skyeye目录下
1.下载skyeye-1.2-RC8-3.tar.bz2
2.解压:tar jxvf  skyeye-1.2-RC8-3.tar.bz2,生成skyeye-v1目录。
3.进入skyeye-v1目录,make NO_BFD=1。在binary目录下安装了所需要得文件
4.binary/skyeye -h,可以查看skyeye帮助及支持的芯片

三、安装交叉编译器

1.输入如下命令
#chmod a+x arm-elf-tools-20030314.sh
#./arm-elf-tools-20030314.sh
2.应该是安装到了/usr/local/arm-elf下。自动生成arm-elf目录

四、编译安装uClinux

解压编译
#tar -zxvf uClinux-dist-20030909.tar.gz
#cd uClinux-dist
#make menuconfig
根据网上资料选择
Vendor/Product: GDB/ARMulator
Kernel Version: linux-2.4.x
Libc Version: uC-libc
保存退出
#make dep
#make
在linux-2.4.x目录下生成了linux文件

五、skyeye运行uClinux

1.首先在uclinux-dist目录下添加文件skyeye.conf
内容说明模拟使用的平台,可参考skyeye的说明文件,摘抄其中的部分
例如
cpu :arm7tdmi
mach: at91
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000
mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=images/romfs.img
mem_bank: map=M, type=RW, addr=0x02000000, size=0x00400000
mem_bank: map=M, type=RW, addr=0x02400000, size=0x00008000
mem_bank: map=M, type=RW, addr=0x04000000, size=0x00400000
mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000
lcd: state=on

2.通过如下命令看看在uClinux-dist目录下的skyeye.conf文件是否与上面的内容一致:
# more skyeye.conf

3.然后是建立文件系统的联接,需要在目录uClinux-dist目录下执行如下命令:
#ln -s images/romfs.img boot.rom
这主要是与skyeye.conf中的内容保持一致,大家可注意skyeye.conf中的第5行。

4.在uClinux-dist目录下,
# /zyt/skyeye/skyeye-v1/binary/skyeye -e linux-2.4.x/linux

这样uClinux就可以运行起来了


这里重点记录我在按照手册内容进行操作过程中遇到的问题。

问题1:在编译安装过程中make出错,错误信息如下:

****************************

/usr/bin/ld: cannot find -lncurses

collect2: ld returned 1 exit status

make[2]: *** [skyeye] 错误 1

make[2]:正在离开目录 `/home/magc/skyeye129/skyeye-1.2.9_rc1'

make[1]: *** [all-recursive] 错误 1

make[1]:正在离开目录 `/home/magc/skyeye129/skyeye-1.2.9_rc1'

make: *** [all] 错误 2

****************************

问题分析解决:

此问题是由于缺少ncurses的开发库,通过新立得工具搜索ncurses,找到开发版的libncurses-dev的,选中安装即可。安装后

注:类似/usr/bin/ld: cannot find -xxxx的错误有很多首先我们可以最简单的判断一下:

这类情况一般是由于缺乏某某库文件又或者可能是由于已存在的库问题版本不对造成的

一般都是解决的办法就是安装缺乏的devel包就可以解决

问题2:在运行Skyeye自带的小测试实例arm_hello时,遇到问题,在运行start命令行,启动出错,错误信息如下:

*******************************

(skyeye)start                                                                   

arch: arm                                                                       

cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0                                

In do_mach_option, mach info: name at91, mach_init addr 0xb79bfe40       

uart_mod:3, desc_in:, desc_out:, converter:

In create_uart_console                     

Child:: No such file or directory  

*******************************

 问题分析解决:查看skyeye.conf内容,发现其中的"uart=term "应该有问题,将它修改成"uart=stdio""uart=xterm"后,重新运行,正常。

对于那些想进行嵌入式系统软件开发和学习,或者想研究嵌入式Linux等操作系统和一些底层系统软件(如TCP/IP等)的研究和开发人员来说,可能存在如下几方面的问题:(1)经常苦于经费不足,缺少足够的硬件开发板和完善的软件开发环境,相关的书籍对一些最新软件的分析还不够全面,无法深入研究和开发嵌入式软件。(2)高层次的软件设计和开发一般不用太考虑底层硬件的实现细节,如果直接处于一个具体的硬件环境下,在开发和研究中可能会陷入硬件的具体细节中不能自拔,而不能把精力放到高层次的软件设计和开发上。(3)如果硬件开发环境不太稳定(这种情况经常见到),且对具体的硬件不是很了解,则可能在排除问题上花费大量的不必要的时间。(4)如果你想自己尝试设计一个操作系统,则先在一个提供源码级调试的软件仿真器上进行开发,可能会大大提高你的开发进度。<br><br>对于想了解、学习一般操作系统的实现原理,Linux/μCLinux操作系统或TCP/IP等系统级软件的实现的人员,目前一般采用的方法是看书和读源代码,这是一种静态的学习方法,效率较低,比较枯燥,缺少亲自实践的感觉。要想深入分析和开发软件,就要动手编程,不能只是看看书,读读代码,只有通过亲手实践才能够掌握软件设计的核心内容。上面所指出的问题和需求促使SkyEye项目的诞生。 <br><br>3.SkyEye的目标和意义 <br>SkyEye是一个开源软件(OpenSource Software)项目,中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定"仿真"和"模拟"的意思基本相同);可在SkyEye上运行μCLinux以及μC/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。<br><br>3.SkyEye的目标和意义 <br>SkyEye是一个开源软件(OpenSource Software)项目,中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定"仿真"和"模拟"的意思基本相同);可在SkyEye上运行μCLinux以及μC/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。<br><br>纯软件的模拟器有许多种,如模拟一个芯片时序逻辑的模拟器、只模拟CPU指令的模拟器、模拟整个硬件开发板模拟器、模拟一个PDA的模拟器等。存在一些纯软件的仿真器或模拟器,如Stanford大学的SimOS模拟器,它仿真的是MIPS系列CPU和相关外设,可以在其上运行SGI公司的Irix操作系统和软件,目前基本上停止了进一步的开发;PSIM是一个仿真PowerPC指令集的模拟器,目前只支持简单的命令行应用程序;xcopilot是一个PDA模拟器,它是由Greg Hewgill出于个人喜好编写的,它仿真的是M68K CPU,通过它可以给基于PalmOS的软件开发者提供一个模拟开发环境。Bochs是一个仿真x86 CPU的开源项目,目前还支持AMD64 CPU,在它上面可以运行Linux操作系统。其它一些商业的仿真软件如vmware和virtualPC可以仿真一个真实的x86计算机,而Virtutech Simics仿真器可以仿真多种CPU和硬件,功能强大,可用于硬件和系统软件的评测。<br><br>SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。由于SkyEye的目标不是验证硬件逻辑,而是协助开发、调试和学习系统软件,所以在实现上SkyEye与真实的硬件环境相比还是有一定差别的。SkyEye在时钟节拍的时序上不保证与硬件完全相同,对软件透明的一些硬件仿真进行了一定的简化。这样带来的好处是SkyEye的执行效率更高。SkyEye的推出具有下面三方面的意义:<br><br>通过SkyEye仿真集成环境可以很方便地进入到嵌入式系统软件学习和开发的广阔天地中。尤其对于缺少嵌入式硬件开发环境和软件开发环境的用户来说,它将是一个非常有效的学习工具和开发手段,因为SkyEye的整个软件系统都是Open Source的,且基于GPL协议(μCOS-II除外)。因此,如果要学习Linux操作系统或者进行嵌入式系统开发,但苦于没有硬件支持,SkyEye仿真环境软件是一个很好的选择! <br>如果想研究与具体硬件无关的系统软件(如TCP/IP协议栈等
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值