DSP开发,使用CCS软件建立工程以及烧录

1 概述

本文讲述了CCS建立DSP工程文件以及烧录相关的教程。

1.1 资源概述

开发板: 普中DSP开发板
CCS版本:6.1.3
主控芯片型号:TMS320F28335
开发板

1.2 DSP介绍

德州仪器DSP在电机控制领域使用非常多,在最近20年接近霸主的存在,计算能力完胜早期的arm,典型的型号有2407和2812。但是最近两年arm上升势头非常明显,差距越来越小,而且在外设方面完爆DSP。中美贸易战后中国很多公司开始去美国化,在新一代的产品中不再选用德州仪器的DSP,而是选择ST的ARM芯片或者国产的一些arm芯片。但是旧的基于DSP平台开发的产品还是要维护,新的平台也需要从dsp上迁移过来,所以有必要熟悉DSP的应用。

2 工程建立

2.1 详细步骤

1,在需要建立的工程的文件夹内新建一个工程文件夹,此文件夹名字以及所在路径不能包含中文名。
新建一个文件夹
2,打开CCS软件,在弹出的Workspace内指向刚才建立的文件夹。
文件路径
3,建立新工程
建立新工程
4,填入工程的相关信息,器件型号,工程名字,路径以及工程类型。进行第4步,在选择编译器的时候,需要特别注意,尽量使用与原工程相同或者相近版本的编译器,否则将会出现不可预知的错误。
工程信息
5,新建后的工程,只包含两个文件以及一个文件夹,文件为系统必须的头文件路径,RAM连接的配置文件28335_RAM_Ink.cmd。
工程文件
28335_RAM_Ink.cmd文件可以在工程properties选项里边进行选择。
cmd文件选择
6,在工程文件夹下建立4个文件夹,其中LIB拷贝TI官方的库C文件,头文件以及汇编文件。这里的C文件用到哪些拷贝哪些,缺失或者多余将会导致报错,报错的类型是变量没有定义或者被重复定义。头文件需要全部进行拷贝,即使那些看起来风马牛不相及的文件,因为这些文件在系统初始化或者中断向量表中均有引用。(stm32的arm工程只需要拷贝需要的文件)。
建立文件夹
Lib->include文件夹的头文件
头文件清单
Lib->source文件夹的库函数文件,IQmath.lib为数学函数库,官方已经封装好。本例程中没有使用到复杂的数学计算,也可以不要。
库函数文件
user里边放置main.c文件,Hardware里边放置和硬件相关的文件,这里放置LED.c和LED.h。添加完后整个工程的结构是这样的
工程结构
7,增加头文件路径,选中工程,右键,点击Properties。
Properties
选择头文件路径,其中workspace是相对路径,库文件必须在工程文件夹下,工程建立完成后即使挪动工程也不会导致头文件路径失效,因此建议选择。browse是绝对路径,必须确保库文件路径不发生变化,否则将导致报错,variables是环境变量定义的库函数路径。还不知怎么使用。
头文件路劲
8,编译工程,没有错误和警告,编译完成后在工程树下可以看到生成了可供烧录的out文件。
编译结果
烧录用的.OUT文件
bin文件
9,烧录下载,这里和arm不同,这里只是烧录到了DSP的RAM,而不是FLASH。当断电或者重启时,程序将丢失,重新引导Flash里边的程序,如果要烧录到Flash需要进行另外的操作。点击烧录后会弹出对话框,配置调试的参数。
对话款
生成配置文件,点击YES,在新弹出的对话框中填入文件名,并确认
对话框
10,选择仿真器和芯片型号型号,插入仿真器,点击右侧的 Test Connection。
仿真器
若正常,在最后的几行将会弹出仿真器连接成功提示信息
仿真器连接成功
11,再点击下载调试按钮,将会打开下载调试界面,可以单步调试添加断点等。在这里插入图片描述

3 工程建立总结

建立工程编译通过需要下述文件
1.源文件以及对应的头文件,并指定头文件的路径
2.库文件以及对应的头文件,并指定头文件的路径
3.cmd文件

4 烧录到flash中

4.1 增加必要文件

1,增加C文件,Memcopy.c
在这里插入图片描述
2,增加cmd文件F28335.cmd,屏蔽旧的cmd文件28335_RAM_Ink.cmd,CMD文件为分配内存用。
文件处理
3,main函数中增加初始化操作代码,这段代码会调用Memcopy.c;

	MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);

	InitFlash();

4,编译下载,程序烧录,烧录时间比烧录RAM长很多,这个过程注意不要断电,不要断开仿真下载器,也不要进行复位,否则将可能导致芯片被锁死,无法再次下载程序。另外烧录的密码也不要设置全0,否则芯片将会琐事死。
5,通过指定Cmd文件路径和在工程中增加cmd文件效果是等效的。如果是放在工程里边记得将不用的cmd文件无效掉。
指定路径

4.2 增加预编译宏(非必须)

1,增加两套编译参数,复制于Debug。
编译参数
2,在Flash设置里边增加预编译全局宏。预编译参数宏
3,将代码写为宏定义的方式,使用ifdef,endif。在Ram配置里边,没有定义FlashProg,因此为灰色,在Flash配置里边有定义,此段代码将会被编译。
预编译
4,在配置参数配置过程中,不要使用Release(发布版本),此种方式将会进行极简的优化,在闪灯的程序中,直接跳过了Delay函数,导致LED灯常亮。这里的Delay函数用的是简单的while循环做延时,被编译器优化了,而用系统的Systick实现的延时函数不会出现这个问题。

	while(1)
	{
		LED1_TOGGLE;
		LED7_TOGGLE;
		delay();
	}

5,选择工程右键,可以选择不同的编译模式,此时不同的宏会生效。
编译模式设置

5 程序烧录

5.1 官方烧录工具 Uniflash

TI官方提供了独立的下载工具Uniflash,可以对下载进行更多的设置,如设置密码,擦除芯片选项,导出out或者bin文件等。
下载工具
官网提供较低版本Uniflash(3.4.1)下载,此版本支持XDS100 V1.0仿真器,高于此版本软件不支持。烧录

5.1.1 双核芯片烧录-使用Uniflash

当芯片为28379D双核芯片时,需要选择对应的CPU下载文件,CPU01和CPU02,下载两次。设置保持默认即可。
双核芯片下载

5.2 第三方烧录软件C2Prog

C2Prog支持串口以及JTAG烧录,支持烧录.out文件。这个下载器下载速度比官方提供的UNIFLASH还要快。
C2

5.2.1 C2Prog串口烧录

开发板boot跳线设置,不同的DSP拨码方式不相同。制作单板硬件时,通常时将前面三个直接拉到高,GPIO84通过跳线或者拨码进行设置。下拉到0表示串口进行加载启动。boot使用串口下载DSP必须使用下述的端口,其它的端口会显示不能连接。不同的DSP对应的脚位也不同,具体参考数据手册。端口

5.2.2 C2Prog JTAG烧录

C2PROG这个软件支持使用仿真器通过JTAG下载DSP程序。
JTAG下载程序

5.2.3 C2Prog JTAG烧录支持的仿真器类型

支持的仿真器类型XDS系列的仿真器基本都支持
仿真器类型

5.2.4 C2Prog JTAG双核烧录

C2Prog同样支持双核烧录,双核F28379D需要分别选择对应的内核和烧录程序进行下载,因为两个CPU有各自独立的CPU内核。
独立的Flash
烧录CPU1
烧录CPU1
烧录CPU2
烧录CPU2

5.3 烧录注意事项

使用Uniflash软件进行烧录时,烧录完成后,需要拔出仿真器,否则程序可能无法正常运行。C2PROG却不会有这个问题,下完后就自行跑起来了。

6 串口说明

一般来说电脑端或者USB转串口线都是公头,开发板端是母头,2和3的定义不同,恰好交叉。使用USB转串口线可以直插开发板通讯,如果是台式机自带串口连接开发板则需要使用直连线而不是交叉线。
串口定义说明

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值