生成库工程
工程从属工具使你能够操作和编译更加复杂的工程。工程从属能够将一个大工程分割成多个小工
程,然后使用这些工程从属创建最终的工程。子工程通常首先编译,因为主工程依靠这些子工程。
1 创建工程从属(子工程)
有三种方法创建一个工程从属关系或子工程。
(1)、从工程视窗中拖拽。将子工程放入目标工程中的目标工程图标上或者从属工程图标(dependent
projects icon)上。你可以在同一个工程视图窗口中拖拽,或者也可以在两个同 时运行的 CCS 中
的工程视图窗口之间进行拖拽。
(2)、从资源管理器中拖拽。
1) 打开 CCS 中的主工程。
2) 打开资源管理器。资源管理器和 CCS 必须同时打开。
3) 在 Windows 的资源管理器中,选择子工程的.pjt 文件。
4) 将这个.pjt 文件拖到 CCS 的工程窗口中,在移动的.pjt 文件之前将显示一个加号。
5) 将工程从属放入主工程文件夹中。
(3)、使用上下文菜单(the context menu)。在工程视图中,在一个下载后的工程中,右击工程从属图标。
选择从上下文中,加入工程从属。在对话框中,浏览选择另一个工程的.pjt文件。这个被选的.pjt 文件
将成为一个下载工程的子工程。如果被选择的.pjt 文件还没有下载,将会自动下载。
2 工程从属关系设置
每个子工程都有分别的配置。另外,主工程针对每个子工程都有配置设置。所有这些设置都可以工
程从属对话框中看到。打开这个对话框,可以从工程菜单中或者工程目录中选择工程从属。
3 修改工程配置
在Project Dependencies对话框中,可以修改子工程设置。前面提到,这个对话框可以通过
Project→Project Dependencies进行访问。
你可以选择从你的配置中去掉某个子工程。在例子中,Sinewave.pjt 的配置文件,
在编译中去掉了 zlib.pjt 文件。另外,还可以为这个配置选择特定的子工程配置。
在 MyConfig 中,test.pjt 使用 Debug 配置编译而不是默认的 MyConfig 子工程配置。
4 子工程配置
各个子工程分别有构建配置。对于每个主工程配置,你可以选择使用一个特定的配置编译每个子工
程。使用工程(设置列下方)旁边的对话框,可以修改子工程配置。
CCS IDE支持使用外部makefiles (*.mak),以及与之相关的外部编译设备和编译过程选择。与项目
管理和用户程序创建有效的外部Make
使CCS IDE 能够使用编译文件编译一个程序,CCS工程必须包含一个编译文件,在CCS工程中
加入一个编译文件之后,工程和其内容会显示在工程视图窗口中。选择Project→Build和Project→Rebuild
所有指令可以用于编译所有程序。
1、在工程视图窗口中,双击编译文件,打开文件编辑。
2、修改编译文件指令和选项。
特定的对话框可以修改编译文件指令和选项。在编译文件工作时,正常的CCS编译对话框不能使
用。可以创建多个配置,每个配置有自己的编译指令和选项。
注意:
限制和约束:在工程视图中可以加入和移除源文件。但是,在工程视图中的修改不能改变编译文件
的内容,这些源文件不影响编译过程,也不在编译文件的内容中反映。同样地,编辑编译文件也不改
变工程视图的内容。加入文件视图的,针对源文件的文件指定(file-specific)选项不起作用。
Project.Compile File指令也不起作用。但是,当工程保存后,当前的工程视图状态也会保存。
注意:
在通过CCS IDE 指令使用编译文件编译程序之前,要设置必要的环境变量。运行宏文件DosRun.bat
可以设置环境变量。这个宏文件在C:\CCStudio_v3.1.如果你将CCS IDE 安装在其它路经之下,这个宏
文件将在指定的路径下。
工程管理器可以将你的工程连接到各种源文件控制提供者(source control providers)。CCS IDE自动
探测任何安装的可以识别的源控制提供者。
1、从 Project 菜单中,选择源控制(source control)。
2、从Source Control子菜单中单击选择提供者Select Provider。
3、选择你想使用的源提供者(Source Control Provider),单击确定。如果在下拉菜单中没有源提供者,
请确保你为提供者正确安装了客户端软件。
4、打开工程,选择 Project→Source Control 加入源控制。
5、在源控制中加入源文件。
6、可以在工程视图窗口中选择文件来加入或者移出源控制。在文件图标上右击,可以确定源文件连接
到源控制上。
查看和编辑代码 (Viewing and Editing Code)
在工程查看中双击文件名,在 IDE 窗口中会显示源代码
. 边白选择(Selection margin) 默认情况下,边白选择标识显示在集成编辑器和反汇编窗口的左边。
边白选择标识的彩色图标表示在这个位置设置了一个断点(红)或者探测点(蓝)。黄色箭头确定了程
序计数器(PC)的位置。可以通过拖动分割线来调整页边空白选择的大小。
. 关键词(Keywords) 集成编辑器的特点是突显关键词。关键词,注释,字符串,汇编指令,GEL
命令都被用不同的颜色突显出来。另外,还可以自己创建或者设
置一套关键词并保存在关键词文档里(*.kwd)。
. 快捷键(Keyboard shortcuts) 任何可以从文档窗口被调用的编辑命令或者调试命令,它们的默
认快捷键都可被修改以及重新创建。在选项菜单里的自定义对话框中可以对快捷键的进行修改。
. 书签(Bookmarks)可以在任一源文件的任一行设置书签来查询和维护关键位置。
IDE的文本编辑器(又叫CodeWright)允许用户自定义代码格式和特性。Option→Editor菜单中有
语言,色度编码(ChromaCoding)体系和查看设置等附加选项。
. 语言用户可以将一套特性关联到一种文件类型(例如.cpp , .awk等等)。注意到,
Option→Editor→Language下的文件类型列表与色度编码的列表是不同的。默认情况下,许多文件类型
是关联到相应的词法分析的(例如,.h文件关联到C语法)。一些文件类型则没有对应的词法分析。
. 色度编码体系(ChromaCoding Lexers) 一个色度编码体系存储了一些设置来改变程序设计语言
词汇中不同成分的颜色。这些词汇包括标识符,大括号,预处理程序,关键词,算符,字符串以及注
释。CodeWright 文本编辑器提供了以配置的大约 20 种特殊语言体系可以使用,包括几个适合 CCS
IDE 的特殊词法体系(例如,GEL,CCS,C,DSP/BIOS 等等)。用户还可以在任意色度编码体系的
对话框的右边点击新建或者保存按钮来创建新的编码体系。
. 查看设置 定义了更多的适用于所有程序语言的一般特性,例如指定在所有语言中的所注释都
是蓝色字体。但是,对于文本编辑器,词法分析定义了在注释前后所使用的分隔符。
文本编辑器包括了几种处理文本的附加功能。
. 区别和合并(Differencing and merging) 用户可使用区别功能(File Differencebetween files)来比
较两个相似文件的不同并显示出来。合并功能((File Merge Files)可以合并多文件。
. 标准表达式的维持(Support for regular expressions) 选择 Edit—>Find in Files or Edit—>Replace in
Files。除了一般的查找和替换功能,文本编辑器进行更为复杂的文本处理时,可使用正则表达式。例如,
用户可在特定的目录中进行一个全局的替换。用户还可以使用已保存的查找结果,使用帮助下拉窗口
(见下)可以使用户轻松建立标准表达式。
. 选择性隐藏与显示代码选择性显示可根据选择参数确定某些种类的代码显示或隐藏。例如,用户
可指定编辑器使用选择性显示功能来扩展和压缩某些种类的代码。或者可以通过选择适当的选项来隐
藏所有的函数定义或预处理指令。当完成上述操作后,就会在页边空白出显示一个小图标,表示代码
被隐藏了。点击图标可显示详细的代码。
文本编辑器能够定时的保存工作中的文件,以免由于系统崩溃造成的作业损失。选择
Option→Editor→Properties→Backup,勾上复选框,则可使用自动保存功能。用户还可以选择保存的时
间间隙以及指定备份文件的文件名和位置。除非另外指定了备份文件,在覆盖旧的备份文件时CCStudio
会给出提示。
CodeWright 文本编辑器使用了一种自动完成引擎,称之为 CodeSense。当工具提示或自动完成功能
激活时,在当前代码行的下面会出现一个图标,显示了 C,C++和 Java 代码的符号,函数参数和工具
提示。工具提示也可用在变量查看中。
CodeSense 只适用与某些文件类型并且 CodeSense DLL 要被激活。
激活 CodeSense 的步骤:
1. 选择Option→Editor→Language→CodeSense。
2. 在左边的框中,选择正在工作的文件类型。
3. 确定CodeSense DLL在文件类型选择框的右边是激活的。(如果CodeSense不支持某种文件类型,
复选框是不能选择的)。在激活 CodeSense DLL 后,CodeSense 可用于:
. 列出与正在键入的符号有关的符号(函数,结构体,宏,成员等等)。
. 从上下文列表中插入符号到当前文件。
. 在列表中使用被选择符号的 Goto 按钮进入到该符号的定义中去。(Goto 按钮的相应快捷键是
Ctrl+G)
. 得到正在键入的函数的所需参数的工具提示列表。
. 当悬停在工具提示上时可自动显示符号的定义,或者当按下 Ctrl 或 Shift 时显示(取
决与 CodeSense 的设置)。CodeSense 的补词功能可帮助用户完成正在键入的符号。一旦用户输入了字
符,可通过下述步骤来使用该功能:
1. 同时按下Ctrl 与空格键调出对应上下文的符号的列表框来选择。这些符号都是以已经键入的字符
开头的,右手边的柱状物是各个符号的定义。
2. 在列表中选择适当的符号。按下已选符号对应的图标(Goto 按钮),在库文件源代
码里显示符号的定义。用 Ctrl-G 也可以查看已选符号的定义。
3. 在下拉列表显示时按下回车键,所选符号就被完整的自动键入到文件中了。
使用外部编辑器 (Using an External Editor)
注意,默认情况下,Ctrl +空格键,被输入法占据了,注意修改。否则没有提示功能。
CCS IDE 支持使用外部文本编辑器来取代默认的集成编辑器。在配置好并激活一个外部编辑器后,
只要新建一个空白文件或是打开一个已有文件就可使用。外部编辑器只能编辑文件,而调试程序还是
要使用集成编辑器。可在 Option→Editor→Properties dialog 选择外部编辑器来进行配置。常用的外部
编辑器有,UltraEdit, SourceInsight 等。
1 代码开发流程 (Code Development Flow)
代码生成工具包括一个 C/C++优化编译器、一个汇编器、一个连接器以及其它各种工具。下图显示
了如何在代码生成工具以及在其它工具的配合下生成代码。
2 工程创建选项 (Project Build Options)
工程创建选项是为使用代码生成工具提供的一个图形接口。一个 CCS 工程记录了一个目标程序或
者目标库创建的所有必要信息。一个工程主要记录了以下几方面:
. 源代码和目标库的文件名
. 编译器、汇编器、连接器选项
. 包含了文件从属性
当你建立了一个工程,CCS 会调用适当的代码生成工具去编译、汇编、连接程序。创建选项对话
框详细列出了编译器、汇编器、连接器选项。这些选项的对话框列出了几乎所有的命令行选项。每一
个选项并不意味着可以直接在顶部的可编辑文本框中直接写入,任何一个选项每一个目标配置有一个
明确的设备设置选项。你可以通过阅读编译器指南或者汇编指南对你的目标寻求更多的信息。
你可以在这选择在编译过程中要使用的编译器和连接器。
你的创建选项可以被设置为两个不同的层次,这取决于它需要的配置和使用频率。首先,你可以定
义一个工程层次选项的设置,并把这种设置应用于工程中所有的文件。然后,你可以为各自的源代码
文件定义文件细节层次的选项,以用来优化你的程序。
注意:因为很多选项一般都一起使用,所以你可以设置工程层次的配置,而不是反复的对各个选项
进行同样的设置。你也可以通过在线帮助和指南寻求更多的信息。
设置工程层次的创建选项
. 选择 Project→Build 选项
. 在创建选项对话框中,选择适当的标签
. 选择当你编译你程序时要使用的选项
. 点击 OK 确认选择
设置文件-细节(File-Specific)选项
1.在该项目的视窗右击源文件名,然后从上下文菜单中选择具体文件选项
2.选择编译该文件时需要使用的选项,这将有别于工程级别的编译连接选项
3.点击 ok 来确认您的选择
4.所有变化只适用于选中的文件
C和C++编译器(用于C5000. 和 C6000.)是全功能的优化编译器,能将标准的ANSI C程序转
变为汇编语言。以下几部分描述编译器的主要特征。
与CCS集成开发环境的界面连接
以下特性允许用户与编译器进行接口连接
. 编译器外壳程序(Compiler shell program)。编译器工具包含一个外壳程序, 它可以用来编译,
汇编优化,汇编,而且连接程序只需单步。如需详细资讯,请参阅附合您配置的优化编译器用户指南
的外壳程序部分。
. 灵活的汇编语言界面(Flexible assembly language interface)。编译器具有直接的调用规定,所以您
可以直接输入汇编语言或C语言来相互调用。如需详细资讯,请参阅附合您配置的优化编译器用户指
南的实时环境部分。
汇编语言开发工具 (Assembly Language Development Tools)
以下是汇编语言开发工具的列表
. 汇编程序汇编程序将汇编语言源文件转换成机器语言目标文件。机器语言是建立在通用目标文件
格式(COFF)的基础上的。
. 记录(Archiver) 记录允许您收集一组文件变成单个的记录文件,称作一个库。另外,记录允许
您通过删除、替代、提取或增加成员来修改库。记录的其中一条最有用的应用是建立目标模块的库。
. 连接器(Linker) 连接器将目标文件转变成单个的可执行的目标模块,当它创建了可执行模块,
它就执行再定位并解决了外部引用。连接器允许(relocatable)COFF目标文件和目标库作为输入。
. 绝对列表器 (Absolute lister) 绝对列表器允许连接的目标文件作为输入并建立.abs文件作为输
出。您可以安装这些.abs文件来生成包含绝对地址而不是相对地址的列表。如果没有绝对列表器,生成
这样一个列表需要很多手工操作。
. 相互参照列表器 (Cross-reference liser) 相互参照列表器使用目标文件来创建一个相互参照清
单,在连接的源文件中显示它们的标志、定义和索引。
. 十六进制转换实用程序 (Hex-conversion utility ) 十六进制转换实用程序将COFF目标文件转换
成TI-Tagged、ASCII-hex、Intel、Motorola-S或者Tektronix目标格式。您可以下载转换文件到EPROM
程序器里。
. 记忆-算术转换器实用工具 (Mnimonic-to-algebraic translator utility) 仅限于TMS320C54x设备,
这个工具用来转换汇编语言源文件。该实用程序接受包含助记指令的汇编语言源文件。它将助记指令
转换成代数指令,生成一个包含代数指令的汇编语言源文件。
汇编器概述 (Assembler Overview)
汇编器将汇编语言源文件转换成机器语言目标文件。这些文件是通用目标文件格式(COFF)。
双通道汇编器做到如下几点:
. 处理文本文件中的源程序语句,生成可重定位的目标文件。
. 根据需要生成源文件列表,使用户可以控制该列表。
. 允许您将代码分成几段,并为每个目标代码段提供段程序计数器(SPC)。
. 定义并引用全局标识符,并根据需要附加交叉参照列表到源列表。
. 汇集条件块(Assembles conditional blocks)。
. 支持宏,允许您内联或在库内定义宏。
连接器概述 (Linker Overview)
连接器允许您通过有效地分配输出段到内存映射来配置系统内存,当连接器连接目标文
件,它执行以下任务:
. 分配段到目标系统的配置内存。
. 重新定位符号和段,并为其分配最终的地址。
. 解决输入文件之间未定义的外部引用。
连接器指令语言控制内存配置,输出片断定义和地址连接。该语言支持表达式的指定和评估,您可
以通过定义和创建一个内存模块来配置系统内存。指定的内存和段允许您做以下几点:
. 分配段到明确的内存区。
. 组合目标文件段。
. 在连接时间定义或再定义全局标识符。
基于文本连接器
文本连接器连接目标文件到一个单一的可执行的COFF目标模块。在连接器命令文件里的连接指令
允许您结合目标文件片断,连接片断或符号到地址或内部内存范围,并且定义或再定义通用符号。如
需详细资讯,请参阅代码生成工具的在线帮助。
以下是C或C++开发工具的列表:
. C或C++编译器 C或C++编译器能接受C或C++源代码和生成汇编语言源代码。一
个外壳程序,一个优化程序和一个内部列表工具(interlist utility)是编译器的组成
部分。
— 外壳程序能使您一步完成编译、汇编和连接源模块。如果输入文件有.a以及 .sa
为扩展名则安装程序会调用汇编优化程序
— 优化程序优化代码,以提高C程序的效率
— 内部列表工具能把交织C或C++源语句用汇编语言输出
. 汇编软件优化程序(只适用于C6000) 汇编软件优化程序允许您输入线性汇编代码而不需要考
虑管道结构和寄存器分配。它接受没有分配寄存器或未列表的汇编代码。汇编软件优化程序分配寄存
器并且使用循环优选法将线性汇编软件转换成高度平行的汇编软件,后者利用软件流水线操作。
. 库—构建工具(Library-build utility) 你可以使用库—构建工具去构建你自己定制的运行实时
支持库。标准的运行实时支持库函数是以rts.src rstcpp.src源代码形式提供的。运行实时支持函数的目
标代码被编译成小端模式或者大端模式以及C编码或者C++编码到标准库里。运行实时支持库包含了
ANSI标准的实时支持函数,编译工具函数,浮点运算函数以及被编译器支持的C I/O函数。
. C++名字反转换工具(C++ name demangling utility). 通过对连接层次名字中的签名(Signature)
进行编码,可以使C++编译器实现函数重载,运算符重载,安全类型的连接。C++编译器会将程序中的
变量名、函数名转换成内部名称,这个过程被称作Name Mangling,反过程被称作Name Demangling。当
你在编译文件或连接器输出中检查转换的命名时,想把一个转换过的命名和C++源代码的相应的命名
联系在一起是非常困难的。C++ name demangling工具是一个将每个能检测到的转换过的命名转变成对
应的c++源代码中的原始命名的调试工具。
从 CCS 集成开发环境开始
按下列步骤编译连接和运行程序
. 选择 Project→Rebuild All 或者点击 Rebuild All 工具栏按钮。在你工程中的所有文件将被重新编
译,重新汇编以及重新连接。这些过程的信息将显示在底部的窗口中。在默认情况下,.Out 文件将在
你当前工程的 debug 目录下生成。可以在选择配置工具栏中选择不同的目录改变路径。
. 选择 File→Load Program 再选择你刚才编译的程序点击打开。这个程序就被加载到目标 DSP 中
并且打开了反汇编窗口在窗口中显示了一系列组成该程序的反汇编指令。
. 选择 View→Mixed Source/ASM 这允许你同步的查看你的 C 源程序和汇编代码的结果。在混合模
式窗口中点击汇编指令。可以在 CCS 集成开发环境中按 F1 键搜索那些指令的帮助。
. 选择 Debug→Go Main 从主程序开始执行,在 MAIN 程序暂停。
. 选择 Debug→Run 开始执行程序。
. 选择 Debug→Halt 退出运行的程序。
外部制作
CCS 支持使用外部制作文件(Makefiles),支持相关联的 Make 工具对工程进行管理和使构建过程
客户化。
为了使CCS集成开发环境能用制作文件编译连接程序,一个CCS工程创建时必须包括制作文件
(makefile)。在一个CCS工程与制作文件关联后,这工程以及它的内容可以显示在
工程显示窗口中,并且 Project→Build and Project→Rebuild All 这些命令可以用来编译连接程
序。
通过双击工程显示窗口中的制作文件的名字,打开该文件进行编辑。你可以通过一些特殊的对话框
改进制作文件的编译连接指令和选项。在制作文件工作的情况下标准的编译连接选项对话框是失效的。
多重配置是可以被创建的,即每个文件有自己的编译连接指令和选项。
注意:
限制和约束:源文件可以通过工程视图从工程中添加和删除。然而,工程视图中的改变并没有改变
制作文件中的内容。这些源文件既不影响编译连接过程也不反映Makefile中的内容。类似的,编辑制
作文件也不改变工程视图的内容。但加入工程视图的源文件的详细文件选项将失效。Project Compile
File命令也同样失效。然而,当工程被保存后,当前工程视图的状态就被保护起来。
命令行(Command Line)
在命令行中使用 Timake 工具
Timake 工具在 CCStudio_v3.1\cc\bin 目录下,它可以在命令提示下在 ccs 环境外编译连接工程。
这个工具还可以完成大批的工程建立。
调用 Timake 工具:
. 打开 DOS 命令提示符。
. 通过运行批处理文件 DosRun.bat 建立必要的环境变量。这个批处理文件必须在使用 Timake 工具
前运行。如果你把 ccs 安装在 C:\CCStudio_v3.1 则这个批处理文件的路径为
C:\CCStudio_v3.1\DosRun.bat。
. 运行 Timake 工具。
要想了解 Timake 工具的更多信息请用在线帮助。
Makefiles
除了在 CCS 集成开发环境中选择使用外部 Makefiles,你也可以将一个标准的 CCS 工程输出到
一个标准的 Makefile,这个 Makefile 可以通过使用各种标准的 Make 工具以命令行的形式建立。CCS
提供了一个标准的 Make 工具,这个工具在 DosRun.bat 文件运行后运行。
将一个标准的 CCS 工程输出到一个标准的 Makefile:
. 在 Project 工具栏的下拉菜单下的 Select Active Project 中选择想要激活的工程文件名以激活想输
出的工程。
. 选择 Project→Export to Makefile
. 在 Exporting
操作系统以及标准 Makefile 的文件名。
. 点击 OK 按钮接受你刚才的选择并且产生一个标准的 Makefile要想了解更多的有关工程输出到
Makefile 的信息请用在线帮助。
1 DSP/BIOS
DSP/BIOS 采 用 了 可 扩 展 的 实 时 内 核 , 专 为 TMS320C5000,TMS320C2000以 及
TMS320C6000 DSP 平台设计。DSP/BIOS 使用户可以更快的开发及发布复杂的程序,并减少开发及维
护配置操作系统及控制循环的需要。因为多线程使实时应用程序非常清晰的分离了,一个使用了
DSP/BIOS 的程序更易于维护,新功能可以在不打乱实时响应的条件下附加进来。DSP/BIOS 通过
C2000,C5000,C6000 平台提供标准 API 接口来支持快速程序移植。升级版的DSP/BIOS API及配置工
具可以通过升级建议器来获得,在安装了升级版的DSP/BIOS 后,用户可以通过组件管理器来指定用
哪个版本的 DSP/BIOS 来给 CCStudio 调用。
2 芯片支持库(CSL)
片支持库(CSL)提供了 C 语言功能来配置及控制片上的外设。这可以简化在一个实时系统上运
行算法的过程。目标是使外设更易于使用,减少开发时间,使程序可移植,硬件,以及在小范围内达
到外设的标准化及实现兼容性。
2.1 CSL的优点
CSL 有以下优点
. 对外设编程提供标准协议。CSL 提供一个更高层次的程序接口给每个片上的外充。
这包括数据类型和宏定义给外设的寄存器配置,以及运行每个外设的各种功能函
数。
. 基本资源管理。基本资源管理是通过使用打开和关闭各种外设来实现的。这对支持多通道的外设
特别有帮助。
. 对外设提供符号描述。作为创建 CSL 的一个附加优点,一个对所有外设寄存器的完全的符号描述
以及寄存器范围被定义出来,也就是说用户可以使用描述在前两个bullets 的更高层次的协议,这样可
以更少的定制外设,使代码更容易移植到新版本的 DSP 上。
3 板支持库(BSL)
TMS320C6000 DSK 板支持库是一套 C 语言应用程序接口,可用于配置及控制所有板上的设备,
使开发者可以在一个实时系统里获得算法函数。BSL 包括分离的模块,这些模块编译好并存放在一
个库文件里,每个模块代表一个独立的 API 并且被一个 API 模块引用。每个设备都由一个 API 模块
包括,这样决定了模块的间隔尺寸。除了 I/O 端口模块,它分为两个 API 模块:LED 和 DIP。
3.1 BSL的优点
设备更易使用,设备间获得一定程序上的兼容性,缩短开发时间,可移植性,标准化,以及硬件抽
象等。
4 DSP 库(DSPLIB)
DSP 库包括很多可由 C 语言调用,经过汇编优化,通用目的的信号处理,以及图像/视频处理子程
序。这些程序专门用于计算性的增强型实时程序中,那里对运行的最佳速度要求非常严格。使用这些
子程序,用户可以获得比用标准 ANSI C 语言编写的程序更快的速度。并且,采用提供的信号处理,
图像/视频处理功能函数,DSPLIB 及 IMGLIB,可以明显缩短应用程序的开发时间。可以通过以下参
考资料获得更多关于 DSPLIB 的信息:
. TMS320C54x DSP Library Programmer’s Reference (SPRU518)
. TMS320C55x DSP Library Programmer’s Reference (SPRU422)
. TMS320C62x DSP Library Programmer’s Reference (SPRU402)
. TMS320C64x DSP Library Programmer’s Reference (SPRU565)
4.1 DSPLIB的优点
DSPLIB 包括了一般使用的程序。源代码也提供了,可供用户修改函数以搭配自己特定的需要。
包括以下特点:
. 优化过的汇编代码子程序
. C 和线性汇编源代码
. 可供 C 调用的子程序与 TI 优化的 C 编译器兼容
. 检测标准(周期和代码大小)
. 用参照的 C 模块来测试
4.2 DSPLIB 功能概览
DSPLIB 提供了一套可供 C 调用的高性能程序代码,在很广的范围内编写信号、图像、视频应用
程序时可用于关键功能。
在 DSPLIB 中包含的程序功能分为以下编目:
. 适应滤波(Adaptive filtering)
. 相关性
. FFT
. 滤波及卷积
. 数学
. 矩阵运算
. 其它
5 图像及视频处理库(IMGLIB)
图像/视频处理库(IMGLIB)包括了很多可供 C 调用的,经过汇编优化的,通用功能的信号处理、
图像、视频处理的程序。IMGLIB 只能在 C5500/C6000 平台设备上使用。这些程序专门为用于计算功
能的增强型实时应用程序设计,对执行速度有很严格的要求。使用这些程序,用户可以获得比用标准
ANSI C 语言编写的程序更快的速度。并且,采用提供的信号处理,图像/视频处理功能函数,DSPLIB 及
IMGLIB,可以明显缩短应用程序的开发时间。
可以通过以下参考资料获得更多关于 IMGLIB 的信息:
. TMS32C55x Imaging/Video Processing Library Programmer’s Reference (SPRU037)
. TMS320C62x Image/Video Processing Library Programmer’s Reference (SPRU400)
. TMS320C64x Image/Video Processing Library Programmer’s Reference (SPRU023)
5.1 IMGLIB的优点
IMGLIB 包括了通用程序。提供源代码使用户可以修改以用于搭配自己的具体需要。
特点包括:
. 优化过的汇编代码程序
. C 和线性汇编源代码
. 可供 C 调用的程序与 TI 优化的 C 编译器兼容
. 检测基准 (周期和代码大小)
. 参照 C 模式的逆向测试(Tested against reference C module)
5.2 IMGLIB功能概览
IMGLIB 提供了一套可供 C 调用的更高性能的程序,广泛用于编写信号、图像、视频处理程序里
的关键功能。
包括在 IMGLIB 里的软件程序分为以下编目:
. 图像、视频压缩及解压缩
. 图像分析
. 图像过滤/格式转换
6 TMS320 DSP 算法标准组件
DSPs是用C及汇编语言混合编程的,可直接访问硬件外设。由于性能上需要,DSPs几乎没有标准
的操作系统支持。不像通用目的的嵌入式芯片。但是,由于缺少标准,这就不可能使算法不经重处理
而用于多于一个系统。DSP 算法重用是非常耗费劳动力的,所以开发一个基于 DSP 的市场产品时间也
很长。
TMS320 DSP 算法标准(称为 XDAIS)定义了一套 DSP 算法的要求,使系统集成者可以快速的
组合系统以用于一个或多个这样的算法。
6.1 XDAIS的范围
1、第一层包括编程指导方针,用于在所有 DSP 结构的各种算法,不必考虑程序的区域。几乎所有最
近开发的软件模块都已遵循了这些指导方针,所以这层是标准化。
2、第二层包括规则及指导方针,使所有算法可以应用于单一系统。建立了标准使一个算法使用数据内
存,以及用于外部识别器的名字,同时规则及算法被封装起来。
3、第三层包括专门用于 DSP 家庭的指导方针。对算法使用处理器资源没有现行的统一指导标准。这
些指导方针描绘了使用各种结构的概要。或许实际应用上会对这些指导方针发生偏离,但算法的出售
者可以在相关文档或模块头里概要的说明这些偏离。在上图(Figure 4-14)里的阴影盒子表示区域是符
合这种规格的版本。
4、第四层包括各种垂直市场。由于各种商业本身固有的不同,似乎应该由市场的领导者来制定基于该
垂直市场的接口标准及算法。如果每个独立的算法都有一个接口,标准将不能正确存在。在这层次上,
任何算法遵守了由最高的三层定义的规则,则被称为适合 eXpressDSP 的。
6.2规则及指导方针
TMS320 DSP 算法标准同时指定了规则及指导方针。规则必需遵守以使软件是适合eXpressDSP
的。另一方面,强烈推荐遵循指导方针。
6.3 标准的需要
以下为 XDAIS 需要的元素:
. 从多个出售者得来的算法可以集成到单一系统。
. 算法是 framework-agnostic 的。也就是说,同样的算法可以实质上的就于任何应用程序或者框架
下。
. 算法可以在完全静态或者完全动态的运行环境里开发。
. 算法可以以二进制形式发布
对算法的综合不需要结合客户的程序,但是,重新配置及重新连接则可能需要。
6.4 标准的目的
XDAIS 必需达到以下目的:
. 使开发者更易于遵守这些标准
. 使开发者验证这些标准的一致性
. 使系统集成者易于在 TI DSPs 间移植
. 使 host tools 简化系统集成者的工作,包括配置,性能表现模块化,标准一致,以及 debugging
. 在静态系统中几乎不产生 overhead
7 参考框架
eXpressDSP 软件的参考框架提供给使用了 DSP/BIOS 及 TMS320 DSP 算法标准的应用程序。用
户首先选择最适合自己系统及将来需要的参考框架,接着使之适应这个框架,并广泛使用适用于
eXpressDSP 的算法。平常的元素如设备驱动器,内存管理及通道封装等已经预先配置好在框架里了,
因此你可以集中精力于自己的系统设计上。参考框架包括已设计好的、可重用的 C 语言的源代码,基
于 TMS320C5000 和 TMS320C6000 DSPs参考框架软件及文档可以在 TI 网页上下载。它们不包括在
CCS 安装包里。
下面是框架中各组件的描述:
. 设备控制器和设备适配器 引用框架中使用的设备驱动是基于标准驱动模型的。此模型提供设备
适配器,并指定一个标准的设备控制器接口。如果使用特有的外设,设备控制器可能需要修改,但是
设备适配器基本不需要修改。
. 芯片支持库 设备控制器使用芯片支持库模块来支持外设。
. DSP/BIOS 这个扩展的软件内核是关于被引用到的框架是怎样根据它的需求均衡利用不同数量
eXpressDSP 底层构件的好例子。低廉的 RF1 框架使用相对较少的DSP/BIOS 模块。对于未必很欣赏
有如此多可选模块的设计者来说,除了带来明显的硬件资源节省,减少模块数量也使得设计方案的选
择更清晰。
. 框架组件 这些组件被设计用来管理所有系统资源。通道的抽象是其中的一个例子。每个应用
框架都需要某种通道管理。然而,可以在预估的被使用通道数量基础上进行优化设计。对只含 1 至 3
个通道的简单系统来说,通道进程是由 DSP/BIOS HWI 和 IDL 模块来处理的。如果通道数量比较大
的话,使用 SWI 模块将会更明智,虽然它会伴随更多板上硬件资源的耗用。对于通道动态改变的大型
系统来说,TSK模块显得更恰当。与通道管理器一样,算法管理器管理一些 eXpresDSP 体系下的
算法。其它框架组件是用来处理内存覆盖机制的。在大多数内存有限的系统中,这是一项关键技术。
从一个恰当的框架开始起步设计将简化许多开发选择。. eXpressDSP 体系算法 在 TMS320 DSP
算法标准规则和准则(SPRU352)中给出了每种算法的具体规则和准则的细节规定。为了符合标准,
算法不能直接针对硬件外 设 , 只 能 针 对 标 准 资 源 管 理 接 口 , 即 所 谓 的
IALG( 内 存 管 理 ), 和 可 选 的IDMA(DMA 资源管理)。在 TI 给出的范例中, 算法都比
较简单,包括有限冲击响应滤波器(FIR)和音量控制器。用户可以用更符合 eXpressDSP 数字媒体软件
标准的算法替代 TI 提供的范例,使得通用程序框架具体化为特定应用。
. 应用层代码 最后一步是修改应用层代码。这一层代码利用特定应用领域的相关理论,使得产品
细化得以实现。例如,单通道 MP3 播放器所需要的应用层代码和数字助听器所需要的是不同的。
1 使用通用扩展语言(GEL)
通用扩展语言是一种解释性语言,与 C 语言类似,它允许用户为 Code Composer Studio创建函数。
用户使用 GEL 语法来创建 GEL 函数,然后把它们导入 Code Composer Studio IDE.可以利用一套
GEL 函数子集辅助工程建立,或者通过定制的 GEL 菜单自动打开和建立工程。下面是一个打开
volume 工程的 GEL 脚本范例:
/*
* Copyright 1998 by Texas Instruments Incorporated.
* All rights reserved. Property of Texas Instruments
Incorporated.
* Restricted rights to use, duplicate or disclose this
code are
* granted through contract.
*/
/*
* ======== PrjOpen.gel ========
* Simple gel file to demonstrate project management
capabilities of GEL
*/
menuitem "MyProjects"
hotmenu OpenVolume()
{
// Open Volume tutorial example
GEL_ProjectLoad("C:\\CCStudio_v3.1\\tutorial\\sim55xx\\volume1\\v
olume.pjt");
// Set currently active configuration to debug
GEL_ProjectSetActiveConfig("C:\\CCStudio_v3.1\\tutorial\\sim55xx\
\volume1\\volume.pjt",
"Debug");
// Build the project.
GEL_ProjectBuild();
}
2 脚本程序集 (Scripting Utility)
脚本程序集是一套集成 VB 或是 perl 脚本语言的 IDE 命令行。用户可以利用诸如 perl或是 VB
脚本语言的所有特性并将它们与 Code Composer Studio 的 automation 任务相结合。脚本程序集可以配
置测试模式,打开和建立相应的工程,并装载执行。有许多这样可以用来建立和管理工程的脚本命令。
脚本是同步的。
脚本通用程序是在 Update Advisor 中可供利用的附加特性(详见 7.2 节)