iMX8MM buildroot-2022.02.5构建根文件系统


我移植的板子是讯为i.MX8MM开发板,参考板为官方 8MMINILPD4-EVK开发板。

  1. iMX8MM uboot2021.04 linux5.15.32移植
  2. iMX8MM启动流程
  3. iMX8MM u-boot2021.04移植
  4. iMX8MM linux5.15.32移植
  5. iMX8MM buildroot-2022.02.5构建根文件系统

1. 获取源码

Buildroot官网下载最新的长期支持版本,这里下载buildroot-2022.02.5
在这里插入图片描述
将下载好的源码上传到Ubuntu上,进行解压。

$ tar -xvf buildroot-2022.02.5.tar.xz

2. 添加板子

我们只需要复制官方开发板的配置文件,即可完成我们自己开发板的配置,在源码目录下执行以下命令。

$ cd configs/
$ cp freescale_imx8mmevk_defconfig imx8mm_topeet_defconfig

3. 配置

首先配置复制的默认配置,然后再在复制的配置上进行修改。

$ make imx8mm_topeet_defconfig

执行$ make menuconfig打开配置界面,只需要把移植好的uboot和linux kernel配置进去即可。
在这里插入图片描述
移植好的源码可以通过git下载,我把代码上传到了GitHub。我就直接使用这个链接,这个链接大家也可以作为参考学习。进入Bootloaders选项配置uboot,ATF我们使用的版本是lf_v2.6分支,uboot板子的名字我们改为imx8mm_topeet,然后选择用户git仓库,链接输入自己的链接,版本选择自己的一个分支。
在这里插入图片描述
进入Kernel选项配置linux,Kernel版本选择用户git仓库,链接输入自己的链接,版本选择自己的一个分支,Defconfig名字输入自己复制的,设备树输入自己板子的设备树。
在这里插入图片描述
进入Toolchain选项,将Custom kernel headers series改为5.15.x,因外我们的内核是5.15。
在这里插入图片描述
进入System configuration选项,将Extra arguments passed to custom改为自己的如图。
在这里插入图片描述
进入Target packages选项,依次进入Hardware handling —> Freescale i.MX libraries —> DDR training binaries,选择DDR4。
在这里插入图片描述
进入Target packages选项,进入Networking applications,选择openssh。
在这里插入图片描述
配置完成后保存,然后再保存一份我们自己的。

4. 编译下载

4.1 编译

配置完成后执行下列命令,buildroot会去自己下载并编译,过程比较漫长耐心等待。

$ make -j12

4.2 下载

编译完成会生成一个output文件夹里面的images文件夹,里面是编译生成的结果,其中imx8-boot-sd.binsdcard.img是我们下载需要的,imx8-boot-sd.bin是带IVT的uboot,sdcard.img是EMMC和SD卡的镜像生成可以直接使用。
在这里插入图片描述
仿照官方demo板镜像包的烧写脚本,修改IMX8MMEVK的uuu.auto为我们自己板子用,下面是我修改好的uuu.auto文件。

uuu_version 1.2.39

# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ
SDP: boot -f imx8-boot-sd.bin

# This command will be run when ROM support stream mode
# i.MX8QXP, i.MX8QM
SDPS: boot -f imx8-boot-sd.bin

# These commands will be run when use SPL and will be skipped if no spl
# SDPU will be deprecated. please use SDPV instead of SDPU
# {
SDPU: delay 1000
SDPU: write -f imx8-boot-sd.bin -offset 0x57c00
SDPU: jump
# }

# These commands will be run when use SPL and will be skipped if no spl
# if (SPL support SDPV)
# {
SDPV: delay 1000
SDPV: write -f imx8-boot-sd.bin -skipspl
SDPV: jump
# }

FB: ucmd setenv fastboot_dev mmc
FB: ucmd setenv mmcdev ${emmc_dev}
FB: ucmd mmc dev ${emmc_dev}
FB: flash -raw2sparse all sdcard.img
FB: flash bootloader imx8-boot-sd.bin
FB: ucmd if env exists emmc_ack; then ; else setenv emmc_ack 0; fi;
FB: ucmd mmc partconf ${emmc_dev} ${emmc_ack} 1 0
FB: done

在Linux下直接将脚本复制到images文件夹中,将板子设置成串行下载模式并插好OTG线,执行$ sudo uuu -d uuu.auto命令,等待下载完成Ctrl+C退出。
在这里插入图片描述
在Windows下还需将uuu.exe程序复制到images文件夹中,并且创建一个Windows批处理文件(我这里是uuu.auto.bat)将uuu.exe -d uuu.auto一句写入。
在这里插入图片描述
将板子设置成串行下载模式并插好OTG线,双击创建的批处理文件。
在这里插入图片描述
下载完成,将拨码开关拨到EMMC启动模式,重启登录root,进入命令行。
在这里插入图片描述

4.3 验证

设置网络,在# vi /etc/network/interfaces文件中添加网络配置,保存并退出,reboot重启开发板。

# interface file auto-generated by buildroot

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

ping服务器,网络正常。
在这里插入图片描述
设置SSH,打开# vi /etc/ssh/sshd_config文件进行如下配置,并reboot重启。

#设置允许root登录和空密码登录
PermitRootLogin yes
PermitEmptyPasswords yes

成功登录开发板SSH,SFTP访问正常。
在这里插入图片描述

5. 总结

利用buildroot搭建bsp工程是非常省事的,本文利用了GitHub使用本地或局域网内的git服务器也是可以的。本文仅供学习参考,如有问题欢迎指正。

移植源码获取:

git clone https://github.com/Sonboy97/buildroot.git -b imx
版本:8a3158cb233f9d8377e337aa41162f2a57c8930b
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sonboy哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值