STM32
直播中

张涛

7年用户 1353经验值
私信 关注
[问答]

如何使用CubeMX生成的设备树编译镜像?

我的硬件平台是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$ lsdebug                       u-boot-stm32mp157c-ed1.dtbu-boot-nodtb-stm32mp13.bin  u-boot-stm32mp157c-ev1.dtbu-boot-nodtb-stm32mp15.bin  u-boot-stm32mp157d-dk1.dtbu-boot-stm32mp135f-dk.dtb   u-boot-stm32mp157d-ev1.dtbu-boot-stm32mp157a-dk1.dtb  u-boot-stm32mp157f-dk2.dtbu-boot-stm32mp157a-ev1.dtb  u-boot-stm32mp157f-ed1.dtbu-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 packagefip-stm32mp135f-dk-optee.bin   fip-stm32mp157d-dk1-optee.binfip-stm32mp157a-dk1-optee.bin  fip-stm32mp157d-ev1-optee.binfip-stm32mp157a-ev1-optee.bin  fip-stm32mp157f-dk2-optee.binfip-stm32mp157c-dk2-optee.bin  fip-stm32mp157f-ed1-optee.binfip-stm32mp157c-ed1-optee.bin  fip-stm32mp157f-ev1-optee.binfip-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$ lsdebug                                tee-pageable_v2-stm32mp157d-dk1.bintee-header_v2-stm32mp157a-dk1.bin    tee-pageable_v2-stm32mp157d-ev1.bintee-header_v2-stm32mp157a-ev1.bin    tee-pageable_v2-stm32mp157f-dk2.bintee-header_v2-stm32mp157c-dk2.bin    tee-pageable_v2-stm32mp157f-ed1.bintee-header_v2-stm32mp157c-ed1.bin    tee-pageable_v2-stm32mp157f-ev1.bintee-header_v2-stm32mp157c-ev1.bin    tee-pager_v2-stm32mp157a-dk1.bintee-header_v2-stm32mp157d-dk1.bin    tee-pager_v2-stm32mp157a-ev1.bintee-header_v2-stm32mp157d-ev1.bin    tee-pager_v2-stm32mp157c-dk2.bintee-header_v2-stm32mp157f-dk2.bin    tee-pager_v2-stm32mp157c-ed1.bintee-header_v2-stm32mp157f-ed1.bin    tee-pager_v2-stm32mp157c-ev1.bintee-header_v2-stm32mp157f-ev1.bin    tee-pager_v2-stm32mp157d-dk1.bintee-pageable_v2-stm32mp157a-dk1.bin  tee-pager_v2-stm32mp157d-ev1.bintee-pageable_v2-stm32mp157a-ev1.bin  tee-pager_v2-stm32mp157f-dk2.bintee-pageable_v2-stm32mp157c-dk2.bin  tee-pager_v2-stm32mp157f-ed1.bintee-pageable_v2-stm32mp157c-ed1.bin  tee-pager_v2-stm32mp157f-ev1.bintee-pageable_v2-stm32mp157c-ev1.bin我并不知道这些文件应该放置在哪里。对于上述情况,我提出几个问题:

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



回帖(1)

杨静

2024-6-3 14:14:15
要使用CubeMX生成的设备树编译镜像并添加串口UART8,您需要按照以下步骤操作:

1. **获取源代码**:首先,确保您已经获取了STM32MP1的源代码。这通常包括内核、设备树、U-Boot等。

2. **修改设备树**:在设备树源文件(通常是.dts文件)中添加UART8的配置。这可能涉及到添加新的节点、属性等。例如:

   ```dts
   &uart8 {
       status = "okay";
       tx-pin = <&pinctrl_uart8_tx>;
       rx-pin = <&pinctrl_uart8_rx>;
       baud-rate = <115200>;
   };
   ```

   然后,使用设备树编译器(如dtc)编译.dts文件生成.dtb文件。

3. **修改U-Boot配置**:在U-Boot的配置文件(如.config或Kconfig)中添加对UART8的支持。这可能涉及到启用特定的选项或配置。

4. **重新编译U-Boot**:在U-Boot源代码目录下,执行以下命令重新编译U-Boot:

   ```bash
   make ARCH=arm CROSS_COMPILE=arm-none-eabi- clean
   make ARCH=arm CROSS_COMPILE=arm-none-eabi- u-boot.elf
   ```

5. **集成设备树**:将生成的.dtb文件和U-Boot的二进制文件(u-boot.elf)集成到您的镜像中。这可能涉及到修改Makefile或构建脚本。

6. **编译镜像**:使用您的构建系统(如Yocto、Buildroot等)重新编译整个镜像。确保在构建过程中指定新的设备树和U-Boot。

7. **烧录和测试**:将编译好的镜像烧录到您的MP135硬件平台上,并测试UART8是否正常工作。

请注意,这个过程可能会根据您的具体硬件平台和软件环境有所不同。您可能需要查阅相关的文档和社区资源以获取更详细的指导。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分