白日梦观察 - u-boot
type: channel
link: https://blog.angustar.com/tag/u-boot/
items: i.MX6ULL 开发板系统移植与根文件系统构建（一）：U-Boot 的移植

i.MX6ULL 开发板系统移植与根文件系统构建（一）：U-Boot 的移植
type: item
date: 2023-07-25T23:36:00+08:00
description: 一、开发环境 嵌入式 Linux 开发板：100ASK-6ULL-V11（即：由百问网出品的 i.MX6ULL-PRO）； 系统：Ubuntu 18.04（已配置交叉编译工具链）； 待移植的 U-Boot：由 NXP 官方维护的 imx_v2020.04_5.4.47_2.2.0。 二、下载待移植的 U-Boot 源码 可以使用以下命令： git clone https://github.com/nxp-imx/uboot-imx cd uboot-imx git branch -a git checkout remotes/origin/imx_v2020.04_5.4.47_2.2.0 NXP 官方的项目集合了多个版本的 U-Boot，项目较大，如果多次克隆失败的话，也可以通过韦东山老师的仓库来克隆： git clone https://gitee.com/weidongshan/uboot-imx cd uboot-imx git reset d95408316b25d766d65397df42419b88fda3bbe1 --hard 三、移植 U-Boot 可以尝试使用默认配置来编译，我们这里就不尝试了哈，已知问题有：网卡不能正常驱动、LCD 屏幕参数不适配等等（其实尝试过，但没有截图🤣），我们直接开始移植。 1. 建立单板相关配置 建立单板的配置文件和头文件： cp configs/mx6ull_14x14_evk_emmc_defconfig configs/mx6ull_14x14_angus_emmc_defconfig cp include/configs/mx6ullevk.h include/configs/mx6ullangus.h 修改配置文件mx6ull_14x14_angus_emmc_defconfig的对应项为： CONFIG_TARGET_MX6ULL_14X14_ANGUS=y CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ullangus/imximage.cfg" CONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-angus-emmc" 修改头文件mx6ullangus.h的对应项为： #ifndef __MX6ULLANGUS_CONFIG_H #define __MX6ULLANGUS_CONFIG_H 同时修改该文件中查找设备树的命令： 添加 board 文件夹： cp board/freescale/mx6ullevk board/freescale/mx6ullangus -r 进入该文件夹后，修改文件名： mv mx6ullevk.c mx6ullangus.c 同时修改其对应内容： #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG env_set("board_name", "ANGUS"); if (is_mx6ull_9x9_evk()) env_set("board_rev", "9X9"); else env_set("board_rev", "14X14"); if (is_cpu_type(MXC_CPU_MX6ULZ)) { env_set("board_name", "ULZ-EVK"); env_set("usb_net_cmd", "usb start"); } #endif int checkboard(void) { if (is_mx6ull_9x9_evk()) puts("Board: MX6ULL 9x9 EVK\n"); else if (is_cpu_type(MXC_CPU_MX6ULZ)) puts("Board: MX6ULZ 14x14 EVK\n"); else puts("Board: MX6ULL 14x14 ANGUS\n"); return 0; } 修改文件imximage.cfg的对应项为： #ifdef CONFIG_USE_IMXIMG_PLUGIN /*PLUGIN plugin-binary-file IRAM_FREE_START_ADDR*/ PLUGIN board/freescale/mx6ullangus/plugin.bin 0x00907000 #else 修改文件Kconfig为： if TARGET_MX6ULL_14X14_ANGUS || TARGET_MX6ULL_9X9_EVK config SYS_BOARD default "mx6ullangus" config SYS_VENDOR default "freescale" config …