资源预览内容
第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
第9页 / 共26页
第10页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
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文件对照一下看看。下面通过一个简单例子,比如向CpuTimer0Regs. TIM.all写数据,来解读一下CMD文件是如何把寄存器里的值准确映射到所在存储器的位置的。先在DSP2833x_GlobalVariableDefs.c文件里找到以下几行代码:#ifdef _cplusplus#pragma DATA_SECTION(CpuTimer0RegsFile)#else#pragma DATA_SECTION(CpuTimer0Regs,CpuTimer0RegsFile);#endifvolatile struct CPUTIMER_REGS CpuTimer0Regs;由上可知CpuTimer0Regs是一个结构体变量名(其定义在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 = 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: origin = 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内部寄存器所在的存储器的位置。由此看见,CMD的作用就是为程序代码和数据分配存储空间。本节先针对DSP2833x_Headers_nonBIOS.cmd文件做一下解读,后续再分别解读一下CMD用于调试和烧写时需要注意哪些问题。另外有关volatile关键字的解读可参考http:/blog.sina.com.cn/s/blog_762cf5f80101aosq.html本文原创,与同样在努力学习DSP的你共享如有错,请指出O(_)O谢谢在nonBIOS情况下,CMD文件不外乎就三个:28335_RAM_lnk.cmd(用于仿真调试)、DSP2833x_Headers_nonBIOS.cmd、F28335.cmd(用于flash烧写)。仿真调试时只用前两个,用于flash烧写时只用后两个,且不管在何种方式下28335_RAM_lnk.cmd和F28335.cmd不能同时用,也不能代替用。在DSP28335CMD文件解读(1)中,已经介绍过DSP2833x_Headers_nonBIOS.cmd。在用28335_RAM_lnk.cmd时,一般情况下直接用TI给的,不需要做修改即可满足调试用,模式较固定,当然你也可以做相应的修改用到哪块RAM存储空间,在CMD文件里做相应的分配即可。MEMORYPAGE 0 :BEGIN: origin = 0x000000, length = 0x000002BOOT_RSVD: origin = 0x000002, length = 0x00004ERAMM0: origin = 0x000050, length = 0x0003B0RAML: origin = 0x008000, length = 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 = 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 = 0x000400SECTIONScodestart: 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 = NOLOADIQmathTables2: 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:/blog.sina.com.cn/s/blog_762cf5f80101asmq.html3 从时间开销方面考虑,需要把整个程序从flash复制到RAM里,这时程序及CMD文件都要做相应的修改,具体参考博文http:/blog.sina.com.cn/s/blog_762cf5f80101apfx.html翻译自TI应用手册SPRAAU8摘要这个应用报告和相关的代码提供了一种把编译后的程序段从TMS320F28xxx的flash复制到ram的功能,这样可以提高代码的运行速度。这个解决方案在直接启动之后,进入c_int00 C语言代码运行之前实现此功能。本应用
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号