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