uboot移植

1.添加开发板默认配置文件

在configs文件夹下创建自己的defconfig文件。复制半导体厂商的配置文件,例如NXP公司EVK开发板的配置文件是mx6ull_14x14_evk_emmc_defconfig,然后重命名为 mx6ull_alientek_emmc_defconfig。然后将文件 mx6ull_alientek_emmc_defconfig 中的内容改成下面的:

uboot移植_第1张图片

mx6ull_alientek_emmc_defconfig 基本和 mx6ull_14x14_evk_emmc_defconfig 中的内容一样,只是第 1 行和第 4 行做了修改

2.添加开发板对应的头文件

在目录 include/configs 下添加开发板对应的头文件 ,复制include/configs/mx6ullevk.h,并重命名为 mx6ull_alientek_emmc.h

uboot移植_第2张图片

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

uboot 中每个板子都有一个对应的文件夹来存放板级文件,NXP 的 I.MX 系列芯片的所有板级文件夹都存放在 board/freescale 目录下,复制 mx6ullevk,将其重命名为 mx6ull_alientek_emmc

我们还需要对 mx6ull_alientek_emmc 目录下的文件做一些修改

1、修改 mx6ull_alientek_emmc 目录下的 Makefile 文件
uboot移植_第3张图片

第 6 行的 obj-y,改为 mx6ull_alientek_emmc.o,这样才会编译 mx6ull_alientek_emmc.c这个文件

2、修改 mx6ull_alientek_emmc 目录下的 imximage.cfg 文件

uboot移植_第4张图片

主要是修改了文件夹的路径

3、修改 mx6ull_alientek_emmc 目录下的 Kconfig 文件

uboot移植_第5张图片

重点说明:这个Kconfig文件必须改对!!我们修改了开发板对应的头文件的名字,那么我uboot怎么知道开发板对应的头文件是哪一个?我肯定要在某些地方告诉uboot,我新重命名的那个文件是我的头文件。SYS_CONFIG_NAME  就是通过这个变量名,将我的头文件联系了起来,因为头文件是存放在include文件夹里,所以只需要告诉uboot头文件的名字,不需要告诉头文件的路径。当然,上面的SYS_BOARD等变量,是板级文件夹存放的位置,这样不就都联系上了?

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

修改文件arch/arm/cpu/armv7/mx6/Kconfig(如果用的 I.MX6UL 的话,应该修改 arch/arm/Kconfig 这个文件)

uboot移植_第6张图片

4.修改LCD驱动和网络驱动等

修改LCD:打开文件 mx6ull_alientek_emmc.c,找到如下所示内容:

uboot移植_第7张图片

修改.mode里面的LCD参数

打开 mx6ull_alientek_emmc.h,找到所有如下语句:
uboot移植_第8张图片

改到这,LCD驱动基本就修改好了

问:如果修改完上述的环境变量后,使用print查看uboot的环境变量,发现没有改过来,这是怎么回事呢?

原来uboot 启动以后会先从 MMC 中读取环境变量,如果 MMC 中没有环境变量的话,才会使用 mx6ull_alientek_emmc.h 中的默认环境变量!!

网络驱动的移植比较复杂,这里就不详细说了,需要根据不同的开发板做不同的移植

一般 uboot 中需要解决串口、 NAND、 EMMC 或 SD 卡、网络和 LCD 驱动,因为 uboot的主要目的就是启动 Linux 内核,所以不需要考虑太多的外设驱动。
 

你可能感兴趣的:(u-boot)