u-boot、inux内核和根文件系统移植文档 下载本文

内容发布更新时间 : 2024/5/4 7:49:00星期一 下面是文章的全部内容请认真阅读。

目 录

一、 u-boot移植 ......................................................................................................... 1 二、 linux内核移植 .................................................................................................... 2 三、 根文件系统移植 ................................................................................................. 4 四、 nfs文件系统 ....................................................................................................... 8

1

工具:arm-linux-gcc-4.4.3.tar.gz

linux内核:linux-2.6.22.6.tar.bz2,补丁:linux-2.6.22.6_jz2440.patch u-boot源码:u-boot-1.1.6.tar.bz2,补丁:u-boot-1.1.6_jz2440.patch busybox源码:busybox-1.7.0.tar.bz2

yaffs2制作工具:yaffs_source_util_larger_small_page_nand.tar.bz2 jffs2制作工具路径:F:\\韦东山\\CD1_主光盘\\GUI\\xwindow\\X\\deps

以上源码和工具均来自韦东山光盘。

一、u-boot移植

工具和源码在路径:F:\\韦东山\\CD1_主光盘\\system。

tar xjf u-boot-1.1.6.tar.bz2 //解压缩 cd u-boot-1.1.6 //进入目录

patch -p1 < ../u-boot-1.1.6_jz2440.patch //打补丁,-p1是指忽略第一个目录 root@ubuntu:/share/u-boot-1.1.6# make 100ask24x0_config //产生配置文件

Configuring for 100ask24x0 board... make all //编译

结果会遇到这个问题,发现浮点错误,因为gcc造成,所以修改以下文件 gedit cpu/arm920t/config.mk

undefined reference to ‘raise’ //提示错误

将cpu /arm920t/config.mk 改为

PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 / -msoft-float

PLATFORM_CPPFLAGS +=

# ===========================================================# # Supply options according to compiler version PLATFORM_CPPFLAGS +=$(call cc-option,)

PLATFORM_RELFLAGS +=$(call cc-option,$(call cc-option,))

在uboot的根目录中把Makefile中的PLATFORM_LIBS 修该为如下值

PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc -lc -L/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib

然后重新 make distclean,make 100ask24x0_config, make 应就能通过了,最后可生产u-boot.bin

通过jlink下载u-boot.bin到nor flash

下载成功后,从nor flash启动,选择k命令, 开启dnw,选择dnw的USB Port下载uImage,

1

在u-boot界面输入b即可启动内核。

启动u-boot后,要保证能ping通虚拟机linux。

二、linux内核移植

工具和源码在路径:F:\\韦东山\\CD1_主光盘\\system。

通过Samba,将工具和源码拷贝到共享目录,Samba配置详见相关文章,执行以下命令。 tar xjf linux-2.6.22.6.tar.bz2 //解压linux内核源码包 cd linux-2.6.22.6 //进入内核源码目录

patch -p1 < ../linux-2.6.22.6_jz2440.patch //打补丁,命令为patch,-p1中的1是指忽略掉第 一个目录,p只路径path make s3c2410_defconfig //产生配置文件

执行上述命令后,将会在 linux-2.6.22.6跟目录生成.config文件。 也可以通过命令:cp config_厂家 .config 来拷贝配置文件 在本实验中,打完补丁后,会在根目录生成config_ok文件, 我们直接执行命令:cp config_ok .config 命令即可。

make menuconfig //进入菜单配置界面,一定要选择以下菜单,否则会导致引导根文件系

统失败 Kernel Features --->

[*] Use the arm EABI to compile the kernel

[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL) (NEW)

File system --》

Miscellaneous filesystems-------》

YAFFS2 file system support(选中)

如果没有yaffs2选项,那是yaffs文件系统补丁包没有打上,选中支持yaffs2才能引导yaffs2文件系统。

倘若不选择上述菜单,会导致linux内核引导根文件系统的时候,卡死在这里 block 535 is bad block 809 is bad block 937 is bad block 1898 is bad

VFS: Mounted root (yaffs filesystem). Freeing init memory: 136K

2