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

STM32上的Zephyr:你需要了解的内容

[复制链接]
攻城狮Melo 发布时间:2023-9-20 16:23
前言
2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。
7 t! t3 w$ c! M; s& X4 M
ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。
" y- u$ |( x) J1 [' `; y5 L

' s# t7 o9 z# x/ a2 U8 |1 B  K  a
作者简介
Erwan Gouriou
Erwan是STMicroelectronics公司的员工,同时也是Linaro组织的成员,拥有超过15年的嵌入式软件开发经验。自2016年底以来,他一直在Zephyr项目中做出贡献,涉及到设备树引入、板级配置以及外设模块等通用领域,但他主要专注于STM32平台,也是该平台的子系统维护者。

: \5 X6 v5 b5 d( [: V
文章简介
本文将探讨如何通过设备树配置STM32的时钟设置,以及STM32设备上的电源管理支持状态。同时也会讨论如何使用STM32和TF-M固件的支持情况。这些是在Zephyr中涉及STM32设备时最常被问到的问题之一。在本文中,STM32维护者Erwan将解答这些问题,提供使用Zephyr在STM32上时尽可能少出现问题所需的所有信息。此外,本文也将回顾整个STM32子系统的支持状况,以及相关的未来挑战。
0 ~, r" q# k( X
Zephyr中的STM32支持
  • 380多个贡献者发布了5000多个提交
  • 支持130多种单板
  • 支持180多种SoC(19系列)
  • 支持40多种外设
  • 支持TF-M,USB,Ethernet,CAN,BLE,LoRa等
  • 集成STM32Cube HAL

    - Q0 H# t) v, V$ U+ N
    + I5 y. u5 U( n% B' e/ g- d; R# z
  • STM32CubeMCU软件包存储在zephyr hal_ stm32模块下
  • STM32Cube API用于Zephyr驱动程序开发
  • 支持混合使用Zephyr和STM32Cube APIs

    4 C6 t5 S7 b1 R$ n% t% J" A5 x* r

    % X; n; v: n: b7 h3 [* @
微信图片_20230920162332.png 6 O5 |! P2 @6 l0 U( g

3 j6 a4 z2 J3 r8 N+ O* h5 C
) {6 {7 x4 {8 n; \
配置STM32开发板
1. 选择STM32开发板
识别受支持的STM32部件
  • 系列:STM32H7
  • SoC版本:B3
  • 引脚数:X
  • SoC内存大小:I
  • 在dts/arm/st/h7中,查找stm32h7b3Xi.dtsi

    ' c$ [; {' }. A% w3 q# N

    ) B4 v, R$ u5 h; @3 f' _9 c" Q- @
微信图片_20230920162329.png
! v( ]. n4 G* o7 D* s3 J! q& m  z
- P6 y8 T& K+ D- [' P2 \
添加未支持的STM开发板
  • 添加内存大小变量
    - P/ g: g* x% q$ ?

    $ K5 v  M7 E& O( ]4 c8 |, ~8 B: V
微信图片_20230920162325.png
$ F$ L4 H( L9 u+ H8 K3 ]  \' d! W, h) ?2 f( ]
  • 添加SoC变量

    - g# M5 t! @* t: O7 f- C4 B

      z- x2 a1 o" z6 M
微信图片_20230920162321.png
- e7 M- U0 B. Y7 j0 B
" v  w& V4 ~' n+ I+ k
2.时钟配置
红色圆圈表示固定时钟,蓝色圆圈表示锁相环(PLL),黄色圆圈表示核心源时钟,灰色圆圈表示外设总线速度。

! @! k; F% s( X. o1 O 微信图片_20230920162317.png
7 h8 b1 B2 u! ]) t/ d* M$ d1 j  a) k2 w3 J4 u% ]2 p
使用设备树对STM32时钟进行配置。
3 E8 B/ c7 A% i* ~# J8 j/ j# O6 \
5 u% o& p/ v- h+ V
微信图片_20230920162314.png
4 {5 \0 N- o% M- p/ Y2 z* H, X& A, @
微信图片_20230920162310.png - i) f# k1 j" }+ K9 X. M
7 m5 ~. C5 o4 J, W4 G& Y( L
3.配置外设

* f; H7 ?; E/ D0 }

, @2 N, L0 v; k* \ 微信图片_20230920162306.png
6 G" ?4 V' `/ n9 W
0 N1 j, t3 j6 t$ _' ?
常用STM32设备设置:pinctrl
使用pinctrl子系统配置单板上一个或者一组引脚的功能和特性。
2 g& L7 o/ b# }0 k0 U0 a
微信图片_20230920162301.png
8 [5 G; E" E, k, Q3 y& j9 z* b# k6 j  J  I: C3 b! e2 h6 ^+ i- a

0 I1 ]9 N* V3 I( w/ Q6 ]6 F8 h
  • 如果出现下面的错误,可以运行west update
    0 a" x6 V+ I* k* b! R8 y2 |7 G
    : v# I. @; t8 L9 e- u% N. `
微信图片_20230920162258.png
  ~: S# y1 ^" r/ V4 F% B! f* V+ a% n' k; b% J1 X& ^* i3 I, X; P
  • Pinctrl也可用于启用MCO
    . {1 ^: j1 N5 n
    ( X# o6 V6 c! ?' G4 D' b  j
常用STM32设备设置:DMA
# h9 J6 }9 n+ J' f- g6 ^6 C- e# {
微信图片_20230920162255.png + |. O7 W( \" f) ~
, R0 }, j* r9 h# \3 P7 |
  • DMA基于“dmas”属性启用
  • 配置取决于DMA兼容:
    $ r! f' l/ \4 J" s8 e5 K# {# b
    # W) c/ j% e7 o. g  t. y! R  D
  • st,stm32-dma-v1
  • st,stm32-dma-v2
  • st,stm32-dma-v2bis
  • st,stm32-dmamux
    & F! L1 S% w3 L
    " c/ K! L& f: S) U
  • 注意:

    " d  E+ f- D( c2 y7 c

    / Q  L& D5 Q* u/ U0 m+ V6 y
  • 计划在.dtsi文件中配置DMA设备属性
  • 必须直接在驱动程序中检查DMA支持

    ' {0 g% K8 P! i; m1 N

" s& b; e# ^9 C3 ?* L
常用STM32设备设置:域时钟
可以使用 48MHz时钟、特定的PLL输入输出、持续处于停止模式的时钟等。

$ h4 _' G' ^0 b4 q1 {# b' J& m

4 n2 c& l2 [# q! q# {  s( g
微信图片_20230920162251.png   N* v" V$ V7 K/ i- k5 A2 _
  I/ W& p5 B1 s! m4 Q8 `- u# [

: X- ?: T$ q' D+ g
电源管理
SoC级别
  • PM处理按系列提供
    $ b6 q) B' p5 ~  Z6 \

    4 v" v+ n/ {9 f: N% h  S$ v0 Z" ?, R$ `
微信图片_20230920162248.png 6 {& ^, [9 l4 M( O

8 r3 N& x6 ?2 M( W8 ]* ^6 s. I
  • 当核心时钟门控时,需要可用的内核时钟源

    ! a! P4 \6 ~, [( C
    1 o& u4 }- H; o* X7 P2 t
微信图片_20230920162244.png 1 ?: y" x* v# |! ~

. R; a9 {& M, ?
设备级别
  • GPIO、UART、I2C中的CONFIG_ PM_ DEVICE支持
  • STM32 PM样例上提供PM样例
  • LP-UART设备配置示例:
    * y( n) r$ y: \) L9 y
    ! [2 d) v: v9 b7 d4 j
微信图片_20230920162240.png % T9 F! |7 z$ u- ]
7 G. T' E. K+ o4 N5 k
Trusted Firmware-M
Trusted Firmware-M(TF-M)是IoT安全框架的参考实现。它定义并实现了一个架构和一组软件组件,旨在解决物联网产品中的一些主要安全问题。

. |5 a. j0 B$ ~' Y$ e  x
4 X2 a6 S: K! v. Y
: u: F6 W* Z3 f0 e 微信图片_20230920162230.png
  S; ?3 q% |( N; n; L! P- z9 ]/ }
7 [  X8 o) j5 X  a) y! y0 F转载自: 嵌入式计算湖南省重点实验室( D1 V( l9 x, A
如有侵权请联系删除
+ D  C4 e- r3 e2 _4 h' u1 l# e8 G( L; w" M' W
3 Y4 M3 F. T7 E* G+ U
收藏 评论0 发布时间:2023-9-20 16:23

举报

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