Stm32CubeMX 生成设备树

使用STM32CubeMX配置Stm32设备树

一、前期准备

1. Stm32CubeMX下载

官网下载, 需要先注册st账号:
Stm32CubeMX

我的核心板使用的是正点原子的即 STM32MP135D-AE

二、创建项目

打开Stm32CubeMX
在这里是可以选择其他芯片型号的,可以根据自己的板子
在这里插入图片描述

1. 选择 MP1x 型号

可以根据自己的芯片型号,如果是st公司的板子 也可以选择旁边的Board Selector进行选择
选择后,将会自动下载资源,然后弹出选项,这里默认OpenSTLinux就可以
在这里插入图片描述

在这里插入图片描述

2. 填写项目的基本信息

在这里插入图片描述

3. DDR 配置

这里配置后,暂时还会报错,现不必理会,等后面配置完时钟后错误就会消失
DMA, GIC, MDMA 使用默认的配置就可以,DDR 配置如下:
在这里插入图片描述

4. RCC 配置

在这里插入图片描述

Analog 模块暂时不需要

5. Timer 模块配置

这里 RTC 使用默认配置即可,需要勾选Activate Clock Source
TAMP 需要要设置Tamper 2 设置为 Active Input,其余不用管
在这里插入图片描述

6. Connectivity

(1) SDMMC1 配置

SDMMC1 是sd卡
SDMMC2 是emmc
在这里插入图片描述

(2)Uart4 配置

在这里插入图片描述

(3) USB_OTG_HS 配置

在这里插入图片描述

7. 安全模块配置

默认配置: BSEC, ETZPC
TF-A配置: HASH1, RNG1
OPTEE配置: HASH1, RNG1,
需要将对应项中选中 Actived,才能启用该项
在这里插入图片描述

8. Computing配置

在这里插入图片描述

其他可以先不配置

9.检查串口GPIO配置

这里需要根据硬件手册进行配置,将uart4修改为上拉
在这里插入图片描述

10 选择 GPIO 功能复用

  1. 如果某引脚和自己板子的不同
  2. 先搜索自己所需引脚
  3. 对应引脚闪烁,点击展示可复用功能
  4. 选择复用功能
    在这里插入图片描述

11. 时钟配置

授人以鱼不如授人以渔,我将举例展示修改这里的参数是如何对应于设备树时钟配置,如有不对,还请指正
这里细节展示只是部分,最后会展示一个全部的

在这里选择Yes,或者点击上面的Resolve Clock Issues,可以自动配置出正确的时钟
也可以选择No暂不理会
在这里插入图片描述

(1) 为设备选择时钟源

满足以下规则,其他设备时钟源的

CLK_设备_时钟源

在这里插入图片描述

(2) 时钟分频

将时钟树对应分频配置减一个等级,就是代码中的实际参数
不完全都是减1,APB5DIV这里分频系数是1 2 4 8 16
这里选择4分频,代码中体现为2在这里插入图片描述

(3) PLL(Phase-Locked Loop) 锁相环配置

这里以 PLL4 为例:PLL4 选择 HSE 作时钟源 DIVM4 使用 2分频, DIVN4 使用 50倍频,代码中将数字减一个等级,这里都是连续的,所以都是减1,下面的DIVP4 DIVQ4 DIVP4亦是如此
其他的如是而已
在这里插入图片描述
在这里插入图片描述

(4) 时钟树总览

关于CKPER Clock Mux 我没有暂时找到在那里配置,我发现不配置此时钟,MPU无法正确配置
那么只能手动更改,将optee代码中 CLK_CKPER_DISABLED修改为

CLK_CKPER_HSE

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

理论上只要不报错(红框),怎么配置都是没问题的,只是会影响设备的使用,除非板子上的外设有严格的时钟要求,比如网卡等等
全部配置完毕后,生成代码

12. 生成设备树代码

在这里插入图片描述
如果安装了STM32CubeIDE,可以选择使用它打开项目

三、对生成代码手动补充

生成的代码还需增加内容, 根据此连接中nextcloud网盘文件查看需要补充的内容
参考:
example
注意链接中
这个是我的 stm32mp135d:
在这里插入图片描述
这个是st官方板子的具体配置流程,需要的话直接拿来用吧:
在这里插入图片描述

No serial driver found 问题解决

这是在bringup官方板子时,出现的一个问题:
配置完成后,启动板子如果遇到以下问题

U-Boot 2022.10-stm32mp-r1 (Aug 22 2023 - 17:22:08 +0200)In Uboot source code file drivers/serial/serial_stm32.c, function stm32_serial_probe(), 150 µs is
not enough:
CPU: STM32MP135F Rev.Y
Model: STMicroelectronics custom STM32CubeMX board - openstlinux-6.1-yocto-mick1
Board: stm32mp1 in trusted mode (st,stm32mp135f-yao13cubemx690-mx)
Board: MB1635 Var1.0 Rev.E-02
DRAM: 512 MiB
optee optee: OP-TEE: revision 3.19 (6cc4c1a2)
Clocks:
- MPU : 650 MHz
- AXI : 266.500 MHz
- PER : 0 MHz
- DDR : 533 MHz
No serial driver found
resetting ...
I/TC: Forced system reset

原因:

修改u-boot源码中的此文件drivers/serial/serial_stm32.cfunction stm32_serial_probe()函数中,这里的150 µs 是不够的:

/*
* before uart initialization, wait for TC bit (Transmission Complete)
* in case there is still chars from previous bootstage to transmit
*/
ret = read_poll_timeout(readl, isr, isr & USART_ISR_TC, 10, 150,
                plat->base + ISR_OFFSET(stm32f4));
if (ret) {
    clk_disable(&clk);
    return ret;
}

这个时候OPTEE还在打印信息,探测串口还太早了,需要多等一下(For cases cases where UART is probed early (OPTEE is sending message), 150 µs is only for 2 bits of 115200 bps, not long enough to see a TC (Transfer Complete) event.)

解决:
将150修改为1500 (Change 150 µs to 1500 µs which is long enough for one byte under 115200 bps)

四、关于内核设备树

对于 stm32mp13x,内核设备树

  1. 可以与 U-Boot 设备树文件相同
  2. 可以有更多节点,以支持更多外部外设

五、其他节点配置

如果需要其他外设节点,可以在Stm32CubeMX配置:

  1. Watch dog
    • Can be activated starting from TFA
  2. Ethernet
    • Can be activated starting from UBOOT
  3. LCD / TouchPad
    • Can be activated starting from UBOOT
  4. LED+Button
    • Can be activated starting from UBOOT
  5. Low Power mode and WAKEUP pin
    • Only in OPTEE
  6. Protection on GPIO
    • Only in OPTEE
  7. ADC monitoring
  8. TAMP

至此 STM32CubeMX 使用流程已经完成
能力一般,水平有限,希望能帮到您

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值