DSP28335—CMD文件解读(2)

在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

猜你喜欢

转载自blog.csdn.net/qq_39529052/article/details/105962591
今日推荐