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

查看: 3091|回复: 13

NUCLEO-F412ZG测评:RAM和FLASH速率

[复制链接]

9

主题

276

回帖

66

蝴蝶豆

金牌会员

最后登录
2020-11-17
发表于 2016-10-11 10:35:24 | 显示全部楼层 |阅读模式
NUCLEO-F412ZG测评:RAMFLASH速率
       早有耳闻STM32家族MCU在FLASH中执行代码的速率比在RAM中执行快。由于其他厂商的MCU大多是代码在RAM中执行的速率比在FLASH中快。抱着疑问,基于STM32F412的NUCLEO板做了这个简单的测试。

       测试方法:
首先让代码加载到RAM中执行,在主函数中while(1)循环翻转GPIO,通过示波器检查GPIO的翻转速率;然后再通过修改分散加载文件,把代码加载到FALSH中执行,通过示波器检查GPIO的翻转速率。
       实验现象:
          ①代码在RAM中执行:
          通过分散加载文件把代码加载到RAM中执行。
         

把代码加载到RAM中的分散加载文件

把代码加载到RAM中的分散加载文件

           通过.map观看代码把加载到RAM中的具体位置。
         

通过.map文件可看出代码被加载到RAM中执行

通过.map文件可看出代码被加载到RAM中执行

           通过示波器检测代码在RAM中执行时的GPIO翻转速率。
            

代码在RAM中执行的GPIO翻转波形

代码在RAM中执行的GPIO翻转波形

          ②代码在FLASH中执行:
          通过修改分散加载文件把代码加载到FLASH中执行。
         

把代码加载到FLASH中执行的分散加载文件

把代码加载到FLASH中执行的分散加载文件

          通过.map观看代码把加载到FALSH中的具体位置。
         

代码在FLASH中执行的.MAP文件

代码在FLASH中执行的.MAP文件

           通过示波器检测代码在FLASH中执行时的GPIO翻转速率。
           

代码在FLASH中执行的GPIO翻转波形

代码在FLASH中执行的GPIO翻转波形

       误差和限制:
       由于受到GPIO外设的限制,GPIO的翻转速率并不代表RAM和FLASH的代码执行速率,但能通过单一变量控制的方法粗略对比出两者的速率大小。GPIO的翻转速率仅代表此次实验的结果,仅供参考。
       结果和分析:由以上现象得出,在STM32F412的FLASH中代码执行速率比在RAM中快;STM32F412的GPIO翻转速率(高→低→高)在一般条件下可达2.72MHz。
       实验意义:
       首先得出在STM32F412中,代码在FLASH中执行的速率比在RAM中快的结论。想要提高代码的执行速率,则应把代码加载到FLASH中执行。据说这与STM32内部的总线仲裁机制有关。
       其次,对于100MHz主频的STM32F412来说,代码在RAM中执行的速率对于一般应用尚可接受。对于拥有1M Byte FLASH和256K Byte的STM32F412ZG来说,不对其内存进行充分的利用仿佛有点浪费。如果要拿片内的FLASH来存储用户数据(非代码数据),则可能会遇到擦写片内FLASH与中断产生而使程序跑飞的问题。此情况下用户可通过把代码加载到RAM中执行,解决操作片内FLASH和中断共存的问题。
       最后,GPIO口的翻转速率,是用GPIO模拟各种外设通信接口(如SPI,I2C等)的前提保障,以上实测STM32F412ZG的GPIO翻转速率仅供参考,不过相对于本人用过其他某一厂商100MHz的cortex M4来说,STM32F412ZG的GPIO翻转速率还是相对较快的。

注:本实验实验编程环境为keil-MDK5.14开发环境,由之前《NUCLEO-F412ZG测评:UID和RNG(随机数)》的工程代码修改后进行测试。由于程序比较简单,就不贴上来了。如有兴趣可下载《NUCLEO-F412ZG测评:UID和RNG(随机数)》的工程自行修改:https://www.stmcu.org.cn/module/forum/thread-608121-1-1.html






评分

参与人数 1ST金币 +20 收起 理由
zero99 + 20

查看全部评分

<
回复

使用道具 举报

31

主题

1951

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-12-4
发表于 2016-10-11 11:51:20 | 显示全部楼层
        谢谢分享
回复 支持 反对

使用道具 举报

4

主题

574

回帖

3

蝴蝶豆

高级会员

最后登录
2020-12-9
发表于 2016-10-11 12:21:59 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

4

主题

484

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-8-12
发表于 2016-10-11 13:05:34 | 显示全部楼层
谢楼主分享结果
回复 支持 反对

使用道具 举报

9

主题

276

回帖

66

蝴蝶豆

金牌会员

最后登录
2020-11-17
 楼主| 发表于 2016-10-11 13:26:41 | 显示全部楼层
回复 支持 反对

使用道具 举报

1182

主题

3785

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-3-17
发表于 2016-10-12 16:22:31 | 显示全部楼层
学习一下
回复 支持 反对

使用道具 举报

25

主题

455

回帖

63

蝴蝶豆

金牌会员

最后登录
2020-9-21
发表于 2016-10-13 20:31:35 | 显示全部楼层
通过分散加载文件把代码加载到RAM中执行和Flash中执行的截图,我看着像是一样的,楼主是不是放错图了?
回复 支持 反对

使用道具 举报

16

主题

3009

回帖

2

蝴蝶豆

论坛元老

最后登录
2020-11-30
发表于 2016-10-13 21:19:14 | 显示全部楼层
收藏学习。
回复 支持 反对

使用道具 举报

9

主题

276

回帖

66

蝴蝶豆

金牌会员

最后登录
2020-11-17
 楼主| 发表于 2016-10-15 21:35:29 | 显示全部楼层
shanji 发表于 2016-10-13 20:31
通过分散加载文件把代码加载到RAM中执行和Flash中执行的截图,我看着像是一样的,楼主是不是放错图了?
...

你仔细看
回复 支持 反对

使用道具 举报

9

主题

276

回帖

66

蝴蝶豆

金牌会员

最后登录
2020-11-17
 楼主| 发表于 2016-10-15 21:36:18 | 显示全部楼层

嘿嘿。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

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