这篇文章讲430的存储器结构讲的很清楚。和大家分享一下
[复制链接]
这篇文章讲430的存储器结构讲的很清楚。和大家分享一下 MSP430单片机存储器结构
MSP430 内部存储器的类型有:程序存储器 FLASH、数据存储器 RAM、外围模块寄存器、特殊功能寄存器。典型微型计算机的存储器都是采用冯•诺依曼结构,也称普林斯顿结构,即存放程序指令的存储器——程序存储器和存放数据的存储器——数据存储器采取统一的地址编码结构。程序存储器与数据存储器分开的地址编码结构称为哈佛结构,如 MCS-51 系列微处理器。MSP430 采用冯•诺依曼结构。其安排如图 1-1 所示,全部寻址空间为 64K字节。需要注意的是,虽然
MSP430 是 16 位的微处理器,但其寻址空间还是按照字节来计算的。
从 0 至 0xF 为特殊功能寄存器。共 16 个字节,包含中断标志寄存器
1(IFG1)、中断标志寄存器 2(IFG2)、中断允许寄存器 1(IE1)、中断允许寄存器 2(IE2)、模块允许寄存器 1(ME1)、模块允许寄存器 2(ME2)。
从 0x10 至 0x1FF 为外围模块寄存器。包含被定时器、AD 转换器、对外端口等模块用到的寄存器。
从 0x200 开始为数据存储器 RAM。不同型号中数据存储器的大小不同,但都是从 0x200 地址开始向高端地址扩展。如 MSP430F149 的数据存储器容量为 2KB,其地址范围即为 0x200~0x9FF。
从 0x0C00 到 0x0FFF 为 BOOT ROOM。其中存储的内容是生产芯片时掩模在芯片内的一段代码,此段代码用来完成
BSL( bootstrap)功能。使芯片的保密熔丝熔断以后,仍然可以通过 BSL 方式修改芯片内的代码。
从 0x1000 到 0x107F 是 128 个字节的 FLASH 存储器,称为信息存储器 B。此段存储器与高端地址存储代码的 FLASH 存储器本质上没有任何不同,同样也可以存储代码并执行,只是这一段存储器的长度较小,只有 128 个字节。主要用来存储一些掉电后仍需保存的数据。由于它是 FLASH 存储器,因此可以按照字或者字节写入,但必须整段擦除。
从 0x1080 到 0x10FF 为信息存储器 A。功能与信息存储段 B 相同。
程序存储器从 0xFFFF 开始向低端地址扩展,不同型号中程序存储器的容量不同,但都是从 0xFFFF
开始向下扩展。如
MSP430F133 的程序存储器容量为 8KB,其地址范围即为 0xE000~0xFFFF;MSP430F149 的容量为 60KB,其地址范围为 0x1100~0xFFFF。
需要注意的是,在程序存储器容量为 60KB 的芯片中,程序存储器与信息存储器 A、B 发生了重合,从地址
0xFFFF 向低端地址扩展 60KB,其地址范围为 0x1000~0xFFFF,而信息存储器 A 和 B 的地址范围为 0x1000~0x10FF。程序存储器是 flash 存储器,分为若干段进行管理,可以按照字或者字节写入,擦除时无法按照字或者字节擦除,每次至少擦除一段,每段长度为 512 字节。
0xFFE0~0xFFFF 是程序存储器的一部分,共 32 个字节。MSP430 规定用这一段存储器来存储各种中断的中断向量。
由于程序存储器、信息存储器、数据存储器都是统一寻址的,所以,程序在这 3 种存储器中均可执行。不同的是,程序放在数据存储器中,掉电后就会丢失,并且很容易在执行中被改写,故一般情况不会将程序放在数据存储器中执行。修改程序存储器中的内容必须经过解锁操作才能进行,否则会引起系统复位MSP430 的存储结构使得使用 C 语言编程所得到的代码仍然有很高的执行效率,因此,除非对程序的大小和执行时间有很高的要求,否则都应该选用 C 语言编写程序。
|