浅谈DSP开发创建第一个工程Hello World
-
本教程以TI公司的TMS320F2812芯片为例进行演示
-
开发环境搭建(CCS)
首先开发环境问题:目前最新TI官方发布的开发环境为9.3
但是值得注意的是在TI官方发布的CCS6.0以上已经取消了对软件仿真的支持 (就是使用PC的CPU来仿真运行你的DSP代码与keil中的simulator功能类似) 当然有小伙伴想说可以使用美观又方便的CCS5.5但是我没有在CCS5.5中 找到F2812的软件仿真选项(当然有小伙伴找到了可以在评论区告诉我)
综上所述本文采用比较LOW的CCS3.3来演示虽然有种种不便但是对软件仿真的支持还是很好的
CCS3.3百度云路径密码:qfe0
安装过程中如果弹出窗口中有三个按键的点最右侧的那个忽略掉即可报错就点确定(本人win10环境安装)若有出现其他情况评论区发出来安装完软件接下来就要安装硬件支持包(类似于STM32开发中的模块)
TMS320F2812支持包密码:pfd8
同样一路next就安装完成中间只有一步需要做的就是选择安装到的位置 -
CMD文件概述
在单片机和DSP开发中最明显的区别就是这个 .cmd 文件那么这个cmd文件也是令人头痛的一件事
那么下面我就浅谈一下CMD是什么东西(如有不对请及时在评论区指出)MEMORY { PAGE 0: PROG: origin = 0x80, length = 0xFF80 PAGE 1: DATA: origin = 0x1400, length = 0xFF80 /*mmr and internal dual access scratch, RAM */ } SECTIONS { .text PAGE 0 .cinit PAGE 0 .switch PAGE 0 .bss PAGE 1 .const PAGE 1 .sysmem PAGE 1 .stack PAGE 1 .ico PAGE 1 }
由上面这段CMD文件可以看出来CMD文件必备的两个function为MEMORY和SECTIONS MEMORY:为对DSP的存储空间分割,看上去类似于PC上的硬盘分区 SECTIONS:为分配各个工作模块工作在什么区域这里很重要如果分配不对就会产生类似如下的报错:
CCS3.3 placement fails for object “.text”, size 0x182a (page 0).
这句说明你的.text这个模块的工作区域太小不能满足其工作的需要所以要重新整定.text这个模块的工作区 -
编写第一个工程Hello World
下面我们就来实际新建我们的第一个DSP工程
很多小伙伴应该注意到了我所给的F2812的模块安装包中有一个doc文档其中有描述如何创建工程,但是经过我实测其实创建输出Hello World的工程并不需要那么难如果要是点灯的话我觉得可以使用这个工程目录结构。
在点灯的工程中除了要按照官方文档配置好之外还要引入在你安装目录下\C2000\cgtools\lib\C2000\cgtools\lib中的rts2800_ml.lib文件
首先创建开发使用的防真环境:
安装后会有这两个图标我们首先要点击如图中Setup的图标
如图点击红框位置创建一个新的文件
Ctrl +S保存命名为hello.c
然后右键Source ——> Add Files to Project…
选择刚刚保存的hello.c文件加入到现在的工程中
然后再右键工程图标选择添加文件到工程
在你模块安装的路径下\v120\DSP281x_common\cmd
这个文件夹里面有一个F2812.cmd的文件选择打开
然后双击你的hello.c 将下面的代码粘贴进去
#include <stdio.h>
int i=2812;
int main() {
printf("HelloWorld!\n");
printf("ID is %d \n",i);
printf("欢迎来到DSP\n");
return 0;
}
接下来进行配置include文件
右键工程名选择Build Options…
在include search path中填写
模块安装目录下的\v120\DSP281x_common\include;你的模块安装目录\v120\DSP281x_headers\include
此时Hello world工程创建运行就完成了
如果在程序编译时遇到.cmd文件中的某个模块地址没有分配只需在SCTIONS的function加入相应的名字并且分配到指定的MEMORY中定义的分区上即可,如果出现栈(stack)的错误可以尝试查看一下cmd文件或如图位置
这两个位置的分配区域是否太小注意这里最大是0x400
- 若上文中有错误地方请各位及时在评论写出避免误导其他人