STM32MP157系列编译和烧录自定义的bootloader、linux内核及其设备树

STM32MP157系列编译和烧录自定义的bootloader、linux内核及其设备树

本文操作步骤基于米尔开发板MYD-YA157C-V2,

基本流程

编译开发板提供的内核源码

  • 准备编译所需工具链
  • 编译tf-a
  • 编译uboot
  • 编译linux-kernel

准备编译所需工具链

  • ubuntu环境下,下载yocto SDK
    在这里插入图片描述
  • 解压缩yocto-sdk 包
$ tar xvf en.SDK-x86_64-stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24.tar.xz 
  • 安装yocto-sdk
$ cd stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/sdk
$ ./st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-openstlinux-5.4-dunfell-mp1-20-06-24.sh
  • 设置yocto-sdk为默认环境
$ source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
  • 验证yocto-sdk开发环境
$ arm-ostl-linux-gnueabi-gcc -v
Using build-in specs.
COLLECT_GCC=arm-ostl-linux-gnueabi-gcc
......
Thread model: posix
gcc version 9.3.0(GCC)
$
  • MYiR官方资料链接下载开发板源代码
    在这里插入图片描述
    所需要的tf-a、u-boot和kernel源代码在下载目录的MYD-YA157C\04-Sources目录中
    在这里插入图片描述
  • 解压MYiR开发板提供的源代码到工作空间
$ tar xvf MYiR-STM32-kernel.tar.bz2 -C ~/workspace/myir
$ tar xvf MYiR-STM32-tf-a.tar.bz2 -C ~/workspace/myir
$ tar xvf MYiR-STM32-u-boot.tar.bz2 -C ~/workspace/myir
$ ls
MYiR-stm32-kernel  MYiR-stm32-tf-a  MYiR-stm32-uboot

编译tf-a

$ cd ~/workspace/myir/MYiR-stm32-tf-a/myir-ya157c-tf-a/
$ make -f $PWD/../Makefile.sdk all
$ cd ../build/trusted/
$ ls
......
tf-a-stm32mp157c-ya157c-512d-v2.bin
tf-a-stm32mp157c-ya157c-512d-v2.elf
tf-a-stm32mp157c-ya157c-512d-v2.ld
tf-a-stm32mp157c-ya157c-512d-v2.map
tf-a-stm32mp157c-ya157c-512d-v2.stm32
tf-a-stm32mp157c-ya157c-512d-v2-trusted.stm32
......
$

最终生成所需要的tf-a-stm32mp157c-ya157c-512d-v2.stm32

编译u-boot

  • 在build文件夹中构建和生成u-boot
$ export KBUILD_OUTPUT=${PWD}/../build
$ cd ~/workspace/myir/MYiR-stm32-u-boot/myir-ya157c-u-boot/
$ make stm32mp15_trusted_defconfig
$ cd ../build
$ make DEVICE_TREE=stm32mp157c-ya157c-512d-v2 all -j11
$ make -f ../Makefile.sdk all
$ ls
...... u-boot  u-boot.bin  u-boot.stm32  ......
$ 

生成所需要的 u-boot.stm32文件

编译linux-kernel

在build文件夹中构建和生成linux内核

$ cd ~/workspace/myir/MYiR-stm32-kernel/myir-ya157c-kernel/
$ make ARCH=arm O=${PWM}/../build" myc-ya157c_defconfig
$ cd ../build
$ make ARCH=arm LOADADDR=0xC2000040 uImage dtbs -j11
GEN    ./Makefile
......
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
Kernel: arch/arm/boot/uImage is ready
$

根据MYiR开发板硬件资源的预设文件myc-ya157c_defconfig,将内核配置完成。
备注:myc-ya157c_defconfig预设配置文件位于kernel目录的arch/arm/configs/目录下

准备镜像用于烧录

关于烧录工具

  • 烧录内核所使用的工具是STM32CubeProgrammer在这里插入图片描述
  • 准备烧录镜像列表文件(tsv)。这里推荐基于开发板提供的修改。tsv格式文件通过excel打开,如下图所示。
    在这里插入图片描述
    一般的,对于需要更新的分区,#Opt一列设置为P,如上图所示,第一阶段引导TF-A固件,第二阶段引导程序U-Boot以及包含内核在内的根文件系统都是需要分别更新到emmc存储设备的各个分区中。
  • 只更新内核
    只需要保留包含内核文件系统分区的#OptP而其他分区为PE
    在这里插入图片描述
    注意:如果想要保留原本分区的内容,必须将#Opt内容设置为PE,而不能设置成为-

准备镜像用于更新引导程序和内核

  • 以MYiR-YA157C-V2-weston发布版本为模板,创建一个副本命名为my-weston
    在这里插入图片描述
  • 拷贝之前生成的tf-a镜像文件,u-boot镜像文件到my-weston中
  • 将更新后的ext4文件拷贝到my-weston文件夹
    拷贝st-image-bootfs-openstlinux-weston-myir.ext4到linux环境中。1
$ sudo mount -o loop st-image-bootfs-openstlinux-weston-myir.ext4 /mnt
$ sudo cp ~/workspace/myir/MYiR-stm32-kernel/build/arch/arm/boot/dts/* /mnt
$ sudo cp ~/workspace/myir/MYiR-stm32-kernel/build/arch/arm/boot/uImage /mnt
$ sudo umount /mnt
  • 修改tsv文件,进更新引导程序和内核及其设备树。
    在这里插入图片描述

烧录

在这里插入图片描述
通过拨动开发板的Boot引脚,使开发板以USB DFU更新固件模式启动。
在这里插入图片描述
在这里插入图片描述

  • 烧录成功显示如下界面
    在这里插入图片描述

  1. 对于linux内核,uboot和TFA的编译以及EXT4文件的更新都在linux操作系统下进行的,
    而烧录开发板则使在windows环境下进行。
    中间的文件传输使用的使samba服务器实现。 ↩︎

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《stm32mp157开发教程之linux系统移植篇(完整版).pdf》是一本关于stm32mp157芯片的开发教程,主要介绍了如何将Linux系统移植到stm32mp157芯片上的方法和步骤。 该教程首先介绍了stm32mp157芯片的基本特性和架构,包括CPU,内存,外设等方面的介绍,让读者对该芯片有一个整体的了解。 然后,教程详细介绍了在Linux系统移植过程中需要用到的工具和软件,包括编译工具链、Bootloader内核等。对每个工具和软件的使用方法和配置要求进行了详细的说明。 接下来,教程介绍了如何通过串口和USB连接stm32mp157芯片,以及如何使用工具和软件进行系统的烧录和调试。通过实例演示,让读者了解系统移植过程中可能遇到的问题和解决方法。 最后,教程还包含了一些常见的应用开发案例,比如GPIO控制、串口通信、网络编程等,让读者更加深入地了解如何在stm32mp157芯片上开发应用程序。 总的来说,该教程内容详实,操作简明,适合初学者学习和使用。可以帮助读者顺利完成stm32mp157芯片的Linux系统移植工作,并能在此基础上进行应用开发。 ### 回答2: 《stm32mp157开发教程之linux系统移植篇(完整版).pdf》是一本关于如何将Linux系统移植到stm32mp157开发板的教程。教程的详细内容包括以下几个方面: 1. 硬件环境准备:介绍了stm32mp157开发板的硬件配置和连接。包括处理器、内存、外设等的介绍和配置。 2. 开发环境搭建:介绍了在PC上搭建交叉编译环境的步骤和方法。包括安装交叉编译工具链、配置开发环境等。 3. Linux内核移植:详细介绍了如何下载Linux内核源码,并进行配置和编译。包括选择适合的内核版本、配置内核选项、编译内核等步骤。 4. 设备树配置:解释了设备树的作用和配置方法。包括如何编辑设备树文件,配置硬件资源和外设等。 5. 根文件系统制作:介绍了如何制作根文件系统,包括选择和下载合适的根文件系统镜像、挂载和配置文件系统等。 6. 系统烧录和调试:详细介绍了如何将编译好的内核和文件系统烧录stm32mp157开发板上,并进行调试和测试。包括使用烧录工具、配置开发板启动参数等。 通过阅读这本教程,读者可以了解到如何将Linux系统移植到stm32mp157开发板上,并能够掌握相应的操作步骤和方法。这对于想要在stm32mp157开发板上进行Linux开发的人来说是一个非常实用的指南。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值