一. Linux内核移植
经过之前文章的学习与验证,NXP官方提供的 Linux内核可以启动开发板。所以,我们就参考I.MX6ULL EVK 开发板的设置, 在 Linux 内核中添加正点原子的 I.MX6U-ALPHA 开发板。
之前文章验证 NXP官方的Linux 内核是否可启动,地址如下:
二. 在 Linux 中添加ALPHA开发板
这里所用的Linux内核源码:NXP官方的Linux内核源码。目录如下:
/【正点原子】阿尔法Linux开发板(A盘)-基础资料-2022 /【正点原子】阿尔法Linux开发板(A盘)-基础资料 / 例程源码 / NXP官方原版Uboot和Linux
在 Linux 中添加自己的开发板,大体进行三个部分内容。如下:
(1) 添加开发板默认配置文件
(2) 添加开发板对应的设备树文件
(3) 更改设备树所在目录下的 Makefile,具体是添加编译 开发板对应的设备树文件。
1. 添加开发板默认配置文件
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$ cd ./arch/arm/configs/
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga/arch/arm/configs$ cp imx_v7_mfg_defconfig imx_v7_alientek_nand_defconfig
2. 添加开发板对应的设备树文件
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$ cd ./arch/arm/boot/dts
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga/arch/arm/boot/dts$ cp imx6ull-14x14-evk.dts imx6ull-alientek-nand.dts
注意:.dts 是设备树源码文件,编译 Linux 的时候会将其编译为 .dtb 文件。
3. 更改设备树所在目录下的 Makefile
注意:在添加 "imx6ull-alientek-nand.dtb \"这一行时,"\" 后面的不能有空格符,否则会编译出错。
4. 更改 Linux源码根目录下的 运行脚本文件 imx6ull_evk_nand.sh。
具体更改 脚本中的配置文件名(因为前面我们复制了一个新的配置文件,重新命名了),操作如下:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$ gedit imx6ull_evk_nand.sh
更改如下:
三. 编译Linux内核
进入 Linux源码根目录下,运行 imx6ull_evk_nand.sh 脚本进行编译:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$ ./imx6ull_evk_nand.sh
最后,等待编译成功后,生成 Linux内核文件 zImage与 设备树文件。然后将这两个文件下载到开发板上,进行验证。Linux 内核是否可以成功启动。
如果编译成功,这里会得到两个文件:
① Linux 内核镜像文件: ./arm/arm/boot/zImage 。
② ALPHA开发板对应的设备树文件: ./arch/arm/boot/dts/imx6ull-alientek-nand.dtb 。