DSP3

DSP3
DSP3

实验报告

课程名称DSP原理与应用

实验项目DSP系统的自启动

指导教师王勇

学院光电信息与通信工程_

专业电子信息工程

班级/学号电信0901/2009010525 学生姓名王明坤

实验日期___2011年12月___

成绩______________________

一、实验目的

1.了解TMS320VC5509A DSP芯片多种引导加载模式。

2.掌握TMS320VC5509A DSP扩展Flash的烧写过程。

3.设计自启动程序。

4.采用FlashBurn插件烧写程序,实现DSP程序脱离仿真器独立运行。

二、实验仪器及工具

计算机,安装Windows XP 操作系统、TI 的TMS320C5000 DSP 的开发软件CCS2.21;ICETEK-VC5509教学实验箱。

三、实验内容

1.设计自启动程序。

2.采用FlashBurn插件烧写程序,实现DSP程序脱离仿真器独立运行。

四、实验步骤

(一)、设计自启动程序

1.将板上的U5拨码开关DIP3、DIP4、DIP5、DIP6向上拨到ON(靠近CPLD一侧)。2.连接仿真器、目标板和PC机,设置CCS在硬件仿真(Emulator)方式下运行,去掉启动时使用的GEL文件,启动CCS。

3.选择菜单Project→New,在c:\ti\myprojects目录下新建项目dip.prj,将c:\ICETEK-VC5509-AG-EDULab\ Lab0302-DIP\ICETEK-VC5509-A.cmd 拷贝到c:\ti\myprojects\ dip目录下。

4.编写dipmain.c文件。其main函数先初始化EMIF,将CE1、CE2配置为16位异步存储器,然后在一个死循环中读取拨码开关U4状态直接送指示灯显示。

5.将ICETEK-VC5509-A.cmd和dipmain.c添加到dip.prj中,编译、调试程序。

6.将烧写程序(dip.out)转换格式成Hex格式(dip.hex): 拷贝c:\ti\c5500\cgtools\bin目录下hex55.exe到c:\ti\myprojects\dip\debug目录下。编写hex5509.cmd文件将dip.out转换成dip.hex。

7.点击out2hex.bat将dip.out转换成dip.hex。

(二)、采用FlashBurn插件烧写程序

1.选择CCS 的Tools菜单,如果其中没有“FlashBurn”选项,则需要安装CCS烧写Flash 的插件FlashBurn。安装烧写Flash插件FlashBurn:打开C:\ICETEK–VC5509-AG-EDULab\Lab0308-BootLoader\,双击文件夹内的“C5000C6000-2[1].20-SA-to-TI-FLASHBURN271.EXE”,进入安装程序并按照提示完成安装。FlashBurn安装目录:c:\ti\bin\utilities\FlashBurn。

2.将C:\ICETEK–VC5509-AG-EDULab\Lab0308-BootLoader\FBTC55.out拷贝到c:\ti\myprojects\dip目录下。

3. 选择CCS 菜单Tools→ FlashBurn ,打开FlashBurn 插件。单击FlashBurn 的菜单File

→New 创建一个新的配置文档,显现如下图所示FlashBurn 配置对话框。

4. 配置好后,选择菜单Program →Download FBTC ,弹出“将改动保存到…”对话框?,点

击“是”安钮,将配置保存到*.cdd 配置文件中,随后FlashBurn 将FBTC 程序下载到目标板中,下载成功后,注意观察窗口的右下方链条模样的图标是变为互相连接,文字由“Not Connected ”变为“Connected ” 。下次可以选择菜单File→Open 打开刚刚保存的配置文件。

5. 选择菜单Program →Erase Flash ,将擦除Flash 存储器。

6. 选择菜单Program → Program Flash ,将.hex 或.dat 文件烧写到Flash 中。单击“Close”按

钮退出。

7. 测试自启动

(1) 将目标板电源关闭;(2) 拔掉仿真电缆,让仿真器和计算机脱开;

(3) 将板上的U5拨码开关DIP3、DIP4、DIP5向下拨到OFF ,DIP6向上拨到ON (靠近

CPLD 一侧),配置ICETEK-VC5509-A 评估板为外部16位异步存储器(Flash ,CE1空间)的引导模式;

(4) 重新打开目标板电源;(5) 观察板上程序的运行;

(6) 如果四位数码管显示U4拨码开关状态,则表明烧入Flash 的程序正在运行;

(7) 当U4拨码开关有拨动ON 的位置的时,按一下板上的复位按钮,程序将从新运行(先

四位数码管全亮,然后四位数码管显示U4拨码开关状态)。

五、实验代码:

1、dip.c

#include "myapp.h"

浏览要烧写到

Flash 的dip.hex

浏览

填入 Flash 基地址

(字节地址,对TMS320VC5509A 为0x400000) 填入以字节为单位Flash 存储器的大小0x80000

// 定义指示灯控制寄存器地址和寄存器类型

#define LBDS (*((unsigned int *)0x400001))

// 定义拨码开关控制寄存器地址和寄存器类型

#define DIPS (*(unsigned int *)0x400002)

main()

{ CLK_init(); // 初始化DSP运行时钟

SDRAM_init(); // 初始化EMIF接口

while ( 1 )

{ LBDS=DIPS; // 读取拨码开关状态直接送指示灯显示}

}

2、CLK_init.c

#include "myapp.h"

// 定义指示灯控制寄存器地址和寄存器类型

#define LBDS (*((unsigned int *)0x400001))

// 定义拨码开关控制寄存器地址和寄存器类型

#define DIPS (*(unsigned int *)0x400002)

main()

{ CLK_init(); // 初始化DSP运行时钟

SDRAM_init(); // 初始化EMIF接口

while ( 1 )

{ LBDS=DIPS; // 读取拨码开关状态直接送指示灯显示}

}

3、SDRAM_ini.c

#include "myapp.h"

voidSDRAM_init( void )

{ ioport unsigned int *ebsr =(unsigned int *)0x6c00;

ioport unsigned int *egcr =(unsigned int *)0x800;

ioport unsigned int *emirst=(unsigned int *)0x801;

//ioport unsigned int *emibe=(unsigned int *)0x802;

ioport unsigned int *ce01 =(unsigned int *)0x803;

//ioport unsigned int *ce02 =(unsigned int *)0x804;

//ioport unsigned int *ce03 =(unsigned int *)0x805;

ioport unsigned int *ce11 =(unsigned int *)0x806;

//ioport unsigned int *ce12 =(unsigned int *)0x807;

//ioport unsigned int *ce13 =(unsigned int *)0x808;

ioport unsigned int *ce21 =(unsigned int *)0x809;

//ioport unsigned int *ce22 =(unsigned int *)0x80A;

//ioport unsigned int *ce23 =(unsigned int *)0x80B;

ioport unsigned int *ce31 =(unsigned int *)0x80C;

//ioport unsigned int *ce32 =(unsigned int *)0x80D;

//ioport unsigned int *ce33 =(unsigned int *)0x80E;

ioport unsigned int *sdc1 =(unsigned int *)0x80F;

//ioport unsigned int *sdper=(unsigned int *)0x810;

//ioport unsigned int *sdcnt=(unsigned int *)0x811;

ioport unsigned int *init =(unsigned int *)0x812;

ioport unsigned int *sdc2 =(unsigned int *)0x813;

*ebsr = 0x221;

*egcr = 0x220;

*egcr = 0x220;

*ce01 = 0x3000;

*ce11 = 0x1fff;

*ce21 = 0x1fff;

*ce31 = 0x1fff;

*emirst = 0;

*sdc1 = 0x5958;

*sdc2 = 0x38F;

*init = 0;

}

4、func.h

void interrupt tint( void );

voidCLK_init( void );

voidSDRAM_init( void );

voidINTR_init( void );

voidTIME_init(void);

voidTMCR_Reset( void );

voidSetDSPPLL(unsigned intuPLL);

5 、myapp.h

//#include "C5509.h"

//#include "peripherals.h"

#include "func.h"

6、hex5509.cmd

dip.out

-o dip.hex

-map dip.mxp

-m2

-boot

-parallel16

{PAGE 0 : ROM : o=0x400000, l=0x100000

}

7、out2hex.bat

hex55 hex5509.cmd

@pause

六、实验总结:

通过这次实验,我对系统的自启动和FlashBurn插件烧写程序有了进一步的了解,还有这掌握了.out文件转换为.hex的操作过程。

相关主题
相关文档
最新文档