衔胆栖冰 发表于 2016-10-11 10:35:24

NUCLEO-F412ZG测评:RAM和FLASH速率

NUCLEO-F412ZG测评:RAM和FLASH速率       早有耳闻STM32家族MCU在FLASH中执行代码的速率比在RAM中执行快。由于其他厂商的MCU大多是代码在RAM中执行的速率比在FLASH中快。抱着疑问,基于STM32F412的NUCLEO板做了这个简单的测试。
       测试方法:首先让代码加载到RAM中执行,在主函数中while(1)循环翻转GPIO,通过示波器检查GPIO的翻转速率;然后再通过修改分散加载文件,把代码加载到FALSH中执行,通过示波器检查GPIO的翻转速率。       实验现象:          ①代码在RAM中执行:          通过分散加载文件把代码加载到RAM中执行。         
         通过.map观看代码把加载到RAM中的具体位置。         
         通过示波器检测代码在RAM中执行时的GPIO翻转速率。            
          ②代码在FLASH中执行:          通过修改分散加载文件把代码加载到FLASH中执行。         
          通过.map观看代码把加载到FALSH中的具体位置。         
         通过示波器检测代码在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




相关推荐:F412技术文档汇总STM32 L4系列超低功耗微控制器官方介绍STM32L4单片机参考设计STM32单片机官方开发工具一览


更多评测:
F412ZG评测之UID和RNG(随机数)F412ZG评测之浮点运算能力F412ZG评测之图片显示F412ZG评测之RAM和FLASH速率

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

zengyi703-16313 发表于 2016-10-11 13:05
谢楼主分享结果

:):):):):)

zero99 发表于 2016-10-12 16:22:31

学习一下

shanji 发表于 2016-10-13 20:31:35

通过分散加载文件把代码加载到RAM中执行和Flash中执行的截图,我看着像是一样的,楼主是不是放错图了?

lising 发表于 2016-10-13 21:19:14

收藏学习。

衔胆栖冰 发表于 2016-10-15 21:35:29

shanji 发表于 2016-10-13 20:31
通过分散加载文件把代码加载到RAM中执行和Flash中执行的截图,我看着像是一样的,楼主是不是放错图了?
...

你仔细看:lol:lol:lol:lol

衔胆栖冰 发表于 2016-10-15 21:36:18

lising 发表于 2016-10-13 21:19
收藏学习。

嘿嘿。。。。。。。。。。。。
页: [1] 2
查看完整版本: NUCLEO-F412ZG测评:RAM和FLASH速率