linux(第十四期)--Uboot移植(2)-- 在U-Boot 中添加自己的开发板-- Ubuntu20.04

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言

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

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

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

[1、修改 mx6ull_alientek_emmc 目录下的 Makefile 文件](#1、修改 mx6ull_alientek_emmc 目录下的 Makefile 文件)

[2、修改 mx6ull_alientek_emmc 目录下的 imximage.cfg 文件](#2、修改 mx6ull_alientek_emmc 目录下的 imximage.cfg 文件)

[3、修改 mx6ull_alientek_emmc 目录下的 Kconfig 文件](#3、修改 mx6ull_alientek_emmc 目录下的 Kconfig 文件)

[4、修改 mx6ull_alientek_emmc 目录下的 MAINTAINERS 文件](#4、修改 mx6ull_alientek_emmc 目录下的 MAINTAINERS 文件)

[4、修改 U-Boot 图形界面配置文件](#4、修改 U-Boot 图形界面配置文件)

5、编译

总结


前言

在上一篇博客中我们编译烧写了NXP 官方 的uboot,接下来我们要在此uboot中添加我们的开发板或者开发平台。

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

先在 configs 目录下创建默认配置文件,复制 mx6ull_14x14_evk_emmc_defconfig ,然后重
命名为 mx6ull_alientek_emmc_defconfig ,命令如下:

复制代码
cd configs
cp mx6ull_14x14_evk_emmc_defconfig mx6ull_alientek_emmc_defconfig

然后将mx6ull_alientek_emmc_defconfig中的内容改成如下所示:

复制代码
CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_alientek_emmc/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"
CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_TARGET_MX6ULL_ALIENTEK_EMMC=y
CONFIG_CMD_GPIO=y

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

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

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

复制代码
cp mx6ullevk.h mx6ull_alientek_emmc.h

拷贝完成后将:

复制代码
#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H

改为:

复制代码
#ifndef __MX6ULL_ALIENTEK_EMMC_CONFIG_H
#define __MX6ULL_ALIENTEK_EMMC_CONFIG_H

mx6ull_alientek_emmc.h 里面有很多宏定义,这些宏定义基本用于配置 uboot,也有一些

I.MX6ULL 的配置项目。如果我们自己要想使能或者禁止 uboot 的某些功能,那就在 mx6ull_alientek_emmc.h 里面做修改即可。

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

uboot 中每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等
等。 NXP 的 I.MX 系列芯片的所有板级文件夹都存放在 board/freescale 目录下,在这个目录下
有个名为 mx6ullevk 的文件夹,这个文件夹就是 NXP 官方 I.MX6ULL EVK 开发板的板级文件
夹。复制 mx6ullevk ,将其重命名为 mx6ull_alientek_emmc ,命令如下:

复制代码
cd board/freescale/
cp mx6ullevk/ -r mx6ull_alientek_emmc

进 入 mx6ull_alientek_emmc 目 录 中 , 将 其 中 的 mx6ullevk.c 文 件 重 命 名 为
mx6ull_alientek_emmc.c ,命令如下:

复制代码
cd mx6ull_alientek_emmc
mv mx6ullevk.c mx6ull_alientek_emmc.c

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

1**、修改mx6ull_alientek_emmc目录下的Makefile文件**

将 mx6ull_alientek_emmc 下的 Makefile 文件内容改为如下所示:

复制代码
# (C) Copyright 2015 Freescale Semiconductor, Inc.
#
# SPDX-License-Identifier:	GPL-2.0+
#

obj-y  := mx6ull_alientek_emmc.o

extra-$(CONFIG_USE_PLUGIN) := plugin.bin
$(obj)/plugin.bin: $(obj)/plugin.o
	$(OBJCOPY) -O binary --gap-fill 0xff $< $@

重点是第 6 行的 obj-y,改为 mx6ull_alientek_emmc.o,这样才会编译 mx6ull_alientek_emmc.c

这个文件。

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

将 imximage.cfg 中的下面一句:
PLUGIN board/freescale/mx6ullevk/plugin.bin 0x00907000
改为:
PLUGIN board/freescale/mx6ull_alientek_emmc/plugin.bin 0x00907000

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

复制代码
if TARGET_MX6ULL_ALIENTEK_EMMC

config SYS_BOARD
	default "mx6ull_alientek_emmc"

config SYS_VENDOR
	default "freescale"

config SYS_SOC
	default "mx6"

config SYS_CONFIG_NAME
	default "mx6ull_alientek_emmc"

endif

4**、修改mx6ull_alientek_emmc目录下的MAINTAINERS文件**

修改 MAINTAINERS 文件,修改后的内容如下:

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

uboot 是支持图形界面配置,关于 uboot 的图形界面配置下一章会详细的讲解。修改文件
arch/arm/cpu/armv7/mx6/Kconfig( 如果用的 I.MX6UL 的话,应该修改 arch/arm/Kconfig 这个文
件 ) ,在 207 行加入如下内容:

复制代码
config TARGET_MX6ULL_ALIENTEK_EMMC
	bool "Support mx6ull_alientek_emmc"
	select MX6ULL
	select DM
	select DM_THERMAL

在最后一行的 endif 的前一行添加如下内容:

复制代码
source "board/freescale/mx6ull_alientek_emmc/Kconfig"

到此为止, I.MX6U-ALPHA 开发板就已经添加到 uboot 中了,接下来就是编译这个新添加
的开发板。

5、编译

在 uboot 根目录下新建一个名为 mx6ull_alientek_emmc.sh 的 shell 脚本,在这个 shell 脚本
里面输入如下内容:

复制代码
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  mx6ull_alientek_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16

第 3 行我们使用的默认配置文件就是 33.2.1 节中新建的 mx6ull_alientek_emmc_defconfig 这
个配置文件。给予 mx6ll_alientek_emmc.sh 可执行权限,然后运行脚本来完成编译,命令如下:

复制代码
chmod 777 mx6ull_alientek_emmc.sh  //给予可执行权限,一次即可
./mx6ull_alientek_emmc.sh          //运行脚本编译uboot

等待编译完成,编译 完成 以 后 输 入 如 下命 令:

复制代码
grep -nR "mx6ull_alientek_emmc.h"

查 看 一 下 添加 的 mx6ull_alientek_emmc.h 这个头文件有没有被引用。

如果有很多文件都引用了mx6ull_alientek_emmc.h这个头文件,那就说明新板子添加成功。再把的 u-boot.bin 烧写到 SD 卡中测试 ,SecureCRT 输出结果如图:

从图 中 可以看出,此时的 Board 还是" MX6ULL 14x14 EVK ",因为我们参考的 NXP
官方的 I.MX6ULL 开发板来添加自己的开发板。如果接了 LCD 屏幕的话会发现 LCD 屏幕并没
有显示 NXP 的 logo ,而且从图 中可以看出此时的网络同样也没识别出来。因为默认 uboot 中的 LCD 驱动和网络驱动在正点原子的 I.MX6U-ALPHA 开发板上是有问题的, 需要修改。这个下期再具体讲解。


总结

在NXP 官方 的tU-Boot 中添加自己的开发板级文件。

相关推荐
大树889 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠9 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质9 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush49 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5209 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz10 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工10 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智11 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩11 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_11 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化