DSP

DSP28335—CMD文件解读(2)

2019-07-13 12:25发布

  在nonBIOS情况下,CMD文件不外乎就三个:28335_RAM_lnk.cmd(用于仿真调试) 、  DSP2833x_Headers_nonBIOS.cmd 、   F28335.cmd(用于flash烧写)。仿真调试时只用前两个,用于flash烧写时只用后两个,且不管在何种方式下28335_RAM_lnk.cmd和F28335.cmd不能同时用,也不能代替用。 在DSP28335—CMD文件解读(1)中,已经介绍过DSP2833x_Headers_nonBIOS.cmd 。        在用28335_RAM_lnk.cmd时,一般情况下直接用TI给的,不需要做修改即可满足调试用,模式较固定,当然你也可以做相应的修改用到哪块RAM存储空间,在CMD文件里做相应的分配即可。
MEMORY
{
PAGE 0 :
   BEGIN      : origin = 0x000000, length = 0x000002    
   BOOT_RSVD  : origin = 0x000002, length = 0x00004E                   
   RAMM0      : origin = 0x000050, length = 0x0003B0

   RAML       : origin = 0x008000, length = 0x004000

   ZONE7A     : origin = 0x200000, length = 0x00FC00   
   CSM_RSVD   : origin = 0x33FF80, length = 0x000076    
   CSM_PWL    : origin = 0x33FFF8, length = 0x000008    
   ADC_CAL    : origin = 0x380080, length = 0x000009
   RESET      : origin = 0x3FFFC0, length = 0x000002
   IQTABLES   : origin = 0x3FE000, length = 0x000b50
   IQTABLES2  : origin = 0x3FEB50, length = 0x00008c
   FPUTABLES  : origin = 0x3FEBDC, length = 0x0006A0
   BOOTROM    : origin = 0x3FF27C, length = 0x000D44                       
PAGE 1 :
   RAMM       : origin = 0x000400, length = 0x000400    

   RAMH       : origin = 0x00C000, length = 0x004000
   ZONE6B     : origin = 0x13FC00, length = 0x000400    

   ZONE7B     : origin = 0x20FC00, length = 0x000400    
}
 
 
SECTIONS
{
  
   codestart        : > BEGIN,     PAGE = 0
   ramfuncs         : > 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 = 1    IQmath           : > RAML,      PAGE = 0
   IQmathTables     : > IQTABLES,  PAGE = 0, TYPE = NOLOAD
   IQmathTables2    : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
   FPUmathTables    : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
  
   ZONE7DATA        : > ZONE7B,    PAGE = 1 
   ZONE6DATA        : > ZONE6B,    PAGE = 1     .reset           : > RESET,     PAGE = 0, TYPE = DSECT
   csm_rsvd         : > CSM_RSVD   PAGE = 0, TYPE = DSECT
   csmpasswds       : > CSM_PWL    PAGE = 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.html 3 从时间开销方面考虑,需要把整个程序从flash复制到RAM里,这时程序及CMD文件都要做相应的修改,具体参考博文http://blog.sina.com.cn/s/blog_762cf5f80101apfx.html