关于TMS320LF2407存储器外扩的问题

1、关于存储器外扩的问题(只针对2407) 
2407本身有32K的FLASH程序存储器、2K的SARAM(可用作数据或程序存储器)、544字节的DARAM(分为B0、B1、B2三块)。可以通过PS、DS和RD/WE线进行程序和数据存储器的扩展,读写信号由DSP产生。 
2、地址空间的分配 
程序: 
0x0000-0x7FFF 片上flash空间 
0x8000-0x87FF 映射2K的SARAM 
0x8800-0xFDFF 外部程序存储器 
0xFE00-0xFEFF 保留(CNF=1),外部(CNF=0) 
0xFF00-0xFFFF 映射B0(CNF=1),外部(CNF=0) 
数据: 
0x0000-0x005F 存储器映射寄存器和保留 
0x0060-0x007F B2 
0x0080-0x00FF 非法 
0x0100-0x01FF 保留 
0x0200-0x02FF B0 
0x0300-0x03FF B1 
0x0400-0x04FF 保留 
0x0500-0x07FF 非法 
0x0800-0x0FFF 2K的SARAM 
0x1000-0x6FFF 非法 
0x7000-0x743F 外设帧1和2 
0x7440-0x74FF 非法 
0x7500-0x753F 外设帧3 
0x7540-0x77EF 非法 
0x77F0-0x77F3 代码安全密码 
0x77F4-0x77FF 保留 
0x7800-0x7FFF 非法 
0x8000-0xFFFF 外部 
基于以上空间分配可知:0x8800-0xFDFF(0xFFFF)为外部程序存储器空间地址,0x8000-0xFFFF为外部数据存储器空间地址。当 用PS和DS做为外扩RAM的选通信号时,具体是访问程序空间还是数据空间,是由DSP产生相应的PS、DS信号来区分的。 
DSP是由MP/MC引脚来决定是访问内部程序存储器还是外部程序存储器,MP/MC=1访问外部程序存储器空间,MP/MC=0访问内部程序存储器空 间。因为,外扩的程序存储器是RAM(易失性的),所以只能用于仿真,如果用户要脱机运行,则应把程序烧写到片上flash空间 0x0000-0x7FFF。如果用户的程序大于32K,内部flash空间是不够用的,则应扩展外部flash或者其他非易失性的存储器。 
3、CMD文件的编写 
-stack 160 
-o ex.out 
-m ex.map 
/*Main.obj Define.obj */ 
-l rts2xx.lib 
MEMORY 

PAGE 0: VECS: origin = 0x8000, length = 0x040 
PROG: origin = 0x8800, length = 0x6000

PAGE 1: 
MMRS: origin = 0h , length = 05Fh /* MMRS */ 
B2 : origin = 0060h , length = 020h /* DARAM B2 块 */ 
B0 : origin = 0200h , length = 100h /* DARAM B0 块 */ 
B1 : origin = 0300h , length = 100h /* DARAM B1 块 */ 
SARAM: origin = 0800h , length = 0800h /* SARAM 块 */ 
EXT: origin = 8000h , length = 8000h /* 外部存储器 */

}

SECTIONS 

.vectors : {} >VECS PAGE 0 /* 中断向量表 */ 
.text : {} >PROG PAGE 0 /* 可执行代码和字符串 */ 
.cinit : {} >PROG PAGE 0 /* C 程序初始化变量和常数表*/ 
.data : {} >SARAM PAGE 1 /* 初始化变量和常数表 */ 
.bss : {} >SARAM PAGE 1 /* 保留全局变量和静态变量空间 */ 
.const : {} >SARAM PAGE 1 /* 字符串和switch表 */ 
.switch : {} >PROG PAGE 0 /* 包含.switch语句建立的表格 */ 
.stack : {} >B1 PAGE 1 /* 为系统堆栈分配存储器 */ 
.system : {} >SARAM PAGE 1 /* 为动态存储器函数分配存储器空间 */ 
2407本身有32K的FLASH程序存储器、2K的SARAM(可用作数据或程序存储器)、544字节的DARAM(分为B0、B1、B2三块)。可以通过PS、DS和RD/WE线进行程序和数据存储器的扩展,读写信号由DSP产生。 
2、地址空间的分配 
程序: 
0x0000-0x7FFF 片上flash空间 
0x8000-0x87FF 映射2K的SARAM 
0x8800-0xFDFF 外部程序存储器 
0xFE00-0xFEFF 保留(CNF=1),外部(CNF=0) 
0xFF00-0xFFFF 映射B0(CNF=1),外部(CNF=0) 
数据: 
0x0000-0x005F 存储器映射寄存器和保留 
0x0060-0x007F B2 
0x0080-0x00FF 非法 
0x0100-0x01FF 保留 
0x0200-0x02FF B0 
0x0300-0x03FF B1 
0x0400-0x04FF 保留 
0x0500-0x07FF 非法 
0x0800-0x0FFF 2K的SARAM 
0x1000-0x6FFF 非法 
0x7000-0x743F 外设帧1和2 
0x7440-0x74FF 非法 
0x7500-0x753F 外设帧3 
0x7540-0x77EF 非法 
0x77F0-0x77F3 代码安全密码 
0x77F4-0x77FF 保留 
0x7800-0x7FFF 非法 
0x8000-0xFFFF 外部 
基于以上空间分配可知:0x8800-0xFDFF(0xFFFF)为外部程序存储器空间地址,0x8000-0xFFFF为外部数据存储器空间地址。当 用PS和DS做为外扩RAM的选通信号时,具体是访问程序空间还是数据空间,是由DSP产生相应的PS、DS信号来区分的。 
DSP是由MP/MC引脚来决定是访问内部程序存储器还是外部程序存储器,MP/MC=1访问外部程序存储器空间,MP/MC=0访问内部程序存储器空 间。因为,外扩的程序存储器是RAM(易失性的),所以只能用于仿真,如果用户要脱机运行,则应把程序烧写到片上flash空间 0x0000-0x7FFF。如果用户的程序大于32K,内部flash空间是不够用的,则应扩展外部flash或者其他非易失性的存储器。 
3、CMD文件的编写 
-stack 160 
-o ex.out 
-m ex.map 
/*Main.obj Define.obj */ 
-l rts2xx.lib 
MEMORY 

PAGE 0: VECS: origin = 0x8000, length = 0x040 
PROG: origin = 0x8800, length = 0x6000

PAGE 1: 
MMRS: origin = 0h , length = 05Fh /* MMRS */ 
B2 : origin = 0060h , length = 020h /* DARAM B2 块 */ 
B0 : origin = 0200h , length = 100h /* DARAM B0 块 */ 
B1 : origin = 0300h , length = 100h /* DARAM B1 块 */ 
SARAM: origin = 0800h , length = 0800h /* SARAM 块 */ 
EXT: origin = 8000h , length = 8000h /* 外部存储器 */

}

SECTIONS 

.vectors : {} >VECS PAGE 0 /* 中断向量表 */ 
.text : {} >PROG PAGE 0 /* 可执行代码和字符串 */ 
.cinit : {} >PROG PAGE 0 /* C 程序初始化变量和常数表*/ 
.data : {} >SARAM PAGE 1 /* 初始化变量和常数表 */ 
.bss : {} >SARAM PAGE 1 /* 保留全局变量和静态变量空间 */ 
.const : {} >SARAM PAGE 1 /* 字符串和switch表 */ 
.switch : {} >PROG PAGE 0 /* 包含.switch语句建立的表格 */ 
.stack : {} >B1 PAGE 1 /* 为系统堆栈分配存储器 */ 
.system : {} >SARAM PAGE 1 /* 为动态存储器函数分配存储器空间 */

永不止步步 发表于03-25 14:24 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308217个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号