DSP软件开发过程及CCS简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

M1SARAM: org = 0x000400, len = 0x400
2
}
SECTIONS
{
.text:
>
.ebss:
>
.cinit:
>
.stack:
>
}
FLASH M0SARAM FLASH M1SARAM
PAGE 0 PAGE 1 PAGE 0 PAGE 1
电气与信息工程学院
DSP技术及应用
• 之内所X 有的存表储示器存范储围器必含须有具可执有行唯代一码的;名字且必须不重叠。

I
表示存储器可以初始化。
• origin 表示存储器范围的起始地址。
• length 表示存储器范围的长度。
电气与信息工程学院
DSP技术及应用
281x 软件开发过程
SECTIONS伪指令的一般语法
SECTIONS {
主要内容 AD初始化函数 CPU定时器初始化函数 增强型Can初始化函数 事件管理器Ev初始化函数 通用I/O模块初始化函数 多通道缓冲串行口初始化函数 串行通信接口初始化函数 串行外围接口初始化函数 系统控制模块初始化函数 外部接口初始化函数 外部中断初始化函数 包含了其他的外设初始化函数 PIE控制模块初始化函数 对PIE中断向量进行初始化 包含了F2812所有外设中断函数 定义了F2812的全局变量和数据段程序
DSP技术及应用
281x 软件开发过程
Linker Command File
MEMORY { PAGE 0: /* Program Space */
FLASH: org = 0x3D8000, len = 0x20000
PAGE 1: /* Data Space */
M0SARAM: org = 0x000000, len = 0x400
用标量的定义等内容
增强型CAN寄存器的相关定义 事件管理器(EV)寄存器的定义 全局函数的声明
通用输入输出(Gpio)寄存器相关定义
多通道缓冲串行口(McBsp)寄存器相关定义
PIE控制寄存器的相关定义 PIE中断向量表的定义 串行通信接口(SCI)寄存器的相关定义
串行外围设备接口(SPI)寄存器的相关定义
• .stack 定义软件堆栈。
电气与信息工程学院
DSP技术及应用
281x 软件开发过程
4.4 C语言对DSP寄存器的操作
• 寄存器变量的定义方式
“位域”数据结构
15
struct 位域结构名 { 类2型说明符 位域名1:位域长度 … 类型说明符 位域名1:位域长度 };
97
0
c
b
a
例: struct bs { int a:8; int b:2; int c:6; };
DSP技术及应用
声明共同体
281x 软件开发过程
union SCICCR_REG
{ Uint16 all;
//可实现对寄存器整体操作
struct SCICCR_BITS bit; //可实现位操作 2 };
union SCICCR_REG SCICCR; SCICCR.all=0x007F; SCICCR.bit.SCICHAR=5;
name :[property,property,property,…] name :[property,property,property,…] name :[property,property,property,…] }
2
以name(名字)开始的段的规格说明定义了一个输出段。
在段名之后是特性列表,定义段的内容以及它们是怎样被分配的, 特性可以用逗号来分开.
2 交叉引用列表器
交叉引用列表器(cross-reference lister)是软件开发的调试 工具之一。它的输入是连接后的目标文件,产生一个交叉引 用列表作为输出。该列表文件显示符号、它们的定义以及它 们在连接的源文件中的引用。
电气与信息工程学院
DSP技术及应用
281x 软件开发过程
16进制转换应用程序
DSP28_Gpio.h
DSP28_McBsp.h DSP28_PieCtrl.h DSP28_PieVect.h DSP28_Sci.h
DSP28_Spi.h DSP28_SysCtrl.h DSP28_Xintf.h DSP28_XIntrupt.h
主要内容 模数转换(ADC)寄存器的相关定义 32位CPU定时器寄存器的相关定义 F2812默认中断服务程序的定义 F2812硬件仿真寄存器的相关定义 包含所有的头文件、目标CPU类型的选择(F2812或F2810)、常
• .cinit 该段标示部分存放已明确初始化的全局变量和静态变量;

2
.const
该段标示存放已明确初始化的字符串常量、全局常量和静态常量;
• .switch 该段标示部分存放对于大型的switch语句的跳转表;
• .text 该段标示部分存放可执行代码和浮点数常量;
• .ebss 标示部分用于存放没有初始化的全局变量和静态变量;
电气与信息工程学院
创建结构体文件
struct SCI_REGS
{
union SCICCR_REG SCICCR; //通信控制寄存器
union SCICTL1_REG SCICTL1; // 控制寄存器1
}
2

aPtAtrGE规定标与示已存命名储范器围空有间关。的用1~户4个可属以性规。定未多规达定属25性5数的据存页储。器 P具A有G所E0有4规个定属程性序。有存效储的器4,个属PA性G包E括1 规:定数据存储器。
••

n不a同me页RW上命的名存表表存储示示储器存存器范储储范围器器围可可可。以以以存具读写储出入有器;;相可同以的是名1字至,8个但字是符在。一在页
电气与信息工程学院
DSP技术及应用
4.2 软件开发流程
281x 软件开发过程
2
DSP系统软件开发流程图
电气与信息工程学院
DSP技术及应用
281x 软件开发过程
存档器
• 允许用户将一组文件集中起来归入一个归档文件,该文件 称作库。
宏语言
• 汇编程序支持宏语言,这个功能能让你编造自己的“指 令”。当在一个程序中需要多次执行某个特定的任务时, 宏语言就显得特别有用。
//定义位域bs
电气与信息工程学院
DSP技术及应用
281x 软件开发过程
struct SCICCR_BITS
{ Uint16 SCICHAR:3;
// 2:0 字符长度控制位
Uint16 ADDRIDLE_MODE:1; // 3 多处理器模式控制位
Uint16 LOOPBKENA:1; Uint16 PARITYENA:1; 2 Uint16 PARITY:1;
电气与信息工程学院281x 软件开发过程
3种基本文件 1)源文件
C语言文件或者汇编语言文件,后缀为.c或者.asm, 实现DSP要完成的功能 2 2)头文件,后缀为.h 定义寄存器映射地址、用户用到的常量和自定义的寄 存器 3)命令文件,后缀为.cmd 对程序和数据存储器空间进行分配
// 4 回送测试模式使能位 // 5 极性使能位 // 6 奇/偶极性选择位
Uint16 STOPBITS:1;
// 7 停止位个数
Uint16 rsvd1:8;
// 15:8 保留
};
struct SCICCR_BITS bit;
bit.SCICHAR=7;
//SCI字符长度控制位为8位
电气与信息工程学院
2 链接器
将所有的目标文件连接起来组成一个可执行的目标程序 模块。完成以下任务: • 将段分配到目标系统中已配置的存储器; • 重新定位符号和段,并给它们分配最后的地址; • 解析在输入文件之间未定义的外部引用。
电气与信息工程学院
DSP技术及应用
281x 软件开发过程
绝对列表器
绝对列表器(absolute lister)是一个调试工具,它将连接后 的目标文件作为输入并创建.abs类型的输出文件。这些.abs 文件经汇编后产生一个显示目标代码绝对地址的列表。
• 大多数的EPROM编程器不能接收COFF目标文件作为输入, 因此,利用十六进制转换应用程序将COFF目标文件转换为 标准的ASCII码十六进制格式,使之能被EPROM编程器装 载。
运行时间支持函数
2 C程序所执行的一些任务(如输入/输出,动态存储器配置, 字符串操作,以及三角函数)并不是C语言本身的一部分。 (ANSI)C标准定义运行时间支持函数用来执行这些任务。 TMS320C28xx包含下列库: 如rts2800.lib为C/C++运行支持库;而rts2800_ml.lib C/C++ 则为大内存模式运行支持库。
系统控制寄存器的相关定义 外部接口寄存器的相关定义 外部中断寄存器的相关定义
序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
文件名 DSP28_Adc.c DSP28_CpuTimers.c DSP28_ECan.c DSP28_Ev.c DSP28_Gpio.c DSP28_Mcbsp.c DSP28_Sci.c DSP28_Spi.c DSP28_SysCtrl.c DSP28_Xintf.c DSP28_XIntrupt DSP28_InitPeripherals.c DSP28_PieCtrl.c DSP28_PieVect.c DSP28_DefaultIsr.c DSP28_GlobalVariableDefs.c
第4讲 281x软件开发过程 及CCS简介
电气与信息工程学院
DSP技术及应用
4.1 编程语言
281x 软件开发过程
一般来说C编译器与C++编译器相比具有更高 的编译效率,同时随着C编译器的发展,利用C 编译器和C语言源文件所生成的目标代码,其 执行的效率已经十分接近汇编语言程序
2
相对于庞大、复杂的汇编语言系统来说,C语言 具有不可比拟的优势 .在大多数应用场合下, 推荐使用C语言来开发DSP的软件程序
Placing Sections in Memory
0x00 0000 0x00 0400
Memory
M0SARAM (0x400)
M1SARAM (0x400)
2
0x3D 8000
FLASH (0x20000)
281x 软件开发过程
Sections .ebss .stack .cinit .text
Sections :描述输入段怎样被组合到输出段内;在可执行程序 内定义输出段;规定在存储器内何处放置输出段;允许重命名 输出段。
电气与信息工程学院
DSP技术及应用
Memory伪指令的一般语法
281x 软件开发过程
MEMORY
{ PAGE0: namel[(attr)]: origin=constant, length=constant; PAGEn: namen[(attr)]: origin=constant, length=constant;
电气与信息工程学院
DSP技术及应用
281x 软件开发过程
• 段可能具有的特性: • (1)装载位置:规定段将被装载在存储器内何处; • (2)运行位置:定义段将在存储器内何处运行; • (3)输入段:定义组成输出段的输入段; • (4)段类型:定义特定段类型的标志; • (5)填充值:定义用于填充未初始化空位的数值。
电气与信息工程学院
DSP技术及应用
281x 软件开发过程
命令文件 .cmd
命令文件名的后缀为.cmd,命令文件实现对程序存储器空间和 数据存储器空间的分配。
文件常用的伪指令有Memory和Sections伪指令。
Memory:用来标示实际存在目标系统中且可被使用的存储 2 器范围,每个存储器范围具有名字,起始地址和长度。
电气与信息工程学院
序号 1 2 3 4 5
6 7 8
9
10
11 12 13
14
15 16 17
文件名 DSP28_Adc.h DSP28_CpuTimers.h DSP28_DefaultISR.h DSP28_DevEmu.h
DSP28_Device.h
DSP28_Ecan.h DSP28_Ev.h DSP28_GlobalPrototypes.h
2
C编译器
● 接收C语言源代码并编译成相应的汇编语言的源代码。包含:
shell程序, 优化器和交互列表公用程序。
电气与信息工程学院
DSP技术及应用
281x 软件开发过程
汇编器
• 汇编器(assembler)把汇编语言源文件翻译成机器语言目标 文件。该机器语言是基于公用目标文件格式(COFF)的。
• 公用目标文件格式(COFF)的最小单位叫做段(section)。 段就是一组代码或数据,并将最终占据存储器映像中连续的 空间。
相关文档
最新文档