1、myasm。创建工程4. 设置工程编译选项 选择CCS菜单project-Build Options,点击Linker页,设置Autoinit Model为:No Autoinitialization(这点是与C语言程序设计不同)注意:若省略这一步,也不影响程序建立,只不过会出现警告:warning: entry point symbol _c_int00 undefined5. 输入源程序1)输入汇编源程序 选择File-New-Source File或使用工具条的快捷按钮,进入文件编辑窗口。录入汇编源程序: ;* 输入数据存放在:x,y 本例程完成运算:x+y 结果存放:z 其中:x,y,
2、z都占32位* .bss x, 4 ;排版要空一格,下同 .bss y, 4 .bss z, 4.def start.def x, y, z .textstart:排版要顶格 mvkl x, A0;立即寻址,将变量x 的值放到寄存器A0 mvkh x, A0; mvkl y, B0;立即寻址,将变量y 的值放到寄存器B0 mvkh y, B0;立即寻址,将变量y 的值放到寄存器B0 mvkl z, B2;立即寻址,将变量z 的值放到寄存器B2 mvkh z, B2; mvkl 0x010a0f2a, A4;给A4 低16位赋值 mvkh 0x010a0f2a, A4;给A4 高16位赋值 mv
3、kl 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 add A1, B1, A2 ;加法运算:A1+B1-A2 stw A2, *B2 ; 将A2的值存入B2所指地址单元 b $ ;一直在这里跳转,注意:b后有一个空格汇编语句前需要留出空格,标号顶格输入,否则编译有错误提
4、示。保存源程序到工程目录下,保存文件为:myasm.asm2)输入链接命令文件点击“File/New/Source File”或使用工具条的快捷按钮,进入文件编辑窗口。输入链接命令文件内容:-stack 400-heap 400MEMORY ISRAM : origin = 0x0, len = 0x1000000SECTIONS .vectors ISRAM .text .bss .cinit .const .far .stack .cio .sysmem 保存源程序到工程目录下,命名为myasm.cmd。6. 将上述编辑的源程序myasm.asm和链接命令文件myasm.cmd加入工程my
5、asm.pjt。7. 编译源文件、建立目标文件(.out)点击菜单project-compile file,可以对文件进行编译再点击菜单Project-Build,建立目标文件成功建立的文件应该是错误和警告都为0. 8调用目标文件(调用编程可执行程序) 1)连接仿真器与目标板点击: Debug-connect,连接成功后,CCS左下角有提示。 Connect连接之后,选择File-Load Program,选择myasmdebugmyasm.out,点击Debug-Restart后PC此时指向00000000 00000000地址。9.调试1)goto main2)设置断点在需要设置断点的行前
6、双击鼠标,则在行前出现红色的原点,表示设置了断点;若在已经设置了断点的行前双击鼠标,则可以取消该断点。3)单步运行 用菜单debug-Step Into或F11可以单步运行。10. 观察开启CPU寄存器观察窗口:单击菜单ViewRegisterscore。使用单步运行,查看相应寄存器的值的变化。还可开启Watch window,Memory窗口,进行变量、存储空间的观察。点击view-watch window,则打开观察窗口11. 退出CCS三C语言DSP程序设计实验1. 标准C 语言程序CCS 支持使用标准C 语言开发DSP 应用程序。C源程序文件名的后缀应为.c。CCS 在编译标准C 语言
7、程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP 的可执行代码。最后生成的是COFF 格式的可下载到DSP 中运行的文件,其文件名后缀为.out。由于使用C 语言编制程序,其中调用的标准C 的库函数由专门的库提供,在编译链接时编译系统还负责构建C 运行环境。所以用户工程中需要注明使用C 的支持库。2. 命令文件的作用命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP 硬件中的位置分配信息。通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放置在DSP 所管理的内存中。命令文件也为链接程序提供了DSP 外扩存储器的描述。在程序中使用CMD 文件描述硬件
8、存储区,可以只说明使用部分,但只要是说明的,必须和硬件匹配,也就是只要说明的存储区必须是存在的和可用的。3. 内存映射(map)文件的作用为了更精确地使用ROM 空间,我们就需要知道程序的大小和位置,通过建立目标程序的map 文件可以了解DSP 代码的确切信息。当需要更改程序和数据的大小和位置时,就要适当修改cmd 文件和源程序,再重新生成map 文件来观察结果。另外,通过观察map文件,可以掌握DSP 存储器的使用和利用情况,以便进行存储器方面的优化工作。1. 准备将DSP实验设备与硬件仿真器相连接,连接电源线,打开电源开关。2设置CCS 在硬件仿真(Emulator)方式下运行,选择实际的
9、仿真器。3.启动CCS环境4创建工程。 选择菜单Project-New,创建ctest.pjt工程5建立源文件1)建立C语言源程序文件。选择FILE-Source,输入下列C代码,保存到文件ctest.c。int sel_max(int a, int b);void main() int x; int y; int z; x = 21; y = 98; while(1) z=sel_max(x,y); /函数调用 int sel_max(int a, int b) return(a=b)?a:b);2)建立链接命令文件点击“File/New/Source File”或使用工具条的快捷按钮,打开
10、编辑窗,建立ctest.cmd文件,内容如下:6.工程添加文件 点击菜单Project-Add Files to project,分别加入ctest.c,ctest.cmd文件,再向工程添加C:CCStudio_v3.3C6000cgtoolslib下的文件rts6400.lib(这点与汇编程序设计不同)(注意:若不添加,则链接时会出现警告: entry point symbol _c_int00 undefined)7编译、建立目标文件 产生ctest.out8.调用编程可执行程序1)连接仿真器与目标板2)选择File-Load Program,选择ctestdebugctest.out。
11、1)执行至C语言主程序入口点击Debug-go main。 用菜单debug- 4)全速运行Run或F5可以全速运行。还可开启Watch window,Memory窗口,进行变量、存储空间的观察11.关闭工程 点击Project-Close。12. 退出CCS四、GPIO实验(一)实验原理和方法GPIO 作为通用输入/输出接口,有着广泛的应用。简单配置后,即可用来控制和接口各种外设。对于和别的管脚复用的GPIO,首先需要使能GPIO 功能,然后配置成输入或输出方向后,才能对其控制。DM642 DSP 的McASP 寄存器的AHCLKX 引脚驱动DS6 灯,PFUNC、PDIR、PDOT 如下表
12、所示:本实验中,使用了AHCLKX, 对其置1 或置0 可以点亮或熄灭DS6 灯。其连接电路如下图所示:(二)实验内容与步骤1. 运行 CCS Setup,选择设置实际的实验室硬件仿真器,即platform选“TDS510USB PLUS Emulator”,Family选“C64xx”,available factory boars选“C64xx Rev 1.1 TDS510USB plus emulator-WintechDigital”3.新建gpio文件夹,路径为:C:CCStudio_v3.3MyProjectsgpio,创建工程建立工程 gpio.pjt4.准备1)设置 Proje
13、ct - Build Options - Preprocessor,在include search path中加入:CCStudio_v3.3MyProjectsgpiogpio,在Pre-define Symbols 中加入:_DEBUG;CHIP_DM642。如图:2)复制库文件复制C:TS-DM64XTS-DM64xexperimentccs3.3TS-DM64x_exampleslib下的文件evmdm642bsl.lib到当前工程gpio目录下,并添加到工程中。或者直接在工程的lib上点击添加C:TS-DM64XTS-DM64xexperimentccs3.3TS-DM64x_exa
14、mpleslib下的库文件evmdm642bsl.lib到工程中。5. 输入程序1)输入源程序gpio.c,选择File-录入源程序:#include gio.h#includeevmdm642.h#define GPEN *(volatile unsigned int *)0x01b4c010 / MCASP PFUNC Register#define GPDIR *(volatile unsigned int *)0x01b4c014 / MCASP PDIR Register#define GPVAL *(volatile unsigned int *)0x01b4c018 / MCAS
15、P 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 csl_gpio.h/* * Note: Bit definitions for each register field * needs to be su
16、pplied 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 Reg
17、ister 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 0
18、x1F*/#define EVMDM642_LED1 0x28 / DS13 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 bo
19、ard 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 del
20、ay 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);保存到工程gpio.prt所在文件夹下,名为evmdm642.h。3)输入链接命令文件 * Copyright 2001 by Texas Instruments Incorporated. *
21、All rights reserved. Property of Texas Instruments Incorporated. * Restricted rights to use, duplicate or disclose this code are * granted through contract./*-l .librts6400.lib*/-l cslDM642.lib-l rts6400.lib-stack 0x400-heap 0x400保存源程序到工程目录下,命名为gpio.cmd。6向工程添加文件将源程序gpio.C,链接命令文件gpio.cmd, evmdm642.h加入工程gpio.pjt。7. 编译源文件、建立目标文件(.out),连接connect产生gpio.out8调用编程可执行程序Load Program,选择gpiodebuggpio.out。10.观察实验结果能够点亮火熄灭DS6发光二极管。四、实验仪器与软件(1) PC计算机(2) 多媒体通信实验箱(3) DSP仿真器(4) 音视频连线、耳麦
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1