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

# 如何使用CubeMX生成的设备树生成镜像&&如何为MP135添加一个串口?&&关于SDK的一些疑问

[复制链接]
hhhmystm32 提问时间:2024-5-24 11:08 / 未解决


我的硬件平台是MP135,我现在想给它增加一个串口UART8,于是我打算修改设备树。  
但是在使用SDK的时候我遇到了些问题。  
按照官方的`how to do.txt`,我编译了u-boot,在deploy文件夹下生成了如下内容:
```bash
~/workspace/STM32/stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/sources/arm-ostl-linux-gnueabi/u-boot-stm32mp-v2022.10-stm32mp-r1-r0/deploy$ ls
debug                       u-boot-stm32mp157c-ed1.dtb
u-boot-nodtb-stm32mp13.bin  u-boot-stm32mp157c-ev1.dtb
u-boot-nodtb-stm32mp15.bin  u-boot-stm32mp157d-dk1.dtb
u-boot-stm32mp135f-dk.dtb   u-boot-stm32mp157d-ev1.dtb
u-boot-stm32mp157a-dk1.dtb  u-boot-stm32mp157f-dk2.dtb
u-boot-stm32mp157a-ev1.dtb  u-boot-stm32mp157f-ed1.dtb
u-boot-stm32mp157c-dk2.dtb  u-boot-stm32mp157f-ev1.dtb

按照官方教程,我应该把这些文件拷贝到StarterPackage的flp文件夹下。这让我感到困惑,因为我在StarterPackage上面并没有看见类似的文件,而是:

~/workspace/STM32/IMAGE/stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/images/stm32mp1/fip$ ls
#in starter package
fip-stm32mp135f-dk-optee.bin   fip-stm32mp157d-dk1-optee.bin
fip-stm32mp157a-dk1-optee.bin  fip-stm32mp157d-ev1-optee.bin
fip-stm32mp157a-ev1-optee.bin  fip-stm32mp157f-dk2-optee.bin
fip-stm32mp157c-dk2-optee.bin  fip-stm32mp157f-ed1-optee.bin
fip-stm32mp157c-ed1-optee.bin  fip-stm32mp157f-ev1-optee.bin
fip-stm32mp157c-ev1-optee.bin

而当我编译optee的时候,deploy文件夹下出现的是这些东西:

~/workspace/STM32/stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/sources/arm-ostl-linux-gnueabi/optee-os-stm32mp-3.19.0-stm32mp-r1-r0/deploy$ ls
debug                                tee-pageable_v2-stm32mp157d-dk1.bin
tee-header_v2-stm32mp157a-dk1.bin    tee-pageable_v2-stm32mp157d-ev1.bin
tee-header_v2-stm32mp157a-ev1.bin    tee-pageable_v2-stm32mp157f-dk2.bin
tee-header_v2-stm32mp157c-dk2.bin    tee-pageable_v2-stm32mp157f-ed1.bin
tee-header_v2-stm32mp157c-ed1.bin    tee-pageable_v2-stm32mp157f-ev1.bin
tee-header_v2-stm32mp157c-ev1.bin    tee-pager_v2-stm32mp157a-dk1.bin
tee-header_v2-stm32mp157d-dk1.bin    tee-pager_v2-stm32mp157a-ev1.bin
tee-header_v2-stm32mp157d-ev1.bin    tee-pager_v2-stm32mp157c-dk2.bin
tee-header_v2-stm32mp157f-dk2.bin    tee-pager_v2-stm32mp157c-ed1.bin
tee-header_v2-stm32mp157f-ed1.bin    tee-pager_v2-stm32mp157c-ev1.bin
tee-header_v2-stm32mp157f-ev1.bin    tee-pager_v2-stm32mp157d-dk1.bin
tee-pageable_v2-stm32mp157a-dk1.bin  tee-pager_v2-stm32mp157d-ev1.bin
tee-pageable_v2-stm32mp157a-ev1.bin  tee-pager_v2-stm32mp157f-dk2.bin
tee-pageable_v2-stm32mp157c-dk2.bin  tee-pager_v2-stm32mp157f-ed1.bin
tee-pageable_v2-stm32mp157c-ed1.bin  tee-pager_v2-stm32mp157f-ev1.bin
tee-pageable_v2-stm32mp157c-ev1.bin

我并不知道这些文件应该放置在哪里。 对于上述情况,我提出几个问题:

  1. 增加串口是否需要修改Linux 内核? 我不知道为什么只是增加一个串口要这么麻烦
  2. 如何使用CubeMX生成的设备树编译镜像? 请不要给我推官网的教程链接。官网相关的教程我都看了,并没有一个完整叙述了从CubeMX设备树到生成镜像的教程。
  3. source code编译生成的文件如何添加到Starter Package内? 如上述,SDK生成的文件与StarterPackage的文件并不能很好地配合起来。 希望能得到您的解答!
收藏 评论1 发布时间:2024-5-24 11:08

举报

1个回答
wgzzz 回答时间:2024-5-28 11:50:59

首先要理清STM32MP13平台的启动流程。Boot chain overview - stm32mpu (stmicroelectronics.cn) 简单说就是 MPU ROM Code-> TF-A BL2 -> OP-TEE -> U-Boot -> Linux. 其中 FIP 打包 OP-TEE 和 U-Boot,由TF-A BL2加载到DDR中。启动流程可以简化为 MPU ROM Code -> TF-A BL2 -> FIP -> Linux

如果要增加串口UART8 首先要在OP-TEE设备树中配置UART8时钟。然后重新编译OP-TEE,并更新 FIP中的OP-TEE部分。因为要在Linux中使用UART8,下一步仅需在Linux的设备树中使能UART8外设即可。这一步设备树的配置都可以在STM32CubeMX中完成。如下图以STM32MP135F-DK为例:

Screenshotfrom2024-05-2810-30-12.png

Screenshotfrom2024-05-2810-32-01.png

现在回答你的第二个问题。

如何基于新的设备树生成新的FIP包。此处仅更新STM32MP135F-DK的OP-TEE部分。

进入到optee-os-stm32mp-3.19.0-stm32mp-r1文件夹

source <SDK 5.0>

将新生成的设备树覆盖默认的 core/arch/arm/dts/stm32mp135f-dk.dts

export FIP_DEPLOYDIR_ROOT=../../FIP_artifacts/

make -f ../Makefile.sdk FIP_CONFIG=optee CFG_EMBED_DTB_SOURCE_FILE=stm32mp135f-dk DEPLOYDIR=../../FIP_artifacts/optee/ fip

ls ../../FIP_artifacts/fip/
fip-stm32mp135f-dk-optee.bin

如何更新FIP可以参考wiki How to manually update bootloaders - stm32mpu (stmicroelectronics.cn)

如何更新生成新的 Linux 设备树 可以参考Wiki https://wiki.stmicroelectronics.cn/stm32mpu/wiki/How_to_compile_the_device_tree_with_the_Developer_Package#Updating_the_kernel_device_tree

更新完成后重启系统:

root@stm32mp1:~# cat /sys/kernel/debug/pinctrl/soc:pinctrl@50002000/pinconf-pins | grep UART8
pin 65 (PE1): alternate 8 (UART8_TX) - push pull - floating - low speed
pin 89 (PF9): alternate 8 (UART8_RX) - push pull - floating - low speed
root@stm32mp1:~# 
root@stm32mp1:~# cat /sys/firmware/devicetree/base/soc/serial@40019000/status 
okayroot@stm32mp1:~# 
Screenshot from 2024-05-28 10-30-12.png
Screenshot from 2024-05-28 10-30-12.png
Screenshot from 2024-05-28 10-32-01.png
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版