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

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

3天内不再提示

简述STM32G4芯片内不同空间运行代码的速率比较

茶话MCU ? 来源:茶话MCU ? 作者:茶话MCU ? 2021-11-26 11:34 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近有人问起程序在STM32G4片内不同存储空间运行的速度差异。说实在的,这个很难说死或说出个绝对的数据,毕竟结果除了跟执行代码的存放空间有关外,还跟代码本身的内容、程序逻辑、编译工具及优化等级等都息息相关。我这里设计了一个小测试程序做了下简单比较,以供参考。

我们不妨先看看STM32G4系列内部系统框架图。下图是STM32G4芯片的系统框架图,我将测试程序放在图中三个黄色高亮位置来运行。

f6d4720e-4ddc-11ec-9eda-dac502259ad0.png

我将程序分别放在CCM、通用SRAM1、Flash区来运行,基于不同的配置,即是否开启指令预取、指令/数据Cache等,得到下面一个表格。代码所在区域栏里的数据代表各种情形下的执行时间。

f712c19e-4ddc-11ec-9eda-dac502259ad0.png

从上面表格可以看出,相同配置下在CCM里执行速率总是最高。

至于代码放在SRAM和Flash里的执行速率,不同配置下结果并不太一样。比如在开启prefetch和使能指令/数据Cache时,即第(1)种配置条件下,在SRAM里运行的速率是最慢的,只有在上图中的第(3)种情形下,代码在SRAM里运行速率相比在FLASH里运行才凸显出明显优势。

对于STM32G4系列芯片,芯片复位后其Prefetch功能是关闭的,而指令/数据Cache是开启的,即复位后默认为上面的第(2)种情形。结合上图,我们不难看出情形(1)与情形(2)的差别不大,至少不显著。

上面数据虽只是基于特定代码测试而得,但作为基本的方向性判断还是可以的。

编辑:jq

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

    关注

    460

    文章

    52616

    浏览量

    442686
  • STM32
    +关注

    关注

    2295

    文章

    11034

    浏览量

    365929
  • CCM
    CCM
    +关注

    关注

    0

    文章

    165

    浏览量

    24839

原文标题:STM32G4芯片内不同空间运行代码的速率比较

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32F103长时间运行,串口发送失败怎么解决?

    STM32F103长时间运行,串口发送失败,目前定位到一致卡在USART_FLAG_TC判断那里,我们采用轮询的方式发送数据,然后判断USART_FLAG_TC是否发送成功,在大量发送后出现了一次发送后USART_FLAG_TC没有置位,然后就一直卡在这里了,这可如何是好
    发表于 07-30 07:55

    STM32IDE如何设定代码到ITCM中运行

    近期使用STM32MUX生成STM32IDE的代码(MCU是STM32H743),目前希望可以将部分代码定位到ITCM中
    发表于 06-24 06:45

    STM32G431移植FreeModbus

    STM32G431移植FreeModbus 的代码已通过验证,在WeActStudio的STM32G431CoreBoard上进行多次测试,均可正常读取寄存器数值。STM32G431C
    发表于 04-19 16:50 ?1次下载

    在IMX93自定义构建期间运行bitbake imx image full时遇到报错怎么解决?

    在 IMX93 自定义构建期间运行 bitbake imx image full 时,我们遇到错误。您能否尽早提供解决方案?我们使用的是 imx 6.6.52 版本。
    发表于 04-10 06:29

    使用STM32G431做HID Keyboard与CDC符合设备,为什么做不了?

    原先曾用STM32F4做过,没什么问题,现在按照相同的思路使用STM32G431来做,怎么都不成了,我相信写的代码没什么问题。 现在的情况是CDC能正常通讯,HID Keyboard能识别,但是有
    发表于 03-14 08:30

    使用Hal库的SPI读取磁边传感器导致STM32G4无法运行怎么解决?

    使用 HAL库 STM32G431 + SPI ,读取磁边传感器系统运行一会直接卡死,使用调试功能最后发现卡死在if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE
    发表于 03-14 08:24

    STM32G4串口无法发送正确的信息是怎么回事?

    STM32G4串口无法发送正确的信息
    发表于 03-14 07:14

    STM32L431上使用内部RTC,时间运行到23:59:59秒后,变为了24:00:00并不是00:00:00,为什么?

    大家好,我在STM32L431上使用内部RTC,时间运行到23:59:59秒后,变为了24:00:00,并不是00:00:00,并且weekday也没有加一,这是为什么呢?
    发表于 03-11 06:32

    STM32和MCP2515通信,STM32这端还需要接CAN PHY吗?

    最近在做CAN通信的相关项目,STM32G4负责接收,对端是一个MCP2510+TJA1040的组合, 想问下应该如何接?STM32这端还需要接CAN PHY吗?
    发表于 03-10 06:18

    STM32G474的DAC4无输出怎么解决?

    STM32G474 的DAC4采用定时器4触发dma,OUT1连接到比较器5,测试下来 DAC4没输出,是配置哪里有问题吗 定时器
    发表于 03-07 06:06

    DLPC3478长时间运行投影停止是什么原因导致的?

    1 原理图设计是根据参考设计设计的 2 元器件是使用参考设计的元器件 3 在长时间工作时候会出现投影停止,通过IIC可以读取到芯片的信息。投影停止时间是不确定的,运行2小时-24小时都可能出现不
    发表于 02-21 07:53

    基于STM32设计的大气气压检测装置

    长时间运行同时又要求较高计算性能的应用。特别是选用型号为STM32F103RCT6的微控制器,它不仅具备足够的Flash存储空间和RAM来支持复杂的软件算法,还内置了多种通信接口,便于连接外部传感器和其他设备。
    的头像 发表于 01-09 11:15 ?1376次阅读
    基于<b class='flag-5'>STM32</b>设计的大气气压检测装置

    2.4G &amp; 5.8G无线音频传输有什么区别?

    音频芯片&模块传输应用场合有: 例如: 5.8G电吉他无线收发器, 5.8G游戏耳机双向无线传输, 5.8G无线直播监听耳机、 5.8G
    发表于 09-25 11:01

    基于ST STM32G474的400W Microinverter之数字电源方案

    大联大友尚集团 HPL (HPLAB) 实验室设计的 400W Micromiverter ( 微型逆变器 ) 方案,使用 ST STM32G4 系列 MCU,同时控制 MPPT 与 Inverter,实现太阳能转换成交流电并回电网。
    的头像 发表于 08-30 12:53 ?2003次阅读
    基于ST <b class='flag-5'>STM32G</b>474的400W Microinverter之数字电源方案

    LKT(LCS)代码移植芯片优势

    智能卡芯片的程序段,获得运行结果,并以此结果作为用户程序进一步运行的输入数据。因此加密芯片成了产品的一部分,而
    的头像 发表于 08-22 10:03 ?1257次阅读