分享
 
 
 

没有硬件条件下来进行嵌入式系统的开发

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

题目:没有硬件条件下来进行嵌入式系统的开发(转载自linuxsir) 回复:0 浏览:1

作者:bobdos 时间 2004-8-24 14:55:49 序号:684

学习使用SkyEye仿真

SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具,这样就可以在没有硬件条件下来进行嵌入式系统的开发。

以下操作均在Fedora Core 1.0里通过。

文档摘要:

1、什么是SkyEye?

2、SkyEye可以做什么事情?

3、安装SkyEye

4、安装arm-elf交叉编译器

5、测试你的arm-elf-gcc编译器

6、执行你的hello程序

7、编译并运行uClinux-dist-20030909.tar.gz

8、加入网络功能

9、安装完成SkyEye后,下一步将做什么?

1、什么是SkyEye?

SkyEye是开源软件的一个项目,SkyEye的目标是在Linux和Windows操作系统里提供一个完全的仿真环境。SkyEye仿真环境相当于一个嵌入式计算机系统,你可以在SkyEye里运行一些嵌入式Linux操作系统,如ARMLinux,uClinux,uc/OS-II(ucos-ii)等,并能分析和调试它们的源代码。

如果你想知道关于SkyEye和嵌入式系统更详细的信息,请访问下面的站点:

www.SkyEye.org

http://www.skyeye.org/index_cn.html

通过SkyEye能仿真下面的硬件:

CPU核心:ARM7TDMI, ARM720T, ARM9, StrongARM, XScale

CPU: Atmel AT91/X40, Cirrus CIRRUS LOGIC EP7312, Intel SA1100/SA1110, Intel XScale PXA 250/255, CS89712, samsung 4510B, samsung 44B0(还不全)

内存: RAM, ROM, Flash

周边设备: Timer, UART, ne2k网络芯片, LCD, 触摸屏等

目前能在SkyEye上运行下面的操作系统和系统软件:

uC/OSII-2.5.x(支持网络)

uClinux(基于Linux2.4.x内核, 支持网络)

ARM Linux 2.4.x/2.6.x

lwIP on uC/OSII

基于uC/OSII, uClinux, ARM Linux的应用程序

2.SkyEye可以做什么事情?

1. 通过SkyEye可以帮助促进嵌入式系统的学习,在不需要额外硬件的情况下学习和分析uclinux操作系统和其它嵌入式操作系统,如ucosII等。

2. SkyEye可用于嵌入式系统的教学。

3. 希望通过skyeye促进操作系统的研究,如ucosII,uclinux+RTAI,uclinux2.5.x等。

4. 可以基于SkyEye进行仿真特定硬件模块的研究。

5. SkyEye可以作为嵌入式集成开发环境开发嵌入式系统(当然需要对SkyEye做大量的工作)。

注:引自陈渝《SkyEye Project FAQ》

3、安装SkyEye

到http://gro.clinux.org/projects/skyeye/下载skyeye-0.7.0.tar.bz2包:

tar jxvf skyeye-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

接下来执行:

make

make install

安装完成后执行skyeye

注意:

a.如果你使用的是Mandrake Linux发行版,那么你在编译SkyEye时遇到错误,并且错误与readline, ncurse, termcap等有关,你可以试试下面的方法:

ln -s /usr/include/ncurses/termcap.h /usr/local/include/termcap.h

接着再make和make install看能否成功!

b.如果你的Linux发行版是Debian Linux,那么不要使用gcc 2.95或是gcc 3.0,请使用gcc 3.2+

c.gcc的版本要在2.96或以上

d.如果SkyEye的版本大于0.6.0,那么使用LCD仿真需要在Linux系统里安装GTK软件。

4、安装arm-elf交叉编译器

下载arm-elf-tools-20030314.sh

ftp://166.111.68.183/pub/embed/uclinux/soft/tools/arm

或到

ftp://166.111.8.229/OS/Embeded

执行:

chmod a+x arm-elf-tools-20030314.sh

然后:

./arm-elf-tools-20030314.sh

ls /usr/local/bin/

你应能看到以arm-elf开头的可执行文件,其中arm-elf-gcc就是用来编译你目标平台的编译器的,当然还有一些小工具,后面将一一讲来。

5、测试你的arm-elf-gcc编译器

先写一个小程序hello.c

PHP源码:

--------------------------------------------------------------------------------

#include <stdio.h>

int main(void)

{

int i;

for(i = 0; i < 6; i++){

printf("i = %d ",i);

printf("Hello, embedded linux!\n");

}

return 0;

}

--------------------------------------------------------------------------------

然后执行:

arm-elf-gcc -Wl,-elf2flt -o hello hello.c

-elf2flt参数是将elf文件格式转为flat文件格式,这个工具是在你安装交叉编译器产生的。

或者你可以写个Makefile文件,执行:

make

这里是我的Makefile文件,仅供参考:

PHP源码:

--------------------------------------------------------------------------------

# begin

CC = arm-elf-gcc

CFLAGS = -D__PIC__ -fpic -msingle-pic-base -O2 -pipe -Wall -g

LDFLAGS = -Wl,-elf2flt

LIBS =

OBJS = hello.o

all: hello

hello: $(OBJS)

$(CC) $(CFLAGS) $(LDFLAGS) -o hello $(OBJS) $(LIBS)

clean:

rm -rf *.o *.elf *.gdb hello

# end

--------------------------------------------------------------------------------

如果编译通过,就会产生hello可执行文件。用下面的命令:

file hello

你会发现,它是BFLT(binary FLAT),你目标平台所支持的文件格式。

6、执行你的hello程序

这里,我们将借助genromfs这个小工具来完成测试,这个工具就是你在安装交叉编译器时产生的,你可以直接使用它。

到http://gro.clinux.org/projects/skye...0.4.tar.bz2包:

tar jxvf skyeye-binary-testutils-1.0.4.tar.bz2

cd testsuits/at91/uclinux2(当然你还可以用别的)

mkdir romfs(建一个目录,后面用)

mount -o loop boot.rom /mnt/xxx

cp -r /mnt/xxx/* romfs

另外,把你编译好的可执行程序拷贝到/romfs/bin目录里,这里就是hello了!

genromfs -f boot.rom -d romfs/

注:可以用genromf -h来获得帮助!

OK!执行下面的命令:

skyeye linux

(skyeye)target sim

(skyeye)load

(skyeye)run

kernel start.....

很熟悉了吧。。。

cd /bin

hello

可以看到结果了吗?

其实到了这一步,你就可以开发自己的程序了!

7、编译并运行uClinux-dist-20030909.tar.gz

到ftp://166.111.68.183/pub/embed/uclinux/soft/

或到ftp://166.111.8.229/OS/Embeded/uclinux/pub/uClinux/dist下载

uClinux-dist-20030909.tar.gz

假设把它下载到/usr/src/目录下,然后依次执行下面的命令:

tar zxvf uClinux-dist-20030909.tar.gz

cd uClinux-dist/

在图形方式下可用命令make xconfig

在命令行方式下用命令make menuconfig

vendor/product中选择GDB/ARMulator

kernel版本选择2.4

然后save and exit

运行下面这两条命:

make dep

make

此时在/usr/src/uClinux-dist/linux-2.4.x目录下会生成可执行文件linux

在/usr/src/uClinux-dist/images/会生成romfs.img等文件

在uClinux-dist目录下建立仿真AT91的skyeye配置文件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=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

这个时候就可以用skyeye来调试运行kernel了,在/usr/src/uClinux-dist执行如下命令:

skyeye linux-2.4.x/linux

(skyeye)target sim

(skyeye)load

(skyeye)run

kernel start.....

注意:

要在skyeye.conf所在目录下执行skyeye linux-2.4.x/linux

8、加入网络功能

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/tun c 10 200

(2)运行vnet(虚拟集线器)设备模块(这一步不是必需的):

获取vnet的源码,然后创建设备:

#mknod /dev/net/vnet c 10 201

#chmod 666 /dev/net/vnet

创建vnet.o

#make vnet.o

插入模块vnet.o

#insmod vnet.o

进入test目录,用test来测度vnet.o

#cd test

#make

#./testvnet1

d.配置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=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

# format: state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd

net: state=on, mac=0:4:3:2:1:f, ethmod=tun, hostip=10.0.0.1

下面将对上面的一些参数作下说明:

state=on/off意思是仿真的NIC(网络接口板)是有线的还是无线的;

mac=仿真适配器的MAC地址;

ethmod=tuntap/vnet在主机环境里使用的虚拟设备;

hostip=意思是主机环境与keyeye交互用的IP

格式: state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd

For example:

#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:4:3:2:1:f, ethmod=tun, hostip=10.0.0.1

net: state=on, mac=0:4:3:2:1:f, ethmod=vnet, hostip=10.0.0.1

注意:

如果你想在同一时刻运行两个或更多的skyeye,那么请为每一个skyeye使用不同的skyeye.conf

e.运行skyeye linux-2.4.x/linux

9、安装完成SkyEye后,下一步将做什么?

1、对于嵌入式操作系统的初学者和入门者和入门的学生而言,他们可以先看一些有关操作系统和嵌入式操作系统方面的教材和书籍,如与uC/OS、Minix、uClinux、Linux相关的书籍等。然后可以在Skyeye上开发一些简单的应用程序例子(如进程间通信、进程优先级、死锁情况、网络应用等),对某些操作系统功能(如进程调度、内存管理、网络子系统、文件子系统等)进行简单的修改和扩展,并通过Skyeye进行运行和调试,看看会发生什么情况。

2、对于有一定经验的软件工程师而言,在SkyEye上完成一定的应用系统原型开发是值得一做的事情。比如移植或开发一个文件子系统或网络子系统到一个特定的操作系统中,相信比在一个真实的开发板上开发要容易一些。在Skyeye上进行一些操作系统的移植和开发(如移植RTLinux、RTAI等其它操作系统到Skyeye上)也是很有挑战性的工作。

3、对于硬件工程师而言,对Skyeye进行扩充,设计新的硬件仿真(如USB、IDE硬盘等)使得Skyeye的硬件仿真功能更加强大,支持更多功能的软件,是很有意义的事情。

参考:

SkyEye项目站点里的一篇中文文档;

陈渝《SkyEye Project FAQ》;

skyeye-0.7.0中的README文档。

后记:

为了让大家能快速上手,进行实际的开发工作,我赶凑了一篇文档,很粗糙。但我坚信随着更多的有经验的人的加入;随着我们自己水平的提高,一定会出现更多、更好的文章来。就让我们快点行动起来吧!

最后,我再次建议大家看一下《嵌入式Linux技术与应用》这本书。

可以到http://www.skyeye.org/document.htm或是

ftp://166.111.68.183/pub/embed/skyeye/document/或是

http://www.huihoo.org/mirrors/skyeye/

下载文档,可以获得更多有关skyeye和嵌入式Linux开发的知识和经验。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有