鉴于最近正在学习Linux嵌入式,顺便之前有用过skyeye这个模拟器,所以决定在Fedora13上安装skyeye并将其用来模拟自己裁减和编译过的ARM嵌入式Linux内核。模拟成功之后再将内核烧写至开发板做进一步的测试。
一、环境
系统:Fedora13 skyeye版本:1.2.8
之所以选择1.2.8这个版本,是因为该版本相对而言较为稳定。虽然编译时也有错误,但最新的1.3.1版本有几个错误暂时还未找到合适的解决方案,下面会提到两个版本的不同错误。
二、准备工作
首先当然得有一个Linux系统,当然window也可以,不过需要安装Cygwin,这里不做讨论。发行版其实没什么限制,适合自己就行。以前喜欢折腾,用的Arch。现在还是觉得Fedora的环境比较全,图个方便。
然后,从http://sourceforge.net/projects/skyeye/files/上下载1.2.8版本的skyeye,testsuite依据个人需要(建议下载,刚开始使用的时候可以从里面的示例出发,了解skyeye的基本用法)
三、安装
将skyeye-1.2.8_rc1.tar.gz解压:tar zxvf skyeye-1.2.8_rc1.tar.gz
定位到目录下:cd skyeye-1.2.8_rc1
执行: ./configure (--perfix=/your_dir 可以指定你的安装目录,1.2.8默认安装在/usr/bin下,其lib和头文件都在/usr的响应文件夹下。具体的配置这里就不做详细介绍了)
开始编译: make
检查环境 :make check (这里检查会出错,不用管它,继续)
安装: sudo make install (这里需要用管理员权限,因为其是写到/usr目录下)
过一段时间后会提示错误,类似: /bin/sh: ../mkinstalldirs: not found。这是因为1.2.8在其third-party缺少mkinstalldirs文件,这个文件在1.2.9极其以后的版本中有提供,可以直接复制过来用。当然也可以自己新建一个文件
vim skyeye-1.2.8_rc1/third-party/mkinstalldirs
编辑完成后保存并退出(:wq)
然后再次执行sudo make install
skyeye安装完成。
四、测试
解压skyeye-testsuite-1.3.1_rc1.tar.gz,这里选择1.3.1的测试套件,因为其支持的处理器有所增加
可以找一个带LCD的测试实例来验证skyeye的安装。
找到套件下的/linux/ep7312/ep7312_with_framebuffer_touchscreen_minigui目录
执行: skyeye -e vmlinux -c skyeye.conf (-e为加载内核,-c为加载配置文件)
闪过一堆信息之后,可以看到ArmLinux的标志。
然后在模拟终端下输入: /bin/same/same
一段时间后可以看见一个模拟的LCD。到此skyeye安装模拟成功!
五、其他版本安装
对于1.3.1的版本,在./configure的时候一定要使用root权限,不然之后无法make lib。具体安装过程可以看其目录下的INSTALL文件。还有对于该版本在fedora13下make时的错误,暂时的解决办法是将utils/uart_console目录下的uart_console.c文件以下几行注释掉:
否则会出现错误(具体的错误信息暂时忘记了)。因为1.2.8以后的版本中模拟终端都是用的xterm,这个文件就是跟这个模拟终端有关,具体注释掉之后会有什么问题,暂时还没发现,有待于后面继续研究。
六、用skyeye.conf配置文档简介
skyeye.con觉定了你想模拟的具体嵌入式环境
cpu: 指定CPU类型,如arm7tdmi,arm720t等
mach: 开发板类型,如at91, ep7312
mem_bank: 内存块
map=M 指定为rom/ram, map=I 指定为IO空间
type=RW 可读写,type=R 只读
addr=0x00000000 内存块开始地址
size=0x10000000 内存块大小
files=romfs.img 文件系统映象文件
net: 网络配置
state=on 模拟NIC,等于off则不模拟
mac=0:4:3:2:1:f 指定MAC地址
ethmod=tuntap/vnet 使用虚拟驱动
hostip= 指定ip地址
例如:net: state = on, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1
uart: 串口支持
fd_in= 指定输入文件
fd_out= 指定输出文件
例如:uart: fd_in=/dev/ttyS0, fd_out=/dev/ttyS1
则你可以使用minicon来监听COM1口来进行数据交换
LCD:LCD模拟
state = on/off 打开或者关闭LCD模拟
具体的配置文件sample可以去测试套件下查看。
七、使用skyeye模拟s3c2440平台
该项本人也在试验中,之前编译的一个zImage可以在Arm机上运行,但是用skyeye测试一直会死在内核开始地址处,现在正寻找解决方案中,估计还是自己的conf文件配置有误。等模拟成功后再做相关补充。