DSP第四章-如何构建一个完整的工程

合集下载

第四章 DSP开发环境

第四章  DSP开发环境

CCS简介 简功能: 包含如下基本功能
1.可视化代码编辑界面。可编写C、汇编、.H文件、.cmd文件等。 可视化代码编辑界面。可编写C 汇编、.H文件、.cmd文件等。 文件 文件等 集成代码生成工具。如汇编器、 编译器、链接器等。 2.集成代码生成工具。如汇编器、C编译器、链接器等。 基本调试工具。跟踪、查看程序执行、存储器、寄存器等。 3.基本调试工具。跟踪、查看程序执行、存储器、寄存器等。 断点工具。 4.断点工具。 探针工具。用于算法仿真、数据监视等。 5.探针工具。用于算法仿真、数据监视等。 分析工具。评估代码执行的时钟数。 6.分析工具。评估代码执行的时钟数。 数据的图形显示工具。如绘制时域/频域波形、眼图、星座图等。 7.数据的图形显示工具。如绘制时域/频域波形、眼图、星座图等。 GEL工具 用户可以自行修改控制面板、菜单,方便直观修改变量,配置参数等。 工具。 8.GEL工具。用户可以自行修改控制面板、菜单,方便直观修改变量,配置参数等。 支持RTDX 实时数据交换)技术。可以在不中断系统运行的情况下,实现DSP RTDX( DSP与其 9.支持RTDX(实时数据交换)技术。可以在不中断系统运行的情况下,实现DSP与其 他应用程序的数据交换。 他应用程序的数据交换。 10.开放式Plug in技术 支持第三方的ActiveX插件( Plug- 技术, ActiveX插件 10.开放式Plug-in技术,支持第三方的ActiveX插件(一种支持软件组件网络交互的 工具),支持包括软仿真在内的各种仿真器(只需安装驱动)。 ),支持包括软仿真在内的各种仿真器 工具),支持包括软仿真在内的各种仿真器(只需安装驱动)。 11.提供DSP/BIOS工具。增强了对代码的实时分析、运行调度、资源管理的能力,减 11.提供DSP/BIOS工具。增强了对代码的实时分析、运行调度、资源管理的能力, DSP/BIOS工具 少了用户对硬件熟悉程度的依赖。 少了用户对硬件熟悉程度的依赖。 12.支持多DSP调试。 DSP调试 12.支持多DSP调试。

DSP技术 第4章 DSP集成开发环境CCS

DSP技术 第4章 DSP集成开发环境CCS
DSP/BIOS的配置工具、实时分析工具等。
④ 实时数据交换的RTDX插件和相应的程序接口API 可对目标系统数据进行实时监视,实现DSP与
其他应用程序的数据交换。 ⑤ 由TI公司以外的第三方提供的应用模块插件
2019年12月6日
DSP原理及应用
6
第4章 DSP集成开发环境CCS
4. 2 CCS的主要功能 CCS的功能十分强大,它集成了代码的编辑、
时监视等;
⑧ 分析工具,包括模拟器和仿真器分析,可用
于模拟和监视硬件的功能、评价代码执行的时钟;
⑨ 数据的图形显示工具,可以将运算结果用图
形显示,包括显示时域/频域波形、眼图、星座图、
图像等,并能进行自动刷新;
2019年12月6日
DSP原理及应用
9
第4章 DSP集成开发环境CCS
4.2 CCS的主要功能 ⑩ 提供GEL工具。利用GEL扩展语言,用户可以
置断点、探测点调试程序。
反汇编窗口:用来帮助用户查看机器指令,查找错误。
内存显示窗口:用来查看、编辑内存单元。
寄存器显示窗口:用来查看、编辑CPU寄存器。
图形显示窗口:可以根据用户需要,以图形的方式显示数据。
2019年12月6日
DSP原理及应用
22
第4章 DSP集成开发环境CCS
4.4.1 CCS的窗口和工具条 2. 关联菜单
⑤ 基本调试工具具有装入执行代码、查看寄存
器、存储器、反汇编、变量窗口等功能,并支持C
源代码级调试;
2019年12月6日
DSP原理及应用
8
第4章 DSP集成开发环境CCS
4.2 CCS的主要功能
⑥ 断点工具,能在调试程序的过程中,完成硬 件断点、软件断点和条件断点的设置;

DSP如何构建一个完整的工程

DSP如何构建一个完整的工程
2、库文件:以为后缀的文件,包含了寄存器的地址和对 应标示符的定义,还包含标准运行支持的库函数。
3、源文件:所编写的代码都写在各个源文件中;包含 了所有要实现功能的代码,是工程的核心。
4、文件:分配空间,用来将下载到中的程序进行调试, 是因为编译器编译结果是未定位的,也没有相应系统来 执行代码,系统的配置需求也不尽相同,因此需要定义 代码的存储位置。
(a) {
a*a; }
(1.5)=2.25; (3)=9。
在函数中,并没有指定返 回值的类型,也没有说明 参数a的类型,这是语言 和C语言的区别
例4-2 定义初始化对话框函数
3.根据前面一个完整工程的组成情况的分析,我们首先来准备头文 件。由于头文件多数情况下是不需改动的,也就是说大家用的头 文件都是一样的,因为是定义2812的内部资源,所以可以将文件 夹内的头文件全部复制到文件夹。
4.将文件夹内的文件和文件同样复制到文件夹。
5.下面就剩下源文件了。 我们先来分析一下文件夹下各个源文件的 内容,以便于我们更好的理解和采用这种文件结构。
打开工程之后,工程会显示在左侧窗口内。
点击左边的加号,工程内部的文件就展现在我们面前了 ,下面我们来分析一下构成该工程的文件。 首先我们看 到的是文件夹下面有很多后缀是的文件,这就是2812的 头文件了,头文件的作用是定义了2812内部寄存器的数 据结构。头文件一般情况下不需要修改,如果你需要定 义一些在整个工程内都具有作用域的全局变量的时候, 可以在头文件中定义这些变量,具体的方法我们以后在 例程或项目实践中应该会有介绍。
在筛选框栏内选择“ ”,就会看到2800,点击并打开,便将库文 件添加到工程中来了。
用同样的方法,来添加文件夹下的源文件和文件。只 是添加源文件时,筛选框的条件是“ (*;*;*)”添加文件 时,筛选框的条件应当选择” (*;*)”。

DSP如何构建一个完整的工程

DSP如何构建一个完整的工程

3.根据前面一个完整工程的组成情况的分析,我们首先 来准备头文件。由于头文件多数情况下是不需改动的 ,也就是说大家用的头文件都是一样的,因为是定义 2812的内部资源,所以可以将newproject文件夹内的 头文件全部复制到hellodsp文件夹。
4.将newproject文件夹内的.lib文件和.cmd文件同样复制 到hellodsp文件夹。
GEL while语句
GEL的while语句类似于标准C的while语句, 但是GEL不支持标准C的continue和break语句。 通用格式为:
while(expression) statement
执行while语句时,先计算表达式expression的值。如果 expression的值为真,语句执行,表达式被从新计算。 这里的statement可以是单语句,也可以是括号里的多个 语句。
2.将TMS320F2812例程文件夹中的Gpio文件夹复制到 CCS3.3安装路径下MyProjects文件夹里
打开CCS软件后,打开工程的方式有以下两种:一种是 点击菜单栏的Project—>Open,另一种方法是左侧Files 窗口内,点击“Projects”然后右键,点击 “Open Project”。
然后点击保存,并关闭hellodsp.c文件。 再用我们刚才添加文件的方法将hellodsp.c添加到工程 中来 。
点击工具栏上的“Rebuild All”,对hellodsp.pjt进行编译:
编译结果如图所示,出现了一个warning:
根据warning的提示是用默认的1024bytes来创建.stack section,就是堆栈段。点击菜单栏 的”Project”,”build options”,弹出编译选项的对 话框。选择“Linker”标签,在Stack Size(-stack)栏填 写“800”,点击确定。

如何构建一个完整的工程.

如何构建一个完整的工程.

6 7 8 9
DSP28_GlobalPrototypes.h
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
序号 1 2 3 4 5 DSP28_Adc.h
文件名 DSP28_CpuTimers.h DSP28_DefaultISR.h DSP28_DevEmu.h DSP28_Device.h DSP28_Ecan.h DSP28_Ev.h
主要内容 模数转换(ADC)寄存器的相关定义 32位CPU定时器寄存器的相关定义 F2812默认中断服务程序的定义 F2812硬件仿真寄存器的相关定义 包含所有的头文件、目标CPU类型的选择(F2812或 F2810)、常用标量的定义等内容 增强型CAN寄存器的相关定义 事件管理器(EV)寄存器的定义 全局函数的声明 通用输入输出(Gpio)寄存器相关定义

静态库与动态库的区别(1编译之后供自己或 者他人调用。优点在于编译后的库文件是看不 到源码的,保密性很好,同时也不会因为不小 心修改了函数出问题,便于维护 lib是编译时需要的,而dll是运行时需要的。如果 要完成源代码的编译,有lib就够了。如果要使 动态链接的程序运行起来,有dll就够了。当然, 在开发和调试阶段,最好两者都有。
正确!!
4.1.2 库文件
库文件是以.lib为后缀的文件 Lib即“library”的缩写 CCS中库文件的默认路径为: C:\CCStudio_v3.3\c2000\cgtools\lib\ 库文件不仅包含了寄存器的地址与对应标示符 的定义,还包含了C/C++运行支持库函数,如 系统启动函数_c_int00等。 C28xx相关的库文件有4个:rts2800.lib、 rts2800_eh.lib、 rts2800_ml.lib和 rts2800_ml_eh.lib、

DSP中一个完整工程应包含的文件

DSP中一个完整工程应包含的文件

DSP中⼀个完整⼯程应包含的⽂件
建⽴⼀个完整的⼯程,⾄少要由四个⽂件构成:
(1)以后缀为.cmd结尾的命令⽂件,⽤来分配存储空间。

(2)C语⾔系统库rts2xx.lib。

系统库包括了编译器提供的所有功能:初始化C语⾔环境(⼊⼝地址是_c_int0),设置堆栈,标准C的函数库等。

⼯程中还可以添加其他的库⽂件(.lib)。

(3)有且必须有⼀个含有main()函数的C语⾔源⽂件(.c)。

系统库初始化完毕后,就把控制权交给main()函数。

(4)⽮量跳转表⽂件,通常是汇编⽂件(.asm)形式。

此⽂件需要准确地定位在程序起始地址,其内容是汇编语⾔中的⽆条件跳转语句“B”。

程序执⾏的常规流程为:⽮量表的第⼀条指令可设置为B _c_int0,从⽽在上电复位后,把控制权交给系统库,系统库初始化完毕后,把控制权交给main()函数。

第4章 DSP软件开发过程

第4章 DSP软件开发过程

3.子段


子段(Subsections)是大段中的小段。链接器可以像处 理段一样处理子段。采用子段可以使存储器图更加紧密。 子段的命名句法为: 基段名:子段名 子 段 也 有 两 种 , 用 .sect 命 令 建 立 的 是 已 初 始 化 段 , 用.usect命令建立的是未初始化段。 例:.sect”.text:_func”

连接器的主要任务是根据连接命令或连接命令文 件(.cmd文件),将一个或多个COFF目标文件连 接起来,生成存储器映像文件(.map)和可执行输 出文件(.out)。

自定义段:.sect,.usect
汇编器在汇编的过程中,根据汇编命令将相同段的代码或数据连在一起构 成目标文件;连接器将各个文件的相同段连接起来,并分配存储单元。
图4-3 目标文件中的段与目标存储器的关系
COFF文件中的符号

COFF文件中有一个符号表,用于存储程序中的符 号信息。链接器对符号重定位时使用该表,调试 工具也使用该表来提供符号调试。
1.未初始化段

未初始化段主要用来在存储器中保留空间,通常将它们定位到RAM中。 这些段在目标文件中没有实际内容,只是保留空间而已。程序可以在 运行时利用这些空间建立和存储变量。 未初始化段是通过使用.bss和.usect汇编伪指令建立的,两条伪指令 的句法分别为:
.bss 符号
符号,字数 .usect

1.段定义伪指令
为便于链接器将程序、数据分段定位于指定的 (物理存在的)存储器空间,并将不同的obj文件 链接起来。段的使用非常灵活,但常用以下约定: .text — 此段存放程序代码。 .data — 此段存放初始化了的数据。 .bss — 此段存入未初始化的变量。 .sect '名称' — 定义一个有名段,放初始化了的 数据或程序代码。

DSP的开发环境第四章

DSP的开发环境第四章
DSP的开发环境第四章
TI DSP有那些开发工具?
TI公司为TMS320系统的集成与调试 所提供的工具包括:
软仿真器(Simulator)-------软件仿真器 DSP入门套件(DSK,DSP Starter Kit) 标准评估模块(EVM) 扩展开发系统XDS(eXtended Development System)---------硬件仿真器需软件配合使用 集成开发软件CCS(Code Composer Stdio)
归档器允许用户将一组文件归入一 个档案文件(库)。例如,将若干 个宏归入一个宏库,汇编器将搜索 这个库,并调用源文件中使用的宏。 也可以用归档器将一组目标文件收 入一个目标文件库,连接器将连接 库内的成员,并解决外部引用
DSP的开发环境第四章
交叉引用列表器 (Cross-Reference Lister)
连接器(Linker)
连接器的基本任务是将目标文件 连接在一起,产生可执行模块。连 接器可以接受的输入文件包括汇编 器产生的COFF目标文件、命令文件、 库文件、以及已部分连接好了的文 件。它所产生的可执行COFF目标模 块可以装入各种开发工具,或由 TMS320器件来执行
DSP的开发环境第四章
归档器(Archiver)
DSP的开发环境第四章
通用优化
优化转移/简化控制流 分析程序的转移情况,重新安排操作 顺序,消去转移或多余的条件
在循环中总是计算同样值的表达式, 移到循环外面
DSP的开发环境第四章
通用优化
优化循环相关变量,例如:
为数组元素设置下标的代码改为指 针增量的代码; 用计数器控制的循环写成块循环, 或使用高效的增/减量转移指令
DSP的开发环境第四章
软仿真器的性能在主机上执行 Nhomakorabea户的DSP程序

轻松学会DSP——第4章-TMS320C54x软件开发

轻松学会DSP——第4章-TMS320C54x软件开发

汇编器对段的处理
2.2.已初始化段 已初始化段包含可执行代码或已初始化数据。
这些段的内容存储在目标文件中,加载程序 时再放到TMS320C54X存储器中。三个用于 建立初始化段的伪指令句法分别为: .text [段起点] .data [段起点] .sect “段名”[,段起点]
汇编器对段的处理
件为真时要汇编代码块。 .else — 标志若.if条件为假时要汇编代码块。 .endif — 标志条件块的结束,并终止该条件代码块。
汇编伪指令
3.引用其他文件 .include '文件名' — 将指定文件复制到当前位置,其
内容可以是程序、数据、符号定义等。 .copy '文件名' — 与.include类似。 .def 符号名 — 在当前文件中定义一个符号,可以被
归档器
Option:归档器工作 -q :不显示状态栏及相关信息; -s :打印全局变量;
Libname: 库文件名 Filename:目标文件
Ar500 -a function sine.obj cos.obj flt.obj
3 、连接器
lnk500 [ -options] filename 1 . ... filename n -e global_symbol:定义程序的进入点; -c:使用C编译器的ROM初始化模式; -cr:使用C编译器的RAM初始化模式; -i dir:指定库文件的路径; -l filename:指定连接时使用的库文件名; -m filename:生成map文件; -o filename:指定生成的out文件名。系统缺省
链接器对段的处理有两个功能。首先,它将 汇编器产生的COFF目标文件(.obj文件)中 的各种段作为输入段,当有多个文件进行链 接时,它将输入段组合起来,在可执行的 COFF输出模块中建立各个输出段。其次,链 接器为输出段选择存储器地址。

第四章 DSP软件设计及应用PPT课件

第四章  DSP软件设计及应用PPT课件
元的缓冲区,存放最新的N个样本x(n); (2)滤波时从最老的样本开始,每读一个样本后,将此样
本向下移位, x(n-i) 变成x(n-i-1) ; (3)读完最后一个样本后,输入最新样本x(n+1)至缓冲
区的顶部。 以上过程,可以用N=6的线性缓冲区示意图来说明,如图
4-1所示:
h[0] h[1]
y(n) x(n) x(n-1)
x(hn[-12] )
x(n-3)
x(n-4)
存储器
COEF
h[Na5-1]
a4
a3
a2
ha[11]
a0
线性缓冲区实现FIR:
x AR1
h[N-1]
y(n) x(n)
x(n-1)
x(hn[-12] )
x(n-3)
x(n-4)
存储器
COEF
h[Na5-1]
a4
a3
a2
存储器
AR1
h[N-1]
y(n)
x(n+1)
x(n) x(n-1)
x(hn[-12] )
x(n-3)
x(n-4)
x COEF
h[Na5-1]
a4
a3
a2
ha[11] a0
线性缓冲区实现FIR代码
.bss x,6
.text
PA0 .set 0
_c_int00:
PA1 .set 1
SSBX
.data
STM
图4-2说明了使用循环寻址实现FIR滤波器的方法。
ARx
y(n)
y(n+1)
y(n+2
图4-2 FIR滤波器循环缓冲区存储器图
FIR滤波器设计举例

第4章 汇编语言程序开发工具DSP教案

第4章 汇编语言程序开发工具DSP教案
格式: .usect “段名”,字数 段名---程序员为自定义未初始化段定义的名字。

由.text、.data和.sect命令生成已初始化段。 包含可执行代码或初始化数据,通常定位到RAM区。 段中的内容都在目标文件中,当程序载入处理器后再放
到C54x的存储器中。

伪指令语法格式 .text [段起点] .data [段起点] .sect “段名” [,段起点]

一个程序可以由几个不同的段组成,一个段又可以划分
为子段,以提高存储器利用率。
注:如果没有使用任何段伪指令,在默认的情况下,汇编器把
程序中所有内容都汇编到.text段。

未初始化段分为默认和命名两种,分别由汇编器伪指令.bss
和.usect产生。

未初始化段是在C54x存储器中保留空间,通常定位到RAM区。 在目标文件中,这些段中没有确切的内容。 由这些段定义的空间仅作为临时存储空间,程序运行时,可 以实时使用这些存储空间创建和保存变量。
;3组数据放入.data段 ;在.bss段保留8个单元
;0456h放入.data段
;初始化文本段 ;1字指令
;2字指令
;2字指令
共计5个字
;初始化数据段 ;3组数据放入.data段
var2
inbuf
.usect “newvars”,2 ;建立newvars命名段,保留2个单元
.usect “newvars”,8 ;在newvars段保留8个单元 .text
第四章 汇语言程序的开发工具
主要内容

C54X软件开发过程


汇编语言程序的编辑、汇编和链接过程
COFF的一般概念


源程序的汇编

DSP第四章-DSP程序流程控制PPT课件

DSP第四章-DSP程序流程控制PPT课件

第四章 程序流程控制
▪ DSP中断矢量指针(IVPD) 指向包含DSP中断矢量的256字节的程序页,DSP中断矢量序号 是0~15,24~31,这些矢量可以被映射到只分配给DSP的存储 空间。 ▪ 主机中断矢量指针(IVPH) 指向包含主机中断矢量的256字节的程序页。主机中断矢量序号 是16~23,这些矢量可以被映射到分配给DSP和主机共享的存储 空间。 ▪ 若IVPD和IVPH内容相同,则32个中断矢量均位于相同的256字 节程序页中。
第四章 程序流程控制
特点:
(1)由于BRC0或BRC1是16比特计数器,所以最大重复次数是 64k,在初始化块重复计数器时,其值应为实际重复次数减1。 (2)一个循环体内的最小执行周期为2个机器周期。
RPTBLOCAL和RPTB区别
RPTBLOCAL被定义为指令缓冲队列(IBQ)的本地循环,即直接 从IBQ中获取循环体指令,这样可以减少功率消耗,但是循环 体指令的字数不能超过56个字节。 当循环体指令超过56个字节时,使用RPTB块循环。
第四章 程序流程控制
程序流程:指的是指令的执行顺序。 C55x中影响指令执行顺序的主要有: ▪ 程序跳转(分支) ▪ 指令重复执行 ▪ 条件执行 ▪ 中断 ▪ 程序调用 程序的流程控制主要与指令缓冲单元(I单元)和程序流程单元(P 单元)有关。
第四章 程序流程控制
P单元产生24位的程序地址,并放到PAB总线上。 I单元的IBQ从32位的程序总线读取32比特的指令代码。 译码器从IBQ中读取48比特的指令进行译码,将指令和立即数 分派到相应的单元执行。
指向相关中断服务程序的中断矢量。书中表4-2。
nop
.
多个中断同时发生时,CPU按照事先定义的优先级进行处理. 。

教你构建一个完整的DSP工程(ccs3.3)

教你构建一个完整的DSP工程(ccs3.3)

手把手教你构建一个完整的工程注意:在构建工程之前请先把仿真器正确连接好试验箱和计算机,接通试验箱电源。

1、双击图标,进入CCS环境。

2、打开CCS选择projec t→New3、在弹出的对话框中点击下图红色圆圈中的按钮,选择工程合适的位置。

注意:路径中不要有中文。

选择好工程需要建立的位置后,点击确定。

4、在弹出的对话框中,输入工程的名字。

例如,test。

5、点击Finish。

出现下图对话框,红圈内为添加的工程,点击工程名前面的加号,出现下图。

6、打开CCS选择Fil e→New→Source File 命令。

7、点击保存按钮。

8、输入文件的名字,点击保存。

注意:C源程序的后缀名应为.c;汇编程序的后缀名为.asm;CMD文件的后缀名为.cmd。

例如:test.c9、如下图所示,单击右键,将test.c添加到工程中。

10、选中test.c,点击打开。

11、如下图所示,即可在test.c文件中输入编写的C程序了。

注意随时保存自己编写的源文件。

12、重复上述6—11步,添加cmd文件。

13、同样的方法将rts.lib 添加到工程中。

rts.lib在C:\CCStudio_v3.3\C5400\cgtools\lib目录下。

■设置编译和连接选项1、点击Project 选择Build Opintions;2、在弹出的对话框中设置相应的编译参数,一般情况下,按默认值就可以。

3、在弹出的对话框中选择连接的参数设置,Heap Size:1000;Stack Size:1000;点击确定结束设置。

4、点击Projec t→Build命令,对工程进行编译,如正确则生成out文件。

5、点击Fil e→load program ,在弹出的对话框中载入debug文件夹下的.out可知性文件。

6、装载完毕。

7、点击debu g→Go Main回到C程序的入口。

自此,一个工程从建立到运行所有的过程介绍完毕,关于汇编工程的建立和C源程序工程的建立大同小异,请同学们自行设置。

DSP(第4章).

DSP(第4章).
字母或数字字符(A~Z,a~z, 0~9,-和$)。对大小写敏感,且起始字符不允许是数字 0~ 9。 标号值是SPC的当前值,当它单独出现在某行中时,它指向下 一行指令的SPC。 Mnemonic,助记符域,可能是机器指令、汇编伪指令、宏伪指令 等。一般跟在标号域 之后,若无标号域,该域前必须加空格。 Operand list,操作数列表域,可能是常量、符号或表达式。多个 操作数之间用逗号 (,)分隔。 Comment,注释域,可选。注释域前必须是分号(;)。
4.4 代码生成工具
归档器(archiver)
• 功能 把几个单独的文件组合到被称作档案或库的单个文件中。归档器内的每 个文件被称作一个成员(member)。允许通过删除、替代、提取或增加 文件来调整库。归档器最有用的应用之一是建立目标文件库。
• 归档器的调用 dspar[-] command [-option] libname [filename1 … filenamen] 【说明】 command 归档器命令,确定以何种方式处理库成员。
具体功能: ✓组合块 ✓定义一个与目标系统存储器一致的存储模块 ✓给各块分配存储器 ✓在目标系统存储器内,重定位符号及相关引用块 ✓定义或重新定义全局变量,赋予它们特定的值 ✓解具
4.4 代码生成工具
链接器(linker)
链接器有两个与块有关的功能: (1)建立输出out文件时,链接器要使用obj目标文件中的段,合并输入段 (2)为输出段选择存储器地址.
第四章 DSP的开发环境及工具
4.4 代码生成工具
缺省定位算法例子:
链接器(linker)
第四章 DSP的开发环境及工具
4.4 代码生成工具
链接器(linker)
用MEMORY和SECTIONS 命令分配存储器

DSP第4章程序开发

DSP第4章程序开发
第四章 DSP软件开发
软件开发过程
一个DSP软件可以使用汇编或C语言编写源 程序,通过编译、连接工具产生DSP的执行 代码。
在调试阶段,可以利用软仿真〔Simalator〕 在计算机上运行;也可以利用硬件调试工 具〔xps510〕将代码下载到DSP中,并通过 计算机监控、调试该程序。当调试完成后, 可以将程序代码固化到EPROM中,以便 DSP目标系统脱离计算机单独运行。
4.文档管理器(Archiver):将一组文件(包括 源文件或目标文件)集中归入一个文档文件 库。
利用文档管理器,可以方便地替换、添 加、删除和提取文件来调整库,其最有用 的应用之一是建立目标文件库,C编译器自 带有目标文件库。汇编时,可以搜索宏文 件库,并通过源文件中的宏命令来调用。
例如:将如果干宏归入一个宏库,汇编 器搜索这个库,并调用源文件中使用的宏。
代码生成工具:
1.C编译器(C Compiler):将C源程 序代码编译成为C54x汇编语言 源代码程序。
在编译软件包中包括一个 外壳程序(Shell program)、一个 优化器(Optimizer)和一个内部列 表公用程序(Interlist utility)。其 中,外壳程序能自动编译、汇编、
每个域必须由一个或多个空格来分 开。制表符等同于空格。
注释是可选项。开始于第一列的注
[标号][:] 空格 [助记符] 空格 [操作数] 空格 [;注释]
要点 建议
可以是助记符指令、汇编指令、宏 指令和宏调用命令。
1.助记符指令,一般用大写; 2.汇编命令和宏命令,以句号“. 〞 开始,且为通常用小写。
5. 助 记 符 到 代 数 式 指 令 翻 译 器 (Mnemonicto-algbraic translator utility):将包含助记 符指令的汇编语言源文件转换成包含代 数指令的汇编语言源文件。

手把手教你DSP课件解读

手把手教你DSP课件解读

第5章CCS3.3的常用操作
5.1了解CCS3.3的布局和结构
5.2编辑代码时的常用操作
5.3编辑完成后常用的操作
5.4调试时常用的操作
5.2.1创建新的工程 5.2.2打开已存在的工程 5.2.3新建一个文件 5.2.4向工程添加文件 5.2.5移除工程中的文件 5.2.6给工程添加库文件 5.2.7查找变量 5.2.8替换变量 5.2.9查看源码
13.6.1ADC校正的原理 13.6.2ADC校正的措施 13.6.3手把手教你写ADC校正的软件算法
第14章串行通信接口SCI
14.1SCI模块的概述 14.2SCI模块的工作原理 14.3SCI多处理器通信模式 14.4SCI模块的寄存器 14.5手把手教你写SCI发送
和接收程序
14.1.1SCI模块的特点 14.1.2SCI模块信号总结
特别适合于数字信号处理运算 单片机,ARM,FPGA 哈佛结构,程序空间和数据空间分开,CPU可以同时访问指令和
数据; 在一个指令周期内可以完成一次乘法和一次加法运算; 片内具有快速RAM,通常可以通过独立的数据总线在程序空间和
数据空间同时访问; 具有低开销或无开销循环及跳转的硬件支持; 具有快速的中断处理和硬件I/O支持; 可以并行执行多个操作; 支持流水线操作,使得取址、译码和执行等操作可以重叠执行。
第16章增强型控制器局域网通信接口eCAN
16.1CAN总线的概述 16.2CAN2.0B协议 16.3X281xeCAN模块的概述 16.4X281xeCAN模块的寄存器 16.5X281xeCAN模块的配置 16.6eCAN模块的中断 16.7手把手教你实现CAN通信
16.1.1什么是CAN 16.1.2CAN是怎样发展起来的 16.1.3CAN是怎样工作的 16.1.4CAN有哪些特点 16.1.5什么是标准格式CAN和扩展格 式CAN

第六讲--如何构建一个完整的DSP文件

第六讲--如何构建一个完整的DSP文件
软件;
2.将TMS320F2812例程中的4.1文件夹中的Gpio文件夹复制到 CCS3.3安装路径下MyProjects文件夹里
怎样创建一个新的完整的DSP工程
打开CCS软件后,打开工程的方式有以下两种:
怎样创建一个新的完整的DSP工程
仔细分析下组成这个工程的 各类文件
头文件是后缀名是.h的文件 头文件一般不需要修改, 因为定义了F2812内部寄存器 的数据结构
了函数出问题,无法看到lib文件夹下这些库文件中的内容。
怎样创建一个新的完整的DSP工程中的库文件
静态库文件(lib)和动态库文件(dll)的区别: 1.lib是编译时需要,而dll是运行时需要的;要完成源代码的 编译,有lib就够了,要使用动态链接的程序运行起来,有dll 就够了。 2.如果既有lib文件又有dll文件,lib文件做索引信息,具体实 现在dll文件中;如果只有lib文件,索引和实现都在其中。静 态编译的lib文件优点是不需要动态库,缺点是导致应用程序 比较大,从而失去动态库的灵活性。
怎样创建一个整的DSP工程中的头文件
在创建新工程时,通常将F2812中的头文件和新建工程文件 放在同一个文件夹内,在需要使用到头文件的源文件内加入 代码“#inclde"DSP28-Device.h"”,工程编译时,CCS会自 动扫描并将所有相关的头文件添加进工程中。 当仅仅添加了DSP28-Device.h,能够把所有头文件都扫描进 来,因为DSP28-Device.h中一段代码已经包含了其他头文件
怎样创建一个新的完整的DSP工程的头文件
DSP开发会遇到需要定义一些变量能够在整个工程中使用,也就 是作用域在整个工程的全局变量,这些变量先在某个头文件中进 行定义,然后再源文件中声明。 正确添加一个名为DSP_GlobalVariable.h的头文件的方法是: 1.将DSP_GlobalVariable.h和其他头文件放在相同的路径下; 2.在DSP_Device.h中加入语 句”#include“DSP_GlobalVariable.h””; 3.编译工程时,CCS会自动将DSP_GlobalVariable.h添加到工程中。

第四章 DSP软件开发过程.pdf

第四章 DSP软件开发过程.pdf

宏指 令与 子程 序的 异同
宏定义的格式 macname .macro[parameter 1][,…,parameter n] 助记符指令与宏指令 [.mexit] .endm 宏调用的格式 [label][:]macname [parameter1][,…,parametern]
14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 1 1 1 1
15பைடு நூலகம்
abc,def,ghi,adr abc,def,ghi,adr
000000 000000 000001 000002 000003 1000! 0000! 0000! 8000!
add3
LD abc,A ADD def,A ADD ghi,A STL A,adr
第二节
汇编语言程序的汇编
汇编命令 助记符指令 宏命令
LABEL INT0 ISR2 proc
VALUE 0002+ REF REF
DEFN 19
REF 1 3 4
21 28
21
交叉引用清单中符号的属性
REF :外部引用(.global) UNDF:未曾定义过 ’ :在.text段定义的符号。 ” :在.data段定义的符号。 + :在.sect段定义的符号。 :在.bss或.usect段定义的符号。
5
要 点
1.标号必须从第1列写起。 2.标号最多可达32个字符,可以是A~Z,a~z,0~ 9,_,以及$,但标号的第1个字符不能是数字。 3.引用标号时,标号的大小写必须一致。 4.标号的值就是段程序计数器SPC的值。 5.如果不用标号,则第一个字母必须为空格、分号 或星号(*)。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
库文件是以.lib为后缀的文件 Lib即“library”的缩写 CCS中库文件的默认路径为: C:\ccsv6\tools\compiler\c2000_6.2.7\lib\ 库文件不仅包含了寄存器的地址与对应
标示符的定义,还包含了C/C++运行支 持库函数,如系统启动函数_c_int00等。
GEL文件
GEL函数库
StartUp()
7个回 调函数
OnTargetConnect( )
6个存储器 映射函数
OnPreFileLoaded(
)
OnFileLoaded()ev合md众m达64自37带.gel
OnReset()
文件中用到的
OnRestart()
GEL函数
OnHalt()
6个其他函数
DSP28_Device.h
DSP28_Ecan.h DSP28_Ev.h DSP28_GlobalPrototypes.h
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
静态库与动态库的区别(1)
lib是编译时需要的,而dll是运行时需要 的。如果要完成源代码的编译,有lib就 够了。如果要使动态链接的程序运行起 来,有dll就够了。当然,在开发和调试 阶段,最好两者都有。
静态库与动态库的区别(2)
一般的动态库程序有lib文件和dll文件。lib文 件是必须在编译期就连接到应用程序中的, 而dll文件是运行期才会被调用的。如果有dll 文件,那么对应的lib文件一般是一些索引信 息,具体的实现在dll文件中。如果只有lib文 件,那么这个lib文件是静态编译出来的,索 引和实现都在其中。静态编译的lib文件优点 是给用户安装时就不需要再挂动态库了。但 也有缺点,就是导致应用程序比较大,而且 失去了动态库的灵活性,在版本升级时,同 时要发布新的应用程序才行。
4.1.3 源文件
源文件是以.c为后缀的文件 C即为“source”的缩写 源文件是整个工程的核心,包含了所有
需要实现的功能的代码
F2812常用的源文件
序号 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
主要内容 AD初始化函数 CPU定时器初始化函数 增强型Can初始化函数 事件管理器Ev初始化函数 通用I/O模块初始化函数 多通道缓冲串行口初始化函数 串行通信接口初始化函数 串行外围接口初始化函数 系统控制模块初始化函数 外部接口初始化函数 外部中断初始化函数 包含了其他的外设初始化函数 PIE控制模块初始化函数 对PIE中断向量进行初始化 包含了F2812所有外设中断函数 定义了F2812的全局变量和数据段程序
CMD文件
CMD文件的作用是为代码和数据分配存 储空间
CMD文件有两种: 一种是分配RAM空间,用于将程序下载到
RAM空间 一种是分配FLASH空间,用于将程序固化
到FLASH空间
4.2 通用扩展语言GEL
GEL是General Extended Language的缩 写,即通用扩展语言,是一种类似于C的 解释性语言。用户可以通过在文件中使 用GEL语言来创建函数,从而扩展CCS的 功能。通过GEL,可以访问目标板的存储 器,并为CCS的GEL菜单添加选项。
静态库与动态库的区别(3)
在动态库的情况下,有两个文件,一个是引入 库(.lib)文件,一个是dll文件,引入库文件包 含被dll导出的函数的名称和位置,dll包含实际 的函数和数据,应用程序使用lib文件链接到所 需要使用的dll文件,库中的函数和数据并不复 制到可执行文件中,因此在应用程序的可执行 文件中,存放的不是被调用的函数代码,而是 dll中所要调用的函数的内存地址,这样当一个 或多个应用程序运行时再把程序代码和被调用 的函数代码链接起来,从而节省了内存资源。
GEL_MapAdd() GEL_MapAddStr() GEL_MapDelete() GEL_MapOn() GEL_MapOff() GEL_MapReset()
C27x_E1_memory_map C27x_E3_memory_map GEL_OpenWindow GEL_CloseWindow GEL_TargetTextOut GEL_TextOut
第4章 如何构建一个完整的工程
4.1 一个完整的工程由哪些文件构成
头文件 库文件 源文件 CMD文件
4.1.1头文件
头文件是以.h为后缀的文件。 h即为“head”的缩写。
序号 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
GEL文件到底需不需要加载?
GEL的作用在于扩展CCS Studio的功能,可以用gel 来调用一些菜单命令,对DSP的存储器进行初始化配置 等,但不是必需的。当希望上电后立刻开启或实现某些 功能,那么可以在项目中装载GEL文件(由TI提供或用 户自行编写)来实现这个目的。但是建议对于使用仿真 器和DSP功能板的仿真环境用户来说,这种GEL语言文 件是没必要加入到配置中的。gel语言的重要性在于针 对计算机模拟环境的用户,使用gel可以为其准备一个 虚拟的DSP仿真环境,但也不是非用不可的。”
4.2.1 GEL语法
GEL语法支持的语句类型
序号
GEL语法支持的语句
1 GEL函数,包括函数的定义、参数、调用
2 Return语句
3 If-else语句
4 While语句
5 GEL注释语句
6 预处理语句
GEL是一个大小写敏感但缺少类型检测的解释性语言, 只有int类型,在语法上可看作是C语言的一个子集。
通用输入输出(Gpio)寄存器相关定义
多通道缓冲串行口(McBsp)寄存器相关定义
PIE控制寄存器的相关定义 PIE中断向量表的定义 串行通信接口(SCI)寄存器的相关定义
串行外围设备接口(SPI)寄存器的相关定义
系统控制寄存器的相关定义 外部接口寄存器的相关定义 外部中断寄存器的相关定义
4.1.2 库文件
主要内容 模数转换(ADC)寄存器的相关定义 32位CPU定时器寄存器的相关定义 F2812默认中断服务程序的定义 F2812硬件仿真寄存器的相关定义 包含所有的头文件、目标CPU类型的选择(F2812或F2810)、常用标量的
定义等内容
增强型CAN寄存器的相关定义 事件管理器(EV)寄存器的定义 全局函数的声明
相关文档
最新文档