uboot移植过程 IMX6ULL


前言

uboot的移植并不是说完完全全从0开始将uboot移植到开发板或开发平台上。这对于我们来说是基本不可能的,这个工作一般是半导体厂商做的,他们会将uboot移植到他们的芯片中,通过他们自己的测试开发板完成移植,确认没问题后会将这个uboot发布出去,而我们将uboot或者Linux kernel移植到硬件上,一般流程是:

  1. 在uboot中找到参考的开发平台(原厂的开发板)
  2. 参考原厂开发板移植uboot到自己使用的硬件中

这里我使用的是IMX6ULL芯片,移植NXP官方开发板uboot为例,并在此基础上添加自己的开发板


一、从原厂中移植uboot进行测试

在NXP官网下载评估板的uboot,并移植到虚拟机中,我使用的是Ubuntu
在这里插入图片描述然后使用解压命令进行解压
在这里插入图片描述

  1. 进入文件中,开始编译

  2. 先清除数据 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean

  3. 配置uboot make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_defconfig
    可以在configs文件中选择自己芯片的配置文件
    在这里插入图片描述

  4. 虚拟机开始编译 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 V=1
    如图 编译成功
    在这里插入图片描述
    当然如果觉得命令太多,可以写成shell脚本,进行编译(需要给脚本文件赋权限)
    在这里插入图片描述

二、在U-Boot中添加自己的硬件

在uboot中添加自己的开发板或硬件平台有以下步骤:

1. 添加默认配置文件

先在 configs 目录下创建默认配置文件,复制mx6ull_14x14_evk_emmc_defconfig,然后重命名为 mx6ull_alientek_defconfig 并修改内容为在这里插入图片描述
这一步就可以看出需要添加 所使用的芯片中添加相关文件(board/freescale,imx之前是属于freescale的)

2. 添加对应的头文件

头文件都放在include文件下,而我们需要在include/configs中添加,复 制mx6ullevk.h,并重命名为 mx6ull_alientek.h,同时需改头文件的宏定义在这里插入图片描述
在这个文件中有很多配置uboot的宏定义,如I2C SPI USB 网口等功能性配置

3. 添加对应的板级文件夹

也就是在第一步时,配置出现过的文件夹,uboot 中每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等等。board/freescale 目录下复制 mx6ullevk,将其重命名为 mx6ull_alientek,将该目录下的.c文件同样改为mx6ull_alientek.c

3.1 修改Makefile文件

在这里插入图片描述
输出mx6ull_alientek.o文件,这样才会编译mx6ull_alientek.c文件

3.2 修改 mx6ull_alientek 目录下的 imximage.cfg 文件

在这里插入图片描述
指定使用本目录下的plugin.bin 文件

3.3 修改 mx6ull_alientek 目录下的 Kconfig 文件

在这里插入图片描述
这一步可以判断是否使用该目录下的文件

3.4 修改 mx6ull_alientek 目录下的 MAINTAINERS 文件

在这里插入图片描述

4. 修改U-Boot 图形配置文件

uboot是支持图形界面配置,需要在对应架构下的芯片文件中修改,修改文件arch/arm/cpu/armv7/mx6/Kconfig(如果用的 I.MX6UL 的话,应该修改 arch/arm/Kconfig 这个文件)
在这里插入图片描述
在这里插入图片描述

5. 修改相关驱动

该步骤需要根据硬件进行修改,如使用的LCD不一致,网口GPIO不同等,就需要单独进行配置了,这些配置都是在mx6ull_alientek.c和mx6ull_alientek.h中进行修改,这里以修改LCD为例:默认使用的LCD是 TFT43AB,现在我想使用TFT7016的,
在这里插入图片描述
根据自己显示屏参数进行修改,
在这里插入图片描述
然后打开打开 mx6ull_alientek.h文件,将所有的TFT43AB替换成TFT7016
在这里插入图片描述
到此LCD的参数配置结束

6. 编译验证

在创建的shell脚本中 使用自己添加的uboot配置
在这里插入图片描述
运行脚本文件,等待编译完成,编译完成后输入如下命令,查看mx6ull_alientek.h文件有没有被引用

grep -nR "mx6ull_alientek.h"

如果有很多文件引用了,说明新板子添加成功!
在这里插入图片描述


总结

uboot的移植看似简单,但也是需要细心处理,同时也是需要不断练习吸取经验,这样应当自己不熟悉的芯片,用起来也会得心应手!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐