第5章嵌入式代码的快速生成
利用RTW-EC(Real-Time Workshop Embedded Coder)等工具为用户算法自动生成嵌入式代码,是一种高效、实用的方法,目前国内外各大公司在进行新产品开发时已广泛采用。其核心思想是让工程师把主要精力集中于算法的研究上,把枯燥、困难的代码编写工作留给计算机去自动完成,这样可以大大缩短产品的开发周期,降低市场风险。本章主要以TI DSP 为例讲述嵌入式代码的快速生成方法。它的工作流程如图5.1.1所示:
图5.1.1 TI DSP代码快速生成的工作流程
本章主要内容包括:
●CCS介绍
●利用RTWEC生成DSP的目标代码
●MATLAB与CCS的交互式开发
●应用实例
5.1 CCS介绍
CCS(Code Composer Studio)代码调试器是一种针对TI产品的交互式集成开发环境IDE。它提供了环境配置、源文件编辑、程序调试、跟踪和分析等工具。CCS的功能十分强大,它集成了代码的编辑、编译、链接和调试等诸多功能,而且支持C/C++和汇编的混合编程。
国外网站源码
CCS的应用程序主要完成系统的软件开发与调试,能将汇编语言和C语言程序编译链接生成COFF(公共目标文件)格式的可执行文件,并将程序下载到目标DSP上运行。
进行CCS开发的代码生成流程图如图5.1.2所示,源代码文件通过编译自动打开反汇编窗口(参看5.1.1节)。链接器根据目标系统的存储空间信息能够将COFF目标文件链接成可执行文件(.out),目标系统的存储空间信息是在链接器命令文件(.cmd)中配置的(参看
5.1.2节)。
由于3.3版本的CCS断点中隐含探针的功能,因此工具栏上不再有探针的图标。为了解开一部分读者对CCS3.3探针的疑惑,将在5.1.3节着重介绍探针的设置。
图5.1.2 代码生成流程图
5.1.1 反汇编窗口
可通过选择View →Disassembly,或点击调试工具栏的View Disassembly图标来打开反汇编窗口。把可执行代码加载到目标板或Simulator中时,CCS IDE会自动打开反汇编窗口,反汇编窗中显示调试所需的反汇编指令及符号信息。反汇编是汇编的逆过程,是将存储器的内容用汇编语言代码显示出来,符号信息包括目标板上表示地址或值的字符或字符串。
对每一条反汇编指令,反汇编窗同时显示该指令所在的存储器地址及其对应的机器代码,用一个黄箭头指示当前程序计数器PC的位置(如图5.1.3所示)。当用stepping命令单步执行程序时,PC指针会指向当前执行指令的前一行。
图5.1.3 反汇编窗口
5.1.2 链接命令文件
CCS的工程文件需包含CMD文件,即链接命令文件,用来配置目标系统的存储空间分配,并为各段指定地址。常用的命令标识符有MEMORY和SECTIONS这两个伪指令,利用这些标示符可为各段指定存储区域,组合各目标文件中的段,并在链接时定义或重新定义全局符号。
CMD文件是ASCII文件,包含以下内容:
①输入文件名,可以是目标文件、库文件或其他命令文件;
②链接器选项;
③MEMORY和SECTIONS命令,MEMORY用于指定目标存储器的配置,SECTIONS 用于指定段的地址;
④赋值语句,用于定义全局符号,并赋值。
MEMORY命令格式
MEMORY
{
[PAGE 0]: name 1[(attr)]: origin=constant, length=constant
…
[PAGE n]: name n[(attr)]: origin=constant, length=constant
}
其中,PAGE是可选项,用于指定存储空间页面,通常PAGE 0用于程序存储器,PAGE 1用于数据存储器,默认值为PAGE 0;name为一段存储空间的名称;attr指定段存储空间的属性,有4种选项可选,R表示可读,W表示可写,X表示可以存放执行代码,I表示可以被初始化,默认值具有4种属性;origin表示该段存储空间的起始地址,length表示该段存储空间的长度。
SECTIONS命令格式
SECTIONS
{
name:[property, property, property,…]
name:[property, property, property,…]
…
}
其中,name表示段的名称,是在程序中定义的;property为该段的属性,包括段的内容及在存储空间中的位置。
5.1.3 探针的设置
利用断点可以在指定位置提取/注入数据。断点可以设置在程序的任何位置,当程序运行到断点处时,与断点相关的事件将会被触发,当事件结束后程序会继续执行。
具体设置:
①在要提取/注入数据的代码行单击右键,选择“Toggle Software Breakpoint”,设置软件断点。
②选择Debug →Breakpoint,列出所设置的断点列表,在列表中选取相应的断点,右键选择Property Wi
ndow,设置相应的属性,如放置的地址、输入读取的数据个数和关联的数据文件(*.dat),数据为输入时Action设置为Read Data from File,为输出时设置为Write Data to File。
5.1.4 CCS的使用
在“Setup CCStudio v3.3”中配置CCS的工作环境,“CCStudio v3.3”为CCS的应用程序。
CCS的配置文件是用来定义DSP芯片和目标板类型的,为了使CCS能工作在不同的硬件或仿真目标板上,必须为CCS系统配置相应的配置文件。配置步骤:双击桌面上的Setup CCStudio v3.3图标,弹出如图5.1.4所示的界面。可在Available Factory Boards列表中选择与目标系统相匹配的配置,将它添加到My System中并保存设置。
图5.1.4 配置CCS目标板
下面通过一个例子介绍CCS软件的使用。
先设置CCS在C6416软仿真环境下运行,选择小端模式(little Endianness)的处理器,再启动CCS的应用程序,选择菜单Debug →Reset CPU。
在CCS的安装目录下创建一个新的用户目录CCSroot\MyProjects\Volume\ (CCSroot 为CCS的安装目录) ,把CCSroot\tutorial\sim64xx\volume1\目录下的所有文件(除去工程文件.pjt)拷贝到CCSroot\MyProjects\Volume\目录下。
(1)创建新的工程文件。选择菜单“Project”的“New”项,弹出如图5.1.5所示的对话框,在Project栏输入要创建的工程名volume,该工程为一空工程。
图5.1.5 新建工程的对话框
(2)向工程中添加文件。选择菜单“Project”的“Add Files to Project”项,添加volume.c、d、load.asm、vectors.asm、volume.件到volume工程中,再添加库文件CCSroot\C6000\cgtools\lib\rts6400.lib到volume工程中,完成工程文件的建立。
(3)选择菜单“Project”的“Build Options…”项。在“Build Options for volume.pjt”对话框中“Compiler”属性页的“Basic”栏中修改“Target Version”项的内容为“C64xx (-mv6400)”(如图5.1.6),设置生成64xx的程序代码。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论