文章

i.MX6ULL 编译uboot

编译U-Boot需要先下载U-Boot的源代码,可以在U-Boot的官方网站上找到最新的源代码。一般情况下,编译U-Boot需要先安装一些开发工具和依赖库,例如GCC编译器、make工具、交叉编译工具链等。

环境搭建

我的系统为ubuntu 22.04,开发板为正点原子的imx6u阿尔法板,交叉编译器使用linaro提供的arm-gcc,下载地址为:https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/

编译uboot和内核所必须的依赖库安装:

sudo apt-get install -y libncurses5-dev lsb-core lib32stdc++6 bison flex lzop git

将下载好的交叉编译器传到ubuntu中,位置随意,解压:

tar xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz

添加环境变量:

sudo vi /etc/profile

在最后一行添加你的交叉编译器路径:

export PATH=$PATH:/你的编译器路径/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin

测试编译器是否可用:

arm-linux-gnueabihf-gcc -v

结果如下:

下载i.MX6ULL uboot

克隆uboot:

git clone https://github.com/nxp-imx/uboot-imx.git

查看所有分支:

git branch --all

这里我选择imx_v2020.04_5.4.70_2.3.0版本:

git checkout imx_v2020.04_5.4.70_2.3.0

在顶层makefile中添加以下编译器和架构:

ARCH = arm
CROSS_COMPILE = arm-linux-gnueabihf-

清理一下工程:

make distclean

编译配置根据个人的板子决定,我这里是正点原子的阿尔法板,我选择mx6ull_14x14_evk_emmc_defconfig,加载编译配置:

make mx6ull_14x14_evk_emmc_defconfig

编译:

make -j 4

make j 4表示4核CPU编译。

编译结果:

sd卡烧录

将sd插入读卡器插入电脑,连接ubuntu,准备上面编译好的u-boot-dtb.imx,选择自己的sd卡,可使用fdisk -l查看,烧录如下:

sudo dd if=u-boot-dtb.imx of=/dev/sdb bs=1k seek=1 conv=fsync

u-boot-dtb.imx

将sd卡插入开发板,设置拨码开关为sd卡启动,连接电脑的串口,可以看到控制台上打印的信息:

编译uboot成功启动。

一些测试命令

mmc list  # 列出所有设备
mmc info # 查看当前设备信息
mmc dev 1 # 切换到emmc

License:  CC BY 4.0