0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32G4系列存储访问的两个小话题

茶话MCU 来源:茶话MCU 作者:茶话MCU 2022-12-12 10:15 次阅读

一、有关CCM访问地址的话题

有用过STM32F4系列部分芯片或STM32F334芯片的人,可能知道片内有个CCM【Core Coupled Memory】区域,从芯片系统框图结合文字说明,可以清晰知道这个区域仅能被CPU访问,常用来存放些对执行效率敏感的关键性的代码或数据。也就是说对于这两个系列的CCM区域,DMA是访问不了的。

下面截图分别来自STM32F42X/STM32F43X器件和STM32F334器件的参考手册。

bfd482ba-7885-11ed-8abf-dac502259ad0.png

c00c6a90-7885-11ed-8abf-dac502259ad0.png

到了STM32G4系列,里面依然也有CCM这个区域。见下面STM32G4系统框架图。

c0388986-7885-11ed-8abf-dac502259ad0.png

从框架图上看,这个CCM区域不仅可以被CPU访问,也可以被DMA访问。关于它的起始地址也有相关描述:

c060a722-7885-11ed-8abf-dac502259ad0.png

从上面描述来看,CCM的地址起始于0x1000 0000和SRAM2结尾的地方。至于SRAM2结尾的地址还跟STM32G4具体的子系列或型号有关,见下面截图资料

c0990efa-7885-11ed-8abf-dac502259ad0.png

那么这两个地址空间怎么用,或者说区别是什么呢?

当为了充分发挥CPU对这块区域的访问效能时就使用0x1000 0000开始的地址空间,此时CPU通过ICode总线访问这个区域。这块地址空间DMA是访问不了的,属CPU专访区。

若希望DMA访问这块物理区域,DMA要通过总线矩阵来访问,所用的空间则是0x20005800或0x20018000(视具体系列而定)开始的一段地址。此时,这个CCM区域在DMA眼里,不过是SRAM2区域延伸出来的一块别名区。当我们试图让DMA访问这个区域时,地址别给错了,不要使用CPU的专用地址,而要给0x20005800或0x20018000开始的地址。

c0e4ab8a-7885-11ed-8abf-dac502259ad0.png

也就是说同一个物理空间,不同的主体通过走不同的地址路线而实现不同的访问、执行性能。这样的设计更具灵活性,以满足五彩斑斓的实际应用需求。就像我们要到达某个地方完成某事,有人走正门,有人走侧门,甚至有人飞檐走壁,各用所便,各尽所能,各取所需。

当然,G4系列的CCM除了上面因访问主体不同采样不同地址空间的灵活特性外,还加强了很多安全特性,比方奇偶校验、读写保护等,有兴趣可以进一步阅读相关参考手册。

二、有关位带操作的话题

有人问起STM32G4系列是否支持位带操作方面的相关话题。

要问STM32某个系列是否支持位带操作,首先得看看相关STM32系列所用ARM内核是否支持位带操作。如果内核本身就不支持位带功能,STM32是不会支持该功能的。反之,如果相关ARM核支持位带操作,基于该核的STM32系列一般都会支持位带操作,而且在相关STM32参考手册里一定会明确说明。【其实,第三方芯片设计者在基于ARM核设计、集成芯片时,对于内核的部分功能或者核外设是有取舍权的。】

具体到STM32G4系列芯片,它属于cortex M4核,该核内置位带功能,STM32G4芯片也集成了该功能,在STM32G4参考手册上也有明确描述。【下图截取于STM32G4参考手册】

c109dab8-7885-11ed-8abf-dac502259ad0.png

这里的位带区特指一段片内SRAM空间和外设寄存器空间。位带区的SRAM里的每一位或外设寄存器的每一位都可以通过访问相应的另外一段地址空间的一个字实现读写操作,这个另外一段地址空间就称之为位带区的别名区。

不过,在STM32参考手册里,针对位带操作的介绍相对比较简单,主要是因为ARM内核相关手册有较为详细的描述。STM32参考手册里主要就如何计算别名区的地址做了个演示,并提示阅读相关ARM 内核手册。

c1440ac6-7885-11ed-8abf-dac502259ad0.png

上图截取于STM32G4参考手册RM0440。有人纳闷示例中的0x2200,0000是从哪里来的?翻遍整个G4系列参考手册也不知它怎么冒出来的。其实,这个地址是在Arm cortex M4内核手册里明确的。见下图:

c18b8270-7885-11ed-8abf-dac502259ad0.png

上图来自于Cortex -M4Devices Generic User Guide。

上图清晰了给出两块位带区【SRAM区和外设寄存器区】以及对应的别名区的地址边界和对应关系。图中浅紫色表示位带区,绿色表示别名区。显然,位带区字节地址为0x2000,0000的bit0对应别名区的字地址就是0x2200,0000;位带区字节地址为0x2000,0000的字节的bit1对应别名区的字地址就是0x2200,0004,这样依此类推。

关于位带操作的介绍,除了上面的Memory框图外,在内核手册里还有更多包括地址计算在内的详细介绍。下面三副截图均来自M4内核用户手册。

c1d70024-7885-11ed-8abf-dac502259ad0.png

c2211e20-7885-11ed-8abf-dac502259ad0.png

c26156ca-7885-11ed-8abf-dac502259ad0.png

关于位带操作的介绍就聊到这里,顺便给几点提醒:

1、不是所有STM32系列都支持位带操作,是否支持终究由内核决定;

2、执行位带操作的主体只能是CPU,而不能是别的,比方DMA;

3、位带操作只支持针对数据,而不能针对指令;

上面主要分享了STM32G4系列中有关CCM和Bit Banding应用方面的话题,做了些提醒及分享,以供参考。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10451

    浏览量

    206583
  • STM32
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348866
  • CCM
    CCM
    +关注

    关注

    0

    文章

    135

    浏览量

    23355
  • STM32F334
    +关注

    关注

    0

    文章

    6

    浏览量

    4758

原文标题:STM32G4系列存储访问的两个小话题

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问STM32G4系列的MCU可以支持以太网吗?

    请问STM32G4系列的MCU可以支持以太网吗?该系列同时支持以太网和USB Host或OTG接口的型号有吗?
    发表于 03-15 06:14

    请问STM32G4的推挽PWM如何配置?

    STM32G4的推挽PWM如何配置?
    发表于 04-03 06:17

    STM32G4系列的comp比较器的刹车事件和比较中断怎么用?

    STM32G4系列的comp比较器的刹车事件和比较中断怎么用
    发表于 04-03 07:33

    STM32G4的应用

    STM32G4系列发布也有一段时间了,但是网上关于G4的开发板一直很少,所以一直想体验一下G4的MCU,在我画板的时候,我已经体验到了G4
    发表于 08-06 07:42

    STM32G4片内不同存储空间运行的速度差异是什么

    最近有人问起程序在STM32G4片内不同存储空间运行的速度差异。说实在的,这个很难说死或说出个绝对的数据,毕竟结果除了跟执行代码的存放空间有关外,还跟代码本身的内容、程序逻辑、编译工具及优...
    发表于 01-11 08:14

    STM32G4的相关资料推荐

    有人使用STM32G4系列芯片开发产品。他发现程序中如果遇到除以0的操作时,会跑进出错异常中断而影响程序运行。他想知道能否通过设置,即使发生除以0操作也不让程序跑进异常中断,并期望此时的除...
    发表于 02-07 08:07

    如何使用STM32G4系列微控制器存储器和外设

    本参考手册面向应用程序开发人员。它提供了有关如何使用STM32G4系列微控制器存储器和外设的完整信息。
    发表于 11-24 07:51

    用于为STM32G4系列注册映射的低级API函数问题求解

    你好呀,在 STM32G0 系列的 ADC 固件驱动程序 API 描述中,有一表显示哪个 LL 函数访问哪个寄存器。在 UM2570(这是相同的文档,但对于
    发表于 12-29 06:16

    STM32G4中的HRTIM是否可用?

    大家好,关于应用笔记AN4539 ,STM32G4的所有 MCU 都应支持 HRTIM 外设,参考手册也描述了所有 STM32G4 的 HRTIM 功能,但在某些页面和数据表上没有关于 HRTIM
    发表于 02-08 06:25

    STM32G4系列的MCU可以支持以太网吗?

    请问STM32G4系列的MCU可以支持以太网吗?该系列同时支持以太网和USB Host或OTG接口的型号有吗?
    发表于 08-05 07:06

    STM32L4 STM32L4+和STM32G4系列微控制器上的专利代码读取保护

    基于Arm®(a)内核的STM32L4STM32L4+和STM32G4系列微控制器采用多种机制,可对全存储器或特定段进行读写保护。读保护用
    发表于 09-07 07:45

    基于STM32G4的电机控制项目开发

    程序在CCM SRAM中才能完美发挥出STM32G4的性能MC SDK V5.4.3中STM32G4默认并未使用CCM SRAM
    发表于 09-08 06:54

    如何使用STM32G4系列微控制器存储器和外围设备

    本参考手册面向应用程序开发人员。它提供了关于如何使用STM32G4系列微控制器存储器和外围设备。 STM32G4系列是一
    发表于 09-08 06:59

    STM32G4 系列寿命估算

    STM32G4 系列寿命估算
    发表于 11-21 08:11 2次下载
    <b class='flag-5'>STM32G4</b> <b class='flag-5'>系列</b>寿命估算

    STM32G4系列安全手册

    STM32G4系列安全手册
    发表于 11-22 08:21 3次下载
    <b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>安全手册