|
发表于 2018-1-24 20:52:55
|
显示全部楼层
1、MCU里面有RAM,ROM,寄存器,他们都是区别,有哪些作用。
RAM: 随机访问存储器,表示给任意一个地址,都能读写该地址单元,这是逻辑属性,你可能觉得这不是理所当然的么,其实很多存储器不具备这种随机读取特性,例如fifo,CAM之类。fifo很简单就是first in first out,一般这种类型memory都是不对软件开放对,只有硬件来访问它,一般用于不同速率数据缓存;而CAM属于按内容寻址,在处理器高速缓存中应用较多。从物理特性上来说,一般是所谓典型6-管SRAM,互为输入输出的反相器,保证存储单元的稳态,很明显掉电数据会丢失。但是访问属于速度比较快的那种,取决于工艺以及不同细节设计,一般速度从几十M到大几百M。
由于RAM具有随机读取,速度较快的特性,所以一般用于程序执行过程中存储中间变量:比如堆栈(stack),堆(heap),定义的一些全局变量,静态变量之类,这些数据结构在程序执行过程中会不断改变,由于MCU内核寄存器还是太少,不足以满足程序执行过程中的数据暂存需求,所以RAM就充当了这个功能。
ROM: 名字叫只读存储器,其实这是由历史原因导致的,其实现在大家成为ROM的一般都可擦写,一般MCU内部的是NOR FLASH(不是NAND FLASH),它有个极好的特性,掉电数据不丢失,读速度还可以,但是擦写较费时间,所以基于这种特性,一般用来存储源程序与数据。
2、RAM是用来程序控制的,ROM是用来数据存储的,MCU里面只包含这两种存储器而已吗??看到下面这段话我犯迷糊了:内部数据存储器空间分为内部RAM和特殊功能寄存器。内部数据存储器不是RAM
MCU内部存储器当然有很多,只有软件可访问的才有意义,对与软件工程师来说。
所以可反问的也就是:
a. ROM: 用于存储用户程序与数据。程序很好理解;数据一般是你定义的已经初始化的变量值,一些常量值,甚至还有一些调试信息之类,专业术语叫 literal data(具体可以查看有关书籍.text .rodata .data .bss之类)
b. RAM: 用于程序控制,说的很明白,程序执行过程中,其中的值不管变化,掉电后数据丢失
c. 特殊功能寄存器,可能是内核用的寄存器或者MCU提供商定义的具有特定功能的寄存器。 |
|