您的位置:首页 > 运维架构 > Linux

uClinux学习笔记之一 Ubuntu 8.04 下uClinux的编译和skyeye仿真

2008-08-21 11:43 459 查看
Ubuntu 8.04
下uClinux的编译和skyeye仿真





有一段时间没有用Linux了,以前要编译与Linux相关的代码用的都是用

Cygwin或是MinGW,不到万不得己是不会用Linux的,其中的主要原因是开发Linux软件的经历比较少,像Qt,Python这些软件,又都是跨平台的,在windows下的也照样能用它来编程,其次就是硬盘的空间有限,最近下决心学一下嵌入式Linux,Cygwin是无能为力了,所以试着在Linux下编译。之所以选择Ubuntu,则是因为自己已经听说过很多次这种Linux了,出于好奇,决定就选它了。试用到现在,感觉确实不错,最喜欢的还是它的完善方便的软件管理方式。磕磕碰碰的算是完成了,没有什么新意,只是作一下总结,也为同样想在Ubuntu
8.04下编译uClinux的人作一下参考吧。


一、uClinux编译环境的配置和编译
1、下载arm-elf-tools和uClinux

http://www.uclinux.org/pub/uClinux/arm-elf-tools/arm-elf-tools-20030314.sh

http://www.uclinux.org/pub/uClinux/dist/uClinux-dist-20030305.tar.gz

2、安装
(1)先切换到root:

sudo -s -H

(2)安装arm-elf-tools:
export _POSIX2_VERSION=199209

sh ./arm-elf-tools-20030314.sh

(3)uClinux配置并编译:
更新软件包信息:

apt-get update


安装一些必备软件包:

apt-get install
ncurses-dev

apt-get install tcl

apt-get install tk

解压 uClinux

tar zxvf
uClinux-dist-20030305.tar.gz

切换到uClinux的解压目录,运行下以下命令之一进行配置:

make menuconfig
或 make xconfig

编译:
make dep
make

make image
在images目录下生成romfs.img,linux.data,
说明:
apt-get update
为可选命令,作用是更新软件包信息,如果执行apt-get install命令出错,那必须先执行这个命令。
ncurses
为make menuconfig
时所需的安装包
tcl
和tk
为make xconfig所需的安装包
make menuconfig
和make xconfig为用菜单方式或图形界面方式配置uClinux,如何配置可以参考网上的其它资料,因为是用skyey仿真,所以只要将Vendor/Product选为GDB/ARMulator,其它的可用默认选项,当然在实际的配置和裁减中还是有许多其它选项要改的。

二、skyeye的安装
在ubuntu下安装skyeye相当简单,只要执行以下命令:

apt-get install skyeye

如果出错先执行apt-get update

三、用skyeye仿真uClinux
1、先写一个测试程序,保存为hello.c:
//---------------------------------hello.c----------------------------------------------------

#include <stdio.h>

int main(void)
{

printf("hello,world/n");

return 0;
}
//-----------------------------------------------------------------------------------------------


编译生成flat文件格式的可执行文件hello:
arm-elf-gcc -Wl,-elf2flt -o hello hello.c


2、***romfs.img
在编译uClinux时已经生成了romfs.img,但是我们要将我们的hello程序加入romfs中,可以按下面步骤来做(以下假设当前目录为uClinux所在目录):
(1)首先,挂载romfs.img
切换到uClinux目录下的images目录并建一个romfs目录:

cd images

mkdir romfs

创建挂载点:

mkdir /mnt/romfs


挂载:

mount -o loop romfs.img /mnt/romfs

(2)***romfs.img

将/mnt/romfs目录下的所有文件拷贝到images/romfs目录下:

cp -r /mnt/romfs/* romfs

***新的romfs.img

genromfs -f
romfs.img -d romfs

3、skyeye仿真
(1)先写一个config文件skyeye.conf,保存到images目录下,以下为全部内容:
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=./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

(2)仿真
转到images目录,执行以下命令:

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

熟悉的界面出现了,cd
到bin目录,执行以下命令

./hello

出现了经典的hello,world


到此,基本的仿真工作已经做完了,有时间再写一下minigui和embeded
Qt的编译和仿真,


参考资料:





http://hi.baidu.com/zkheartboy/blog/item/a73927ad3629c9094a36d6f1.htm

http://forum.ubuntu.org.cn/viewtopic.php?t=88369

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: