首页 > 资讯 > 新品技术

关于DSP2812学习心得分享

字号: T | T
2014-07-26   作者:资讯小编  浏览次数: 1145
[摘要]总的说一个完整的工程需要由库文件(.lib),头文件(.h),源文件(.c)和 CMD 文件(.CMD)组成,缺一不可。至于各文件内容将在以

总的说一个完整的工程需要由库文件(.lib),头文件(.h),源文件(.c)和 CMD 文件(.CMD)组成,缺一不可。至于各文件内容将在以后中详细说明

(1)TI 库的移植

1、库文件(.lib)

DSP2812学习心得

rts2800_ml.lib  ---  大存储器模式

IQmath.lib     ---  Q化数学函数库

2、TI库 源文件  头文件 DSP281x_common DSP281x_headers

注意

DSP281x_SWPrioritizedDefaultIsr.c

DSP281x_SWPiroritizedPieVect.c

DSP281x_XintfBootReset.asm

这三个文件有需要时才添加

3、CMD 文件

4、修改TI库两个头文件

a、DSP281x_headers\include\DSP281x_Device.h

#define   TARGET   1

//---------------------------------------------------------------------------

// User To selec Target Device:

#define   DSP28_F2812   TARGET

#define   DSP28_F2811   0

#define   DSP28_F2810   0

b、DSP281x_common\include\DSP281x_Examples.h

#define CPU_RATE    6.667L   // for a 150MHz CPU clock speed (SYSCLKOUT)

//#define CPU_RATE    7.143L   // for a 140MHz CPU clock speed (SYSCLKOUT)

5、编写文件 包含头文件

#include "DSP281x_Device.h"     // DSP281x Headerfile Include File

#include "DSP281x_Examples.h"   // DSP281x Examples Include File

(2)TI库文件解释

文件

描述

DSP281x_GlobalPrototypes.h

这个文件包含外设详细的函数原型

DSP281x_Adc.c

ADC具体函数和宏

DSP281x_CpuTimers.c

CPU-Timer具体函数和宏

DSP281x_Ecan.c

增强CAN详细函数和宏

DSP281x_Ev.c

EV详细函数和宏

DSP281x_Gpio.c

GPIO详细函数和宏

DSP281x_Mcbsp.c

McBSP详细函数和宏

DSP281x_PieCtrl.c

PIE控制详细函数和宏

DSP281x_Sci.c

SCI详细函数和宏

DSP281x_Spi.c

SPI详细函数和宏

DSP281x_SysCtrl.c

系统控制(看门够,时钟,pll等) 详细函数和宏

DSP281x_Xintf.c

XINTF详细函数和宏

DSP281x_Xintrupt.c

外部中断详细函数和宏

DSP281x_CodeStartBranch.asm

当代码导入Flash,OTP或H0 SARAM存储器时,此程序确定代码从哪个分支开始执行。在使用包含的c 初始程序之前,需要关闭看门狗。

若程序从xintf zone 7引导执行,择使用DSP281x_XintfBootReset.asm替代。

DSP281x_XintfBootReset.asm

这个文件说明程序从xintf zone 7引导。 在使用包含的c 初始程序之前,需要关闭看门狗。如果代码导入Flash,OTP或H0 SARAM存储器时,使用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.h

DSP281x_Defaultlsr.c中的ISR函数原型声明。注意: 这个文件对DSP\BIOS 工程没有用。

DSP281x_SWPrioritizedPieVect.c

DSP281x_Defaultlsr.c中创建带指向ISR函数指针的PIE向量表初始化。为了初始化到默认的ISR位置,这个示例能够被拷贝到PIE向量表。

DSP281x_Defaultlsr.c

完整PIE向量表的中断服务外壳程序(ISRs)。可以选择填充一个函数或将你的ISR重新映射到PIE向量表。注意:这个文件对DSP\BIOS 工程文件没有用。

DSP281x_Defaultlsr.h

DSP281x_Defaultlsr.c中的ISR函数原型声明。注意: 这个文件对DSP\BIOS 工程文件没有用

DSP281x_PieVect.c

此处是DSP281x_Defaultlsr.c中ISR函数的一个实例,创建一个带指针的PIE向量表结构初始化。为了初始化到默认的ISR位置,可以拷贝这个实例到PIE向量表。

详情请看

DSP281x_HeaderFiles_QuickStart_Readme.pdf

DSP281x_HeaderFiles_QuickStart中文版.doc

(3)CMD文件

1、用于分配编译产生的各个段至存储器 ,用来分配存储空间的

DSP281x_headers\cmd\DSP281x_Headers_BIOS.cmd

DSP281x_headers\cmd\DSP281x_Headers_nonBIOS.cmd

2、CMD 文件又分成两种。

一种是分配 RAM 空间的-- 微计算机模式(仿真模式) ,用来将程序 load 到 RAM 内进行调试,因为我们大部分时间都是在调试程序,所以多用这类 CMD,

另一种是分配 FLASH 空间-----微处理器模式,当程序调试完毕后,需要将其烧写到 FLASH 内部进行固化,这个时侯我们就需要使用这类 CMD 文件了

注:复位时,芯片采样XMP/MC引脚,以判断采用何种模式运行。

如果XMP/MC=1(微处理器模式),第7外部接口(XINTF zone 7)使能,复位向量从外部存储器中取得。此时,必须确保复位向量指向有效的代码执行地址。当然,这种模式只有在具有外部接口的器件上才可以采用,如2812。

如果XMP/MC=0(微计算机模式),第7外部接口(XINTF zone 7)不使能,使能内部boot ROM。此时,复位向量从内部boot ROM中取得。没有外部接口的芯片在内部将XMP/MC拉低,以保证总会使能内部boot ROM。(建议此时用0殴电阻)

详情请看

281x上电引导顺序.doc

TMS320281x Boot ROM Reference Guide.pdf

(4)实战建立自己的工程文档

1、这里只讨论CCSv5 建立的方法,其实是大同小异的,平时多点即可

DSP2812学习心得

选择自己的Workspace

DSP2812学习心得

建立工程

DSP2812学习心得

DSP2812学习心得

其他的选择默认即可,点Finish 即可完成

DSP2812学习心得

若没有Project Explorter 可以在View点即查看,

现在点击Project ->Build Project 进行工程编译

DSP2812学习心得

在Console中可以看到xx.out文件即编译成功,可以下载程序并调试烧写等工作

(若没有Console 可以在View点击打开)

DSP2812学习心得

若编译时出现问题可在Problems查看

DSP2812学习心得

2、工程文件已经完成一半,下面进行复制文件(请参考前四步)

DSP2812学习心得

DSP281x_headers DSP281x_common 可在TI官网下载,也可以用我的,都是一样的

DSP2812学习心得

回到CCSv5 点击工程文件右键,Refresh 重新载入文件(这效果比CCS3.3好)

3、以下取消没有用的文件

DSP2812学习心得

DSP2812学习心得

没有作用的文件如下(灰色的):

DSP2812学习心得

DSP2812学习心得

接着删除建立工程时自动生成的文件

2812_RAM_lnk.cmd 或者采用上面文件即消

建立USER文件夹,便于文件管理,如下

DSP2812学习心得

注意F2812.cmd 为FLASH启动的CMD文件,我将其剪切到USER文件

并在main函数中添加代码FLASH启动代码

#if 1

// Copy InitFlash function code and Flash setup code to RAM

  MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);

// This function must reside in RAM

  InitFlash();

#endif

2812_RAM_lnk.cmd 为RAM启动的CMD文件,若使用RAM模式,请取消FLASH启动代码,即可

4、添加头文件路径

DSP2812学习心得

DSP2812学习心得

添加如下:

DSP2812学习心得

有人说没有必要添加那么多文件夹,答案是的,确实没有必要添加那么多,但是多了也没有影响,何必在这些方面讨论

添加好后重译rebuild一下文件,(当遇到不太明白的错误时,建议先clear 再rebuild工程)

5、以下为修改文件如下

DSP2812学习心得

DSP2812学习心得

执行build project时,运行的时候出现“warning: creating .stack section with default size of 400 (hex) words.”的警告信息,解决方法在

在CMD文件添加以下代码

-stack 0400

或者参考“编译问题收集”

6、再添加 cpu_def.h

DSP2812学习心得

其定义一些自已试用的数据类型 如以下:

typedef CPU_INT08U uint8; //[0 255]

typedef CPU_INT16U uint16; //[0 65 535]//typedef unsigned int  uint16;

typedef CPU_INT32U uint32; //[0 4 294 967 295]//typedef unsigned long uint32;

typedef CPU_INT08S sint8;

typedef CPU_INT16S sint16;//typedef signed   int  sint16;

typedef CPU_INT32S sint32; //typedef signed   long sint32;

typedef sint8 int8;

可参考DSP281x_Device.h 自行编写

#ifndef DSP28_DATA_TYPES

#define DSP28_DATA_TYPES

typedef int int16;

typedef long int32;

typedef long long int64;

typedef unsigned int Uint16;

typedef unsigned long Uint32;

typedef unsigned long long Uint64;

typedef float float32;

typedef long double float64;

#endif

再在includes.h添加其头文件,添加方法请看步骤4、5

7、备份点击工程文件右键,“clear project” 然后在到文件夹存放的地方压缩即可

然后点击工程文件右键“Delete”(方便以后添加)

DSP2812学习心得

(8)添加TargetConfigurationFile 就是仿真器的连接文件,我以XDS100V1为例,其他的仿真器也是大同小异的

DSP2812学习心得

DSP2812学习心得

DSP2812学习心得

建立好之后,一定要点击rebuild 工程

意义一个工程只能有一个TargetConfigurationFile 可以在view->TargetConfiguration 打开管理,对多余的进行管理

DSP2812学习心得

点击绿色小虫即进入调试模式

其他的观察变量、设置断点 Graph.....在以后课程进行介绍

(9)以上方面已经建立自己的工程模板,以下就介绍如何调用工程模板,方法如下

解压缩我们(7)步骤中的压缩文件,按以下操作

DSP2812学习心得

选择压缩后的文件夹

DSP2812学习心得

DSP2812学习心得

点击Finish即可导入应用

DSP2812学习心得

点击Rename 文便自己以后管理,以下以LED为例

DSP2812学习心得

“rebuild”一下,即可建立自己新的工程文件

DSP2812学习心得

其他项目也以此方法

题外话,有人说DSP281x_common 、DSP281x_headers 很多工程都用到,没有必要每个工程有份,但这样做法一个好处时方便与人交流,程个工程文件是独立的。在

DSP2812学习心得

可以看出,不会受外部的文件的影响。导入其他人做的工程时,编译不通过一般情况下都是

#include search path 设置不正常造成的,修改一下即可。

(5)编译问题收集

(1)执行build project时,运行的时候出现“warning: creating .stack section with default size of 400 (hex) words.”的警告信息,不知,以为是CMD文件出现问题,看了半天都找到原因,提示说可以用stack options修改,却没在help里迅速找到解决办法。网上搜了一下,结合CCS4.0版本解答如下:

依然在 右键工程--build propertie--C2000 linker--basic options

DSP2812学习心得
即stack,head sizez处都填入0400即可,此处估计得根据具体的芯片类型来填,有多种选择,但不能超过最大的范围。

或者在CMD文件添加以下代码

-stack 0400

(2)warning #10247-D: creating output section "csm_rsvd" without a SECTIonSwarning #10247-D: creating output section "csm_rsvd" without a SECTIONS

解决方法

DSP281x_CSMPasswords.asm 程序加密代码的出错,这个只能在FLASH模式下才能工作,取消其的编译即可

参考资料:

DSP281x_HeaderFiles_QuickStart_Readme.pdf

DSP281x_HeaderFiles_QuickStart中文版.doc

IQmath_v15a.pdf

Programming TMS32028xx and 28xxx Peripherals in C C++.pdf

推荐阅读:DSP2812开发经历的分享

  • 打印
  • 关闭