程序在flash中还是ram中运行
来源:互联网 发布:华为云计算平台 编辑:程序博客网 时间:2024/06/05 18:33
转自 : 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语言内存分区”
- 程序在flash中还是ram中运行
- 程序在flash中还是ram中运行
- cpu运行时程序是在flash中还是在RAM呢?
- cpu运行时程序是在flash中还是在RAM呢?
- cpu运行时程序是在flash中还是在RAM呢?【转】
- cpu运行时程序是在flash中还是在RAM,各自的区别?
- STM32中的程序在RAM还是FLASH里运行?
- 谈程序在RAM,FLASH 和外部RAM中运行的速度
- DSP程序Flash程序下载到RAM中运行
- F2812程序从Flash搬到RAM中运行
- KEIL中如何程序在 RAM 中运行
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行 .
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- F2812程序从Flash搬到RAM中运行(调试过程)
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- TMS320F28335将程序从FLASH搬移到RAM中运行详细步骤
- 把DSP TMS320F28XXX的程序段从flash复制到ram中运行
- swift3.0项目Cocoapods导入的库头文件在Bridging-Header.h中导入报错
- linux定时任务管理cron设置
- JVM-内存管理及创建对象
- SSH问题:系统启动时,spring配置文件解析失败,报”cvc-elt.1: 找不到元素 'beans' 的声明“异常
- 23种设计模式之迭代器模式
- 程序在flash中还是ram中运行
- TypeError numpy.float64 object cannot be interpreted as an index
- 将程序从Flash搬运到RAM中运行总结(转载)
- 健身健美补剂之蛋白粉
- Centos 6.5 Samba 服务器的搭建
- php 设计模式
- Material Design控件Button,CheckBox的使用
- alsa/asoundlib.h: No such file or directory
- 1.JavaScript深入之从原型到原型链