0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

问一个最基本的问题,也是我一直没搞清楚的问题

当程序被下载到flash中,程序运行时,是先把代码复制到ram中然后从ram中取指令开始运行,还是直接从flash中取指令运行?
提问者:龚浩洋2 地点:- 浏览次数:152 提问时间:10-06 12:19
我有更好的答案
提 交
11条回答
vewwerwr 10-06 18:08
冯.诺依曼结构是在从ram中取指令执行,包括arm体系的内核;哈福结构,cpu直接执行程序存储器的指令,包括51体系的内核;
brdtv 10-10 00:13
我感觉51内核还是冯.诺依曼结构,虽然它的数据存储和程序存储是分开的
60user177 10-14 16:34
实际上看你怎么想了,不必过于纠结
guangchuan 10-06 23:14
一般在rom中运行, 如 PC 的bios
JasonXiong 10-09 22:07
还是不太清楚,有没有一个清楚的说法,或者举出哪些是从RAM中取指令的,哪些是从ROM中取指令的。
男友力MAX 10-16 09:26
这个问题在各自的处理器资料里都会提到
平凡的世界12 10-09 07:14
我现在主要用的是M3系列和ARM7系列
leyun 10-06 14:02
ARM一般的片子,flash都会比RAM大很多,如何能将程序先复制到RAM中再运行呢?
lanjie66 10-15 12:54
M3系列是在MCU内置的FLASH里跑的。
ARM7没有带Flash,接可以接nor Flash, 让程序在FLash里面跑,也可以把程序拷么内存跑,看你接的内存大小。如果接的是Nand Flash就是能拷贝到内存跑。
wq644921241 10-08 10:44
我记得STM32F103有两个引引,BOOT0、B00T1,通过控制这两个引脚,即可以在RAM中跑,也可以在flash中跑。
snake123 10-14 10:28
BootLoader的启动又有两种情况,
一种情况是你有nor Flash,那好办,直接就能运行BoolLoader,程序都运行起来了,接下去你想怎拷都得。
另一种情况是你只有Nand FLash,这就只能靠具体的CPU产家了,如三星、ATMEL。因为没有它们,你连一条指令都执行不了。
三星做法:三星在用户通过硬接线,告诉它要在NandFlash启后时,在上电后,会把NandFlash的第一块数据拷贝到内部的SRAM运行。接下去,你的BoolLoader就得见机行事了,SRAM只有4K,三星是拷不完整的,赶紧他SDRAM内存初始化掉,然后自己拷个完整的。
ATMEL:ATMEL里头有个类似与BIOS的ROM在CPU里头,是出厂就写好程序的,CPU启动时会先运行里头的引导程序。引导程序如果识别到NandFLash,会做和三星类似的事情,把NandFlash的第一块数据拷贝到内部的SRAM运行,接下去你要做的,也一样。
撰写答案
提 交
1 / 3
1 / 3