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

NUCLEO-F412ZG测评:RAM和FLASH速率

[复制链接]
衔胆栖冰 提问时间:2016-10-11 10:35 /
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






评分

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

查看全部评分

收藏 3 评论13 发布时间:2016-10-11 10:35

举报

13个回答
zhangdaijin 回答时间:2016-10-11 11:51:20
        谢谢分享
高二毛 回答时间:2016-10-11 12:21:59
感谢分享
zengyi703-16313 回答时间:2016-10-11 13:05:34
谢楼主分享结果
衔胆栖冰 回答时间:2016-10-11 13:26:41
zero99 回答时间:2016-10-12 16:22:31
学习一下
shanji 回答时间:2016-10-13 20:31:35
通过分散加载文件把代码加载到RAM中执行和Flash中执行的截图,我看着像是一样的,楼主是不是放错图了?
lisingch 回答时间:2016-10-13 21:19:14
收藏学习。
衔胆栖冰 回答时间:2016-10-15 21:35:29
shanji 发表于 2016-10-13 20:31
通过分散加载文件把代码加载到RAM中执行和Flash中执行的截图,我看着像是一样的,楼主是不是放错图了?
...

你仔细看
衔胆栖冰 回答时间:2016-10-15 21:36:18

嘿嘿。。。。。。。。。。。。
xyx365 回答时间:2016-10-16 19:15:06
感谢分享
zbber 回答时间:2016-10-16 23:35:39
楼主威武,强烈支持……
assssdz 回答时间:2016-10-17 02:17:26
衔胆栖冰 回答时间:2016-10-17 13:24:07
zbber 发表于 2016-10-16 23:35
楼主威武,强烈支持……

谢谢支持

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版