准备资料:1.交叉编译工具链
2.u-boot
3.linux 内核
4.文件系统
注意:以上代码均解压出来,把这四个文件夹放在同一级目录下
1.u-boot的编译
(1)进入u-boot目录,进入Makefile文件修改
CROSS_COMPILE = $(shell pwd)/../arm-2007q1/bin/arm-none-linux-gnueabi-
找到CROSS_COMPILE 编译条件注释,并且修改CROSS_COMPILE的值为交叉编译工具链下的路径,其中arm-2007q1为本人交叉编译工具链的文件夹名字。
(2) 输入以下命令,清除之前的配置,并选择当前芯片型号的配置来配置u-boot,最后用四线程编译。
make distclean
make at91sam9x5ek_nandflash_config
make -j4
(3)编译完成后,u-boot目录下的u-boot.bin 为我们生成的目录。编译完uboot之后,请将uboot根目录下tools目录中的mkimage文件放置到arm-none-linux-gnueabi交叉编译工具根目录的bin目录下(或者把mkimage加入环境变量中)。
2.内核的编译
(1)进入内核目录,进入Makefile文件修改
ARCH ?= arm
CROSS_COMPILE ?= $(shell pwd)/../arm-2007q1/bin/arm-none-linux-gnueabi-
找到ARCH和CROSS_COMPILE变量,修改其值为arm架构以及指定交叉编译工具链。
(2)选择芯片的内核配置
make at91sam9x5ek_defconfig
(3)可以根据自己的需要进行修改,内核的功能选择
make ARCH=arm menuconfig
(4)编译生成uImage ,uImage的路径为:linux内核源码arch/arm/boot
make uImage -j4
注意:以上对内核的操作均在内核根目录
3.ubi格式根文件系统的制作
(1)安装制作ubi格式镜像文件的工具
sudo apt-get install mtd-utils
(2) 使用mkfs.ubifs命令将根文件系统制作为UBIFS镜像,其中rootfs为我们根文件系统的目录,rootfs.ubifs为制作出来的镜像文件
mkfs.ubifs -r rootfs -m 2048 -e 126976 -c 992 -o rootfs.ubifs
(3)使用ubinize命令可将使用mkfs.ubifs命令制作的UBIFS文件系统镜像转换成可直接在FLASH上烧写的格式(带有UBI文件系统镜像卷标)
ubinize -o myrootfs.ubi -m 2048 -p 128KiB -s 512 -O 2048 ubinize.cfg
其中myrootfs.ubi为我们烧写需要的镜像。ubinize.cfg为制作时的配置文件,其内容如下:
[ubifs]
mode=ubi
image=rootfs.ubifs
vol_id=0
vol_size=126MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
vol_alignment=1
4.烧录
把生成的u-boot.bin 、uImage和myrootfs.ubi 三个文件放到烧录工具目录下进行烧录