转载地址:http://blog.chinaaet.com/rowen/p/5100050569
最近有个FPGA+DSP架构的项目,安装了DSP的开发环境CCS,这里介绍下CCS的使用方法。说明:开发TMS320C6678,建议使用CCS5.0以上版本,以下介绍基于CCS5.5。
一、软件安装
1、建议默认安装方式,路径可以根据实际情况自行设定。
2、安装完CCS后,需要添加破解的license文件,将其拷贝到/ccsv5/ccs_base/DebugServer/license 下面,即可使用。CCS5.5破解的license文件可使用CCSv5-China-University-Site_License.lic。
3、安装MCSDK,里面包含DSP相关的开发库及例程,本例中使用版本bios_mcsdk_02_01_02_06_setupwin32.exe,安装时建议将其安装到CCS的根目录下,安装后如下所示:
4、由于以上安装MCSDK版本的EDMA3及NDK库存在bug,建议使用以下版本替换即可edma3_lld_02_11_02_04及ndk_2_24_01_18。替换方式:将安装目录中的整个库文件删除,然后将需要替换的压缩文件整个解压到安装目录中,重新打开CCS后,软件会自动添加更新的库文件,点击确定即可。
二、工具栏介绍
1、CCS界面右上角的标志为,选中CCS Edit,此为编辑模式,此时左上角的工具栏为,下面以此做简单介绍:
“File”:其下拉菜单为
其中“New”还有一级下拉菜单,用来新建工程(后面介绍)、新建一个C/C++文件或头文件、新建cfg文件(使用SYS/DSP需要的配置文件)、ccxml文件(调试时连接仿真器的配置文件)等;“Import”用于导入已存在的工程;
“Edit”:对可编辑文件进行粘贴、复制、回退等操作;
“View”:显示窗口,如查看工程目录(Project Explorer)、查看DSP内存数据(Memory Browser)、查看变量值(Variables)、查看反汇编代码(Disassembly)等;
“Project”:新建工程及编译工程等;
“Run”:给core加载程序(不常用);
“Scripts”:加载脚本文件,在debug的时候,如果CCXML中添加了gel文件,在此下拉菜单中会出现各个初始化模块,如果需要对某个模块重新初始化,选中即可。
2、选中右上角,此为调试模式,此时左上角的工具栏为,此时多了Tools的工具菜单,“Run”的下拉菜单选项也发生变化。
“Tools”:可以对内存空间填充特定数据、加载数据文件及保存数据等,仿真分析。
“Run”:增加了调试方法,及对系统时钟(clock)的操作(用于计算程序运行时间)。
二、建立工程
1、打开CCS软件后,需要指定一个工作区间目录,新建工程都默认在此目录下。
2、File->New->CCS Project(Project->New CCS Project),弹出如下界面:
设置project name如“Project_test”,Device选择开发芯片对应的型号,Advanced Setting用来设置开发条件(如设备大下端、编译器版本、包含的link文件及包含库等),一般情况下默认即可,如果需要使用SYS/BIOS则选择Empty RTSC Project否则选择Empty Project。如果选择Empty Project,点击finish即可,此工程建立完成;如果选择Empty RTSC Project,则点击next。
3、配置BIOS,配置界面如下:
首先选择需要使用的模块库,然后根据开发板芯片型号选择合适的目标类别,最后选择合适的Platform(可以借鉴评估板,在此基础上修改)及编译版本。点击finish即可完成新建工程的建立。
三、工程介绍
如下面工程目录:
“GE”为工程名,当工程正确编译后会生成GE.out的二进制可执行文件及Debug(Realease)
文件。为了工程目录清晰可以右键工程名,然后New->Folder新建一个文件夹,将文件进行归类,如上图所示文件夹src,然后将原文件放进src中,若有头文件可新建一个Header文件夹存放头文件。上图KeyStone.cmd用于分配DSP内存及其用途,此文件需要右击工程名,然后New->File建立,命名后缀为cmd,下面简单介绍其内容:
-heap 0x800:表示分配的堆大小为0x800;
-stack 0x1000:表示分配的栈大小为0x1000;
MEMORY{}中的内容是给DSP可用内存段命名,如
SL2: o = 0x0C000000 l = 0x00200000
表示起始地址0x0C000000,长度为0x00200000的连续内存空间名为SL2;
SECTIONS{}中的内容是给程序运行时需要的堆栈、全局变量等指定内存,如
.stack > LL2_RW_DATA
表示指定栈的空间在LL2_RW_DATA所对应的内存段内。如果需要自定义内存空间用于存储数据,可以进行如下操作:
Ddr3 > DDR_RW_DATA
表示定义一个空间段名为Ddr3,其映射地址空间为DDR_RW_DATA对应的一段连续内存(DDR_RW_DATA内可以定义多个空间段,程序中不能直接使用名称DDR_RW_DATA,但可以使用重定义的名称Ddr3)。接下来如果要在程序中定义一个Input[1024],并将其存储到Ddr3对应的空间中,可以在程序中添加以下代码段:
#pragma DATA_ALIGN(Input, 8); //8字节对齐
#pragma DATA_SECTION(Input, "Ddr3"); //Input内存属于Ddr3所对应的内存段
Uint32 Input[1024]; //定义一个数组
一般可以参考软件自带的cmd文件。
如图,GE.ccxml为调试连接仿真器的配置文件,此文件需要New->Target configuration File建立,打开此文件左下方有三个可选项,其中Basic是选择正确连接的仿真器及芯片型号;Advanced是设置仿真器参数及加载初始化gel文件,当点击连接的仿真器时,会出现下图右侧的参数配置框,可根据实际情况进行设置。
如果需要给特定的核加载初始化文件时,选中对应核后,在右侧initialization script中添加指定的初始化文件,一般只需给core 0加载即可。
完成以上操作后,点击save,然后点击Test Connection,检测仿真器是否正确与开发板相连。