全部博文(33)
分类: LINUX
2007-10-12 16:13:02
SkyEye模拟的硬件配置和模拟执行行为由配置文件skyeye.conf中的选项确定。根据选项的功能,skyeye.conf的选项分为硬件配置选项和模拟执行选项。根据参数的个数,skyeye.conf的选项主要由两种组成:
目前skyeye.conf的配置定义如下:
例如:
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=./boot.rom
mem_bank: map=M, type=RW, addr=0x10000000, size=0x00000800, file=./loader.bin,boot=yes
例如:
net: state=on, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1
格式:
log: logon=0, logfile=/tmp/sk1.log, start=100000, end=200000, length=100
SkyEye目标模拟模块模拟的硬件逻辑结构图如图 0-1所示。
目前SkyEye在Linux操作系统下运行得很好, SkyEye通过MingW或cywgin软件也可以在Windows环境中运行。
下面我们以在RedHat 9.0环境的SkyEye安装为例:
首先需要从解开skyeye-x.x.x.src.tar.bz2软件包(x.x.x代表SkyEye的版本号)开始,按照软件包中的SkyEye.README或README文件中介绍的步骤进行(下面命令中的"#"是shell提示符,用户不用输入):
(1) 解压源码包(假定skyeye-x.x.x.src.tar.bz2放在本机的"/usr/src"目录下),会在当前目录生成一个skyeye的目录 #cd /usr/src
# tar xjvf skyeye-x.x.x.src.tar.bz2
(2) 进入解压SkyEye目录,配置SkyEye
#cd 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,则带有LCD仿真支持。为了增加对LCD仿真的支持,则运行如下命令: # ./configure --target=arm-elf --prefix=/usr/local
(3) 然后是编译和安装(正确执行完下面的指令且命令正常结束后,系统中的/usr/local/bin/skyeye 执行程序就是安装好的SkyEye软件。)
# make
# make install
在编译安装过程中,须注意以下几点:
ln -s /usr/include/ncurses/termcap.h /usr/local/include/termcap.h
下面我们以SkyEye模拟基于Atmel AT91X40的开发板,并运行μClinux为例来讲解SkyEye的具体使用。
先安装交叉编译器。注意这里最好用root用户来执行如下操作。将arm-elf-tools-20011219.tar.gz(20011219是该工具的产生时间,也可以选择更新的arm-elf-tools。)在本机的根目录下用tar命令解开(假定arm-elf-tools-20011219.tar.gz放在本机的根目录"/"下)。具体命令(下面命令中的"#"是shell提示符,用户不用输入)如下:
#cd /
# tar /zxvf arm-elf-tools-20011219.tar.gz
然后将uClinux-dist-20020927.tar.gz(假定该软件包放在本机的根目录下)解开,比如解开在/usr/src/uClinux-dist/下,需要执行如下命令:
# cd /usr/src
# tar zxvf /uClinux-dist-20020927.tar.gz
然后在/usr/src/uClinux-dist/目录下执行如下命令:
# make xconfig
# make menuconfig
在这两种界面下,在vendor/product选项中选择GDB/ARMulator,kernel版本选择2.4.x,其它选项不变,然后保存配置退出,即选择save and exit选项。
方案A
如果要生成带调试信息的linux kernel执行文件,在第一步执行完后,继续执行如下命令: # make dep; make linux
这时在/usr/src/uClinux-dist/linux-2.4.x目录下生成具有ELF执行文件格式的linux内核文件。到这一步还没有生成文件系统,为了生成文件系统,还需要执行如下命令: # make romfs; make image
如果在/usr/src/uClinux-dist/images/下存在文件 romfs.img,表示文件系统生成成功。
方案B
如果想一步生成带调试信息的linux kernel执行文件和linux kenel 执行文件映像和磁盘映像文件romfs.img,可简单地运行命令: # make dep; make
就行了。可查看/usr/src/uClinux-dist/images/下是否有文件 romfs.img等在/usr/src/uClinux-dist目录下,如果有,表示编译安装成功。
假定SkyEye的工作目录位于/usr/src/uClinux-dist下,首先要进行一些准备工作:
在工作目录下建立专门用于基于AT91X40开发板的SkyEye硬件配置文件skyeye.conf。一个简单的方法是从SkyEye软件包中的README文件中截取一块内容(以"FOR AT91 (1) special for uclinux"开始的一行,从它下面第三行开始截取,共取9行)作为skyeye.conf的内容,具体内容如下:
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=./boot.rom 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 |
这样我们可以通过如下命令看看在/usr/src/uClinux-dist目录下的skyeye.conf文件是否与上面的内容一致: # more /usr/src/uClinux-dist/skyeye.conf
然后是建立文件系统的联接,需要在目录/usr/src/uClinux-dist目录下执行如下命令: #ln -s images/romfs.img boot.rom
这主要是与skyeye.conf中的内容保持一致,大家可注意skyeye.conf中的第5行。
完成上述准备工作后,就可以用SkyEye来运行和调试μClinux内核了,我们可以尝试如下命令("#"和"(SkyEye)"后面跟着的字符串是需要使用者输入的):
# cd /usr/src/uClinux-dist # /usr/local/bin/skyeye linux-2.4.x/linux(SkyEye) target sim cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0 mach info: name at91, mach_init addr 0x813ebc0 SKYEYE: use arm7100 mmu opsLoaded ROM ./boot.rom Connected to the simulator. (SkyEye)loadLoading section .init, size 0xa000 vma 0x1000000 Loading section .text, size 0xc5cb0 vma 0x100a000Loading section .data, size 0x8320 vma 0x10d0000Start address 0x1000000 Transfer rate: 7077504 bits/sec. (SkyEye)runStarting program: /usr/src/uClinux-dist/linux-2.4.x/linux Linux version 2.4.19-uc1 () (gcc version 2.95.3 20010315 (release) (ColdFire patches - 20010318 from ) (uClinux XIP and shared lib patches from )) #1 Sun Sep 5 12:00:39 HKT 2004Processor: Atmel AT91M40xxx revision 0Architecture: EB01…… |
在使用SkyEye时要注意以下几点:
a .注意要在 memmap.conf(skyeye-0.2以前版本的配置文件)或skyeye.conf(skyeye-0.2以后版本的配置文件)和boot.rom所在目录下执行skyeye。
b. memmap.conf 和 skyeye.conf都是skyeye的硬件配置文件。memmap.conf 适用于skyeye0.2以下版本,而skyeye.conf 用于skyeye0.2以上版本。
c. 运行带网络选项的硬件配置时,注意用户必须为root用户,而且当前的可执行路径中可以搜索到ifconfig命令
d. 运行带网络选项的硬件配置时,需要编译安装内核模块tuo.o (在RedHat系统中,该模块在/lib/modules/2.4.x/kernel/drivers/net/tun.o)
e. 请阅读skyeye.conf.txt来获得skyeye.conf的配置选项的含义
f. 可参考skyeye-binary-testutils-x.x.x.tar.bz2软件包(x.x.x代表其的版本号)中已经设定好的skyeye.conf来配置特定的硬件模拟环境,并可尝试用SkyEye运行这个软件包中编译好的操作系统内核。
下面是一些skyeye.conf的例子:
FOR AT91 (0) special for ucosii------------------------------------------- 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 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 FOR AT91 (1) special for μClinux-------------------------- #skyeye config file sample 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=./boot.rom 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 #set nic info state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd net: state=on, mac=0:5:3:2:1:f, ethmod=tuntap, hostip=192.168.2.1 FOR ep7312 (1) special for linux---------- cpu: arm720t mach: ep7312 mem_bank: map=I, type=RW, addr=0x80000000, size=0x00010000 mem_bank: map=M, type=RW, addr=0xc0000000, size=0x00200000 mem_bank: map=M, type=RW, addr=0xc0200000, size=0x00200000, file=./initrd.img mem_bank: map=M, type=RW, addr=0xc0400000, size=0x00c00000 FOR StrongArm SA1100 (1) speciall for linux------------- cpu: sa1100 mach: sa1100 mem_bank: map=I, type=RW, addr=0x80000000, size=0x40000000 mem_bank: map=M, type=RW, addr=0xc0000000, size=0x00800000 mem_bank: map=M, type=RW, addr=0xc0800000, size=0x00400000, file=./initrd.img mem_bank: map=M, type=RW, addr=0xc0c00000, size=0x01400000 mem_bank: map=I, type=RW, addr=0xe0000000, size=0x08000000 #0xe0000000 128M cache flush memory bank |
本文讲解了SkyEye硬件模拟平台的硬件配置选项,以及如何安装使用SkyEye。如果读者能够熟练掌握SkyEye的使用,则会提高开发、调试操作系统等的进度,特别是对操作系统、驱动程序如何与嵌入式硬件系统进行交互有更深刻的了解。