单片机运行的程序是在ram中的还是在rom中的

下文来说明单片机与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).

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋的本格

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值