|
之前没做过嵌入式的开发,对这方面也算比较感兴趣,这次是下定决心学习嵌入式程序设计,原想直接买块开发板,但是后来上网查了些资料发现有模拟器可以模拟硬件,那就先在模拟器上玩玩^_^
程序开发所使用的操作系统:debian
模拟器:SkyEye 1.2.6(可以模拟很多开发板)
嵌入式系统:uClinux20040408(高版本的一直没能成功编译T_T)
交叉编译器:arm-elf-tools-20040427.sh
ok,那我们开始吧(在开始之前请确认你的系统上已装了gcc,g++,bzip2,vim等工具)
1、安装交叉编译器
下载arm-elf-tools-20040427.sh,然后进入arm-elf-tools-20040427.sh所在目录执行
sh arm-elf-tools-20040427.sh,如果这一步出错那只好到网上搜一下解决办法,我本机的是
直接可以安装的。
2、安装SkyEye模拟器(最好不要用1.2.7版本,因为模拟时会有错误,一直没找到解决办法.......)
下载SkyEye 1.2.6,进入SkyEye 1.2.6所在目录,解压skyeye,如果你用的是kde等桌面系统
则直接右键解压,如果是在终端下就用tar jzxf 文件名 解压。
在终端中进入skyeye 解压之后的目录,然后运行 ./configure --target=arm-elf --
prefix=/usr/local 命令执行完就会在skyeye 目录里面生成一个Makefile文件,有这个文件就可以
编译skyeye了。
接着执行 make 命令,完了执行 make install 命令,两个命令执行完,skyeye 就安装完成了。
你可以用skyeye -h ,如果有输出“SkyEye 1.2.6.......................”一堆信息就安装成功了,如
果提示说在/usr/bin目录下找不到skyeye文件,你就执行这个命令 cp skyeye /usr/bin 把编
译出来的skyeye拷到/usr/bin里面就可以了
3、编译uClinux
编译uClinux可以得到一个映像文件,把这个映像放到SkyEye 中就可以进行模拟了。
首先去http://www.uclinux.org/pub/uClinux/dist/ 下载uClinux20040408解压,解压
完就看到一个uClinux-dist目录,进入这个目录,cd uClinux-dist,我们得修改一下里面的文
件。在uClinux-dist目录下执行
vim vendors/config/armnommu/config.arch,在打开的文档中找到CROSS_COMPILE =
arm-elf-,大概在第42行的位置。如果你文件中本来就是CROSS_COMPILE = arm-elf-的话就
不用改了,如果不是就改成这样。我们用的不
是arm-liunx-gcc交叉编译器.
继续,运行vim linux-2.4.x/arch/armnommu/vmlinux-armv.lds.in,在打开的文档中找到,(.got) /* Global
offset table */ 第65行的位置,在下面加入三行
romfs_data = .;
romfs.o
romfs_data_end = .;
保存。然后接着运行vim vendors/Samsung/4510B/Makefile,找到
genromfs -v -V "ROMdisk" -f $(ROMFSIMG) -d $(ROMFSDIR) 也是65行,下面加入一行
arm-elf-ld -r -o $(ROOTDIR)/$(LINUXDIR)/romfs.o -b binary $(ROMFSIMG)
好,这一阶段改得差不多了。是时候开始编译了
第三步的操作都是在uClinux-dist目录下进行的。运行make menuconfig,配置一下skyeye ,要
选的东西如下
(GDB)Vendor/Product
(linux-2.4.x) Kernel Version
(uClibc) Libc Version
[ ] Default all settings (lose changes)
[ ] Customize Kernel Settings
[ ] Customize Vendor/User Settings
[ ] Update Default Vendor Settings
选完保存退出
逐个运行
make dep
make lib_only
make user_only
make romfs
make image//报错了这里,说没有linux的东西,先不管
make linux //出现error:cannot open romfs.o
cp ./linux-2.4.x/fs/romfs/romfs.o ./linux-2.4.x/
重新make linux,还有错误,执行 vim linux-2.4.x/fs/romfs/inode.c
找到struct file_operations romfs_file_operations,在函数前加static
重新make linux
接着make image
ok,编译完成,在uClinux-dist下的images里生成了四个文件
image.bin linux.data linux.text romfs.img
接下来就是用skyeye模拟了。。。。。
模拟步骤参考
http://blog.ednchina.com/yuliang0321/120554/message.aspx
成功运行的话你可以看到这样的图案(uClinux):
Welcome to
____ _ _
/ __| ||_|
_ _| | | | _ ____ _ _ _ _
| | | | | | || | _ \| | | |\ \/ /
| |_| | |__| || | | | | |_| |/ \
| ___\____|_||_|_| |_|\____|\_/\_/
| |
|_|
耶~
后话:开始到现在共编了4天,才成功了,下载了uClinux的最新版本,问题不断,后来降低版本照着别人说的做还是有error.....,因为对liunx不熟悉,遇到问题都是网上找一段试一段,所以过程中可能会漏说一些必要的工具,以上内容是对查到的资料做了简单的拼接。
ps:欢迎指出文中错漏与不足,更希望有人能告诉我怎么编译高版本的uClinux。thx~
参考:
http://www.dzkf.cn/html/qianrushixitong/2006/1017/831.html
http://blog.ednchina.com/yuliang0321/120554/message.aspx
----------------------------------------------end-------------------------------------------- |
评分
-
1
查看全部评分
-
|