不断的归类,再重新走几遍,明白会更深入
主要解决的问题:
(1)BusyBox的选择
(2)交叉编译器的选择
(3)lib的问题,交叉编译器的库
(4)根文件系统初始化问题。
以上为主要的问题,
再就是文件系统制作需要的几个主要的初始化文件,主要为文件系统挂载,初始化,开始的rcS,需要有执行的权限。
接下来,通过源码的阅读再进行一次移植,上次的全部归档,作为备用。
一:相关源码
(1)arm-2010q1-202-arm-none-linux-gnueabi.tar.bz2 交叉编译工具 gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202)
(2)Bootstrap-V3.5.tar.bz2 ATmel提供的一级Boot
(3)u-boot-2014.04.tar.bz2 Uboot
(4)linux-2.6.39_OK.tar.bz2 Linux Kernel
(5)busybox-1.13.0.tar.bz2 制作根文件系统的工具包一
(6)e2fsprogs-1.42.13.tar.bz2 PC端的制作UBI文件系统的打包工具:生成为mkfs.ubifs与ubinize
(7)lzo-2.03.tar.bz2 UBI文件系统用到的库
(8)zlib-1.2.8.tar.bz2 UBI文件系统用到的库
(9)mtd-utils.tar.bz2 Uboot端烧写UBI用到的工具
(10)rootfs_ubi.tar.bz2 制作的根文件系统:
把根文件系统打包,然后烧写入NandFlash即可。
二:烧写文件:
(1)at91sam9x5ek-nandflashboot-uboot-3.6.0.bin BootStrap
(2)u-boot.bin Uboot
(3)uImage Linux内核文件:Linux 2.6.39
(4)ubi.img UBI根文件系统。
三:编译命令:
编译AT91SAM9X35ek AT91Bootstrap 3.6.0 的命令:
(1)make mrproper
(2)make at91sam9x5eknf_uboot_defconfig
(3)make ARCH=arm menuconfig
(4)make CROSS_COMPILE=arm-none-linux-gnueabi-
编译Uboot 2014.04的命令如下:
make distclean
make at91sam9x5ek_nandflash_config (这里采用bootstrap + uboot+kernel+rootfs全烧写在nandflash里,也就是nandflash启动。)
make CROSS_COMPILE=arm-none-linux-gnueabi-
编译Linux 2.6.39内核的命令如下:
make distclean
make ARCH=arm menuconfig
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage(这是需要Uboot里的工具:mkimage)
编译BusyBox 1.13.0
修改Makefile文件,
CROSS_COMPILE = arm-none-linux-gnueabi-
ARCH = arm
make menuconfig(这里选择静态编译)
make
make install
然后在_install文件夹下,会生成根文件系统用到的相关命令集。
打包UBI根文件
首先需要获取PC端的两个工具:mkfs.ubifs ubinize
mkfs.ubifs -r rootfs -m 2048 -e 126976 -c 1872 -o rootfs.img
ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 ubinize.cfg
ubinize.cfg文件的内容如下:
[ubifs]
mode=ubi
image=rootfs.img
vol_id=0
vol_size=200MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
其他:
sam-ba_2.15.exe 烧写软件:Windows下的。
Jlink 烧写工具
SecureCRT.rar 串口监控工具,类似于超级终端
后期将不断细化移植过程中的问题与经验总结并写出来,不断前进。化技术为应用。