[STM32F4] STM32F4系列启动后是如何进行指令执行的?

[复制链接]
798|22
 楼主| liuzaiy 发表于 2020-12-2 23:26 | 显示全部楼层 |阅读模式
STM32F4系列启动后是如何进行指令执行的?
renyaq 发表于 2020-12-2 23:32 | 显示全部楼层
需要装载到RAM中吗?
supernan 发表于 2020-12-2 23:36 | 显示全部楼层
以前用DSP用的多,DSP一直都是从FLASH中装载到RAM中运行。
 楼主| liuzaiy 发表于 2020-12-2 23:40 | 显示全部楼层
STM32F4的MCU已经达到了168M,这个速度已经够快了。所以我想知道是不是在cpu启动之后,也把程序指令从FLASH中LOAD出来到RAM中再执行?
 楼主| liuzaiy 发表于 2020-12-2 23:43 | 显示全部楼层
如果不是,那是如何做到快速指令执行的呢?
supernan 发表于 2020-12-2 23:49 | 显示全部楼层
Flash虽然访问频率无法很高,但可以用位宽来解决啊。
xxrs 发表于 2020-12-2 23:52 | 显示全部楼层
它每次读128BIT,就满足了MCU全速运行所需要的带宽
yinxiangh 发表于 2020-12-2 23:56 | 显示全部楼层
Copy到RAM的搞法也有的。GD就是这么搞的。
sonicll 发表于 2020-12-3 08:53 | 显示全部楼层
本帖最后由 sonicll 于 2020-12-3 08:57 编辑

直接从FLASH取指令啊,现在很多型号内置的FLASH都是零等待的,执行速度不比RAM差。你想把FLASH内容load到RAM运行也是可以的,但是一般RAM容量没有那么大,只能放小体积的代码,而且“把FLASH内容load到RAM”的这段代码本身也是在FLASH里执行的,所以归根结底,上电启动后,还是要先从FLASH取指令执行
 楼主| liuzaiy 发表于 2020-12-8 22:08 | 显示全部楼层
那也就是说,STM32自带FLASH的宽度是128BIT?
yinxiangh 发表于 2020-12-8 22:13 | 显示全部楼层
STM32指令应该是32位宽,每次读128BIT的话,就意味着读取FALSH的速度是168/4=42M,感觉这个FLASH的读取速度也不算慢了。
嵌入小菜菜 发表于 2020-12-8 22:15 | 显示全部楼层
这个速度已经够快了吧,还需要再快吗?
pangb 发表于 2020-12-8 22:17 | 显示全部楼层

所有的指令都是要到ram里面执行的
ousj 发表于 2020-12-8 22:21 | 显示全部楼层
Thumb指令,16位,所以只有21M就够了
嵌入小菜菜 发表于 2020-12-8 22:24 | 显示全部楼层
这个我还没有试验过,或许可以的吧。
 楼主| liuzaiy 发表于 2020-12-8 22:36 | 显示全部楼层
具体解释一下?谢谢。每条语句从FLASH中读取到RAM中执行?
xxrs 发表于 2020-12-8 22:40 | 显示全部楼层
研究这么深入,是有啥用处?
 楼主| liuzaiy 发表于 2020-12-8 22:44 | 显示全部楼层
搞定了,呵呵,犯了低级错误…多谢各位
tfqi 发表于 2021-1-5 11:44 | 显示全部楼层
这个问题怎么形容啊
wiba 发表于 2021-1-5 11:51 | 显示全部楼层
不太清楚他的执行流程
您需要登录后才可以回帖 登录 | 注册

本版积分规则

735

主题

7546

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部