cpu运行时程序是在flash中还是在RAM,各自的区别?
2017-08-19 19:56
786 查看
对于x86的pc机和单片机等嵌入式开发系统程序的存储是截然相反的, 即:x86的pc机cpu在运行的时候程序是存储在RAM中的, 而单片机等嵌入式系统则是存于flash中 x86cpu和单片机读取程序的具体途径不通: pc机在运行程序的时候将程序从外存(硬盘)中,调入到RAM中运行,cpu从RAM中读取程序和数据 而单片机的程序则是固化在flash中,cpu运行时直接从flash中读取程序,从RAM中读取数据 造成这种差别的具体原因分析: x86构架的cpu是基于冯.诺依曼体系的,即数据和程序存储在一起,而且pc机的RAM资源相当丰富,从几十M到几百M甚至是几个G,客观上能够承受大量的程序数据. 单片机的构架大多是哈弗体系的,即程序和数据分开存储,而且单片的片内RAM资源是相当有限的,内部的RAM过大会带来成本的大幅度提高.
单片机的程序能存储在RAM中吗? 通过上面的分析可得知:单片机的程序能存储于flash中是基于两点考虑,即体系结构和RAM资源的多少.因此,在技术不但进步片内RAM容量不但增多的今天,RAM资源已经不再是制约这种差别的主要因素,而对于体系机构我们只要更改cpu读取程序的方式就可以.
链接脚本,用的是gnu的linux的交叉工具链.地址分配是写在一个ld脚本中的. 他们是这样实现的: 1,将你需要在ram中运行的代码写在单独的一个c文件中,然后在脚本中设置其运行地址与存放地址分开.设置好必要的代码起始和结束的标志变量. 2,在代码中将存放地址处的代码拷贝到运行地址中. 冯.诺依曼体系与哈佛体系的区别 二者的区别就是程序空间和数据空间是否是一体的. 早期的微处理器大多采用冯诺依曼结构,典型代表是Intel公司的X86微处理器.取指令和取操作数都在同一总线上,通过分时复用的方式进行的.缺点是在高速运行时,不能达到同时取指令和取操作数,从而形成了传输过程的瓶颈. 哈佛总线技术应用是以DSP和ARM为代表的.采用哈佛总线体系结构的芯片内部程序空间和数据空间是分开的,这就允许同时取指令和取操作数,从而大大提高了运算能力. 例如TMS320LF240x系列DSP是增强型的哈佛结构通过三组并行的总线访问多个存储空间.它们分别是:程序地址总线(PAB),数据地址读总线(DRAB)和数据地址写总线(DWRB).
相关文章推荐
- cpu运行时程序是在flash中还是在RAM呢?【转】
- cpu运行时程序是在flash中还是在RAM呢?
- cpu运行时程序是在flash中还是在RAM呢?
- F2812 DSP程序运行在片内RAM和FLASH的区别
- 程序在flash中还是ram中运行
- 程序在flash中还是ram中运行
- STM32中的程序在RAM还是FLASH里运行?
- F2812程序从Flash搬到RAM中运行
- 所有程序从FLASH搬移到RAM中运行
- f2812把程序从FLASH搬到RAM中运行 【转】
- 在TMS320F2812上实现从flash拷贝整个程序到RAM上运行的方法探讨
- 在TMS320F2812上实现从flash拷贝整个程序到RAM上运行的方法探讨
- 将程序从Flash搬运到RAM中运行总结(转载)
- DSP程序Flash程序下载到RAM中运行
- 在TMS320F2812上实现从flash拷贝整个程序到RAM上运行的方法探讨
- 手机的ROM,RAM是各自存放什么?所谓“运行内存”和“机身内存”究竟有什么区别?
- 谈程序在RAM,FLASH 和外部RAM中运行的速度
- F2812程序从Flash搬到RAM中运行(调试过程)
- 谈程序在RAM,FLASH 和外部RAM中运行的速度【转】
- cpu运行时程序是在flash中还是在RAM呢?