加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

程序在flash中还是ram中运行

发布时间:2020-12-15 19:55:03 所属栏目:百科 来源:网络整理
导读:转自 :?http://blog.csdn.net/jj163zhuangzi/article/details/47088843 1. 冯诺依曼结构和哈佛结构 ? ? PC(x86)采用的是冯诺依曼结构, 运行的时候 即数据和程序都放在同一个存储器(ram)里,共用一条存储总线。具体 :当PC没电的时候,程序和数据存储在

转自 :?http://blog.csdn.net/jj163zhuangzi/article/details/47088843


1. 冯诺依曼结构和哈佛结构

?

? PC(x86)采用的是冯诺依曼结构,运行的时候即数据和程序都放在同一个存储器(ram)里,共用一条存储总线。具体 :当PC没电的时候,程序和数据存储在硬盘里,当pc上电的时候,在硬盘里运行的一段小程序把全部程序从硬盘搬运到ram中,然后程序开始在ram中运行;

?而嵌入式系统(arm,dsp)采用的哈佛结构,运行的时候程序存储在flash中,数据存储在ram中,所以cpu从flash中取指令,到ram中取数据,指令总线和数据总线也是分开的;

2者之所以采用不同的结构,主要因为PC的ram空间足够,而嵌入式的ram太小;

以下以stm32来说明:

(1)cpu根据boot0和boot1的硬件引脚决定从flash还是ram中启动,默认是从flash中启动;启动之后会搬运rw-data 到ram,但是不会搬运code;

(2)如果采用ram中运行,一般只能用作调试模式,因为掉电程序就丢失了;

(3)从系统启动其实就是isp,是固化在rom中的一段代码;

?? ?参考:???http://www.chinadmd.com/file/tr6xa3uo3osurvuett6iv6cx_1.html? 3中启动方式的区别;

?? 参考:???http://wenku.baidu.com/link?url=ilgM8Oky4ogqfmNX9f-nLN3-a7gpZmSnarJjXtrlhK3UgnSn8jQRyY9nJ-pUK4REqkbow185fFrVk8WU7KVfTiPlttW3bOfOeLn8HI3FkKC

???????????????? 在ram中调试的设置方法;(主要是把ram的一段设置为rom来用,注意程序的大小要小于ram)

至于linux中从flash搬运到ram中之后,ram的link地址怎么从flash改变,每个函数的地址有时怎样在ram中寻址的,这是另外一个问题,需要学习和研究,

可以度娘 “stm32内存管理” 或者 “c语言内存分区”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读