DSP281X头文件的快速入门(中文版)(3)

2019-03-15 16:46

德州仪器 C281x C/C++头文件和外设例程的快速入门

面的改变,可使它在Flash里执行。

1. 更改连接器命令文件,使代码连接到Flash。

从项目中删除F2812_EzDSP_RAM_lnk.cmd文件,并添加F2812.cmd或F2810.cmd. F2812.cmd和F2810.cmd都存放在DSP281x_common\\cmd\\目录下。 2. 添加DSP281x_common\\source\\DSP281x_CSMPasswords.asm到项目 文件包含了密码,这个密码将被编成入CMS的密码位置。在开发阶段,推荐把密码设置成0xFFFF,以使得器件容易解码。更多关于CSM的信息见TMS320F28x System Control and Interrupts Reference Guide (SPRU078)。

3. 修改代码来复制(从Flash的装载地址到SARAM的运行地址)函数到SARAM中执行。

尤其是,Flash的等待状态初始化程序必须在SARAM中执行。在DSP281x例程里,将在SARAM中执行的函数必须通过编译器的CODE_SECTION分配到ramfuncs扇区,#pragma的语句 如下例子所示:

/******************************************************************** * DSP281x_common\\source\\DSP281x_SysCtrl.c

********************************************************************/ #pragma CODE_SECTION(InitFlash, \

ramfuncs扇区被存储器连接器命令文件分配给一个在Flash的装载地址和一个在SARAM里的运行地址,如下所示:

/******************************************************************** * DSP281x_common\\include\\F2812.cmd

********************************************************************/ SECTIONS {

ramfuncs : LOAD = FLASHD, RUN = RAML0,

LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0

}

连接器将为上面特殊的地址分配一个特有的标号。如下所示:

地址 Load start Load end Run start 标号 RamfuncsLoadStart RamfuncsLoadEnd RamfuncsRunStart 在使用MemCopy程序或者C库里的标准memcopy()函数来从Flash复制函数到SARAM时,这些变化都将被用到。

使用MemCopy函数例程来完成Flash到SARAM的复制。

A. 添加DSP281x_common\\source\\DSP281x_MemCopy.c文件到项目。

B. 添加下面的函数原型到例程源代码。你可以在DSP281x_Examples.h 文件了进行。

/******************************************************************** * DSP281x_common\\include\\DSP281x_Examples.h

********************************************************************/

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

11

V1.20快速入门教程 德州仪器

C. 添加下列的变量声明到你的源代码里,来告诉编译器这些变量的存在。连接器命令文件将为每

个变量分配地址,如步骤3所示的连接器命令文件特有的。对于DSP281x例程,这些已经在DSP281x_Examples.h.里。

/******************************************************************** * DSP281x_common\\include\\DSP281x_Examples.h

********************************************************************/ extern Uint16 RamfuncsLoadStart; extern Uint16 RamfuncsLoadEnd;

extern Uint16 RamfuncsRunStart;

D. 在每个需要从Flash复制到SARAM的扇区里,修改代码来调用MemCopy函数。

/******************************************************************** * DSP281x_examples\\Flash source file

********************************************************************/

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

4. 修改代码来调用Flash初始化例程。

这个函数将初始化Flash的等待状态,并使能Flash的管道模式。

/******************************************************************** * DSP281x peripheral example .c file

********************************************************************/

InitFlash();

5. 设置跳线,使其满足‘从flash中引导’的模式。 每种引导模式要求的跳线设置如下表所示:

表8 281x引导模式的设置 GPIOF4 GPIOF12 GPIOF3 GPIOF2 Mode 1 0 0 0 0 0 X 1 0 0 0 0 X X 1 1 0 0 X X 1 0 1 0 Boot to flash 0x3F7FF6 Call SPI boot loader Call SCI boot loader Boot to H0 SARAM 0x3F8000 Boot to OTP 0x3D7800 Call parallel boot loader 对使用数字序列F2812评估目标板的用户,请参考评估目标板的用户使用指导,正确的跳线来使用选择的引导模式。

更多有关281x引导模式的信息,参考TMS320F28x Boot ROM Reference Guide (SPRU095)。 6. 建立代码,并编程器件。

在CCS V4中,当代码调试时被载入器件中,它自动编程到flash存储器上。

这也可以从数字序列网站上使用SDFlash来完成。此外,可用C2000 on-chip Flash programmer plug-in在CCS V3.x完成下载。

7. 在CCS V3版本中,调试,下载项目进CCS,可用File->Load Symbols->Load Symbols Only。

当工作在调试环境时,只装载标号信息和有用,因为这时调试器不能或者不需要像在ROM或者Flash一样装载目标代码。

5. 合并头文件到例程代码的步骤

以下的步骤用来合并外设头文件和例程代码到你拥有的项目里。如果你已经拥有一个使用V.58头文件的项目,也可参考第7节的移动小报告。

12

德州仪器 C281x C/C++头文件和外设例程的快速入门

5.1 开始前的准备

1. 装载和逐步安排整个例程项目

装载和逐步安排一个例程项目,使得我们熟悉头文件和例程代码。见第4节。 2. 创建一个你想使用的源文件的备份。

– DSP281x_headers: 代码被要求合并头文件到你的项目中 – DSP281x_common: 大部分被例程项目共享的源代码

– DSP281x_examples: 使用头文件和共享代码的例程项目。

5.2 把DSP281x外设头文件包含进来

把DSP281x外设头文件包含进你的项目,将使得你在你的代码中使用bit-field(位-域)结构的方法来访问DSP上的外设。为了合并头文件到一个新的或者已经存在的项目,可遵照如下步骤完成:

1. #include “DSP281x_Device.h”在你的源文件中

这包含的文件将依次包含所有的外设特有的头文件和使用位-域结构方法访问外设要求定义的变量。

/******************************************************************** * User’s source file

********************************************************************/ #include “DSP281x_Device.h”

2. 编辑DSP281x_Device.h文件,选择你建立的目标:

在下面的例子里,文件被配置来对F2812器件建立 。

/******************************************************************** * DSP281x_headers\\include\\DSP281x_Device.h

********************************************************************/ #define TARGET 1

#define DSP28_F2812 TARGET #define DSP28_F2811 0 #define DSP28_F2810 0

3. 添加DSP281x_GlobalVariableDefs.c源文件到项目中

文件可在DSP281x_headers\\source\\目录下找到: - 被用来访问外设寄存器的变量的描述

- 数据扇区的#pragma分配,连接器用来放置变量到存储器中的合适位置。 4. 添加合适的DSP281x连接器命令头文件到项目

如第3节所述,当使用DSP281x头文件的方式时,外设寄存器结构的数据扇区被分配到连接器定位的外设寄存器存储空间上。

为了在你的项目中完成存储器的分配,DSP281x_headers\\cmd\\目录下的其中一个连接器命令文件必须被包含到你的项目中。

- 对non-DSP/BIOS项目: DSP281x_Headers_nonBIOS.cmd - 对DSP/BIOS项目: DSP281x_Headers_BIOS.cmd

添加连接器头文件到项目的方法,取决于所使用的CCS版本。

? CCS V2.2及其早期版本 省略

? CCS V3.x

a) 打开菜单:Project->Build Options b) 选择Linker tab,然后选择Basic.

13

V1.20快速入门教程 德州仪器

c) 在库寻找路径,添加系统中DSP281x_headers\\cmd的目录路径。 ? CCS V4

省略

5. 添加DSP281x头文件的目录路径到你的项目中

? CCS V3.x

指定头文件所在位置为目录: a) 打开菜单:Project->Build Options

b) 选择Compiler选项卡 c) 选择pre-processor. d) 在Include Search Path,添加系统中DSP281x_headers\\include所在位置的目录路径。 ? CCS V4.x 省略

6. 对build options的额外建议:

下面是增加的compiler and linker options。这些选项可通过Project->Build Options菜单来设置。 -ml 选择Advanced,检查-ml

在大存储器模式下建立。这个设置可使得数据扇区可定位于28x器件的4M存储器的任何位置上。

-pdr 选择Diagnostics,检查-pdr。

假设不是很严重的警告,编译器使用一个警告来说明代码是合法但有疑问的。在很多情况下,被-pdr假设的这些警告能够警惕你,代码可能在后面引起问题。 - Linker Tab

-w 选择高级,检查-w

关于输出扇区的警告。如果在你的代码中存在任何未分配的存储器扇区,这个选项将提醒你。默认时,连接器将尝试放置未分配扇区的代码和数据到一个合法的存储器空间中,而不向用户提醒。然后,当扇区被放置在一个不希望的空间时,这可能引起问题。

5.3 包含共享例程代码

在你的项目里包含共用源代码,将允许你促使已经写好的针对器件的代码的改变。履行如下所示的步骤,可合并共享源代码到一个新的或者已经存在的项目上。 1. 在你的源文件上 #include “DSP281x_Examples.h”

这个包含文件将包含例程代码使用的共用的定义和描述 。

/******************************************************************** * User’s source file

********************************************************************/ #include “DSP281x_Examples.h”

2. 添加到达example include文件的目录路径到你的项目上。

CCS 3.x

指定头文件所在位置为目录:

e) 打开菜单:Project->Build Options

14

德州仪器 C281x C/C++头文件和外设例程的快速入门

f) 选择Compiler选项卡 g) 选择pre-processor. h) 在Include Search Path,添加系统中DSP281x__common\\include所在位置的目录路径。 目录间使用分号隔开。

包含项目included目录路径的例子如下所示:

..\\..\\DSP281x_headers\\include;..\\..\\DSP281x_common\\include ? CCS V4.x 省略

6. 故障解决报告和常见问题回答

15


DSP281X头文件的快速入门(中文版)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:记叙文阅读训练10篇(41-50)附答案及解析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: