DSP 两个CMD文件讲解

一般会有两个CMD文件:DSP281x_Headers_nonBIOS.cmd 和F2812_EzDSP_RAM_lnk.cmd。第一个用于确定程序和数椐的装载运行空间,校验数据和程序代码的长度,定义输入/输出文件,安排系统中可用的存储器,程序段、数据段、堆栈以及复位向量和中断向量的地址空间。第二个链接命令文件通过段定位控制命令,分配程序代码空间、数据代码空间、程序运行空间、堆栈空间。

下面是例子:

DSP281x_Headers_nonBIOS.cmd

MEMORY
{
 PAGE 0:   

 PAGE 1:   
 
   DEV_EMU     : origin = 0x000880, length = 0x000180    

  
   SCIB        : origin = 0x007750, length = 0x000010    
   MCBSPA      : origin = 0x007800, length = 0x000040    
   CSM_PWL     : origin = 0x3F7FF8, length = 0x000008    
}

 
SECTIONS
{
   PieVectTableFile : > PIE_VECT,   PAGE = 1


   DevEmuRegsFile    : > DEV_EMU,     PAGE = 1
   FlashRegsFile     : > FLASH_REGS,  PAGE = 1
   CsmRegsFile       : > CSM,         PAGE = 1
   XintfRegsFile     : > XINTF,       PAGE = 1
   CpuTimer0RegsFile : > CPU_TIMER0,  PAGE = 1 
   PieCtrlRegsFile   : > PIE_CTRL,    PAGE = 1     


   SysCtrlRegsFile   : > SYSTEM,      PAGE = 1
   SpiaRegsFile      : > SPIA,        PAGE = 1
   SciaRegsFile      : > SCIA,        PAGE = 1
   XIntruptRegsFile  : > XINTRUPT,    PAGE = 1
   GpioMuxRegsFile   : > GPIOMUX,     PAGE = 1
   GpioDataRegsFile  : > GPIODAT      PAGE = 1
   AdcRegsFile       : > ADC,         PAGE = 1
   EvaRegsFile       : > EVA,         PAGE = 1
   EvbRegsFile       : > EVB,         PAGE = 1
   ScibRegsFile      : > SCIB,        PAGE = 1
   McbspaRegsFile    : > MCBSPA,      PAGE = 1


   ECanaRegsFile     : > ECANA,       PAGE = 1
   ECanaLAMRegsFile  : > ECANA_LAM    PAGE = 1  
   ECanaMboxesFile   : > ECANA_MBOX   PAGE = 1
   ECanaMOTSRegsFile : > ECANA_MOTS   PAGE = 1
   ECanaMOTORegsFile : > ECANA_MOTO   PAGE = 1


   CsmPwlFile        : > CSM_PWL,     PAGE = 1
}


解释:

从page1可看出,从DEV_EMU到MCBSPA都位于外设帧0上(0x000800-ox000D00),而最后一个CSM_PWL显然要位于FLASH中的设置密码区域(0x3F7FF8-0X3F8000)。这样把数据可使用的空间定义出来了。

而在section中有这么一句 PieVectTableFile : > PIE_VECT,   PAGE = 1  说明PieVectTableFile段位于PIE_VECT,从字面上可以看出,是把pie向量表存入PIE_VECT这块区域中。而PieVectTableFile段已在 DSP281x_GlobalVariableDefs.c 这个文件中的下面语句定义了:

#ifdef __cplusplus

#pragma DATA_SECTION(“PieVectTableFile”)

#else

#pragma DATA_SECTION(PieVectTable,”PieVectTableFile”);

#endif

struct PIE_VECT_TABLE PieVectTable;

即通过pragma来对PieVectTable在PieVectTableFile中进行地址分配,而PieVectTable又是已定义过的结构体,其结构体标号为PIE_VECT_TABLE。这个结构体是在DSP281x_PieVect.h中定义。

 

下面说下DSP281x_PieVect.h。

这个文件无非是通过PINT来定义一些中断函数,而这些中断函数中可以放置中断程序的入口地址。通过DSP281x_PieVect.c

中的下面子程序进行初始化:

void InitPieVectTable(void)

{

       int16      i;

       Uint32 *Source = (void *) &PieVectTableInit;

       Uint32 *Dest = (void *) &PieVectTable;

             

       EALLOW;  

       for(i=0; i < 128; i++)

              *Dest++ = *Source++;    

       EDIS;

 

       // Enable the PIE Vector Table

       PieCtrlRegs.PIECRTL.bit.ENPIE = 1;

                    

}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cmd文件是一种批处理脚本文件,用于在Windows中执行命令行操作。对于dsp28035,cmd文件可以用于执行一系列操作,例如程序的编译、下载和调试等。 首先,在cmd文件中,可以使用"cd"命令切换到指定路径,例如cd C:\dsp28035。 接下来,使用"cl2000"命令编译程序文件。cl2000是dsp28035编译器的命令行工具,用于将源代码文件编译成目标文件。例如,可以使用以下命令编译名为example.c的C源代码文件: cl2000 example.c 然后,使用"bl2000"命令生成bootloader文件。bl2000是dsp28035生成bootloader的命令行工具,用于生成用于下载程序的bootloader文件。例如,可以使用以下命令生成名为example_bootldr.out的bootloader文件: bl2000 example.out example_bootldr.out 接下来,使用"dldr3500"命令下载程序文件。dldr3500是dsp28035下载器的命令行工具,用于将目标文件下载到dsp28035芯片上。例如,可以使用以下命令下载名为example.out的目标文件: dldr3500 example.out 最后,可以使用"hercules"命令启动程序烧写工具Hercules,用于在dsp28035上调试程序。例如,可以使用以下命令启动Hercules: hercules 除了以上几个常用命令外,cmd文件还可以使用其他命令,如"echo"命令用于在命令行输出信息,"copy"命令用于复制文件,"del"命令用于删除文件等。 需要注意的是,cmd文件的编写需要熟悉Windows命令行操作和dsp28035开发工具的命令行工具使用方法。可以查阅相关的文档和手册以获得更详细的帮助和指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值