uboot的移植和编译

1.uboot的作用

初始化硬件,将内核读到内存,根据环境变量去启动内核,传递参数给内核,内核启动后生命就结束

2.编译野火提供的uboot

1.下载源码—>野火修改后的uboot源码
git clone -b ebf_v2020_10_imx https://gitee.com/Embedfire/ebf_linux_uboot

2.执行以下命令
make distclean //清除环境
make mx6ull_fire_mmc_defconfig //配置板极文件
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- //开始编译

编译前:
在这里插入图片描述
编译后:
在这里插入图片描述
3.编译成功的效果
uboot.bin:是 u-boot 编译生成的原始的 image 文件,很多 image 文件的生成都需要 依赖于它
u-boot.imx:是 uboot.bin 添加了头部信息生成的最终镜像
编译生成的 uboot-dtb.imx 文件就是我们想要文件

至此编译野火的uboot就成功了!!!!

移植NXP官方提供的uboot到野火开发板

前面我们的使用的是野火提供的已经配制好的uboot,这个uboot经过配置后适用于野火的开发板,而NXP提供的只是适用于自己的板子,所以我们移植就是给开发板适配
废话少说,来看步骤!!!!

1.下载NXP的uboot

ftp://ftp.denx.de/pub/u-boot/获取(后缀有 rcx 表示测试版本)
ftp://ftp.denx.de/pub/u-boot/
这里下载的是
在这里插入图片描述

2.解压

在这里插入图片描述

3.编译官方的uboot

首先要找到对应芯片的配置文件,配置文件在源码目录下的configs里面,里面有不同型号和大小的配置文件,这里使用
注意编译成功后的uboot的镜像可能适用开发板,也可能不适用,所以接下来,我们重新配置来适用开发板

4.头文件

1.复 制include/configs/mx6ullevk.h,并重命名为 ljm_6ull.h
在这里面修改我们的配置
在这里插入图片描述
修改内容:uboot的移植和编译_第1张图片

5.添加开发板对应的板极文件夹

注意:
NXP 的 I.MX 系列芯片的所有板级文件夹都存放在 board/freescale 目录下,在这个目录下有个名为 mx6ullevk 的文件夹,这个文件夹就是 NXP 官方 I.MX6ULL EVK 开发板的板级文件夹uboot的移植和编译_第2张图片
我们需要做的就是赋值一份mx6ullevk,命名为ljm_6ull在这里插入图片描述
这个是编译后才有这么多文件,要不然就只有官网那几个文件,那几个文件就是我们需要修改的

1.复制该目录并修改名字为ljm_6ull

下面这幅图是我截图也野火的,说明各种文件作用
uboot的移植和编译_第3张图片
uboot的移植和编译_第4张图片

2.修改Makefile文件

要和ljm_6ull.c文件名对应起来,这样才会编译ljm_6ull.c
uboot的移植和编译_第5张图片

3.修改imximage.cfg 文件

改前:在这里插入图片描述改后:uboot的移植和编译_第6张图片

4.修改Kconfig 文件uboot的移植和编译_第7张图片

5.修改MAINTAINERS 文件 uboot的移植和编译_第8张图片

6.添加开发板配置文件

1.我们在源码目录的configs目录下拷贝,原厂的6ull的配置文件

复制 mx6ull_14x14_evk_emmc_defconfig,
然后重 命名为 ljm_6ull_defconfig
要和前面配置对应起来如图:
uboot的移植和编译_第9张图片

2.修改ljm_6ull_defconfig文件的以下内容

CONFIG_TARGET_LJM_6ULL=y
CONFIG_DEFAULT_DEVICE_TREE=“ljm-6ull” 这行参数是设备树名称,要与uboot设备树对应
CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/ljm_6ull/imximage.cfg"这行参数是配置头部信息的,指向的是板子目录的cfg文件
uboot的移植和编译_第10张图片

7.修改图形配置

修改文件arch/arm/mach-imx/mx6/Kconfig
找到onfig TARGET_MX6ULL_14X14_EVK

添加以下红线内容
uboot的移植和编译_第11张图片
找到source "board/freescale/mx6ullevk/Kconfig"添加下面内容
uboot的移植和编译_第12张图片

8.添加设备树

1.复制设备树

cp arch/arm/dts/imx6ull-14x14-evk.dts arch/arm/dts/ljm-6ull.dts
在这里插入图片描述

2.添加设备树

在arch/arm/dts/Makefile
找到dtb-$(CONFIG_MX6ULL) +=
添加以下
uboot的移植和编译_第13张图片

9.再次编译

make distclean
make ljm_6ull_defconfig //这个文件在源码目录的configs下
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

编译成功

uboot的移植和编译_第14张图片

你可能感兴趣的:(移植开发,linux,运维,服务器)