详细讲解移植u-boot.2022.10版本移植到开发板基本方法

这篇具有很好参考价值的文章主要介绍了详细讲解移植u-boot.2022.10版本移植到开发板基本方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 大家好,我是ST​。​

今天给大家讲一讲如何将u-boot.2022.10版本移植到imx6ull开发板上。

环境

选项 内容
编译主机 UbuntuLTS 18.04
目标板 ATK I.MX6ULL(512MB DDR3 + 8GB EMMC)
u-boot版本 2022.10
交叉编译工具链 gcc-linaro-7.5.0-2019.12-i686_arm-linux-gnueabihf

一、u-boot编译环境准备

1.u-boot源码包下载

1.1、本次使用的uboot版本为2022.10版本u-boot-2022.10.tar.bz2
1.2、下载链接:https://ftp.denx.de/pub/u-boot/

详细讲解移植u-boot.2022.10版本移植到开发板基本方法,Linux操作系统嵌入式开发之经典,linux

2.编译

2.1、通过共享文件夹或FTP服务将u-boot-2022.10.tar.bz2拷贝到ubuntu中
2.2、源码压缩包解压

tar -jxvf u-boot-2022.10.tar.bz2

3.安装依赖库

3.1、使用默认配置进行编译u-boot时报下面错误

toto@toto:~/workspace/uboot/u-boot-2022.10$ make mx6ull_14x14_evk_defconfig
YACC    scripts/kconfig/zconf.tab.c
/bin/sh: 1: bison: not found
scripts/Makefile.lib:222: recipe for target 'scripts/kconfig/zconf.tab.c' failed
make[1]: *** [scripts/kconfig/zconf.tab.c] Error 127
Makefile:578: recipe for target 'mx6ull_14x14_evk_defconfig' failed
make: *** [mx6ull_14x14_evk_defconfig] Error 2

解决办法:
该错误是由于缺少一些相关库文件导致,安装上即可正常编译,安装命令:

sudo apt install bison flex

3.2、然后继续编译又报错

详细讲解移植u-boot.2022.10版本移植到开发板基本方法,Linux操作系统嵌入式开发之经典,linux

解决办法,安装lib32z1依赖库

sudo apt-get install lib32z1

3.3、继续编译make,报错

详细讲解移植u-boot.2022.10版本移植到开发板基本方法,Linux操作系统嵌入式开发之经典,linux

解决方法:
继续安装依赖库libssl-dev

sudo apt-get install libssl-dev

3.4、编译通过,u-boot所有依赖库已全部安装完毕

详细讲解移植u-boot.2022.10版本移植到开发板基本方法,Linux操作系统嵌入式开发之经典,linux

二、U-Boot中添加自己的开发板

在U-Boot中添加自己的开发板NXP官方uboot中默认都是 NXP 自己的开发板,虽说我们可以直接在官方的开发板上直接修改,使u-boot可以完整的运行在我们的板子上。但是从学习的角度来讲,这样我们就不能了解到uboot是如何添加新平台的。接下来我们就参考NXP官方的I.MX6ULL EVK 开发板学习如何在u-boot中添加我们的开发板或者开发平台。

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

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

cd configs
cp mx6ull_14x14_evk_defconfig mx6ull_toto_defconfig

然后将文件 mx6ull_toto_defconfig 中的内容改成下面的:

CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_SYS_TEXT_BASE=0x87800000
CONFIG_SYS_MALLOC_LEN=0x1000000
CONFIG_NR_DRAM_BANKS=1
CONFIG_ENV_SIZE=0x2000
CONFIG_ENV_OFFSET=0xC0000
CONFIG_MX6ULL=y
CONFIG_TARGET_MX6ULL_TOTO=y
...

可以看出,mx6ull_toto_defconfig 基本和 mx6ull_14x14_evk_defconfig中的内容一样,只是第9行做了修改

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

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

cp include/configs/mx6ullevk.h include/configs/mx6ull_toto.h

拷贝完成以后将:

#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H

改为:

#ifndef __MX6ULL_TOTO_CONFIG_H
#define __MX6ULL_TOTO_CONFIG_H

mx6ull_toto.h 里面有很多宏定义,如配置uboot默认串口打印使用uart的第几个口,网口默认使用哪个网口等,也有一些u-boot环境变量的的默认配置。如果我们想要改变默认的uart和enet口,那就在 mx6ull_toto.h 里面做修改即可。

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

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

cd board/freescale
cp -r mx6ullevk/ mx6ull_toto

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

cd mx6ull_toto
mv mx6ullevk.c mx6ull_toto.c

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

3.1、修改 mx6ull_toto 目录下的 Makefile 文件

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

 

# SPDX-License-Identifier: GPL-2.0+
# (C) Copyright 2016 Freescale Semiconductor, Inc.

obj-y  := mx6ull_toto.o

重点是第 4行的 obj-y,改为 mx6ull_toto.o,这样才会编译 mx6ull_toto.c 这个文件。

3.2、修改 mx6ull_toto 目录下的 imximage.cfg 文件

将 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_toto/plugin.bin 0x00907000
#else

3.3、修改 mx6ull_toto 目录下的 Kconfig 文件

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

 

if TARGET_MX6ULL_TOTO

config SYS_BOARD
    default "mx6ull_toto"

config SYS_VENDOR
    default "freescale"

config SYS_CONFIG_NAME
    default "mx6ull_toto"

config IMX_CONFIG
    default "board/freescale/mx6ull_toto/imximage.cfg"

endif

3.4、修改 mx6ull_toto 目录下的 MAINTAINERS 文件

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

 

MX6ULLTOTO BOARD
M:    Peng Fan <peng.fan@nxp.com>
S:    Maintained
F:    board/freescale/mx6ull_toto/
F:    include/configs/mx6ull_toto.h
F:    configs/mx6ull_toto_defconfig
F:    configs/mx6ull_14x14_evk_plugin_defconfig
F:    configs/mx6ulz_14x14_evk_defconfig

4、修改 arch/arm/mach-imx/mx6/Kconfig

修改文件arch/arm/mach-imx/mx6/Kconfig,在 468 行加入如下内容:

config TARGET_MX6ULL_TOTO
    bool "Support mx6ull_toto"
    depends on MX6ULL
    select BOARD_LATE_INIT
    select DM
    select DM_THERMAL
    imply CMD_DM

717行添加如下内容:

 

source "board/freescale/mx6ull_toto/Kconfig"

5、其他需要修改的地方

在 uboot 启动信息中会有“Board: MX6ULL 14x14 EVK”这一句,也就是说板子名字为“MX6ULL 14x14 EVK”。那么如果要将其改为我们想要的名字,就需打开文件 mx6ull_toto.c,找到函数checkboard,将其改为如下所示内容:

 

int checkboard(void)
{
    if (is_cpu_type(MXC_CPU_MX6ULZ))
        puts("Board: MX6ULZ 14x14 EVK\n");
    else
        puts("Board: MX6ULL TOTO\n");
    return 0;
}

6、使用新添加的板子配置编译uboot

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

#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_toto_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8

build.sh添加可执行权限,命令如下:

chmod 777 build.sh

三、编译、下载、验证

1、编译

./build.sh

2、编译成功

  ...
  DTC     arch/arm/dts/imx6ulz-bsh-smm-m2.dtb
  DTC     arch/arm/dts/imx6ulz-14x14-evk.dtb
  DTC     arch/arm/dts/imx6q-apalis-eval.dtb
  DTC     arch/arm/dts/imx6dl-colibri-eval-v3.dtb
  SHIPPED dts/dt.dtb
  CAT     u-boot-dtb.bin
  COPY    u-boot.dtb
  COPY    u-boot.bin
  CFGS    u-boot-dtb.cfgout
  MKIMAGE u-boot-dtb.imx

3、下载验证

使用imxdownload将新编译出来的u-boot.bin烧写到SD卡中测试,SecureCRT 输出结果如下:

sudo ./imxdownload u-boot.bin /dev/sdbU-Boot 2022.10-gaef9f25a-dirty (Apr 05 2023 - 17:49:18 +0800)

CPU:   Freescale i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 26C
Reset cause: POR
Model: Freescale i.MX6 UltraLiteLite 14x14 EVK Board
Board: MX6ULL TOTO
DRAM:  512 MiB
Core:  65 devices, 17 uclasses, devicetree: separate
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
In:    serial
Out:   serial
Err:   serial
Net:   Could not get PHY for FEC1: addr 1
Could not get PHY for FEC1: addr 1
Get shared mii bus on ethernet@2188000
Could not get PHY for FEC1: addr 2
Get shared mii bus on ethernet@2188000
Could not get PHY for FEC1: addr 2
No ethernet found.

Hit any key to stop autoboot: 
=> 

从输出结果可以看出除网络没有识别出来外,其他均正常。

u-boot下网络调试将在下一篇文章进行详细介绍,关注我,下期文章及时观看!文章来源地址https://www.toymoban.com/news/detail-680400.html

到了这里,关于详细讲解移植u-boot.2022.10版本移植到开发板基本方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2022-渗透测试-OWASP TOP10详细讲解

    2024年02月14日
    浏览(47)
  • 正点原子嵌入式linux驱动开发——U-boot图形化配置及其原理

    经过之前对uboot的学习可以知道: uboot可以通过stm32mp15_trusted_defconfig来配置,或者通过文件stm32mp1.h来配置uboot 。还有 另外一种配置uboot的方法,就是图形化配置 ,以前的uboot是不支持图形化配置,只有Linux内核才支持图形化配置。不过不知道从什么时候开始,uboot也 支持图形

    2024年02月07日
    浏览(47)
  • 新唐NUC980使用记录(5.10.y内核):u-boot & linux & rootfs 编译与烧录测试(基于SD1位置SD卡)

    从去年(2022)开始新塘官方的NUC980 5.10.y内核的项目开始展开,这篇文章将测试在NUC980上使用5.10.y内核。 这篇文章中内容均在下面的开发板上进行测试: 《新唐NUC980使用记录:自制开发板(基于NUC980DK61YC)》 对于NUC980芯片本身的一些内容可以参考: 《新唐NUC980使用记录:基

    2024年02月03日
    浏览(66)
  • RK3588平台开发系列讲解(视频篇)ffmpeg 的移植

    沉淀、分享、成长,让自己和他人都能有所收获!😄 📢ffmpeg 是一种多媒体音视频处理工具,具备视频采集功能、视频抓取图像、视频格式转换、给视频加水印并能将视频转化为流等诸多强大的功能。它采用 LGPL 或 GPL 许可证,是一种开源程序。 FFmpeg主要特点和功能: 多媒

    2024年02月21日
    浏览(48)
  • u-boot详解

    1、uboot是一个裸机程序,比较复杂。我们需要先将其编译生成bin文件,然后添加头文件,然后将其烧写进去,最后通过他来启动Linux。 2、uboot就是一个bootloader(启动加载器),作用就是用于 启动Linux 或其他系统和初始化DDR。 uboot首先初始化ddr,然后将Linux镜像zImage(uImage)+设备

    2024年02月14日
    浏览(37)
  • [春秋云镜] CVE-2022-28060 详细讲解

    目录 前期准备 工具+环境 渗透测试 靶场提示 靶场测试 burpsuite SQLmap Victor CMS v1.0 /includes/login.php 存在sql注入 1.打开开启的靶场,右边发现一个登入界面   2.任意输入账号密码,打开burpsuite进行抓包 3.将抓到的包放入一个文件,使用SQLmap去爆破 4.爆破出来之后,选择y生成文件,

    2024年02月13日
    浏览(38)
  • U-boot常用命令(二)

    有时候需要在uboot中对SD卡或EMMC中存储的文件进行操作,这时候就要用到文件操作命令。跟文件操作相关的命令有:fatinfo、fatls、fstype、fatload 和 fatwrite,但是这些文件操作命令只支持 FAT 格式的文件系统!! 对于I.MX6U来说,SD/EMMC分为三个分区。 存放uboot 存放Linux zImage,dtb设

    2024年02月04日
    浏览(31)
  • U-Boot 烧写与启动

    1.uboot 编译好以后就可以烧写到板子上使用了,这里我们跟前面裸机例程一样,将 uboot 烧写到 SD 卡中,然后通过 SD 卡来启动来运行 uboot。使用 imxdownload 软件烧写,命令如 下:  chmod 777 imxdownload   //给予 imxdownload 可执行权限  sudo fdisk -l   //查看挂载设备  ./imxdownload u-boo

    2023年04月26日
    浏览(43)
  • 基于全志A33开发板linux系统移植学习记录(Boot0)

    第一章 Boot0基于ARMGCC的编译与修改 入行快两年,希望通过学习系统移植巩固下相关的知识,目标板使用基于全志A33 的astar-parrot开发板,开始本来想着使用Boot0来加载uboot,但后期发现为了代码统一和便捷性,最终还是选择了SPL作为跳板,但Boot0流程相对清晰,所以将对其做的

    2023年04月08日
    浏览(45)
  • Mainline Linux 和 U-Boot编译

    By Toradex胡珊逢 Toradex 自从 Linux BSP v6 开始在使用 32位处理器的 Arm 模块如 iMX6、iMX6ULL、iMX7 上提供 mainline/upstream kernel ,部分 64位处理器模块如 Verdin iMX8M Mini/Plus 也提供实验性支持。文章将以季度发布版本 Linux BSP V6.3.0 为例介绍如何下载和编译 mainline/upstream Linux k

    2024年02月10日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包