第 27 卷 第 1 期
2008 年 2 月
兰 州 交 通 大 学 学 报
Journal of Lanzhou Jiaotong University
Vol. 27 No. 1
Feb. 2008
文章编号 :100124373 (2008) 0120138203
TMS320F2812 外扩 RAM 的. cmd 文件配置
3
傅 雪 军
(兰州交通大学 光电技术与智能控制教育部重点实验室 ,甘肃 兰州 730070)
摘 要 :针对 TMS320F2812 在外扩 RAM 的情况下 ,描述了其接线方法并给出了原理图 ,并从其存储空间来理解.
cmd 文件. 在利用外扩 RAM 时 (在 non2DSP/ BIOS 工程中) ,举例说明了. cmd 文件在 flash 上的分配方法.
关键词 : TMS320F2812 ;RAM ;文件配置 ;存储空间
中图分类号 : TP333 文献标识码 :A
TMS320F2812 是目前 Ti 公司中应用最广的一
种芯片 ,以其性价比高占有市场很大份额. 在现今的
一些比较大型的项目中 ,往往涉及到比较复杂的数
字信号方面的运算 (比如做一些大型数组的运算) ,
而 F2812 的内部 RAM 往往不能很流畅的运行复杂
的运算 ,因此需要外扩 RAM 来加快运行速度. 而外
扩 RAM 必然涉及到. cmd 文件的配置 ,如果编写不
当 ,将使开发不能进行. 本文以 TMS320F2812 芯片
结合具体的实例 ,研究了程序被烧写到 flash 中运
行 (程序中有大型数组)的. cmd 文件的配置方法.
1 接线方法及原理图
1. 1 F2812 外部扩展接口的访问
F2812 处理器的外部接口 ( XIN TF)映射到 5 个
独立的存储空间 ,有些空间公用同一个片选信号 ,
如 :空间 0 ( Zone0) 和空间 1 ( Zone1) 公用 ,空间 6
(Zone6)和空间 7 ( Zone7) 公用. 空间均可以独立设
置等待、选择、建立、保持时间[1 ] . 所有空间共享 19
位的外部地址总线 ,处理器根据所访问的下列空间
产生相应的地址.
1. 2 F2812 外部扩展 RAM 原理图
本文就在空间 2 上扩展一片 RAM (芯片用
CY7C1041V33 ,RAM 大小为 256 KB ×16) ,对于一
二个比较大型的数组这些已经够用了 ,如果再需要
扩展一片 RAM ,可以考虑在空间 6 上扩展 ,这里就
不介绍了 ,图 1 是扩展一片 RAM 的原理图.
图 1 F2812 外扩 RAM 原理图
Fig. 1 Schematic diagram of extern RAM of F28123 收稿日期 :2007210212
作者简介 :傅雪军 (19842) ,男 ,江西吉安人 ,硕士生.
第 1 期 傅雪军 : TMS320F2812 外扩 RAM 的. cmd 文件配置
2 存储空间分配
TMS320F2812 的 DSP 存储器分为 3 个独立选
择的空间 - 程序空间、数据空间、I/ O空间. 表 1 是
F2812 的 flash 存储空间分布[2 ] .
表 1 TMS320F2812 高地址程序空间
Tab. 1 Program spaces of high address in TMS320F2812
寻址空间 程序空间
0x3D780020x3D7BFF O TP 存储器
0x3D800020x3F5FFF FlashB2FlashJ
0x3F600020x3F7F7F FlashA
0x3F7FF620x3F7FF7 用于 ROM 入口
0x3F7FF820x3F7FFF 用于安全密码
3 . cmd 文件在 Flash 上的分配
在 non2DSP/ BIOS 应用中 ,命令文件中使用两
个十分有用的伪指令 M EMOR Y 和 SECTIONS ,
来指定应用中的存储器结构和进行地址的映射[3 ] .
任何用户创建初始化段必须链接到 Flash 中运行
(这些段被创建应该用 CODE_ SECTION compiler
p ragma) ,而其它被创建的未初始化段如果要链接
到 RAM 中运行 (应该用 DA TA_SECTION compil2
er p ragma) [ 4 ] . 表 2 描述了当程序烧写到 flash 中运
行时 ,哪些节名应链接到哪.
表 2 Non2DSP/ BIOS 工程下的节名链接
Tab. 2 Section linking in the project of Non2DSP/ BIOS
节名 链接地方
. cinit Flash
. cio RAM
. const Flash
. econst Flash
. pinit Flash
. switch Flash
. text Flash
. bss RAM
. ebss RAM
. stack Lower 64 Kw RAM
. sysmem RAM
. esysmem RAM
. reset ROM
4 实例应用
以下是仿真调试模数转换时的. cmd 文件的分
配 (程序烧写到 flash 中运行) ,在模数转换中已经
取得很好的运行.
在分配. cmd 文件之前 ,首先得保证程序从
flash 中运行 ,所以首先得初始化 flash 控制寄存器 ,
在主函数前面需要添加如下程序 :
# pragma CODE_SECTION (initflash , " RamFuncs" ) ;
void initflash (void) / / Ti 网站上可以找到
{ ⋯. }
在此模数转换中 ,有一些大数组 ,如果在内部运
行那几乎是不可能完成的事 , 所以必须到外部
RAM 中去运行 ,大数组在主函数前必须这样申明 ,
例如 :
# pragma DA TA_SECTION (table , " ramconst s" ) ;
float table[4096 ] = {0} ; / / 申明成全局变量
# pragma CODE _ SECTION ( initflash , " ramcon2
st s") ;/ / 这里 initflash 在前面已经定义
另外在主程序里还要对前面这两个做如下说明 :
main ()
{/ / 当然这里还有其它的程序这里只写和. cmd 分配有
关的程序
initflash () ;
memcpy ( &RamfuncsRunStart ,
&RamfuncsLoadStart ,
&RamfuncsLoadEnd2
&RamfuncsLoadStart) ;
memcpy ( &ramconst sRunStart ,
&ramconst sLoadStart ,
&ramconst sLoadEnd2 &ramconst sLoadStart) ;
}/ / 这里象这些 RamfuncsRunStart 等都得在主程序前
申明成全局变量
4. 1 包涵外扩 RAM 的. cmd 文件分配
M EMOR Y
{
PA GE 0 : / 3 程序存储器 3 /
ZON E2 :origin = 0x080000 ,length = 0x080000
/ 3 只用到了 ZON E2 3 /
O TP :origin = 0x3D7800 ,length = 0x000800
FLASH _ ABCDEF GHIJ : origin = 0x3D8000 , length =
0x1FF80
BEGIN :origin = 0x3F7FF6 ,length = 0x000002
PASSWDS :origin = 0x3F7FF8 ,length = 0x000008
RESET :origin = 0x3FFFC0 ,length = 0x000002
V ECTORS :origin = 0x3FFFC2 ,length = 0x00003 E
PA GE 1 : / 3 数据存储器 3 /
RAMM0M1 :origin = 0x000000 ,length = 0x000800
RAML0L1 :origin = 0x008000 ,length = 0x02000
RAM H0 :origin = 0x3F8000 ,length = 0x002000
/ 3 外设 Frame 0 和外设 Frame 1 : 3 /
(这部分省略 ,因为这部分基本保持不变)
}
SECTIONS
931
兰 州 交 通 大 学 学 报 第 27 卷
{
/ 3 分配程序空间 : 3 /
codestart : > BEGIN PA GE = 0 / 3 codestart 是代码
开始程序 3 /
Ramfuncs :
LOAD = FLASH_ABCDEF GHIJ , PA GE = 0
RUN = RAML0L1 , PA GE = 1 LOAD_ START (_ Ram2
funcsLoadStart) ,
LOAD_ END (_RamfuncsLoadEnd) ,
RUN_START(_RamfuncsRunStart)
ramconst s :
LOAD = FLASH_ABCDEF GHIJ ,RUN = ZON E2 ,
LOAD_START(_ramconst sLoadStart) ,
LOAD_ END (_ramconst sLoadEnd) ,
RUN_START(_ramconst sRunStart) , PA GE = 0
. reset : > RESET PA GE = 0
vectors : > V ECTORS PA GE = 0
. cinit : > FLASH_ABCDEF GHIJ PA GE = 0
( . text . pinit . const . econst . switch 和. cinit 可以一样)
/ 3 Allocate data areas : 3 /
. stack : > RAMM0M1 PA GE = 1
( . bss. ebss. sysmem. esysmem. cio 和. stack 可以一样)
(下面这部分省略)
/ 3 分配外设 Frame 0 的寄存器结构 : 3 /
/ 3 分配外设 Frame 1 的寄存器结构 : 3 /
/ 3 CSM 密码放置 : 3 /
}
4. 2 查看段的分配
程序调试编译后 ,通过 map 文件可以查看各段
的分配情况 ,包括段的起始地址 ,使用的字节数
等[5 ] . 可以通过这个适当调整上面的. cmd 文件的分
配.
5 结论
如果对芯片存储器分配图理解的不清楚的情况
下 ,将会导致. cmd 文件配置不好 ,从而可能会使后
面的调试工作无法进行. 在实际过程中. cmd 文件的
配置很灵活 ,要根据实际程序划分好存储空间 ,使之
空间配置达到最优.
参考文献 :
[1 ] 苏奎峰. TMSD320F2812 原理与开发 [ M ] . 北京 :电子
工业出版社 ,2004.
[2 ] TMS320F2812 Data Manual ,2006[ M/ OL ] . [ 20072072
01 ] . http :/ / focus. ti. com/ lit/ ds/ sgus051a/ sgus051a.
pdf .
[3 ] Running an Application from Internal Flash Memory
on the TMS320F28xx DSP ,2006 [ M/ OL ] . [ 20072072
08 ] . http :/ / focus. ti. com/ general/ docs/ techdocsab2
st ract . t sp ? abst ractName = spra958f .
[4 ] 支长义. DSP 原理及开发应用 [ M ] . 北京 :北京航天航
空出版社 ,2005.
[5 ] 万山明. TMS320F281x DSP 原理及应用实例 [ M ] . 北
京 :北京航天航空出版社 ,2007.
The Allocating Technique of the . cmd File of Extern RAM of TMS320F2812
FU Xue2jun
( Key Laboratory of Opto2elect ronic Technology and Intelligent Cont rol ,Minist ry of Education ,
Lanzhou Jiaotong University ,Lanzhou 730070 ,China)
Abstract :In view of t he condition of extern RAM ,t he wiring met hod of TMS320F2812 is elaborated and it s
schematic diagram is p resented. Then t he . cmd file is st udied f rom storage space. Utilizing extern RAM (in
t he project of non - DSP/ BISO) ,t he example is given to illust rate t he allocating technique of the. cmd file
in t he flash.
Key words :TMS320F2812 ; RAM ; file configuration ; storage space
041