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

    文章

    10854

    浏览量

    211583
  • STM32
    +关注

    关注

    2270

    文章

    10895

    浏览量

    355742
  • CCM
    CCM
    +关注

    关注

    0

    文章

    144

    浏览量

    23970
  • STM32F334
    +关注

    关注

    0

    文章

    6

    浏览量

    4792

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

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

收藏 人收藏

    评论

    相关推荐

    STM32G4 UART+TIMER+DMA应用示例

    这里使用STM32G4系列Nucleo开发板演示如下需求的实现过程。
    的头像 发表于 11-27 10:42 2253次阅读
    <b class='flag-5'>STM32G4</b> UART+TIMER+DMA应用示例

    STM32G4的应用

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

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

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

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

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

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

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

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

    息息相关。我这里设计了一小测试程序做了下简单比较,以供参考。 我们不妨先看看STM32G4系列内部系统框架图。下图是STM32G4芯片的系统框架图,我将测试程序放在图中三
    的头像 发表于 09-09 09:57 2235次阅读
    在<b class='flag-5'>STM32G4</b>片内不同<b class='flag-5'>存储</b>空间运行的速度差异

    STM32G4 系列寿命估算

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

    AN5306_OPAMP在STM32G4系列中的应用

    AN5306_OPAMP在STM32G4系列中的应用
    发表于 11-21 08:11 4次下载
    AN5306_OPAMP在<b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>中的应用

    AN4232_STM32F3和 STM32G4的模拟比较器入门指南

    AN4232_STM32F3和 STM32G4的模拟比较器入门指南
    发表于 11-21 17:06 10次下载
    AN4232_<b class='flag-5'>STM32</b>F3和 <b class='flag-5'>STM32G4</b>的模拟比较器入门指南

    AN5310_使用STM32F3系列STM32G4系列设备的模拟特性指南

    AN5310_使用STM32F3系列STM32G4系列设备的模拟特性指南
    发表于 11-21 17:06 2次下载
    AN5310_使用<b class='flag-5'>STM32</b>F3<b class='flag-5'>系列</b>与<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>安全手册

    UM2492_从STM32G4系列STM32CubeG4开始的用户手册

    UM2492_从STM32G4系列STM32CubeG4开始的用户手册
    发表于 11-22 08:21 4次下载
    UM2492_从<b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>的<b class='flag-5'>STM32CubeG4</b>开始的用户手册

    STM32G4电机驱动实例

    电子发烧友网站提供《STM32G4电机驱动实例.pdf》资料免费下载
    发表于 07-31 17:00 9次下载
    <b class='flag-5'>STM32G4</b>电机驱动实例

    STM32G4 应用程序与 Option Bytes 同时烧录问题

    STM32G4 应用程序与 Option Bytes 同时烧录问题
    的头像 发表于 09-28 18:02 1047次阅读
    <b class='flag-5'>STM32G4</b> 应用程序与 Option Bytes 同时烧录问题

    STM32G4市场和特性篇

    电子发烧友网站提供《STM32G4市场和特性篇.pdf》资料免费下载
    发表于 09-19 14:44 1次下载
    <b class='flag-5'>STM32G4</b>市场和特性篇