从网上找到的代码烧写流程: (mspdebug) prog maria.elf
Erasing...
Programming...
Writing 2770 bytes at 2100 [section: .text]...
Writing 42 bytes at 2bd2 [section: .rodata]...
Writing 12 bytes at 2bfc [section: .data]...
Writing 64 bytes at ffc0 [section: .vectors]...
Done, 2888 bytes total 流程解释: 一、将2270个字节的代码区烧写到0x2100地址; 二、将使用const修饰的全局变量的初始值烧写到0x2bd2地址; 三、将初始化过的非零全局变量的初始值烧写到Ox2bfc地址; 四、将终端****程序的函数地址烧写到中断向量表的对应位置。 MSP430F2410的存储器状况如下表所示: ![]()
关于上表的一些解释: - 早期的msp430 RAM都不大于2k,地址在0x009FF-0x00200,但随着应用的需求,RAM需要的越来越多,原有地址空间不够了,只能使用其他地址空间扩展,就是Extended Memory。但因为扩展出来的RAM地址和原来的RAM地址不连续,为了方便使用,就把原来的RAM地址映射到Extended Memory相邻的地址,就是Mirrored Memory。Mirrored Memory是从0x009FF-0x00200映射过来的。
- Information memory 中存储了一些校正信息,在datasheet中有这样的描述Calibration data stored in information memory segment A
在msp430f2410.h文件中有这样的代码 #define CALDCO_16MHZ_ (0x10F8u) /* DCOCTL Calibration Data for 16MHz */ READ_ONLY DEFC( CALDCO_16MHZ , CALDCO_16MHZ_) #define CALBC1_16MHZ_ (0x10F9u) /* BCSCTL1 Calibration Data for 16MHz */ READ_ONLY DEFC( CALBC1_16MHZ , CALBC1_16MHZ_) 其中0x10F8和0x10F9就是Information Memory中的两个地址 - Peripheral中包含所有外设的设置寄存器的地址以及一些中断使能寄存器的地址,具体的地址可以参看datasheet。
|