第3章 集成软件开发环境
CCS 常用功能
4、单步执行的4 种方法 (1) 单步进入:快捷键F8,Debug →Step Into,当调试语句不是基本的汇 编指令时,此操作进入语句内部 (2) 单步执行:点击Debug → Step Over,此命令将函数或子函数当作一条 语句执行,不进入内部调试 (3) 单步跳出:点击Debug →Step Out,此命令作用为从子程序中跳出 (4) 执行到光标处:快捷键Crtl+F10,Debug → Run to Cursor,此命令作 用为将程序运行到光标处 5、查看内存与变量 (1) 查看变量:使用View →Watch Window 命令 (2) 查看寄存器:使用View →Registers →CPU Registers 命令 (3) 查看内存:使用View →Memory 命令
混合编程的接口规范
1. 采用C语言和汇编语言混合编程时,定义了一套严格的 寄存器规则,调用函数保护了寄存器A0~A9和B0~B9,但 当使用到寄存器A10~A15或B10~B15的时候,则必须自行 对它们进行保护。在默认情况下: A3用作返回结构指针寄存器 B3用作被调用函数返回地址寄存器 A15用作帧指针寄存器
3.2 C语言程序基础
一个最小的C应用程序至少要包含如下几个文件: 1、主程序文件 main.c,这个文件必需包含一个main()函数作为C程序的 入口点; 2、链接器命令文件 link.cmd,这个文件定义了DSP的存储空间以及代 码段、数据段是如何分配到这些存储空间的; 3、C运行库rts6700.lib,C运行库提供了标准C函数,以及C环境下的初 始化函数c_int00()函数。库文件及其源代码位于CCS安装目录下的 c6000\cgtools\lib子目录下; 4、中断向量表文件 vectors.asm,这个文件的代码作为中断服务表,必 须由链接命令文件分配到0地址,或由ISTP指向的地址。DSP复位后, 首先从0地址开始运行,然后跳转到rts6700.lib库内C运行环境的入口 点_c_int00,完成初始化操作,再调用main()函数,执行用户的程序。
CCS 常用功能
6、显示图形 Probe(探点)
1)适合于算法的开发,功能验证 2)可以完成这样的功能 – 从一个文件中读入数据到一个DSP的缓冲区 – 将一个DSP的缓冲区写到文件中 3)探点类似于断点,又不同于断点 – 运行到Probe point,DSP会停顿下来 – 完成一些动作后(读写文件),程序继续运行 4)文件输入输出的设置:FileFile I/O… 5) Probe的设置:类似断点的设置(用工具条)
中断向量表
.ref _timer0_isr .ref _exint4_isr .ref _exint6_isr .ref _c_int00 .global RESET_RST .sect "vectors " RESET_RST: mvkl .S2 _c_int00, B0 mvkh .S2 _c_int00, B0 B .S2 B0 NOP 5 NMI_RST: NOP 8 RESV1: NOP 8 RESV2: NOP 8 INT4: b _exint4_isr NOP 7 INT5: INT6: INT7: INT8: INT9: INT10: INT11: INT12: INT13: INT14: INT15: NOP 8 b _exint6_isr NOP 7 NOP 8 NOP 8 NOP 8 NOP 8 NOP 8 NOP 8 NOP 8 b _timer0_isr NOP 7 NOP 8
MEMORY命令: 描述系统实际的硬件资源 SECTIONS命令: 描述“段”是如何定位的
MEMORY命令描述目标系统的存储空间
MEMORY { 存储器空间名: o = 十六进制存储器起始地址 , l = 十六进制存储器长度 }
MEMORY 命 令
MEMORY { PMEM: o = 00000000h, l = 00010000h BMEM: o = 00010000h, l = 00030000h
时域/频域图 FFT Eye diagram Constellation plot Image displays
CCS 集成环境的组成
软 件 开 发 流 程
CCS 集成开发环境
• 提供一些类似VC的代码编辑功能
– 语法高亮显示,自动缩近,文字查找等等
• 原程序可以与反汇编同时显示
CCS 调试界面
标题区 菜单条 编辑工具条 编译工具条
反汇编调试 窗口
数据显示 窗口 工程管理 窗口
图形显示 窗口
C源程序编 辑窗口 调试 工具条
变量观察窗 口
编译运行结果 显示窗口
可视化图形
信号分析图形化
以自然的格式观察信号 在变量有效时修改其值 并观察它们的影响 多种专用的画图工具
project.pjt
存储环境设置信息的工程文件
链接器命令文件 *.cmd
链接器命令文件由 3 部分组成:
输入/输出定义:
-l *.lib // 链接器要链接的库文件 -m *.map // 链接器生成的交叉索引文件 -o *.out // 链接器生成的可执行代码 -stack 100 // 定义堆栈大小等链接器选项
CCS 项目管理
应用程序按项目来管理, 按层次以图形化的方式 显示
–*.cmd 文件
–*.h
–*.lib –*.c
头文件
库文件 源程序
CCS 图形化设置
各种编译选项,如C 编译器选项,连接器 选项等通过图形化方 式来设置,不需要手 工添加选项
CCS 常用功能
1、设置断点
将光标放置在需要设置断点的程序行前,点击Debug →Breakpoints,或点 击工具栏按钮 ,即可完成一个断点的设置,点击工具栏按钮 可清除 所有的断点。 2、复位的3种方法 (1) Reset DSP:点击Debug →Reset CPU,初始化所有的寄存器内容并暂停 运行中的程序。使用此命令后,要重新装载.out 文件后,再执行程序。 (2) Restart:点击Debug → Restart ,将PC 值恢复到当前载入程序的入口地 址。 (3) Go main:点击Debug →Go main,将程序运行到主程序的入口处暂停。 3、执行程序的4种方法 (1) 连续 执行:点击Debug →Run ,程序运行直到遇到断点为止。 (2) 暂停执行:点击Debug →Halt ,程序停止运行。 (3) 动画执行:点击Debug →Animate,用户反复运行程序,直到遇到断点 为止。 (4) 自由执行:点击Debug →Run Free ,禁止所有断点运行程序。
CCS 常用文件
文件名 program.c program.asm program.sa vectors.asm filename.h filename.lib project.cmd program.obj program.out program.map 描述 C程序源文件 汇编程序源文件 线性汇编程序源文件 中断向量表文件 C程序的头文件,包含DSP/BIOS API 模块的头文件 库文件 链接命令文件 由源文件编译或汇编而得的目标文件 经完整的编译、汇编以及链接后生成的可执行文件 经完整的编译、汇编以及链接后生成的空间分配文件
链接器命令文件常用段名含义
段名 .cinit .const .text .bss .far .stack .sysmem 描述 存放C程序中的变量初值和常量 存放C程序中的字符常量、浮点常量和用const 声明 的常量 存放C程序的代码 为C程序中的全局和静态变量保留存储空间 为C程序中用far 声明的全局和静态变量保留空间 为C程序系统堆栈保留存储空间,用于保存返回地址、 函数间的参数传递、存储局部变量和保存中间结果 用于C 程序中malloc、calloc 和realloc 函数动态分配 存储空间
示例0901
CCS 常用功能
CCS支持一维图形,二维图象(标准的数据格 式),眼图等显示方式 有放大、缩小等功能 可以方便直观地判断算法执行的效果
CCS 常用功能
GEL=General Extension Language 一种类似C的解释型语言,可实现循环等程序结 构 提供基本的程序控制命令,类似以前emulator提 供的命令,GEL_Go(), GEL_Reset() 等等 可以制作菜单(可以加入到CCS主菜单),对 话框,滑动条
第三章 DSP集成软件开发环境
第三章 DSP集成软件开发环境
3.1 CCS集成开发环境 3.2 C语言程序基础 3.3 混合语言编程 3.4 启动(Bootload)
3.5 芯片支持库(CSL)
3.1 CCS 集成开发环境
CCS(Code Composer Studio)是TI公司为DSP推出的 集成软件开发环境(IDE),提供了配置、建立、调 试、跟踪和分析的工具,包括了应用程序开发必需 的所有功能,便于对实时信号处理程序的编制和测 试,能够加速开发进程,提高工作效率。
3.3 混合语言编程
C 语言语法接近自然语言,其可读性强、便于理解,在编 制、修改、实现算法方面比用汇编语言开发容易。
汇编语言掌控系统硬件的能力强于C 语言,设计出来的程 序更加贴近硬件特性,能将硬件效能发挥到极致。 因此,一般情况下用C 语言设计应用程序的总体框架、解 决人机接口和对速度效率要求不太高的复杂算法,用汇编 语言设计强调速度的算法。
B14用作数据页指针寄存器
B15用作堆栈指针寄存器
混合编程的接口规范
2. 调用函数将参数传递到被调用函数中,前十个参数将被 从左到右依次放入寄存器A4、B4、A6、B6、A8、B8、A10、 B10、A12和B12,如果传递的参数是长型、双精度型或者 是长双精度型,则将参数依次放入寄存器组A5:A4、B5: B4、A7:A6等,并将剩下的变量按相反的顺序放在堆栈里。 注意,如果传递的参数是一个结构类型的参数,则传递的 是该结构类型的地址。 3. 如果在C/C++调用函数中做了正确的函数返回声明,则被 调用的汇编函数可以返回有效值。如果返回值是整型或32 位的浮点型,则放在寄存器A4中返回;如果返回值是双精 度或是长双精度型,则放在A5:A4中返回;如果返回值是 一个结构类型,则将其结构的地址放在A3中返回。