dsp实验-CCS操作(精)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二CCS操作
一、实验目的
1. 掌握TMS320C5400 系列汇编语言程序的基本格式;
2. 掌握程序编译、连接、运行和调试的基本过程;
3. 熟悉Code Composer Studio 的使用。
二、实验设备
1. 集成开发环境Code Composer Studio(以下简称CCS)
2. 实验代码ccs_basic.s54、ccs_basic.cmd 和ccs_basic.gel
三、实验内容、结果
1.基本操作:
1. 建立项目,并加入文件
a 运行CCS setup,选择C5402 Simulator,选择Project→New 菜单项,建立一个新的项目ccs_basic.pjt(注意建立路径,并选择Project→add files to new project 菜单项,加入文件ccs_basic.s54 和ccs_basic.cmd;
b 在工程视图中选中GEL files 文件夹,单击鼠标右键,在弹出的菜单中选择
Load GEL 选项,载入ccs_basic.gel;
2. 编译和连接
a 编译:选择Project-->Build Option,在Compile 表单的Category 列表中,选择Basic 选项,并设置Generate debug info 为full symbolic debug 选项,选择File s选项,并在设置Asm File Ext 中写入“s54”为汇编语言扩展名;
b 连接:选择Project-->Build Option,在linker 表单中的Autoinit mode 选项中选择no autointialization 模式,Output Filename 中输入.\debug\ ccs_basic.out,Code Entry Point 中输入main,Map Filename 中输入ccs_basic.map,然后保存选项设置。
c 选择Project→Buil
d 构建整个项目,产生可执行文件ccs_basic.out;
d 选择File->Load Program,装载可执行文件ccs_basic.out。
2.练习
1 观察存储器映象文件ccs_basic.Map,理解存储器的配置情况;
2 观察和修改存储器单元的内容
1. 观察存储器映象Map 文件
选择File→Open 打开ccs_basic.Map 文件,可观察
a 存储器的配置情况:页面0 为程序空间,页面1 为数据空间;
b 程序文本段:起始地址0x1000,存储区长度为0x0021;
c 数据段:其中需初始化数据段.data 起始地址0x2005,存储区长度为4;
d 不需初始化数据段.bss 起始地址0x2000,存储区长度为5;
e 堆栈段:起始地址0x0100,存储区长度为0x0400;
f 向量段:起始地址0x0080,存储区长度为0x0080;
g 全局符号在存储器中的位置:共14 个符号,如符号.bss 在存储器中的位置为
0x2000。将上述信息与cmd 文件中的设置比较,理解cmd 文件和连接器的关系。答:cmd 文件为配置文件,配置文件在连接的过程中将定义DSP 的RAM 空间,
也就是对存储空间起一个配置作用。DSP 在程序中引入了各个段的概念,相应的连接时就需要进行各个段的分配。配置文件ccs.basic.cmd 内容如下:
MEMORY
{
PAGE 0:
VECS: org=0x0080, len=0x80
PROM: org=0x1000, len=0x1000 /* 4k words */
PAGE 1:
STACK:org=0x100, len=0x400 /* 1k words */
DARAM: org=0x2000, len=0x1000 /* 4k words */
}
SECTIONS
{ .text:> PROM PAGE 0
vectors :> VECS PAGE 0
.bss :> DARAM PAGE 1
.data :> DARAM PAGE 1
}
可以发现以上信息基本与存储器映象文件ccs_basic.Map 中相同。memory
部分说明了存储空间的页数、长度、起始点和名称。Section 部分是对段的
配置说明:.text 段和向量段固定的连接至程序空间;.bss 段和.stack 段固定的连接至数据空间,存储类型为RAM。连接后的配置结果为向量段从第0 页的0x0080 地址开始存放,代码段从第0 页的0x1000 地址开始存放,堆栈段从第1 页的0x100 地址开始存放,数据段从第1 页的0x2000 地址开始存放。
2. 输出文件ccs_basic.out 的运行和调试实验代码如下:
STACK_ADDR .set 0x0500 ;设置堆栈底端地址
;在变量段分配数据,为未初始化的变量保留空间
.bss a,2
.bss x,2
.bss y,1
;在数据段分配数据,存入初始化数据
.data
table:
.word 10,5 ;初始化a1=10,a2=5
.word 8,6 ;初始化x1=8,x2=6
.mmregs ;开启系统默认的寄存器
.global main ;定义全局符号
;------------------------------------------------------------------------------
.text ;开始编写程序
main:
stm #STACK_ADDR, SP ;设置堆栈
stm #0x00a8, PMST
stm #0x0000, SWWSR
;================================================
stm #a, AR2 ;设置AR1 指向a
stm #table, AR3 ;设置AR3 指向table
rpt #1
mvdd *AR3+, *AR2+ ;循环一次,将0x000A 和0x0005 存放在地址0x2000 stm #x, AR2 ;设置AR2 指向x
rpt #1
mvdd *AR3+, *AR2+ ;将地址0x2005 低16 位的0x0008 和0x0006 存放到地址为0x2002 的存储器空间
call SUM ;执行sum 模块的功能
;死循环,使PC 在当程序结束时锁定在一个已知的区域
dead_loop:
nop
nop
nop
b dead_loop
;================================================