版主,您好
请问一下,程序在nor flash中执行的速度为什么会比在内部flash中的执行下降很多呢,同样的代码,是不是读取指令的速度不够?
看看STM32的整体框图,这就是哈佛结构的特点
关于哈佛结构的优点我就不说了。
内部Flash的接口缓冲也起了很大作用,请看我的博客:
【分析】STM32从Flash中运行程序的时序分析 。
相同的代码的跑马灯程序,
我用相同的代码的跑马灯程序,
下载到内部flash中运行与下载到norflash中运行速度差的太远。
怎么解决呢,是不是我还有什么需要设置的东西呢?
请看2楼的图,这是哈佛结构的特点
程序放在片外,肯定比放在内置Flash的运行速度慢。
nor
的速度在那里摆着呢.除了加载到快速的RAM里面,基本上就没有办法了.
请问ls,怎么把nor中的数据考到内部flash中执行啊?
谢谢
如果再把程序掉到SRAM中执行的话…………
如果再把程序掉到SRAM中执行的话,要就要外扩SRAM了,而且要很大的空间。因为既然用norflash存程序代码,那就意味着程序代码应该不小,RAM小了还不行,除非代码程序能分块的执行,也就是分块的调入SRAM中。
这样做好烦麻哟
所以可能NORflash的用处可能最大用处在于存数据用,何况一般的情况下512K的代码也差不多了。
如果在NORflash中直接执行的话,那速度太慢了,STM32的好多好处就没有了,我认为MCU速度还是很重要的。
不知我理解的对不对?
把常数表
放到外部nor里面,程序放到片内flash运行,不就结了.
一般片内的flash足够用了.大的一般都是常数表.
最好不要把程序放在norflash中
片外程序不保险,很容易被盗版,(除非你的程序没有盗版的意义)
片内虽还是可能被盗版,但成本大得多,有一定意义
norflash容易有坏区,放数据较为合理
内部ram用做程序,恐怕你得考虑"穿小鞋"带来的"迈步"问题,即大程序的分块和跳转切换问题
同意 楼上看法函数切换很难受。我昨天算感受到了。
有解决办法就是都用函数指针,不过容易出错