单片机的存储器管理,术语很多,我一直搞不明白,现买了《MCU工程师炼成记》一书,借此机会再次学习之,总结我的学习过程如下,希望共享,更希望指正。(还有个小目标,古代四书五经 有很多注释的书,希望这个学习过程也是对有关资料的注释,如果能达到这个目标,就圆满了。) 由于是个学习过程的总结,行文不系统。很多内容是我自己的理解,很可能不对,我对逐渐完善的,希望持续关注。 1、内存和外存 对于台式机(包括笔记本电脑)而言,有内存、外存之分,之所以有这种差异,主要是二者制造工艺不同,导致性能不同和成本不同。为了和CPU进行高速的数据输入输出,使用内存,其性能好,但成本高。为了海量数据(例如电影、pdf、word、jpg、MP3文件)存储之需,使用外存(即通常所说的硬盘、光盘等),外存数据进入内存,才能被CPU处理。 内存和外存最根本差异还是和CPU的数据交流方式,内存的数据可以被CPU直接寻找到,外存的数据不行。注意:“直接寻找”不是专门的术语,就是我的个人理解。至于内存的制造工艺,本人也不熟,就不说了。反正也不是本文的重点。 2、单片机的存储器 对于以单片机为核心的技术体系而言,大量的数据存储功能不是其应用目的,就不区分内存、外存。而仅以制造工艺区分为Flash、ROM、RAM等,为什么一个MCU上有不同制造工艺的存储器呢?本人目前还不理解,其相关的概念很多,例如主存、信息内存,代码空间、数据空间,绝对地址、相对地址,堆栈、中断向量,我现在是迷迷糊糊的。硬着头皮看MSP430的数据手册,选择了一个简单的版本,MSP430F15x,MSP430F16x,MSP430F161xmixed signal microcontroller 的数据手册(TI的编号SLAS368G)。看到第15页的memoryorganization,以MSP430F15x为例,从最低位00h到0Fh,是特殊功能寄存器占用的地址空间,不明白这个特殊功能寄存器是否是CPU内的16个16位的寄存器?然后依次是8位外设和16位外设的地址?不明白8位外设是通用端口,USART吗?16位外设是定时器,ADC吗?上述3类对应的地址范围是00h-01FFh,共计512字节,但没有说明其类型?是Flash还是其它制造工艺?接着是512字节的RAM,好像是专门存储数据的,不过有个资料说也可以存储代码?真迷糊初学者呀?RAM的范围是0200h-03FFh,接着是Boot 存储的地址,从0C00h-0FFFh,这和RAM地址不连续呀?不明白咋回事?接着就是信息内存和主存,信息内存和主存之间也是不连续的,看相关的用户指南(编号SLAU049),介绍到二种存储没有操作上的差异,都可以存储代码和数据,二者进一步细分为segments(我翻译为段),二者的区分就是段的大小不同和地址不同。写到这里,我理解的代码空间就是存储代码的地址,数据空间就是存储数据的地址,目前,还没有深入学习到绝对地址、相对地址,堆栈、中断向量,后续再学,先写到这里。
|