配置:IMX6ULL+eMMC(8G)+sd卡(16G)
平台:ubantu20/22
第一步:恩智浦官方原版的uboot,放到ubantu文件夹里
第二步:输入下面代码解压它, 解压完成有一个新的文件夹
tar -vxjf uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
第三步:名字修改成自己容易理解的,输入下面代码
mv uboot-imx-rel_imx_4.1.15_2.1.0_ga uboot_myuboot4.1
第四步:进入该文件夹, 清理一下这个工程,输入下面代码
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
第五步:配置工程,输入下面代码,过程可能会有警告,不用理会
看到有“configuration written to .config” 即可
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig
第六步:编译工程,输入下面代码
编译之后查看有需要用的u-boot.imx 和下面的u-boot.bin
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
第七步:每次编译都需要输入较长的命令就比较麻烦,下面创建一个shell脚本
创建一个xx.sh文件,在文件里面输入下面代码
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
第八步: 需要给这个shell脚本可执行权限
执行一下能编译成功就说明shell没问题
chmod 777 mx6ull_nxp_emmc.sh
第九步:因为每次shell脚本编译默认都会清理脚本,而且手动输入命令过长,
下面修改一下顶层Makefile
在249-250行里面输入下面代码,保存退出
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-gnueabihf-
第十步:测试一下清理工程,输入下面代码
make distclean
第十一步:测试配置、编译,输入下面代码,
编译好说明修改顶层Makefile没问题,而且代码也简短了
make mx6ull_14x14_evk_emmc_defconfig
make V=1 -j16
第十二步:编译成功没问题就可以烧写到SD卡里面,先格式化一下SD卡
这里使用SDFormatter(内存卡修复工具)
第十三步:这里使用的烧写工具是开发板厂家提供的,把烧写工具放进uboot目录下
第十四步: 插上usb,连接到ubantu,连接上usbuban会有提示,也会显示u盘标志
查看自己sd卡分区,别烧写错地方,这里烧写地址为sdb(不是sdb1哦)
如果不确定,可以重新拔插usb,拔出看那个消失sd,就应该是sd地址
ls /dev/sd*
第十五步:设置烧写文件权限
chmod 777 imxdownload
第十六步:烧写进sd 卡里(不是带数字的sdb1哦)
./imxdownload u-boot.bin /dev/sdb
第十七步:把sd卡插上开发板,开发板设置从sd卡启动
插上串口线,上电,用SecureCRT 接收如下图
可以看到烧写的时间是刚刚,说明烧写uboot成功
第十八步:检查SD 卡和 EMMC 驱动是否正常
mmc list
mmc dev 0
mmc dev 1
mmc info
可以看到0代表sd卡,1为eMMC,容量对应为15GiB和7.3GiB,与实际相符合,说明驱动正常。