原创 建立 uClinux 交叉编译环境

2010-8-25 10:36 2086 13 13 分类: MCU/ 嵌入式

Step0. 我用的是在WinXp下 VisualBox + Fedaro9

Step1. 下载源码和交叉编译工具

下载工具包arm-elf-tools-20030314.sh;uClinux内核uClinux-dist-20040408.tar.gz

tar xvzf uClinux-dist-20040408.tar.gz 解压缩到Linux根目录 

chmod 755 arm-elf-tools-20030314.sh 

./arm-elf-tools-20030314.sh

或者做为压缩包安装:先制作压缩包

tail -n+43 arm-elf-tools-20030314.sh >> 1.tar.gz

复制压缩包到根目录

sudo cp 1.tar.gz /

解包

sudo tar zxvf 1.tar.gz

(安装完成)

Step2.编译uClinux内核

cd uClinux-dist

make mrproper

vim linux2.4.x/arch/armnommu/vmlinux-armv.lds.in

在65行*

(.got)   /* Global offset table */

下面加入三行

romfs_data = .;

romfs.o

romfs_data_end = .;

保存退出

vim /usr/src/uClinux-dist/vendors/Samsung/4510B/Makefile

在第65行

genromfs -v -V "ROMdisk" -f
$(ROMFSIMG) -d $(ROMFSDIR)

下面加入一行                                                                                                   

arm-elf-ld -r -o $(ROOTDIR)/$(LINUXDIR)/romfs.o -b binary $(ROMFSIMG)

开始编译

make menuconfig

选择Samsung;    5410B;    2.4.x;    uClibc;   然后退出,提示选yes。

make dep

make lib_only

vim config/.config

将25行                                                          

CONFIG_USER_OLD_PASSWORDS=y

注释掉

make user_only

make romfs

make

有错误需要编辑init.c                                                                                                 

vim linux-2.4.x/arch/armnommu/mm/init.c

 将662行的                                                                                        

!machine_is_ta7v() &&         --->//!machine_is_ta7v()&&

注释掉,再make或者make linux

有时候会提示找不到romfs.o文件,可以在linux/2.4.x/romfs/下找到。cp到uC下就可以了。

make image

make

就会在image/ 目录下得到uClinux的可执行文件的镜像了,共三个文件:image.ram, image.rom, romfs.img

63e39169-c983-403a-af0f-d6ecb1ccb453.JPG

image.ram时值结下载到Ram执行的文件。image.rom是一个zImage文件,也就是自解压内核,由于他使用了gzip将内核压缩过,所以比较小。这个image文件可以烧写到Flash的0x1000的位置,而不能直接下载到Ram并执行。

文章评论0条评论)

登录后参与讨论
我要评论
0
13
关闭 站长推荐上一条 /2 下一条