文章编号:100124373(2008)0120138203
兰州交通大学学报
JournalofLanzhouJiaotongUniversityVol.27No.1Feb.2008
TMS320F2812外扩RAM的.cmd文件配置
傅雪军
(兰州交通大学光电技术与智能控制教育部重点实验室,甘肃兰州 730070)
3
摘 要:针对TMS320F2812在外扩RAM的情况下,描述了其接线方法并给出了原理图,并从其存储空间来理解.
cmd文件.在利用外扩RAM时(在non2DSP/BIOS工程中),举例说明了.cmd文件在flash上的分配方法.
关键词:TMS320F2812;RAM;文件配置;存储空间中图分类号:TP333 文献标识码:A
TMS320F2812是目前Ti公司中应用最广的一种芯片,以其性价比高占有市场很大份额.在现今的一些比较大型的项目中,往往涉及到比较复杂的数字信号方面的运算(比如做一些大型数组的运算),而F2812的内部RAM往往不能很流畅的运行复杂的运算,因此需要外扩RAM来加快运行速度.而外扩RAM必然涉及到.cmd文件的配置,如果编写不当,将使开发不能进行.本文以TMS320F2812芯片结合具体的实例,研究了程序被烧写到flash中运行(程序中有大型数组)的.cmd文件的配置方法.
F2812处理器的外部接口(XINTF)映射到5个
独立的存储空间,有些空间公用同一个片选信号,如:空间0(Zone0)和空间1(Zone1)公用,空间6(Zone6)和空间7(Zone7)公用.空间均可以独立设置等待、选择、建立、保持时间[1].所有空间共享19位的外部地址总线,处理器根据所访问的下列空间产生相应的地址.
1.2 F2812外部扩展RAM原理图
1 接线方法及原理图
1.1 F2812外部扩展接口的访问
本文就在空间2上扩展一片RAM(芯片用
CY7C1041V33,RAM大小为256KB×16),对于一二个比较大型的数组这些已经够用了,如果再需要扩展一片RAM,可以考虑在空间6上扩展,这里就不介绍了,图1是扩展一片RAM的原理图.
图1 F2812外扩RAM原理图
Fig.1 SchematicdiagramofexternRAMofF2812
3收稿日期:2007210212
作者简介:傅雪军(19842),男,江西吉安人,硕士生.
第1期傅雪军:TMS320F2812外扩RAM的.cmd文件配置139
2 存储空间分配
TMS320F2812的DSP存储器分为3个独立选
flash中运行,所以首先得初始化flash控制寄存器,
在主函数前面需要添加如下程序:
#pragmaCODE_SECTION(initflash,\"RamFuncs\");voidinitflash(void)//Ti网站上可以找到{….}
择的空间-程序空间、数据空间、I/O空间.表1是F2812的flash存储空间分布[2].
表1 TMS320F2812高地址程序空间
Tab.1 ProgramspacesofhighaddressinTMS320F2812
在此模数转换中,有一些大数组,如果在内部运行那几乎是不可能完成的事,所以必须到外部
RAM中去运行,大数组在主函数前必须这样申明,例如:
#pragmaDATA_SECTION(table,\"ramconsts\");floattable[4096]={0};//申明成全局变量
#pragmaCODE_SECTION(initflash,\"ramcon2sts\");//这里initflash在前面已经定义
寻址空间
0x3D780020x3D7BFF
0x3D800020x3F5FFF0x3F600020x3F7F7F0x3F7FF620x3F7FF70x3F7FF820x3F7FFF
程序空间OTP存储器
FlashB2FlashJ
FlashA
用于ROM入口用于安全密码
另外在主程序里还要对前面这两个做如下说明:
3 .cmd文件在Flash上的分配
在non2DSP/BIOS应用中,命令文件中使用两个十分有用的伪指令MEMORY和SECTIONS,来指定应用中的存储器结构和进行地址的映射
[3]
main()
{//当然这里还有其它的程序这里只写和.cmd分配有
关的程序
initflash();
memcpy(&RamfuncsRunStart,&RamfuncsLoadStart,&RamfuncsLoadEnd2&RamfuncsLoadStart);memcpy(&ramconstsRunStart,&ramconstsLoadStart,
&ramconstsLoadEnd2&ramconstsLoadStart);
}//这里象这些RamfuncsRunStart等都得在主程序前
.
任何用户创建初始化段必须链接到Flash中运行(这些段被创建应该用CODE_SECTIONcompilerpragma),而其它被创建的未初始化段如果要链接到RAM中运行(应该用DATA_SECTIONcompil2erpragma)[4].表2描述了当程序烧写到flash中运行时,哪些节名应链接到哪.
表2 Non2DSP/BIOS工程下的节名链接
Tab.2 SectionlinkingintheprojectofNon2DSP/BIOS
申明成全局变量
节名
.cinit.cio.const
.econst.pinit.switch.text.bss.ebss.stack.sysmem.esysmem.reset
链接地方FlashRAMFlash
FlashFlashFlashFlashRAMRAM
Lower64KwRAM
RAMRAMROM
4.1 包涵外扩RAM的.cmd文件分配
MEMORY{
PAGE0: /3程序存储器3/
ZONE2:origin=0x080000,length=0x080000/3只用到了ZONE23/
OTP:origin=0x3D7800,length=0x000800
FLASH_ABCDEFGHIJ:origin=0x3D8000,length=0x1FF80
BEGIN:origin=0x3F7FF6,length=0x000002PASSWDS:origin=0x3F7FF8,length=0x000008RESET:origin=0x3FFFC0,length=0x000002VECTORS:origin=0x3FFFC2,length=0x00003EPAGE1: /3数据存储器3/
RAMM0M1:origin=0x000000,length=0x000800RAML0L1:origin=0x008000,length=0x02000RAMH0:origin=0x3F8000,length=0x002000/3外设Frame0和外设Frame1:3/(这部分省略,因为这部分基本保持不变)}
SECTIONS
4 实例应用
以下是仿真调试模数转换时的.cmd文件的分
配(程序烧写到flash中运行),在模数转换中已经取得很好的运行.
在分配.cmd文件之前,首先得保证程序从
140{
/3分配程序空间:3/
兰州交通大学学报第27卷
codestart:>BEGIN PAGE=0/3codestart是代码
开始程序3/
Ramfuncs:
LOAD=FLASH_ABCDEFGHIJ, PAGE=0RUN=RAML0L1,PAGE=1LOAD_START(_Ram2funcsLoadStart),
LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart)ramconsts:
LOAD=FLASH_ABCDEFGHIJ,RUN=ZONE2,LOAD_START(_ramconstsLoadStart),LOAD_END(_ramconstsLoadEnd),
RUN_START(_ramconstsRunStart),PAGE=0.reset:>RESET PAGE=0vectors:>VECTORS PAGE=0
.cinit:>FLASH_ABCDEFGHIJ PAGE=0(.text.pinit.const.econst.switch和.cinit可以一样)/3Allocatedataareas:3/
.stack:>RAMM0M1 PAGE=1
(.bss.ebss.sysmem.esysmem.cio和.stack可以一样)(下面这部分省略)
/3分配外设Frame0的寄存器结构:3//3分配外设Frame1的寄存器结构:3//3CSM密码放置:3/}
程序调试编译后,通过map文件可以查看各段的分配情况,包括段的起始地址,使用的字节数等[5].可以通过这个适当调整上面的.cmd文件的分配.
5 结论
如果对芯片存储器分配图理解的不清楚的情况下,将会导致.cmd文件配置不好,从而可能会使后面的调试工作无法进行.在实际过程中.cmd文件的配置很灵活,要根据实际程序划分好存储空间,使之空间配置达到最优.参考文献:
[1] 苏奎峰.TMSD320F2812原理与开发[M].北京:电子
工业出版社,2004.
[2] TMS320F2812DataManual,2006[M/OL].[20072072
01].http://focus.ti.com/lit/ds/sgus051a/sgus051a.pdf.[3] RunninganApplicationfromInternalFlashMemory
ontheTMS320F28xxDSP,2006[M/OL].[2007207208].http://focus.ti.com/general/docs/techdocsab2stract.tsp?abstractName=spra958f.
[4] 支长义.DSP原理及开发应用[M].北京:北京航天航
空出版社,2005.
[5] 万山明.TMS320F281xDSP原理及应用实例[M].北
京:北京航天航空出版社,2007.
4.2 查看段的分配
TheAllocatingTechniqueofthe.cmdFileofExternRAMofTMS320F2812
FUXue2jun
(KeyLaboratoryofOpto2electronicTechnologyandIntelligentControl,MinistryofEducation,
LanzhouJiaotongUniversity,Lanzhou730070,China)
Abstract:InviewoftheconditionofexternRAM,thewiringmethodofTMS320F2812iselaboratedandits
schematicdiagramispresented.Thenthe.cmdfileisstudiedfromstoragespace.UtilizingexternRAM(intheprojectofnon-DSP/BISO),theexampleisgiventoillustratetheallocatingtechniqueofthe.cmdfileintheflash.
Keywords:TMS320F2812;RAM;fileconfiguration;storagespace
因篇幅问题不能全部显示,请点此查看更多更全内容