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

[复制链接]
5683|34
 楼主| jhbang 发表于 2011-12-9 14:43 | 显示全部楼层
既然可以从flash中运行程序,为什么还要将其先用flash中考到RAM中,再从RAM中运行呢?是不是因为操作RAM比操作flash更快?还是。。。。
 楼主| jhbang 发表于 2011-12-9 14:47 | 显示全部楼层
ARM是统一寻址的,操作flash和ram不是一样的吗?
Periodic 发表于 2011-12-9 15:21 | 显示全部楼层
ARM是统一寻址的,操作flash和ram不是一样的吗?
======================================
RAM 比FLASH  跑的快
lgnativs 发表于 2011-12-9 16:54 | 显示全部楼层
去搜索下2种架构的内核原理就清楚了.
Tinnal 发表于 2011-12-9 17:15 | 显示全部楼层
21# jhbang
如果内存够大,一般只因为速度,因为SDRAM有100MHz以上,flash上不了这种速度。
当然,像NandFlash,硬盘这种就没办法,只能拷贝,因为程序没法在上面运行。

这里特别提醒你:M31的单片机,没人会这么做的,本来就不快的东西,RAM又紧张。刚才也给你说了,M31实际使用中只会在调试的时候会把程序弄到RAM里头运行。
Tinnal 发表于 2011-12-9 17:18 | 显示全部楼层
22# jhbang
flash接口有很多种,能直接随机访问的只有nor flash!不能一概而论。
nongfuxu 发表于 2011-12-9 17:28 | 显示全部楼层
我记得STM32F103有两个引引,BOOT0、B00T1,通过控制这两个引脚,即可以在RAM中跑,也可以在flash中跑。

是这样的,而且有些芯片从flash直接取指不比从RAM中慢.
chencheng 发表于 2011-12-9 17:44 | 显示全部楼层
RAM和ROM(包括FLASH)只是不同的存储器类型,早期计算机中,程序代码(运行时只能读)放在ROM中,数据放在RAM中。现在的计算机包括嵌入式系统中,注重的速度,RAM有优势,程序程序器和数据存储器一般都用RAM实现,或者说程序和数据都放在RAM中。不过,RAM掉电后不能保存信息,所以程序代码必须存放到FLASH这样的非易失性存储器中。51单片机,速度没那么高的要求,程序存储器就可以用FALSH实现。
liudewei 发表于 2011-12-9 19:28 | 显示全部楼层
这个要看主芯片的存储空间的定义,只要具备引导途径,现在的MCU、ARM基本两种方式均可。
DONGXU 发表于 2011-12-9 21:59 | 显示全部楼层
楼主:其实你已经说出了程序是从哪里开始运行的。你的原话:
“程序运行时,是先把代码复制到ram中然后从ram中取指令开始运行,还是直接从flash中取指令运行?”
如果是从flash里运行很好理解,直接运行即可。如果要从ram里运行,也要先运行flash里的程序把代码复制到ram中,然后再跳转到ram地址运行,所以程序是从flash里开始运行的。
tuzihog 发表于 2011-12-11 23:20 | 显示全部楼层
xiaotann 发表于 2011-12-12 08:26 | 显示全部楼层
程序运行
 楼主| jhbang 发表于 2011-12-12 08:32 | 显示全部楼层
现在理解了,谢谢各位大侠!!!
ayb_ice 发表于 2011-12-14 09:10 | 显示全部楼层
冯结构只是统一编址,并没有规定程序从哪里执行,实际冯结构的MCU程序一般还是在FLASH中执行,当然也可以在RAM中执行
chinaboy20 发表于 2011-12-15 12:01 | 显示全部楼层
RAM掉电没数据的,第一条指令肯定是从ROM开始的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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