iMX6ULL u-boot2021.04移植

  • 1. 添加板子
    • 1.1 添加配置文件
    • 1.2 添加板级文件
    • 1.3 添加设备树文件
  • 2. 修改设备树
    • 2.1 修改网卡
    • 2.1 修改LCD
  • 3. 编译下载
    • 3.1 编译
    • 3.1 下载验证
  • 4. 总结

我移植的板子是讯为的TERMINATOR_V1.1开发板,参考板为官方 i.MX6ULL EVK开发板。

  1. iMX6ULL uboot2021.04 linux5.15.32移植
  2. iMX6ULL启动流程
  3. iMX6ULL u-boot2021.04移植
  4. iMX6ULL linux5.15.32移植
  5. iMX6ULL buildroot-2022.02.5构建根文件系统

1. 添加板子

进入我们下载好的源码目录,需要复制每个板子特有的一些文件,添加完板子板级文件一般就不会修改了,主要是修改设备树和配置文件。这里直接修改完这些文件,基本都是将evk改为topeet,不做过多解释。

1.1 添加配置文件

添加配置文件我们只需要复制 i.MX6ULL EVK的默认配置文件,在源码目录下执行下列命令创建我们自己板子的配置文件。

$ cd configs/
$ cp mx6ull_14x14_evk_defconfig mx6ull_14x14_topeet_defconfig

修改configs/mx6ull_14x14_topeet_defconfig文件

# configs/mx6ull_14x14_topeet_defconfigCONFIG_TARGET_MX6ULL_14X14_EVK=y
# 改为
CONFIG_TARGET_MX6ULL_14X14_TOPEET=yCONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-evk"
# 改为
CONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-topeet"CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ullevk/imximage.cfg"
# 改为
CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_topeet/imximage.cfg"

1.2 添加板级文件

同样复制参考板的板级文件,在源码目录下执行下列命令创建我们自己板子的板级文件。

$ cd include/configs/
$ cp mx6ullevk.h mx6ull_topeet.h$ cd ../../board/freescale/
$ cp -r mx6ullevk mx6ull_topeet
$ cd mx6ull_topeet/
$ mv mx6ullevk.c mx6ull_topeet.c
$ rm imximage_lpddr2.cfg

修改include/configs/mx6ull_topeet.h文件

// include/configs/mx6ull_topeet.h#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H
// 改为
#ifndef __MX6ULL_TOPEET_CONFIG_H
#define __MX6ULL_TOPEET_CONFIG_H/* 删除注释代码
#define is_mx6ull_9x9_evk() CONFIG_IS_ENABLED(TARGET_MX6ULL_9X9_EVK)#ifdef CONFIG_TARGET_MX6ULL_9X9_EVK
#define PHYS_SDRAM_SIZE     SZ_256M
#define BOOTARGS_CMA_SIZE   "cma=96M "
#else
*/
#define PHYS_SDRAM_SIZE     SZ_512M
#define BOOTARGS_CMA_SIZE   ""
/* DCDC used on 14x14 EVK, no PMIC */
#undef CONFIG_LDO_BYPASS_CHECK
/* 删除注释代码
#endif
*/// 把findfdt和findtee两个uboot环境变量改为如下"findfdt="\"if test $fdt_file = undefined; then " \"if test $board_name = TOPEET && test $board_rev = 14X14; then " \"setenv fdt_file imx6ull-14x14-topeet.dtb; fi; " \"if test $fdt_file = undefined; then " \"echo WARNING: Could not determine dtb to use; " \"fi; " \"fi;\0" \"findtee="\"if test $tee_file = undefined; then " \"if test $board_name = TOPEET && test $board_rev = 14X14; then " \"setenv tee_file uTee-6ull-topeet; fi; " \"if test $tee_file = undefined; then " \"echo WARNING: Could not determine tee to use; " \"fi; " \"fi;\0" \

修改board/freescale/mx6ull_topeet/mx6ull_topeet.c文件

// board/freescale/mx6ull_topeet/mx6ull_topeet.cint board_late_init(void)
{/* 此处代码省略 */// 下面代码修改为
#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIGenv_set("board_name", "TOPEET");env_set("board_rev", "14X14");
#endif/* 此处代码省略 */
}// 下面函数修改为
int checkboard(void)
{puts("Board: MX6ULL 14x14 TOPEET\n");return 0;
}

修改board/freescale/mx6ull_topeet/imximage.cfg文件

// board/freescale/mx6ull_topeet/imximage.cfg#ifdef CONFIG_USE_IMXIMG_PLUGIN
/*PLUGIN    plugin-binary-file    IRAM_FREE_START_ADDR*/
PLUGIN  board/freescale/mx6ullevk/plugin.bin 0x00907000
#else
// 改为
#ifdef CONFIG_USE_IMXIMG_PLUGIN
/*PLUGIN    plugin-binary-file    IRAM_FREE_START_ADDR*/
PLUGIN  board/freescale/mx6ull_topeet/plugin.bin 0x00907000
#else

修改board/freescale/mx6ull_topeet/plugin.S文件

// board/freescale/mx6ull_topeet/plugin.S.macro imx6ull_ddr3_evk_setting
// 改为
.macro imx6ull_ddr3_setting/* 删除注释代码
.macro imx6ull_lpddr2_evk_settingldr r0, =IOMUXC_BASE_ADDRldr r1, =0x00080000// 此处代码省略 ldr r1, =0x00000000str r1, [r0, #0x01C]
.endm
*/.macro imx6_ddr_setting
#if defined (CONFIG_TARGET_MX6ULL_9X9_EVK)imx6ull_lpddr2_evk_setting
#elseimx6ull_ddr3_evk_setting
#endif
.endm
// 改为
.macro imx6_ddr_settingimx6ull_ddr3_setting
.endm

修改board/freescale/mx6ull_topeet/Kconfig文件为

if TARGET_MX6ULL_14X14_TOPEETconfig SYS_BOARDdefault "mx6ull_topeet"config SYS_VENDORdefault "freescale"config SYS_CONFIG_NAMEdefault "mx6ull_topeet"config SYS_TEXT_BASEdefault 0x87800000
endif

修改board/freescale/mx6ull_topeet/MAINTAINERS文件为

MX6ULL_TOPEET BOARD
M:  Peng Fan <peng.fan@nxp.com>
S:  Maintained
F:  board/freescale/mx6ull_topeet/
F:  include/configs/mx6ull_topeet.h
F:  configs/mx6ull_14x14_topeet_defconfig

修改board/freescale/mx6ull_topeet/Makefile文件为

# SPDX-License-Identifier: GPL-2.0+
# (C) Copyright 2016 Freescale Semiconductor, Inc.obj-y  := mx6ull_topeet.o

修改arch/arm/mach-imx/mx6/Kconfig文件

config TARGET_BRPPT2bool "brppt2"# 此处代码省略helpSupportB&R BRPPT2 platformbased on Freescale's iMX6 SoC
# 在这里添加下面代码
config TARGET_MX6ULL_14X14_TOPEETbool "Support mx6ull_14x14_topeet"depends on MX6ULLselect BOARD_LATE_INITselect DMselect DM_THERMALselect IMX_MODULE_FUSEselect OF_SYSTEM_SETUPimply CMD_DM# 在最后endif上面添加下面一行
source "board/freescale/mx6ull_topeet/Kconfig"

1.3 添加设备树文件

复制参考板的设备树文件,在源码目录下执行下列命令创建我们自己板子的设备树文件。

$ cd arch/arm/dts/
$ cp imx6ull-14x14-evk.dts imx6ull-14x14-topeet.dts
$ cp imx6ul-14x14-evk.dtsi imx6ul-14x14-topeet.dtsi
$ cp imx6ul-14x14-evk-u-boot.dtsi imx6ul-14x14-topeet-u-boot.dtsi

修改arch/arm/dts/imx6ull-14x14-topeet.dts文件为,usdhc2节点是复制imx6ull-14x14-evk-emmc.dts中的,我们的板子有EMMC本应复制imx6ull-14x14-evk-emmc.dts,不想创建太多文件所以如此。

// SPDX-License-Identifier: (GPL-2.0 OR MIT)
//
// Copyright (C) 2016 Freescale Semiconductor, Inc./dts-v1/;#include "imx6ull.dtsi"
#include "imx6ul-14x14-topeet.dtsi"
#include "imx6ul-14x14-topeet-u-boot.dtsi"/ {model = "i.MX6 ULL 14x14 TOPEET Board";compatible = "fsl,imx6ull-14x14-topeet", "fsl,imx6ull";
};&clks {assigned-clocks = <&clks IMX6UL_CLK_PLL3_PFD2>;assigned-clock-rates = <320000000>;
};&usdhc2 {pinctrl-names = "default", "state_100mhz", "state_200mhz";pinctrl-0 = <&pinctrl_usdhc2_8bit>;pinctrl-1 = <&pinctrl_usdhc2_8bit_100mhz>;pinctrl-2 = <&pinctrl_usdhc2_8bit_200mhz>;bus-width = <8>;non-removable;status = "okay";
};

修改arch/arm/dts/Makefile文件

dtb-$(CONFIG_MX6ULL) += \# 此处代码省略imx6ulz-14x14-evk-gpmi-weim.dtb \#添加我们的板子imx6ull-14x14-topeet.dtb

2. 修改设备树

添加完板子之后对uboot的修改主要就是修改设备树,源码基本不需要修改。

2.1 修改网卡

讯为的TERMINATOR_V1.1开发板使用的phy芯片和官方EVK开发板相同,只有设计上略有不同。TERMINATOR_V1.1开发板的两个phy芯片复位引脚分别接到了GPIO5_IO07和GPIO5_IO08上,所以要对phy配置复位引脚。GPIO5_IO07和GPIO5_IO08被复用为了SPI4的引脚,我们先失能SPI4。

// arch/arm/dts/imx6ul-14x14-topeet.dtsi/ {spi4 {status = "disabled"; // 失能SPI4};
};&fec1 {// 追加下面两个属性phy-reset-gpios = <&gpio5 7 GPIO_ACTIVE_LOW>;phy-reset-duration = <200>;
};&fec2 {// 追加下面两个属性phy-reset-gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;phy-reset-duration = <200>;
};&iomuxc {pinctrl_enet1: enet1grp {fsl,pins = <// 追加下面一行MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07   0x10b0  /* RST */>;};pinctrl_enet2: enet2grp {fsl,pins = <// 追加下面一行MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08   0x10b0  /* RST */>;};
};

修改configs/mx6ull_14x14_topeet_defconfig文件

# configs/mx6ull_14x14_topeet_defconfig# 最后添加,随机MAC地址
CONFIG_NET_RANDOM_ETHADDR=y

2.1 修改LCD

本文对RGB-LCD修改,其他显示设备不支持。

// arch/arm/dts/imx6ul-14x14-topeet.dtsi&lcdif {display0: display@0 {display-timings {native-mode = <&timing0>;timing0: timing0 {// 修改下面这些参数clock-frequency = <25000000>;hactive = <1024>;vactive = <600>;hfront-porch = <120>;hback-porch = <130>;hsync-len = <70>;vback-porch = <15>;vfront-porch = <17>;vsync-len = <3>;};};};
};

3. 编译下载

3.1 编译

利用之前安装的工具链,执行下列命令完成编译。

$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_topeet_defconfig
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12

编译完成,生成u-boot-dtb.imx是带有IVT的,可以烧写。

3.1 下载验证

使用uuu启动uboot,将拨码开关拨到串行下载模式,连接好串口和OTG。执行$ sudo uuu u-boot-dtb.imx命令,进行下载。

查看串口打印信息,uboot启动正常,屏幕显示正常,按Ctrl+C进入命令行。

连接ETHERNET2到路由器,dhcp获取ip,ping服务器成功。

按板子复位键,执行$ sudo uuu -b emmc u-boot-dtb.imx命令,将uboot下载到EMMC。设置拨码开关为EMMC启动,按复位键成功启动。

4. 总结

uboot移植添加了很多板级文件,这些都不是重要的(其他芯片可能没有这些)。修改设备树是移植的重中之重,但是TERMINATOR_V1.1开发板和官方imx6ullevk开发板比较接近,甚至官方demo板的镜像在讯为开发板直接可以跑起来,所以修改比较简单。本文仅供学习参考,如有问题欢迎指正。

移植源码获取:

git clone https://github.com/Sonboy97/uboot.git -b imx

iMX6ULL u-boot2021.04移植相关推荐

  1. IMX6ULL u-boot 2020.04 移植LAN8720A(网卡)

    1.修改设备树arch/arm/dts/imx6ul-14x14-evk.dtsi 修改后 &fec1 {pinctrl-names = "default";pinctrl ...

  2. 6004.ubuntu18.04移植qgroundcontrol地面站

    ubuntu18.04移植qgroundcontrol地面站 参考博客: 下载qgroundControl源码 第1种方式: git clone --recursive https://github. ...

  3. uboot研读笔记 | 04 - 移植uboot 2012.04到JZ2440(支持Nor Flash读写)

    项目开源地址:https://github.com/Mculover666/uboot-jz2440 0. 教程完整目录 00 - 嵌入式Linux系统中Bootloader的作用和基本运行原理 01 ...

  4. IMX6ULL系列学习记录-sii902x移植篇

    本人电子专业研究生毕业,挣点零花钱,承接毕业设计或者课题项目,涉及树莓派,图像识别.视频传输.python语音识别.esp32单片机.qt界面.python.嵌入式Linux.有兴趣可以联系我:155 ...

  5. linux内核imx6,imx6ull之linux内核移植

    imx6ull开发环境之系统安装请参考:https://www.cnblogs.com/gxlblogs/p/14382547.html imx6ull交叉编译工具链安装 请参数:https://ww ...

  6. IMX6ULL-UBoot 20.04移植记录

    开发环境简介 开发板 正点原子MINI 操作系统 Linux-Mint 20.2 交叉编译链 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf U ...

  7. 野火iMX6ULL Pro开发板移植SDL2

    承诺的Linux三部曲移植还没写完,差个根文件系统没有写呢,但实在压抑不住内心的亢奋情绪,先把SDL2移植奉献给大家吧.关于SDL的移植,已经进行一个月了,之前把SDL移植成功后打算写Python的模 ...

  8. IMX6ULL博通wifi移植BCM4345C5

    ####WLAN DONGLE OVERVIEW The Dongle Host Driver (DHD) is the executable module that provides encapsu ...

  9. 【uboot】imx6ull uboot移植LAN8720A网卡驱动

    文章目录 相关文章 1. 前言 2. IMX6ULL Ethernet LAN8720A硬件连接 3. 支持LAN8720A修改步骤 4. 验证测试 问题1:如何确定LAN8720A网卡PHYAD地址 ...

  10. uboot研读笔记 | 05 - 移植uboot 2012.04到JZ2440(支持Nand Flash读写)

    项目开源地址:https://github.com/Mculover666/uboot-jz2440 0. 教程完整目录 00 - 嵌入式Linux系统中Bootloader的作用和基本运行原理 01 ...

最新文章

  1. PLS-00215:字符串长度限制在范围
  2. BSP print implemented in BSPWD_BASICS print.htm
  3. getMeasuredWidth和getWidth的区别
  4. pentaho DI--- Tutorial (spoon)
  5. python另一个程序正在使用此文件_另一个程序正在使用此文件,进程无法访问
  6. 最优视频监控软件开发的实现方法
  7. 【数据结构笔记41】散列表/哈希表的性能分享
  8. 工业上 计算机控制系统分为哪两大类,控制仪表及装置——考试复习题
  9. 26. Magento 常用(1)
  10. Mysql 根类别和子类别,如何在MySQL中设计类别和子类别?
  11. 全国计算机等级考试二级C语言程序设计考点整理
  12. WebUploader 设置单个图片上传
  13. 微信自动回复 html 点击文字,【微信开发】公众号自动回复文字和图文链接(示例代码)...
  14. premiere(Pr)为视频配字幕 开放式字幕使用详解
  15. 使用 matplotlib 绘制文氏图(venn)
  16. 【Linux】【开发环境】【RHEL】开发环境搭建系列之四——安装daytime服务
  17. Lawnmower E题
  18. Java题目训练——年终奖和迷宫问题
  19. AutoSAR系列讲解(实践篇)11.4-NvBlockSwComponents(上)
  20. windows系统coursera视频播放出错解决方法

热门文章

  1. 计算机表格常用公式,十个办公常用的最基本的Excel函数
  2. 万字长文带你回顾电子游戏的七十多年历史(完整版)
  3. maven 安装配置 - vscode for java
  4. java求两点间的距离_java计算两点间的距离方法总结
  5. Apache ShenYu 网关正式支持 Dubbo3 服务代理
  6. vm虚拟机无法访问共享文件夹
  7. 压缩base64图片大小
  8. 重磅!汇新云88会员节福利大放送
  9. 基于双边滤波的改进型Canny算法边缘检测冠状动脉CT图像
  10. 大数据处理平台简介和总结