正点原子STM32MP157学习——4.Kernel和Rootfs

        Linux的U-Boot、Kernel & DTB、Rootfs移植为传统内核裁剪的“三巨头”,这几部分的原理在之前的I.MX6Q教程中已经学过,总体没什么大变化,所以后续部分的原理都跳过,直接进行移植。这部分不太熟悉的可以参考原子哥的教程进行了解。

0.U-Boot图形化配置

        上一节的U-Boot收尾。进入 uboot 根目录,使用如下命令:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- stm32mp15_my_trusted_defconfig
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- menuconfig

#如果在Makefile中定义过ARCH和CROSS_COMPILE参数,可以简化
make stm32mp15_my_trusted_defconfig
make menuconfig

 进入图形化U-Boot配置工具:

 按照教程使能dns,然后按照上节内容做成fip.bin,烧写到开发板中即可。

一、Kernel移植

        新版本Kernel移植部分没有太大变化,可以直接按照原子哥的教程走。参考《STM32MP157嵌入式Linux驱动开发指南》第十七章 Linux内核移植 - 知乎 (zhihu.com),这里也直接简化叙述。

①解压官方Linux内核源码压缩包,并打上补丁。

②编译出.config后对此文件也打上补丁

③拷贝.config到arch/arm/configs目录下,作为自己的defconfig文件

④修改Makefile后进行编译、烧写、启动。

编译生成的文件在源码目录/arch/arm/boot目录下,有两个文件需要使用,uImage和xxxx-ed1.dtb,可以使用tftp从网络下载到内存启动,也可以打包成ext4格式,通过CubePro烧写后启动。建议等后续制作完rootfs之后一起打包烧写。

注:

1.编译时可能会提醒:"mkimage" command not found - U-Boot images will not be built

解决方法:安装mkimage工具:sudo apt-get install uboot-mkimage,如果使用的ubuntu系统较新,找不到mkinage工具,则安装u-boot-tools:sudo apt-get install u-boot-tools

2.在Linux5.15版本内核中,已经添加了YT8511的相关驱动,所以不需要再移植原子哥提供的驱动文件,直接在menuconfig中使能即可。

运行结果:

 二、制作根文件系统

①下载busybox,进行解压,修改交叉编译工具链(如果不知道绝对路径,可以使用whereis arm-none-linux-gnueabihf-gcc查找),设置中文字符支持。

②按照原子哥教程创建各种文件夹,并将所需要的文件粘贴进去

运行结果:

         测试正常后,将uImage、设备树和rootfs打包成ext4文件,烧写到开发板中。一个适配开发板的最小linux系统就移植完成了。

        不过建议在学习完TF-A、U-Boot和Kernel的移植,以及制作ext4的方法后,将emmc中的镜像烧写回原子哥的出场镜像。因为新移植的系统主频不太正常,还需要修改;另外Kernel中只启动了一个A7核,另一个A7核以及M4核都未启动,可能会影响后续的学习。且在后续的学习中,大多数情况挂载nfs进行开发,有需要启动新镜像时,使用tftp下载到内存中启动即可,不影响emmc中的文件。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值