![uboot和linux内核移植流程简述](https://300zi.50zi.cn/uploadfile/img/15/171/3869da35b554074803ec06da8ce20b95.jpg)
一、移植uboot流程
1、从半导体芯片厂下载对应的demo,然后编译测试demo版的uboot
开发板基本都是参考半导体厂商的 dmeo 板,而半导体厂商会在他们自己的开发板上移植好 uboot、linux kernel 和 rootfs 等,最终制作好 BSP包提供给用户。我们可以在官方提供的 BSP 包的基础上添加我们的板子,也就是俗称的移植。
一般 uboot 中需要解决串口、NAND、EMMC 或 SD 卡、网络和 LCD 驱动,因为 uboot
的主要目的就是启动 Linux 内核,所以不需要考虑太多的外设驱动。
2、在uboot中添加自己的硬件
(1)添加默认配置文件
在include/configs/ 目录下创建配置文件 (复制mx6ull_14x14_evk_emmc_defconfig,然后重命名) 。
(2)添加开发板对应的头文件
目 录 include/configs 下 添 加开发板对应的头文件( 复 制include/configs/mx6ullevk.h,并重命名)mx6ull_alientek_emmc.h 文件中基本都是“CONFIG_”开头的宏定义,这也说明 mx6ull_alientek_emmc.h 文件的主要功能就是配置或者裁剪 uboot。如果需要某个功能的话就在里面添加这个功能对应的 CONFIG_XXX 宏即可,如果不需要某个功能的话就删除掉对应的宏即可
(3)添加开发板对应的板级文件夹
复制 board/freescale / mx6ullevk,将其重命名 mx6ull_alientek_emmc,将 其 中 的 mx6ullevk.c 文 件 重 命 名 为mx6ull_alientek_emmc.cuboot 中每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等
(4)修改开发板对应的板级文件夹内容
修改 mx6ull_alientek_emmc 目录下的 Makefile修改 镜像配置文件 mx6ull_alientek_emmc 目录下的 imximage.cfg修改 mx6ull_alientek_emmc 目录下的 Kconfig
(5)修改U-Boot 图形配置文件
(6)修改相关驱动(LCD 网口)
(7)编译验证
(8)设置bootcmd 和 和 bootargs 环境变量
二、linux内核kernel移植流程
1. 在 Linux 内核中查找可以参考的板子,编译出参考板子对应的 zImage 和.dtb 文件
2. 使用参考板子的 zImage 文件和.dtb 文件在我们所使用的板子上启动 Linux 内核
能启动的话就万事大吉不能启动需要调试 Linux 内核,Linux 内核启动用到的外设为,DRAM(Uboot 都初始化好的)和串口
3.添加开发板信息
(1)添加开发板默认配置文件
arch/arm/configs 目录下的 imx_v7_mfg_defconfig重新复制一份 ,命名为 imx_alientek_emmc_defconfig
(2)添加开发板对应的设备树文件
入目录 arch/arm/boot/dts 中,复制一份 imx6ull-14x14-evk.dts,然后将其重命名为 imx6ull-alientek-emmc.dts
(3)修改相应的驱动
NAND Flash、EMMC、SD 卡等驱动官方的 Linux 内核都是已经提供好了,基本不会出问题。重点是网络驱动
(4)内核启动后构建根文件系统