【DSP2812学习心得】一、构建完整工程文件(2013-08-1910:30:49)转载▼标签:dsp学习心得模板2812ti库分类:DSP学习总的说一个完整的工程需要由库文件(.lib),头文件(.h),源文件(.c)和CMD文件(.CMD)组成,缺一不可。至于各文件内容将在以后中详细说明(1)TI库的移植1、库文件(.lib)rts2800_ml.lib---大存储器模式IQmath.lib---Q化数学函数库2、TI库源文件头文件DSP281x_commonDSP281x_headers注意DSP281x_SWPrioritizedDefaultIsr.cDSP281x_SWPiroritizedPieVect.cDSP281x_XintfBootReset.asm这三个文件有需要时才添加3、CMD文件4、修改TI库两个头文件a、DSP281x_headers\include\DSP281x_Device.h#defineTARGET1//---------------------------------------------------------------------------//UserToSelectTargetDevice:#defineDSP28_F2812TARGET#defineDSP28_F28110#defineDSP28_F28100b、DSP281x_common\include\DSP281x_Examples.h#defineCPU_RATE6.667L//fora150MHzCPUclockspeed(SYSCLKOUT)//#defineCPU_RATE7.143L//fora140MHzCPUclockspeed(SYSCLKOUT)5、编写文件包含头文件#includeDSP281x_Device.h//DSP281xHeaderfileIncludeFile#includeDSP281x_Examples.h//DSP281xExamplesIncludeFile(2)TI库文件解释文件描述DSP281x_GlobalPrototypes.h这个文件包含外设详细的函数原型DSP281x_Adc.cADC具体函数和宏DSP281x_CpuTimers.cCPU-Timer具体函数和宏DSP281x_Ecan.c增强CAN详细函数和宏DSP281x_Ev.cEV详细函数和宏DSP281x_Gpio.cGPIO详细函数和宏DSP281x_Mcbsp.cMcBSP详细函数和宏DSP281x_PieCtrl.cPIE控制详细函数和宏DSP281x_Sci.cSCI详细函数和宏DSP281x_Spi.cSPI详细函数和宏DSP281x_SysCtrl.c系统控制(看门够,时钟,pll等)详细函数和宏DSP281x_Xintf.cXINTF详细函数和宏DSP281x_Xintrupt.c外部中断详细函数和宏DSP281x_CodeStartBranch.asm当代码导入Flash,OTP或H0SARAM存储器时,此程序确定代码从哪个分支开始执行。在使用包含的c初始程序之前,需要关闭看门狗。若程序从xintfzone7引导执行,择使用DSP281x_XintfBootReset.asm替代。DSP281x_XintfBootReset.asm这个文件说明程序从xintfzone7引导。在使用包含的c初始程序之前,需要关闭看门狗。如果代码导入Flash,OTP或H0SARAM存储器时,使用DSP281x_CodeStartBranch.asm代替它。DSP281x_DBGIER.asm汇编函数控制来自C的DEBIER寄存器DSP281x_usDelay.asm在微秒内插入一个延时的汇编函数。这个函数是依赖时钟周期的,它必须从具有0等待-状态的RAM执行。DSP281x_CSMPasswords.asm包含在工程中,编译代码安全模式密码和保留位置。DSP281x_SWPrioritizedDefaultlsr.c默认的中断服务外壳程序。你可以选择填充一个函数或将你的ISR重新映射到PIE向量表。注意:这个文件对DSP\BIOS工程没有用。DSP281x_SWPrioritizedLevel.hDSP281x_Defaultlsr.c中的ISR函数原型声明。注意:这个文件对DSP\BIOS工程没有用。DSP281x_SWPrioritizedPieVect.cDSP281x_Defaultlsr.c中创建带指向ISR函数指针的PIE向量表初始化。为了初始化到默认的ISR位置,这个示例能够被拷贝到PIE向量表。DSP281x_Defaultlsr.c完整PIE向量表的中断服务外壳程序(ISRs)。可以选择填充一个函数或将你的ISR重新映射到PIE向量表。注意:这个文件对DSP\BIOS工程文件没有用。DSP281x_Defaultlsr.hDSP281x_Defaultlsr.c中的ISR函数原型声明。注意:这个文件对DSP\BIOS工程文件没有用DSP281x_PieVect.c此处是DSP281x_Defaultlsr.c中ISR函数的一个实例,创建一个带指针的PIE向量表结构初始化。为了初始化到默认的ISR位置,可以拷贝这个实例到PIE向量表。详情请看DSP281x_HeaderFiles_QuickStart_Readme.pdfDSP281x_HeaderFiles_QuickStart中文版.doc(3)CMD文件1、用于分配编译产生的各个段至存储器,用来分配存储空间的DSP281x_headers\cmd\DSP281x_Headers_BIOS.cmdDSP281x_headers\cmd\DSP281x_Headers_nonBIOS.cmd2、CMD文件又分成两种。一种是分配RAM空间的--微计算机模式(仿真模式),用来将程序load到RAM内进行调试,因为我们大部分时间都是在调试程序,所以多用这类CMD,另一种是分配FLASH空间-----微处理器模式,当程序调试完毕后,需要将其烧写到FLASH内部进行固化,这个时侯我们就需要使用这类CMD文件了注:复位时,芯片采样XMP/MC引脚,以判断采用何种模式运行。如果XMP/MC=1(微处理器模式),第7外部接口(XINTFzone7)使能,复位向量从外部存储器中取得。此时,必须确保复位向量指向有效的代码执行地址。当然,这种模式只有在具有外部接口的器件上才可以采用,如2812。如果XMP/MC=0(微计算机模式),第7外部接口(XINTFzone7)不使能,使能内部bootROM。此时,复位向量从内部bootROM中取得。没有外部接口的芯片在内部将XMP/MC拉低,以保证总会使能内部bootROM。(建议此时用0殴电阻)详情请看281x上电引导顺序.docTMS320x281xBootROMReferenceGuide.pdf(4)实战建立自己的工程文档1、这里只讨论CCSv5建立的方法,其实是大同小异的,平时多点即可选择自己的Workspace建立工程其他的选择默认即可,点Finish即可完成若没有ProjectExplorter可以在View点即查看,现在点击Project-BuildProject进行工程编译在Console中可以看到xx.out文件即编译成功,可以下载程序并调试烧写等工作(若没有Console可以在View点击打开)若编译时出现问题可在Problems查看2、工程文件已经完成一半,下面进行复制文件(请参考前四步)DSP281x_headersDSP281x_common可在TI官网下载,也可以用我的,都是一样的回到CCSv5点击工程文件右键,Refresh重新载入文件(这效果比CCS3.3好)3、以下取消没有用的文件没有作用的文件如下(灰色的):接着删除建立工程时自动生成的文件2812_RAM_lnk.cmd或者采用上面文件即消建立USER文件夹,便于文件管理,如下注意F2812.cmd为FLASH启动的CMD文件,我将其剪切到USER文件并在main函数中添加代码FLASH启动代码#if1//CopyInitFlashfunctioncodeandFlashsetupcodetoRAMMemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);//ThisfunctionmustresideinRAMInitFlash();#endif2812_RAM_lnk.cmd为RAM启动的CMD文件,若使用RAM模式,请取消FLASH启动代码,即可4、添加头文件路径添加如下:有人说没有必要添加那么多文件夹,答案是的,确实没有必要添加那么多,但是多了也没有影响,何必在这些方面讨论添加好后重译rebuild一下文件,(当遇到不太明白的错误时,建议先clear再rebuild工程)5、以下为修改文件如下执行buildproject时,运行的时候出现“warning:creating.stacksectionwithdefaultsizeof400(hex)words.”的警告信息,解决方法在在CMD文件添加以下代码-stack0x400或者参考“编译问题收集”6、再添加cpu_def.h其定义一些自已试用的数据类型如以下:typedefCPU_INT08Uuint8;//[0255]typedefCPU_INT16Uuint16;//[065535]//typedefunsignedintuint16;typedefCPU_INT32Uuint32;//[04294967295]//typedefunsignedlonguint32;typedefCPU_INT08Ssint8;typedefCPU_INT16Ssint16;//typedefsignedintsint16;typedefCPU_INT32Ssint32;//typedefsignedlongsint32;typedefsint8int8;可参考DSP281x_Device.h自行编写#ifndefDSP28_DATA_TYPES#defineDSP28_DATA_TYPEStypedefintint16;typedeflongint32;typedeflonglongint64;typedefunsignedintUint16;typedefunsignedlongUint32;typedefunsignedlonglongUint64;typedeffloatfloat32;typedeflongdoublefloat64;#endif再在includes.h添加其头文件,添加方法请看步骤4、57、备份点击工程文件右键,“clearproject”然后在到文件夹存放的地方压缩即可然后点击工程文件右键“Delete”(方便以后添加)(8)添加TargetConfigurationFile就是仿真器的连接文件,我以XDS100V1为例,其他的仿真器也是大同小异的建立好之后,一定要点击rebuild工程意义一个工程只能有一个TargetConfigurationFile可以在view-TargetConfiguration打开管理,对多余的进行管理点击绿色小虫即进入调试模式其他的观察变量、设置断点Graph.....在以后课程进行介绍(9)以上方面已经建立自己的工程模板,以下就介绍如何调用工程模板,方法如下解压缩我们(7)步骤中的压缩文件,按以下操作选择压缩后的文件夹点击Finish即可导入应用点击Rename文便自己以后管理,以下以LED为例“rebuild”一下,即可建立自己新的工程文件其他项目也以此方法题外话,有人说DSP281x_common、DSP281x_headers很多工程都用到,没有必要每个工程有份,但这样做法一个好处时方便与人交流,程个工程文件是独立的