发新帖我要提问
12
返回列表
打印

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

[复制链接]
楼主: jhbang
手机看帖
扫描二维码
随时随地手机跟帖
21
jhbang|  楼主 | 2011-12-9 14:43 | 只看该作者 回帖奖励 |倒序浏览
既然可以从flash中运行程序,为什么还要将其先用flash中考到RAM中,再从RAM中运行呢?是不是因为操作RAM比操作flash更快?还是。。。。

使用特权

评论回复
22
jhbang|  楼主 | 2011-12-9 14:47 | 只看该作者
ARM是统一寻址的,操作flash和ram不是一样的吗?

使用特权

评论回复
23
Periodic| | 2011-12-9 15:21 | 只看该作者
ARM是统一寻址的,操作flash和ram不是一样的吗?
======================================
RAM 比FLASH  跑的快

使用特权

评论回复
24
lgnativs| | 2011-12-9 16:54 | 只看该作者
去搜索下2种架构的内核原理就清楚了.

使用特权

评论回复
25
Tinnal| | 2011-12-9 17:15 | 只看该作者
21# jhbang
如果内存够大,一般只因为速度,因为SDRAM有100MHz以上,flash上不了这种速度。
当然,像NandFlash,硬盘这种就没办法,只能拷贝,因为程序没法在上面运行。

这里特别提醒你:M31的单片机,没人会这么做的,本来就不快的东西,RAM又紧张。刚才也给你说了,M31实际使用中只会在调试的时候会把程序弄到RAM里头运行。

使用特权

评论回复
26
Tinnal| | 2011-12-9 17:18 | 只看该作者
22# jhbang
flash接口有很多种,能直接随机访问的只有nor flash!不能一概而论。

使用特权

评论回复
27
nongfuxu| | 2011-12-9 17:28 | 只看该作者
我记得STM32F103有两个引引,BOOT0、B00T1,通过控制这两个引脚,即可以在RAM中跑,也可以在flash中跑。

是这样的,而且有些芯片从flash直接取指不比从RAM中慢.

使用特权

评论回复
28
chencheng| | 2011-12-9 17:44 | 只看该作者
RAM和ROM(包括FLASH)只是不同的存储器类型,早期计算机中,程序代码(运行时只能读)放在ROM中,数据放在RAM中。现在的计算机包括嵌入式系统中,注重的速度,RAM有优势,程序程序器和数据存储器一般都用RAM实现,或者说程序和数据都放在RAM中。不过,RAM掉电后不能保存信息,所以程序代码必须存放到FLASH这样的非易失性存储器中。51单片机,速度没那么高的要求,程序存储器就可以用FALSH实现。

使用特权

评论回复
29
liudewei| | 2011-12-9 19:28 | 只看该作者
这个要看主芯片的存储空间的定义,只要具备引导途径,现在的MCU、ARM基本两种方式均可。

使用特权

评论回复
30
DONGXU| | 2011-12-9 21:59 | 只看该作者
楼主:其实你已经说出了程序是从哪里开始运行的。你的原话:
“程序运行时,是先把代码复制到ram中然后从ram中取指令开始运行,还是直接从flash中取指令运行?”
如果是从flash里运行很好理解,直接运行即可。如果要从ram里运行,也要先运行flash里的程序把代码复制到ram中,然后再跳转到ram地址运行,所以程序是从flash里开始运行的。

使用特权

评论回复
31
tuzihog| | 2011-12-11 23:20 | 只看该作者
留名

使用特权

评论回复
32
xiaotann| | 2011-12-12 08:26 | 只看该作者
程序运行

使用特权

评论回复
33
jhbang|  楼主 | 2011-12-12 08:32 | 只看该作者
现在理解了,谢谢各位大侠!!!

使用特权

评论回复
34
ayb_ice| | 2011-12-14 09:10 | 只看该作者
冯结构只是统一编址,并没有规定程序从哪里执行,实际冯结构的MCU程序一般还是在FLASH中执行,当然也可以在RAM中执行

使用特权

评论回复
35
chinaboy20| | 2011-12-15 12:01 | 只看该作者
RAM掉电没数据的,第一条指令肯定是从ROM开始的

使用特权

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

本版积分规则