CCS程序设计与DSP硬件实验
更新时间:2023-11-15 09:31:02 阅读量: 教育文库 文档下载
实验项目5、CCS程序设计与DSP硬件实验
一、实验目的
(1)掌握CCS环境下程序编辑、编译、运行、下载、调试的过程。 (2)掌握DSP处理器的汇编、C语言程序设计方法。 (3)掌握DSP的硬件访问。
二、 实验原理及知识点
第一部分 DSP实验箱简介与CCS 第二部分 CCS 软件安装
第三部分 TDS510USB仿真器安装与CCS设置测试
三、实验内容及步骤
一、实验原理和方法
开发 TMS320C6xxx 应用系统一般需要以下几个调试工具来完成:
1.软件集成开发环境(CCS):完成程序编译、目标文件产生、下载,进行程序和硬件的联合仿真调试。
2.仿真器:实现硬件仿真调试时与硬件系统的通信、控制和读取硬件系统的状态和数据。 CCS 通过工程来管理文件,一般包括以下几种文件:
1) 源程序文件:C 语言或汇编语言文件(*.c 或*.asm),所编写的代码都写在各个源文件中;包含了所有要实现功能的代码,是工程的核心。
2) 头文件(*.h):主要定义了芯片内部寄存器结构、中断服务程序等内容。
3) 链接命令文件(*.cmd):分配RAM空间,用来将下载到RAM中的程序进行调试,是因为DSP编译器编译结果是未定位的,DSP也没有相应系统来执行代码,DSP系统的配置需求也不尽相同,因此需要定义代码的存储位置。
4) 库文件(*.lib,*.obj):包含了寄存器的地址和对应标示符的定义,还包含标准C/C++运行支持的库函数。
二.汇编语言DSP程序设计实验 (一)实验原理与方法
1.汇编语言程序在执行时直接从用户指定入口开始。 2.由于CCS的代码链接器默认支持C 语言,在编制汇编语言程序时,需要设置链接参数,选择非自动初始化,注明汇编程序的入口地址。 (二)实验步骤与内容
1.运行 CCS Setup
连接实验箱与PC机,打开电源给实验箱供电,点击setup code composer studio v3.3,运行 CCS Setup,设置CCS,就是建立CCS与用户的目标板或软仿真器之间的通信。
保存配置。
2.启动 CCS
3. 在C:\\CCStudio_v3.3\\MyProjects下新建一个文件夹:myasm。
创建工程
4. 设置工程编译选项
选择CCS菜单project->Build Options,点击Linker页,设置Autoinit Model为:No Autoinitialization(这点是与C语言程序设计不同) 注意:若省略这一步,也不影响程序建立,只不过会出现警告:warning: entry point symbol _c_int00 undefined
5. 输入源程序 1)输入汇编源程序
选择File->New->Source File或使用工具条的快捷按钮,进入文件编辑窗口。 录入汇编源程序:
;********************************** ; 输入数据存放在:x,y ; 本例程完成运算:x+y ; 结果存放:z
; 其中:x,y,z都占32位
;********************************* .bss x, 4 ;排版要空一格,下同 .bss y, 4 .bss z, 4 ;.def start ;.def x, y, z
.text
start: ;排版要顶格
mvkl x, A0;立即寻址,将变量x 的值放到寄存器A0 mvkh x, A0;立即寻址,将变量x 的值放到寄存器A0 mvkl y, B0;立即寻址,将变量y 的值放到寄存器B0 mvkh y, B0;立即寻址,将变量y 的值放到寄存器B0 mvkl z, B2;立即寻址,将变量z 的值放到寄存器B2 mvkh z, B2;立即寻址,将变量z 的值放到寄存器B2 mvkl 0x010a0f2a, A4;给A4 低16位赋值 mvkh 0x010a0f2a, A4;给A4 高16位赋值 mvkl 0x1ab31211, B4;给B4 低16位赋值 mvkh 0x1ab31211, B4;给B4 高16位赋值 stw A4, *A0;A4存入A0所指地址单元 nop 5
stw B4, *B0;B4存入B0所指地址单元 nop 5
ldw *A0, B1 ;将A0寻址单元的值读入B1 nop 5 ;避免流水线冲突
ldw *B0, A1;将B0寻址单元的值读入A1 nop 5
add A1, B1, A2 ;加法运算:A1+B1-->A2
stw A2, *B2 ; 将A2的值存入B2所指地址单元 b $ ;一直在这里跳转,注意:b后有一个空格
注意:汇编语句前需要留出空格,标号顶格输入,否则编译有错误提示。 保存源程序到工程目录下,保存文件为:myasm.asm
2)输入链接命令文件
点击“File/New/Source File”或使用工具条的快捷按钮,进入文件编辑窗口。输入链接命令文件内容:
-stack 400 -heap 400 MEMORY {
ISRAM : origin = 0x0, len = 0x1000000 }
SECTIONS {
.vectors > ISRAM .text > ISRAM
.bss > ISRAM .cinit > ISRAM .const > ISRAM .far > ISRAM .stack > ISRAM .cio > ISRAM .sysmem > ISRAM }
保存源程序到工程目录下,命名为myasm.cmd。
6. 将上述编辑的源程序myasm.asm和链接命令文件myasm.cmd加入工程myasm.pjt。
11.关闭工程
点击Project->Close。 12. 退出CCS
四、GPIO实验
(一)实验原理和方法
GPIO 作为通用输入/输出接口,有着广泛的应用。简单配置后,即可用来控制和 接口各种外设。
对于和别的管脚复用的GPIO,首先需要使能GPIO 功能,然后配置成输入或输出 方向后,才能对其控制。
DM642 DSP 的McASP 寄存器的AHCLKX 引脚驱动DS6 灯,PFUNC、PDIR、 PDOT 如下表所示:
本实验中,使用了AHCLKX, 对其置1 或置0 可以点亮或熄灭DS6 灯。其连接电路如下图所示:
(二)实验内容与步骤
1. 运行 CCS Setup,选择设置实际的实验室硬件仿真器,即platform选“TDS510USB PLUS Emulator”,Family选“C64xx”,available factory boars选“C64xx Rev 1.1 TDS510USB plus emulator-WintechDigital”
2.启动 CCS
3.新建gpio文件夹,路径为:C:\\CCStudio_v3.3\\MyProjects\\gpio,创建工程 建立工程 gpio.pjt
4.准备 1)设置
Project --> Build Options --> Preprocessor,在include search path中加入:C:\\CCStudio_v3.3\\MyProjects\\gpio\\gpio,在Pre-define Symbols 中加入:_DEBUG;CHIP_DM642。如图:
2)复制库文件
复制C:\TS-DM64X\TS-DM64xexperimentccs3.3\TS-DM64x_examples\lib下的文件evmdm642bsl.lib到当前工程gpio目录下,并添加到工程中。或者直接在工程的lib上点击添加C:\TS-DM64X\TS-DM64xexperimentccs3.3\TS-DM64x_examples\lib下的库文件evmdm642bsl.lib到工程中。
5. 输入程序
1)输入源程序gpio.c,选择File->New->Source File或使用工具条的快捷按钮,进入文件编辑窗口。录入源程序: #include
#include
#define GPEN *(volatile unsigned int *)0x01b4c010 // MCASP PFUNC Register #define GPDIR *(volatile unsigned int *)0x01b4c014 // MCASP PDIR Register #define GPVAL *(volatile unsigned int *)0x01b4c018 // MCASP PDOUT Register
/**mcasp ahclkx----->DS6 **/ main() {
unsigned int i;
EVMDM642_init();
/*---------- 初始化GPIO -------*/ GPEN = 0x8000000; //使能 GPDIR = 0x8000000; //设置输出
/*--------- 置MCASP PDOUT Registe为0或1 -----*/
GPVAL = 0x00000; //设置GP0的值0,能够将DS6熄灭 for (i = 0; i < 0xfffff; i++){}; while(1) {
GPVAL = 0x8000000; //点亮
for(i = 0; i < 0xffffff; i++){}; //延时 GPVAL = 0x00000; //熄灭
for(i = 0; i < 0xffffff; i++){}; };
}
2)选择File->New->Source File,新建包含文件evmdm642.h,其内容如下: #ifndef EVMDM642_ #define EVMDM642_
#ifdef __cplusplus extern \#endif
#include
* Note: Bit definitions for each register field * needs to be supplied here for the CPLD * and other board periperals. */
/* Compatability definitions */ #define NULL 0
/* CPLD address definitions */
#define EVMDM642_CPLD_BASE 0x90080000 #define EVMDM642_SYNC_BASE 0xb0000000 #define EVMDM642_FPGAFLASH_BASE 0x90040000 #define EVMDM642_FPGASDRAM_BASE 0x80000000
/* CPLD Register Indices */
/*#define EVMDM642_OSDCTRL 0x10 #define EVMDM642_THRESHLSB 0x11 #define EVMDM642_THRESHMSB 0x12 #define EVMDM642_ISR 0x13 #define EVMDM642_IER 0x14 #define EVMDM642_GPIODIR 0x15
#define EVMDM642_GPIOSTAT 0x16 #define EVMDM642_LED 0x17 #define EVMDM642_FLASHPAGE 0x18 #define EVMDM642_REVISION 0x1F*/
#define EVMDM642_LED1 0x28 // DS1~3 address when using EPLD #define EVMDM642_LED4 0x38 // DS4 address when using EPLD
/* FPGA definitions */
#define EVMDM642_FPGALEN 0x393d8
/* I2C handle */
extern I2C_Handle EVMDM642_I2C_hI2C;
/* GPIO handle */
extern GPIO_Handle EVMDM642_GPIO_hGPIO;
/* Initialize all board APIs */ void EVMDM642_init();
/* Read an 8-bit value from a CPLD register */ Uint8 EVMDM642_rget(Int16 regnum);
/* Write an 8-bit value to a CPLD register */ void EVMDM642_rset(Int16 regnum, Uint8 regval);
/* Spin in a delay loop for delay iterations */ void EVMDM642_wait(Uint32 delay);
/* Spin in a delay loop for delay microseconds */ void EVMDM642_waitusec(Uint32 delay);
/* Send a configuration file to the FPGA */ void EVMDM642_loadFpga(Uint32 fpgaaddr);
/* Initialize keyboard */ int keyboard_init(void);
#ifdef __cplusplus }
#endif #endif
保存到工程gpio.prt所在文件夹下,名为evmdm642.h。 3)输入链接命令文件
点击“File/New/Source File”或使用工具条的快捷按钮,进入文件编辑窗口。输入链接命令文件内容: /*
* Copyright 2001 by Texas Instruments Incorporated.
* All rights reserved. Property of Texas Instruments Incorporated. * Restricted rights to use, duplicate or disclose this code are * granted through contract. */
/*-l ..\\lib\\rts6400.lib*/
-l cslDM642.lib -l rts6400.lib -stack 0x400 -heap 0x400 MEMORY {
ISRAM : origin = 0x0, len = 0x1000000 }
SECTIONS {
.vectors > ISRAM .text > ISRAM
.bss > ISRAM .cinit > ISRAM .const > ISRAM .far > ISRAM .stack > ISRAM .cio > ISRAM .sysmem > ISRAM }
保存源程序到工程目录下,命名为gpio.cmd。
6.向工程添加文件
将源程序gpio.C,链接命令文件gpio.cmd, evmdm642.h加入工程gpio.pjt。 7. 编译源文件、建立目标文件(.out),连接connect
产生gpio.out
8.调用编程可执行程序
选择File->Load Program,选择\\gpio\\debug\\gpio.out。 9.调试
用菜单debug->Step Into或F11可以单步运行。10.观察实验结果
能够点亮火熄灭DS6发光二极管。 11. 退出CCS
四、实验仪器与软件
(1) PC计算机 (2) 多媒体通信实验箱 (3) DSP仿真器 (4) 音视频连线、耳麦
正在阅读:
CCS程序设计与DSP硬件实验11-15
肋骨骨折护理查房 Word 文档(2)01-16
东大16秋学期《电子商务》在线作业103-07
一年级下册数量词02-06
2019年的第一场雪作文200字06-14
JSP页面显示的中文问题05-04
中石油华东《计算机文化基础》2015年春学期在线作业(二)满分答案10-23
机械设计考试资料104-16
2014陕西教师招聘备考知识点:社会心理学之印象形成效应11-02
选煤知识题库03-23
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 程序设计
- 实验
- 硬件
- CCS
- DSP
- 工程流体力学(A)
- 五年级上册科学实验手册整理
- 关于我国收入分配问题的研究 doc
- 全方位理财规划建议书 - 图文
- 山东省淄博市2017级高三二模考试地理试题带解析
- 实验二 MATLAB数值计算与符号运算功能
- 2013年全国大学生电子设计竞赛获奖名单 - 图文
- 基础教育质量监测工作平台使用说明(学校版)
- 青少年宫培训工作总结
- 2018-2019年级建造师专业科市政公用工程1K420000市政公用工程项目施工管理检测试题含答案考点及解析
- AGV专用呼叫器
- 振动加速度信号处理探讨
- 1 认知过程(练习)
- 双壁钢围堰作业指导书
- 公推直选与两推一选区别
- 装配式建筑预制构件BIM建模标准报批稿-沈阳质量技术监督局网站
- 在全县重点项目建设推进会上的讲话
- 加油站数质量管理
- 广告心理学笔记
- 如何改进工作作风