图4-4 图形查看工具设置
(4)请使用Debug -> Halt暂停程序的执行。在Project管理栏中打开fir5402.asm文件,并在ccs_show(在fir子程序中)行后的nop语句处上增加一个断点。
(5)选择View -> Graph -> Time/Frequency菜单打开一个图形显示窗口,参见上图。
将“Start Address”项改为地址0x1800,将“Display Data Size”项设置为128,将“DSP Data Type”改为“16-bit signed integer”。这样,将在图形显示窗口中显示从0x1800(信号输入缓冲)开始的128个点的16位有符号整数。再打开一个图形窗口,显示从地址0x1020(滤波信号输出缓冲)开始的128点的16位有符号整数。
(6)选择Debug -> Animate项运行程序。Animate运行和Run运行基本一致,只是使用Run运行时,若遇到断点,将停下来,直到用户再次使用Run命令才恢复运行。而使用Animate运行时,若遇到断点,CCS刷新所有的显示窗口,如寄存器、CPU、MEM、图形显示等,然后自动恢复运行。所以,你能看到连续更新的滤波输出。 六、实验报告要求
1、完成预习报告:预习报告主要包括实验目的、要求,需要用到的仪器设备、物品资料以及简要的实验步骤,以及对实验原理的理解和实验方案的设计(硬件方案和软件流程图等),实验代码的初步编写;
2、学生开始实验时,应该将记录本放在近旁,将实验中所做的每一步操作、观察到的现象和所测得的数据及相关条件如实地记录下来。
32
3﹑绘出实验结果图;
4、实验报告:主要内容包括对实验数据、实验中的特殊现象、实验操作的成败、实验的关键点等内容进行整理、解释、分析总结,回答思考题,提出实验结论或提出自己的看法等。
5﹑写出本次实验的心得体会。 七、思考题
(1)请说明下面的辅助寄存器的操作意义:
*ar0(#0100), *ar3+%, *ar3+0%, *ar2-%, *+ar3(-2)%
(2)本实验程序使用ar2和ar3作为指针,能否使用其它的辅助寄存器,如ar0和ar1?
(3)在DES5402PP板上,‘C5402的片内RAM被同时映射为数据存贮区和程序存贮区,若将两者分离,该程序将如何修改?
(4)本程序使用了循环寻址,使用循环寻址的数据缓冲区的地址能否任意设置? (5)以给出一组FIR带通滤波器系数文件DESPASS.INC,请在DES实验板上实现,并观察输入和输出的波形以及频谱。滤波器为42阶对称结构FIR滤波器,参数为采样频率fs=25kHz,带通中心频率为3kHz,通带为2.5kHz – 3.5kHz,上下过度带分别为1kHz – 2.5kHz 和3.5kHz – 5kHz。(提示:你可以直接使用.include “despass.inc”语句,将参数文件导入主程序。)
(6)修改滤波子程序,使用C54X的FIR指令而不是MAC指令完成滤波运算。 (7)若条件允许,请修改程序:利用DES5402PP的输入通道接收外部信号源的输入,然后将滤波后的信号从输出通道输出,并通过示波器观察结果。
33
实验五: TMS320VC5402的Bootloader设计与实现
实验学时: 4 实验类型:设计 实验要求:必修 一、实验目的
1、掌握VC5402 Bootloader概念与基本原理,并掌握Bootloader的具体工程实现。 2、能够熟练的在CCS环境下编程与调试,会用汇编指令和标准C语言编写程序; 3、了解TMS320VC5402片上外设及其存储器结构;会使用通用EEPROM编程器烧制EERPOM芯片。 二、预习与参考 1.为什么需要Bootloader
在CCS开发环境下,PC机通过不同类型的JTAG电缆与用户目标系统中的DSP通信,帮助用户完成调试工作。当用户在CCS环境下完成开发任务,编写完成用户软件之后,需要脱离依赖PC机的CCS环境,并要求目标系统上电后可自行启动并执行用户软件代码,这就需要用到Bootloader技术。同时Bootloader也指由TI在生产芯片时预先烧制在TMS320VC5402片内ROM中,完成该功能的一段代码名称。
2.Bootloader的基本原理与模式
本实验主要介绍TMS320VC5402中的Bootloader技术(以下简称C5402),但仍可应用于更高版本的DSP芯片中。因为C5402是RAM型器件,掉电后不能保持任何用户信息,所以需要用户把执行代码存放在外部的无挥发存储器内,在系统上电时,通过Bootloader将存储在外部媒介中的代码搬移到C5402高速的片内存储器或系统中的扩展存储器内,搬移成功后自动去执行代码,完成自启动。
Bootloader技术提供很多种不同的启动模式,包括并行8bit/16bit的总线型启动、串口型启动和HPI口启动等模式,兼容多种不同系统需求。当C5402芯片复位时,如果其处于微计算机模式(MP/MC引脚为逻辑0),那么复位后在C5402程序空间地址为0F800h处,可以通过CCS看到TI预先烧制在其片内ROM 的Bootloader这段代码。C5402复位后,程序指针指向0FF80h处的中断向量表,执行指令“BD 0FF80h”,即跳至Bootloader入口,开始执行Bootloader代码。在搬移用户代码之前,Bootloader会设置C5402的状态寄存器,包括将INTM位置1,禁止全局中断;OVLY置1,将片内DARAM映射到程序/数据空间;和设置整个程序/数据空间均插入7个等待状态,以适应可能慢速的EEPROM。
34
为了兼容不同系统需求,C5402提供很多种启动模式,包括: ?
HPI启动模式:由外部处理器(即主机)将执行代码通过C5402的
HPI口搬移到C5402片内RAM。当主机搬移完所有程序代码,还要将程序入口地址写入C5402数据空间007Fh内。这样,C5402一旦检测到007Fh处不再为0值,即判断为代码转移完毕,并跳转到007Fh里存放的地址去执行,从而完成启动; ?
8bit/16bit的并行启动模式:在这种模式下,C5402通过其数据和地址
总线从数据空间读取启动表(Boot Table)。启动表内容包括:需要搬移的代码段,每个段的目的地址,程序入口地址和其他配置信息。启动表具体内容将在下文介绍。 ?
8bit/16bit的标准串口启动模式:在这种模式下,C5402通过工作在标
准模式的多通道缓冲串口(McBSP)接收启动表,并根据启动表中的信息装载代码。McBSP0支持8bit模式,McBSP1支持16bit模式; ?
8bit串行EEPROM启动模式:在这种模式下,C5402通过工作在SPI
模式的McBSP1接收来自外部串行的EEPROM中的启动表,并根据启动表中的信息装载代码。 ?
8bit/16bit的I/O启动模式:在这种模式下,C5402使用XF和BIO引
脚,与外部设备达成异步握手协议,从地址0h处的I/O端口读取启动表。 一旦C5402复位,Bootloader会做循环检测操作,以决定执行哪种启动模式。Bootloader首先检测HPI启动模式条件是否成立,如果条件不满足,则继续检测下一种,直到找到一种满足条件的启动模式。它检测的顺序如下:
1. HPI启动模式第一次检测:通过检测INT2引脚是否有中断发生来判断是否
进入HPI启动模式;
2. 串行EEPROM模式; 3. 并行模式;
4. 通过McBSP1的标准(8bit)串口启动; 5. 通过McBSP0的标准(16bit)串口启动; 6. I/O启动模式;
7. HPI启动模式第二次检测:通过检测数据空间007Fh是否为非0值来决定
程序入口点;
需要注意的是,当Bootloader检测完所有可能的启动模式后,而没有发现一种有效的启动模式,则Bootloader仅会从标准串口启动模式开始重新检测启动模式,而并不是重新检测所有可能的启动模式。整个流程如图5-1所示。
35
复位HPI启动No初始化串口INT2是否产生中断?Yse有效的入口地址?XF置低RestartYesNo跳转到入口地址有效的关键字?标准串口启动McBSP1?YseYes串行EEPROM启动INT3是否产生中断?Yse搬移代码有效的串行EEPROM启动?NoNoYesMcBSP0?Yse有效的关键字?Yes搬移代码No装载代码NoNoNoIO启动并行启动从I/O空间0FFFFh处读取数据NoBIO为低?Yse有效的关键字?Yes搬移代码有效的并行启动?YseNoNoHPI启动(第二次检查)有效的入口地址?Yse从数据空间0FFFFh处读取数据跳转到入口地址NoNo有效的并行启动?Yes搬移代码Restart图5-1 Bootloader模式选择流程
3.并行启动模式分析
在上述各种启动模式中,并行启动模式实现简单,速度较快,在实际系统中应用也最为广泛,本实验则重点介绍这种启动模式。当检测完毕串行EEPROM启动模式无效后,Bootloader会转入8bit/16bit并行启动模式检测。Bootloader首先从I/O空间地址为0FFFFh处读取一个字的数据,并将该数据作为启动表在数据空间的起始地址。启动表起始地址处应包含用于判断8bit/16bit启动模式的关键字:对
36