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 中添加自己的开发板级文件。

相关推荐
ben9518chen15 小时前
嵌入式linux操作系统简介
linux·运维·服务器
菜鸟笔记本15 小时前
linux设置定时备份mysql数据
linux·mysql·oracle
majingming12315 小时前
ubuntu下的交叉编译
linux·运维·ubuntu
shchojj15 小时前
ubuntu 因为写错pam.d文件引起的sudo权限丢失
linux·运维·ubuntu
小康小小涵15 小时前
WSL2安装与移植到F盘
运维·服务器
小宇的天下15 小时前
Calibre nmDRC Results(19-1)
服务器·数据库·oracle
funfan051716 小时前
【运维】Linux/Debian系统时间校准方法简记
linux·运维·debian
InfiSight智睿视界16 小时前
门店智能体技术如何破解美容美发连锁的“标准执行困境”
大数据·运维·人工智能
慕容雪_16 小时前
运维笔记-网络共享
运维·笔记·网络共享