内核编译和TFTP网络启动
本次内容:kernel和.dtb的编译和启动。
内核来源:原子根据NXP官方板子修改后的文件。
实操过程:
1:在ubuntu中新建文件夹保存linux工程,通过TFTP服务器将内核压缩包从wind下发送到ubuntu下。解压压缩包 tar -vxjf xxx
2:编译,新建shell脚本编译,给与权限 chmod ,安装lzop库。编译过程中会弹出图形化配置界面,现在按两下ESC,退出继续编译。
vim mx6ull_zsw_emmc.sh
#!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig (内核默认配置文件)
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j2
为以后方便使用make编译,在顶层Makefile中添加
255 ARCH ?= arm
256 CROSS_COMPILE ?= arm -linux-gnueabihf-
3:编译单独的 .dtb文件,因为我们需要的对应板子的dtb,进入 目录 ./arch/arm/boot/dts,打开Mkaefile,搜索imx6ull-14x14-emmc-7-800x480-c.dts ,没有的话手动添加,在工程根目录下编译dtb文件
make imx6ull-14x14-emmc-7-800x480-c.dtb
4:因为要从网络启动,将内核和设备复制到TFTP文件夹中。内核zImage在目录 ./arch /arm /boot /zImage。设备树在 目录 ./arch /arm /boot /dts /xxx.dtb
cp ./arch/arm/boot/zImage /home/zsw/linux/tftpboot -f (-f是替换)
cp ./arch/arm/boot/dts/imx6ull-14x14-emmc-7-800x480-c.dtb /home/zsw/linux/tftpboot -f
启动板子,uboot中,网络启动linux。
tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-emmc-7-800x480-c.dtb
bootz 80800000 - 83000000
后记
有一步将板子对应的dtb文件写入到子Makefile中,编译内核时就已经被编译了,所以就不要单独编译了。