你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
STMCU小助手 发布时间:2022-10-4 15:05
基本流程
编译开发板提供的内核源码

准备编译所需工具链
编译tf-a
编译uboot
编译linux-kernel
准备编译所需工具链
ubuntu环境下,下载yocto SDK

20200923100437661.png

解压缩yocto-sdk 包
  1. $ tar xvf en.SDK-x86_64-stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24.tar.xz
复制代码

安装yocto-sdk
  1. $ cd stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/sdk
  2. $ ./st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-openstlinux-5.4-dunfell-mp1-20-06-24.sh
复制代码

设置yocto-sdk为默认环境
  1. $ source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
复制代码

验证yocto-sdk开发环境
  1. $ arm-ostl-linux-gnueabi-gcc -v
  2. Using build-in specs.
  3. COLLECT_GCC=arm-ostl-linux-gnueabi-gcc
  4. ......
  5. Thread model: posix
  6. gcc version 9.3.0(GCC)
  7. $
复制代码


所需要的tf-a、u-boot和kernel源代码在下载目录的MYD-YA157C\04-Sources目录中

20200923110320788.png

解压MYiR开发板提供的源代码到工作空间
  1. $ tar xvf MYiR-STM32-kernel.tar.bz2 -C ~/workspace/myir
  2. $ tar xvf MYiR-STM32-tf-a.tar.bz2 -C ~/workspace/myir
  3. $ tar xvf MYiR-STM32-u-boot.tar.bz2 -C ~/workspace/myir
  4. $ ls
  5. MYiR-stm32-kernel  MYiR-stm32-tf-a  MYiR-stm32-uboot
复制代码

编译tf-a
  1. $ cd ~/workspace/myir/MYiR-stm32-tf-a/myir-ya157c-tf-a/
  2. $ make -f $PWD/../Makefile.sdk all
  3. $ cd ../build/trusted/
  4. $ ls
  5. ......
  6. tf-a-stm32mp157c-ya157c-512d-v2.bin
  7. tf-a-stm32mp157c-ya157c-512d-v2.elf
  8. tf-a-stm32mp157c-ya157c-512d-v2.ld
  9. tf-a-stm32mp157c-ya157c-512d-v2.map
  10. tf-a-stm32mp157c-ya157c-512d-v2.stm32
  11. tf-a-stm32mp157c-ya157c-512d-v2-trusted.stm32
  12. ......
  13. $
复制代码

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

编译u-boot
在build文件夹中构建和生成u-boot
  1. $ export KBUILD_OUTPUT=${PWD}/../build
  2. $ cd ~/workspace/myir/MYiR-stm32-u-boot/myir-ya157c-u-boot/
  3. $ make stm32mp15_trusted_defconfig
  4. $ cd ../build
  5. $ make DEVICE_TREE=stm32mp157c-ya157c-512d-v2 all -j11
  6. $ make -f ../Makefile.sdk all
  7. $ ls
  8. ...... u-boot  u-boot.bin  u-boot.stm32  ......
  9. $
复制代码

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

编译linux-kernel
在build文件夹中构建和生成linux内核

  1. $ cd ~/workspace/myir/MYiR-stm32-kernel/myir-ya157c-kernel/
  2. $ make ARCH=arm O=${PWM}/../build" myc-ya157c_defconfig
  3. $ cd ../build
  4. $ make ARCH=arm LOADADDR=0xC2000040 uImage dtbs -j11
  5. GEN    ./Makefile
  6. ......
  7. Kernel: arch/arm/boot/Image is ready
  8. Kernel: arch/arm/boot/zImage is ready
  9. Kernel: arch/arm/boot/uImage is ready
  10. $
复制代码

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

准备镜像用于烧录
关于烧录工具

烧录内核所使用的工具是STM32CubeProgrammer

20200923153402164.png

准备烧录镜像列表文件(tsv)。这里推荐基于开发板提供的修改。tsv格式文件通过excel打开,如下图所示。

2020092316253224.png

一般的,对于需要更新的分区,#Opt一列设置为P,如上图所示,第一阶段引导TF-A固件,第二阶段引导程序U-Boot以及包含内核在内的根文件系统都是需要分别更新到emmc存储设备的各个分区中。

只更新内核
只需要保留包含内核文件系统分区的#Opt为P而其他分区为PE

20200923163653552.png

注意:如果想要保留原本分区的内容,必须将#Opt内容设置为PE,而不能设置成为-

准备镜像用于更新引导程序和内核
以MYiR-YA157C-V2-weston发布版本为模板,创建一个副本命名为my-weston

20200923164638379.png

拷贝之前生成的tf-a镜像文件,u-boot镜像文件到my-weston中
将更新后的ext4文件拷贝到my-weston文件夹
拷贝st-image-bootfs-openstlinux-weston-myir.ext4到linux环境中。1
  1. $ sudo mount -o loop st-image-bootfs-openstlinux-weston-myir.ext4 /mnt
  2. $ sudo cp ~/workspace/myir/MYiR-stm32-kernel/build/arch/arm/boot/dts/* /mnt
  3. $ sudo cp ~/workspace/myir/MYiR-stm32-kernel/build/arch/arm/boot/uImage /mnt
  4. $ sudo umount /mnt
复制代码

修改tsv文件,进更新引导程序和内核及其设备树。

20200923170534795.png

烧录

20200923153402175.png

通过拨动开发板的Boot引脚,使开发板以USB DFU更新固件模式启动。

20200923153825707.png

20200923161109111.gif

烧录成功显示如下界面

20200923155609417.png

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


收藏 评论0 发布时间:2022-10-4 15:05

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版