打印

想知道实际程序在RAM里运行有意义么?

[复制链接]
1965|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
colaring|  楼主 | 2008-6-27 08:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看了好多关于STM32的FLASH运行速度和FLASH是否零等待的帖子,现在想问一个问题,如果我代码要求高速运行,或者说是为了省电想将CPU频率降下来,比如72M时可以完成的任务,在RAM中用48M或者32M可不可以完成。那么我要么在FLASH运行并优化我的代码,后者在RAM中运行不用优化,(暂且不谈通过优化使程序在FLASH跑的比RAM中快,我的程序很正常,好多跳转肯定32位指令和16位指令混合)

我现在只是想知道实际产品中的程序代码是否能在RAM中运行?因为昨天看到帖子中有人说程序在RAM中运行无意义,我想知道是不是程序在RAM中的运行有限制,比如只能用于IAP,Debug等等,我实际产品的高速运算代码能否RAM中运行
沙发
Again_gyf| | 2008-6-27 09:09 | 只看该作者

看你RAM大小了哦!

一般支持外部RAM的ARM基本上都在RAM里跑!FLASH的速度太慢了!

使用特权

评论回复
板凳
香水城| | 2008-6-27 10:20 | 只看该作者

请注意STM32的Cortex-M3内核使用的是哈佛结构

取指令和取数据分别使用不同的内部通道,STM32从内部Flash运行时,指令通过指令通道进入CPU,RAM数据则通过内部数据通道进入CPU;如果从内部RAM运行程序时,指令和数据都要通过内部数据通道进入CPU,没有发挥内部指令通道的作用;但是对于跳转指令,因为内部Flash的延迟效应,在RAM中取指则可能较快。如果程序指令顺序地在内部Flash中运行,则Flash中运行一定比在RAM中运行快,除非没有RAM变量的访问。

使用特权

评论回复
地板
inurl| | 2014-1-13 09:44 | 只看该作者
但是对于RAM数据读取量不是很大的场合,是不是将CODE放在RAM里面效率会高一些?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

156

帖子

1

粉丝