DSP实验

DSP实验

实验一 集成开发环境 CCS 应用基础

一、目的
  1. 通过创建一个简单的应用工程,初步熟悉 CCS 的使用,了解程序开发调试过程。
  2. 掌握汇编语言源程序的基本框架和编写方法,了解 CCS 的工程结构以及编译连接的基本过程。
  3. 了解 ST0、ST1、PMST 的标志位对计算结果的影响以及计算过程对标志位的影响。
二、内容
  1. 在 TMS320C5402 软件仿真模型上,建立 example1.cmd 命令文件,配置 COFF 段结构,分配存储空间。
  2. 运行一段程序,分别将与 CPU 运算相关的控制位 SXM、OVM、C16、FRCT 置 1 或清 0,分析程序的执行结果。观察与 CPU 运算相关的标志位 TC、C 的变化情况。
三、要求
  1. 本实验要求在 PC 机的集成开发环境 Code Composer Studio(简称 CCS)及 TMS320C5402 软件仿真模型上进行。
  2. 实验程序:example1.asm, vectors.asm,example1.cmd
  3. 实验前要作好充分准备,包括读懂实验程序,分析程序中的原始数据、中间结果和最终结果,了解调试步骤及调试方法等。写出实验预习报告。
  4. 通过实验验证自己的分析正确否,总结实验中遇到的问题,根据实验报告的要求,认真撰写实验报告。

实验任务:

四、实验步骤
  1. 建议在逻辑盘 D:\ 下,建立以自己学号命名的子目录,(如:D:\DXK03 \ 学号)以后自己的实验程序都在此目录下运行。并将文件 example1.asm, vectors.asm,example1.cmd 拷贝该文件夹内。(说明:实验室的机器 C 盘都已保护,ti 目录在 C 盘, 所以学生的目录及文件不能建在 c:\ti\myprojects 下)。
    这里写图片描述

  2. 运行 CCS setup,选择 C5402 Device Simulator, 进入 CCS,Project –> New 建立一个新的项目 example1,Project –> Add Files to Project,将 example1.asm, vectors.asm,example1.cmd 加入该项目。
    这里写图片描述

  3. 在 Project–>Option 中加入适当的编译和连接的选项。
    这里写图片描述
    这里写图片描述
  4. Build 整个项目,产生可执行文件 example1.out。

  5. File->Load Program,装载可执行文件 example1.out,并运行和调试。

五、实验结果和提示
  1. 建立项目,并加入文件
    运行 C5402 Device simulator,选择 Project→New 菜单项,建立一个新的项目 example1.pjt,并选择 Project→add files to new project 菜单项,加入文件 example1.asm, vectors.asm,example1.cmd
    这里写图片描述
  2. 编译和连接
    1. 编译:选择 Project–>Build Option,在 Compile 表单的 Category 列表中,选择 basic 选项,并设置 generate debug info 为 full symbolic debug 选项。
    2. 连接:选择 Project–>Build Option,在 linker 表单中的 autoinit mode 选项中选择 no autointialization 模式,在 Output Filename 中输入 \ debug\ example1.out,在 Code Entry Point 中输入 main,Map Filename 中输入 example1.map,然后保存选项设置。
    3. 选择 Project→Build 构建整个项目,产生可执行文件 example1.out。
      这里写图片描述
    4. 选择 File->Load Program,装载可执行文件 example1.out。
  3. 观察存储器映象 Map 文件,选择 File→Open 打开 example1.Map 文件,可观察下列各项内容。将下列信息与 cmd 文件中的设置进行比较,理解 cmd 文件和连接器的关系。
    1. 存储器的配置情况:页面 0(PAGE 0) 为程序空间,页面 1(PAGE 1) 为数据空间。给出了各存储空间的名称。
    2. 共配置了 5 个段:
      程序文本段. text :位于 0 页,起始地址 0xe000,存储区长度 0x0017
      段. data :位于 0 页,起始地址 0xe0000,存储区长度 0x007e
      向量段. vectors :位于 0 页,起始地址 0x0080,存储区长度 0x007e
      未初始化数据段. bss :位于 1 页,起始地址 0x0000,存储区长度 0x0000
      堆栈段 STACK :位于 1 页,起始地址 0x0080,存储区长度 0x0010
    3. 全局符号:共 18 个符号,给出了它们在存储器中的位置,如符号. bss 在存储器中的位置为 0x00600。
      这里写图片描述
  4. 输出文件 example1.out 的运行和调试
    1. 运行程序:将可执行文件装载到 simulator 中,选择 Debug→Run 或按 F5 键运行程序,按 shift F5 键可中止程序的运行;选择 Debug→Step into 或按 F8 键可实现程序的单步执行。
      这里写图片描述
    2. 设置断点:把光标移到某一行,按 F9 键,这一行将会以红色高亮显示,表示在该行加了一个断点。
    3. 观察和修改存储器单元的内容,点击 CCS 操作界面左侧调试工具栏 图标,出现寄存器窗口,在该窗口查看存储器的地址,选择 View→memory 或点击 CCS 操作界面左侧调试工具栏 图标,在弹出的菜单中输入存储器地址,可观察存储器的内容。如存储器地址为 0x2000 中内容为 0x000A。修改源汇编程序中数据段内容,可查看存储器单元内容的变化。如把 a1 的值由 10 改为 1,求出和的结果将变为 0x001A。
      这里写图片描述
      这里写图片描述
      这里写图片描述
  5. 与运算相关的标志位
    1. SXM
      当 SXM 置 1 时,数据读写按照符号扩展的方式,因此 A=0xff ffff ff80
      当 SXM 置 0 时,数据读写为无符号扩展的方式,因此 A=0x00 0000 ff80
    2. OVM
      当 OVM 置 1 时,数据运算的结果将按照 32 位饱和,因此 A=0xff 8000 0000
      当 OVM 置 0 时,数据运算不饱和,因此 B=0x00 fffe 0000
    3. C16
      双 16 位计算比较
    4. FRCT
      乘法移位比较
    5. TC
      比特测试比较
    6. C
      进位、借位和大小比较
    7. OVA, OVB
      溢出标志
六、 程序说明

程序的结构和功能,对每条指令进行注释,写出执行结果
主程序

    .title "example1.asm"
    .mmregs ;enable memory mapped registers
    stack .usect "STACK" ,10h   ;set stack section
    .def _c_int00               ;define symbol _c_int00
    .text                       ;.text section
_c_int00:
    stm #stack +10h, SP         ;set stack
    ;stm #0x01ff , PMST         ;relocate Interrupt Vector Table
    stm #0x0000 , SWWSR         ;no software wait for all memory
    ;================================================
    stm #0x2000 ,AR2           ;#0x2000 ->AR2
    st #0xff80 ,*AR2           ;#0xff80 ->(AR2)
    ;================================================
    ;test SXM
    ;watch A to unde rstand sign extension
    ssbx SXM                   ;SXM 置1, 数据读写按照符号扩展的方式, ST1=0 x2900
    nop                        ; 防止流水线冲突, 下同
    ld *AR2 , A                ;((AR2))->A, A=0 xffffffff80
    ;------------------------
    rsbx SXM                   ;SXM 置0, 数据读写为无符号扩展的方式, ST1=0 x2800
    nop
    ld *AR2 , A                ;((AR2))->A, A=0 x000000ff80
    ;================================================
    ;test OVM
    ;watch A and B to unde rstand saturation
    ssbx SXM                   ;1->SXM , ST1=0
  • 1
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值