一、Code Composer Studio概述
1.1 安装
CCS中文官网:https://www.ti.com.cn/tool/cn/CCSTUDIO
CCS官网下载:https://www.ti.com/tool/download/CCSTUDIO
CCS用户手册:https://software-dl.ti.com/ccs/esd/documents/users_guide/index.html
官网开发板:https://www.ti.com/tool/TMDSEVM6678
https://www.ti.com.cn/tool/cn/PROCESSOR-SDK-C667X
https://www.ti.com/tool/PROCESSOR-SDK-C667X
Processor SDK RTOS Getting Started Guide
Processor SDK RTOS Developer Guide
https://www.ti.com.cn/product/cn/TMS320C6678?keyMatch=C6678
https://www.ti.com.cn/product/cn/TMS320C6678?keyMatch=C6678#cad-cae-symbols
CCS6.2的安装与使用操作
CCS6图文安装教程
CCS建立工程以及烧录
DSP入门教程
1.2 选型
通用DSP芯片的代表性产品包括TI公司的TMS320系列、AD公司ADSP21xx系列、MOTOROLA公司的DSP56xx系列和DSP96xx系列、AT&T公司的DSP16/16A和DSP32/32C等单片器件。
下面主要以TI为主:
- 16 bit定点DSP:最早以TMS320C10/C2X为代表,现在以TM320C2XX/C54XX为代表。
- 32 bit浮点DSP:代表产品ADSP21020、TMS320C3X
- TMS320C2XX/C54X系列属于定点DSP芯片,TMS320C3X/C4X/C67X属于浮点DSP芯片
TI的三大主力DSP产品系列:
- C2000系列主要用于数字控制系统;
- C5000(C54x、C55x)系列主要用于低功耗、便携的无线通信终端产品。其中TMS320C54x系列DSP芯片被广泛应用于通信和个人消费电子领域。
- C6000系列主要用于高性能复杂的通信系统。
1.3 快捷键
Crtl + B 编译整个工程 写完代码后编译查错
Ctrl + 单击 打开声明 是函数的话跳转到该函数,是变量跳转到变量定义
Crtl + / 添加注释快 选定N行代码,操作后该代码块被注释,再按一下取消注释
Alt + / 代码提示 帮你输入代码串,比如要写PWM部分,他就会出EPwm1Regs
Ctrl+F 当前窗口查找 当前C文件内查找
Ctrl+H 全局查找 在整个Project里面查找,条目会出现在右下叫窗口
Ctrl+Q 返回编辑位置 比如看其他子函数后,操作后立马返回开始写代码,很舒服
Ctrl+D 删除光标所在行 一下删除一行,不用Backspace
Ctrl+L 跳转到指定行 操作后,输入数字跳转到该行
Alt + 上下 光标所在行移动 光标所在行整体上移,下移
ctrl +O 打开outline 列出当前编辑的文件中的所有符号,包括函数、结构体、常量等,可以快速输入已定位需要查看的对象,就不用我们再不停往下翻了
debug模式下快捷键:
F11 进入Debug 直接进入
Alt+Ctrl+C 连接到仿真器 将程序导入到仿真器
Alt+Ctrl+R 重新加载工程 重新加载后,又需要将程序导入到仿真器
F8 运行工程 烧录到芯片内,跟连接到仿真器一个效果
F5 单步运行 打开register后,单步运行查看寄存器状态,调程序很高效
F6 单步跳过函数 跟单步运行比,是一个函数一个函数运行的,要快
所有已有的快捷键:
help -> Key Assistant 会显示所有的快捷键。
自定义快捷键(重新绑定):
Window ->Preference -> General -> keys
二、TMS320C6678
官网:https://www.ti.com/product/TMS320C6678#tech-docs
官网C6678
创龙bilibili
TMS320C6678专栏(创龙csdn)
FPGA+DSP的高速AD采集处理开发详解(创龙csdn)
TMS320C6678专栏系列文章
TMS320C6678LE开发板环境搭建及使用说明(下)
KeyStone I DSP【C665x 与 C6678】 视频教程
2.1 C6678启动方式
C6678的spi挂载flash启动
C6678的emif挂载norflash启动
C6678多核启动
C6678是多核处理器,有8个核。每个核都有其独立的32KB的L1P,32KB的L1D以及512KB的L2,此外8个核还有4M的共享的MSM,接口资源包括SRIO,PCIe,Hyperlink,Gigabit Ethernet(GbE),EMIF,TSIP,UART,I2C,SPI接口。针对这些接口,RBL(ROM bootloader)支持多种程序加载模式:
(1)SPI加载模式:可以通过SPI外挂一个NorFLASH,将待加载的程序通过TI官方提供的转化工具将需要加载的.out程序转化成.h文件,然后通过仿真器将数据烧写到NorFLASH中,最后将c6678配置成SPI启动方式,重新上电即可。
(2)PCIE加载模式:C6678存在PLL锁不住频率的问题,所以需要将6678配制成二次加载模式。即先用SPI加载,然后通过SPI加载的程序初始化好PLL时钟及PCIE接口,然后通过PCIE接口加载程序。上位机通过PCIE直接写DSP内存来实现加载功能的。首先通过TI官方提供的工具将要加载的.out程序转化为.bin文件,然后读取.bin文件通过PCIE接口直接写到DSP内存,然后触发运行即可。
(3)以太网加载模式,该加载模式是通过网口发送udp包来完成的。将要加载的.out文件通过TI提供的工具转化为.eth文件,然后将DSP配置成以太网加载模式,DSP会通过网口向外界广播BOOTP的广播包,通过抓包工具抓包,并分析DSP的MAC地址,在通过ARP命令将该MAC地址映射到与上位机同一网段的IP地址上,最后用TI的pcsendpkt工具将.eth文件发送给DSP,DSP收到上位机发送的UDP的数据包后,会自动凭借数据。
2.2 Github上的C6678
Test SRIO connection between FPGA (Kintex-7) and DSP (C6678):
https://github.com/GOOD-Stuff/srio_test
C6678的SRIO:
https://github.com/papa-karlo/srio-6678
Examples of TI-C6678 DSP:
https://github.com/fengyhack/TMS320C6678
C6678的CCS工程:
https://github.com/pranav404/testing_c6678
https://github.com/tbh111/C6678-project
2.3 cmd文件
Link的cmd文件用于DSP代码的定位。由于DSP的编译器的编译结果是未定位的,DSP没有操作系统来定位执行代 码,每个客户设计的DSP系统的配置也不尽相同,因此需要用户自己定义代码的安装位置。