dsp28335—cmd文件解读(映射关系)剖析

上传人:今*** 文档编号:105834816 上传时间:2019-10-13 格式:DOCX 页数:26 大小:1,014.79KB
返回 下载 相关 举报
dsp28335—cmd文件解读(映射关系)剖析_第1页
第1页 / 共26页
dsp28335—cmd文件解读(映射关系)剖析_第2页
第2页 / 共26页
dsp28335—cmd文件解读(映射关系)剖析_第3页
第3页 / 共26页
dsp28335—cmd文件解读(映射关系)剖析_第4页
第4页 / 共26页
dsp28335—cmd文件解读(映射关系)剖析_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《dsp28335—cmd文件解读(映射关系)剖析》由会员分享,可在线阅读,更多相关《dsp28335—cmd文件解读(映射关系)剖析(26页珍藏版)》请在金锄头文库上搜索。

1、DSP28335CMD解读(1)在DSP28335工程文件里(不用BIOS产生CMD文件),手写CMD文件一般有两个,在RAM里调试时用的两个CMD文件分别为DSP2833x_Headers_nonBIOS.cmd和28335_RAM_lnk.cmd,烧写到flash里时用的两个CMD文件分别为DSP2833x_Headers_nonBIOS.cmd和F28335.cmd,其中DSP2833x_Headers_nonBIOS.cmd文件可以在所有工程文件中通用,主要作用是把外设寄存器产生的数据段映射到对应的存储空间,可以跟DSP2833x_GlobalVariableDefs.c文件对照一下看

2、看。下面通过一个简单例子,比如向CpuTimer0Regs. TIM.all写数据,来解读一下CMD文件是如何把寄存器里的值准确映射到所在存储器的位置的。先在DSP2833x_GlobalVariableDefs.c文件里找到以下几行代码:#ifdef _cplusplus#pragma DATA_SECTION(CpuTimer0RegsFile)#else#pragma DATA_SECTION(CpuTimer0Regs,CpuTimer0RegsFile);#endifvolatile struct CPUTIMER_REGS CpuTimer0Regs;由上可知CpuTimer0Re

3、gs是一个结构体变量名(其定义在DSP2833x_CpuTimers.c文件里),通过预处理命令#pragma 为这个结构体定义了一个名称为CpuTimer0RegsFile的数据段。接着在DSP2833x_Headers_nonBIOS.cmd文件里找到如下代码:SECTIONSPieVectTableFile : PIE_VECT,PAGE = 1DevEmuRegsFile: DEV_EMU,PAGE = 1FlashRegsFile: FLASH_REGS,PAGE = 1CsmRegsFile: CSM,PAGE = 1AdcMirrorFile: ADC_MIRROR,PAGE =

4、 1XintfRegsFile: XINTF,PAGE = 1CpuTimer0RegsFile : CPU_TIMER0,PAGE = 1.红字体代码的作用就是,通过SECTIONS伪指令把CpuTimer0RegsFile数据段装载到名称为CPU_TIMER0的存储空间。同样在DSP2833x_Headers_nonBIOS.cmd文件里找到如下代码:MEMORYPAGE 0:PAGE 1:DEV_EMU: origin = 0x000880, length = 0x000180FLASH_REGS: origin = 0x000A80, length = 0x000060CSM: ori

5、gin = 0x000AE0, length = 0x000010ADC_MIRROR: origin = 0x000B00, length = 0x000010XINTF: origin = 0x000B20, length = 0x000020CPU_TIMER0: origin = 0x000C00, length = 0x000008.CPU_TIMER0存储空间通过MEMORY伪指令指示了其起始地址和长度,也就等于间接确定了结构体CpuTimer0Regs的具体位置,所以通过以上几层映射关系,当向CpuTimer0Regs. TIM.all写数据时就可以准确的写入DSP内部寄存器所在

6、的存储器的位置。由此看见,CMD的作用就是为程序代码和数据分配存储空间。本节先针对DSP2833x_Headers_nonBIOS.cmd文件做一下解读,后续再分别解读一下CMD用于调试和烧写时需要注意哪些问题。另外有关volatile关键字的解读可参考http:/ 0 :BEGIN: origin = 0x000000, length = 0x000002BOOT_RSVD: origin = 0x000002, length = 0x00004ERAMM0: origin = 0x000050, length = 0x0003B0RAML: origin = 0x008000, lengt

7、h = 0x004000ZONE7A: origin = 0x200000, length = 0x00FC00CSM_RSVD: origin = 0x33FF80, length = 0x000076CSM_PWL: origin = 0x33FFF8, length = 0x000008ADC_CAL: origin = 0x380080, length = 0x000009RESET: origin = 0x3FFFC0, length = 0x000002IQTABLES: origin = 0x3FE000, length = 0x000b50IQTABLES2: origin =

8、 0x3FEB50, length = 0x00008cFPUTABLES: origin = 0x3FEBDC, length = 0x0006A0BOOTROM: origin = 0x3FF27C, length = 0x000D44PAGE 1 :RAMM: origin = 0x000400, length = 0x000400RAMH: origin = 0x00C000, length = 0x004000ZONE6B: origin = 0x13FC00, length = 0x000400ZONE7B: origin = 0x20FC00, length = 0x000400

9、SECTIONScodestart: BEGIN,PAGE = 0ramfuncs: RAML,PAGE = 0.text: RAML,PAGE = 0.cinit: RAML,PAGE = 0.pinit: RAML,PAGE = 0.switch: RAML,PAGE = 0.stack: RAMM,PAGE = 1.ebss: RAMH,PAGE = 1.econst: RAMH,PAGE = 1.esysmem: RAMM,PAGE = 1IQmath: RAML,PAGE = 0IQmathTables: IQTABLES,PAGE = 0, TYPE = NOLOADIQmathT

10、ables2: IQTABLES2, PAGE = 0, TYPE = NOLOADFPUmathTables: FPUTABLES, PAGE = 0, TYPE = NOLOADZONE7DATA: ZONE7B,PAGE = 1ZONE6DATA: ZONE6B,PAGE = 1.reset: RESET,PAGE = 0, TYPE = DSECTcsm_rsvd: CSM_RSVDPAGE = 0, TYPE = DSECTcsmpasswds: CSM_PWLPAGE = 0, TYPE = DSECT.adc_cal: load = ADC_CAL,PAGE = 0, TYPE = NOLOAD而编写用于flash烧写的F28335.cmd文件时相对来说较复杂些,根据不同的情况需要做一些修改。1 不需要把部分代码copy到RAM里,一般情况不需要外扩RAM等时直接用TI的F28335.cmd即可。2 需要把部分代码从flash 复制到RAM里,如延时函数DSP2833x_usDelay.asm等,这时CMD文件需要做相应的修改,具体参考博文:http:/ 从时间开销方面考虑,需要把整个程序从flash复制到RAM里,这时程序及CMD文件都要做相应的修改,具体参考博文http:/ C语言代码运行之前实现此功能。本应用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号