Linux对DSP的开发环境搭建

Linux对DSP的开发环境搭建
WildboarGLinux下对DSP28335的开发
在Windows下,一般我们使用CCS开发套件对TI的芯片进行开发,这通常只需要打开CSS新建工程就很容易进行开始编写代码。 但是CCS看起来比较臃肿。 于是就想着在Linux 下尝试搭建开发环境。
环境准备
- Linux服务器一台(笔者用的是docker容器下Ubuntu)
搭建步骤
准备工具链
- 编译器(TI C2000-CGT) 不是GCC
- 下载
https://www.ti.com/tool/C2000-CGT - linux版本
进入上边的连接,网页拉到最下行下载C2000-CGT — C28x/CLA code generation tools (CGT) - compiler 这是工具链的下载器,他有很多和版本,默认选择最新版的,但是我们用的DSP28335芯片比较老旧,新编编译器兼容性不是很好,我在Window下CCS6中看到编译器是15.12.1TLS ,这里也选择对应的版本,注意下载的是linux版本
我们用wget将下载器download下来
1 | wget https://dr-download.ti.com/software-development/ide-configuration-compiler-or-debugger/MD-xqxJ05PLfM/15.12.1.LTS/ti_cgt_c2000_15.12.1.LTS_linux_installer_x86.bin |
- 检查校验和
be4c55eff0f723851feeadca07076312af6b9f80d33cd3149b5352b8c61011b3是个好习惯
1 | sha256sum ti_cgt_c2000_15.12.1.LTS_linux_installer_x86.bin |
- 目前我们只是下载了下载器,需要用下载器拉去编译链工具。使用前记得提权
1 | chmod +x ti_cgt_c2000_15.12.1.LTS_linux_installer_x86.bin |
- 然后就可以运行下载器
1 | $ ./ti_cgt_c2000_15.12.1.LTS_linux_installer_x86.bin |
这里报错了,看不出来是什么问题
可能是:
需要图形界面 - 该安装程序可能需要GUI
缺少依赖库 - 如 GTK 或其他图形库
强制使用控制台模式安装测试
1 | # 强制使用控制台模式 |
- 查看FILE取查看文件头
1 | # root @ 7ca288ec64b8 in /opt/ti/ti-cgt-c2000_15.12.1.LTS [12:48:17] |
- 这是一个 ELF 32-bit LSB executable
- Intel 80386 - 32位架构
- 静态链接,没有section header
我的docker 容器是64位的,32位程序需要32位库支持(ia32-libs)
- 安装32位库支持
1 | apt-get install -y libc6-i386 lib32stdc++6 |
再次运行下载器
1 | $ ./ti_cgt_c2000_15.12.1.LTS_linux_installer_x86.bin |
这里要填写工具包安装到哪里我设定的是/opt/ti/ti-cgt-c2000_15.12.0LTS 手动输入一下
然后一路回车,安装
- 安装完成验证一下是否安装成功
1 | ls /opt/ti/ti-cgt-c2000_15.12.1.LTS/bin/cl2000 |
至此,编译器工具链安装完成,可以着手编写代码。
工程编写
一般编写dsp28335程序都是移植官方给的标准库,在标准库之上调用。而工程的建立依赖CCS管理,以win 为例,在工程根目录下看到.ccsproject cproject project
ccsproject
- 项目类型(Executable, Library等)
- 目标设备配置
- 编译器工具链设置
- 调试器配置
- 构建配置引用
cproject
作用:Eclipse CDT构建系统配置文件(CCS基于Eclipse)
内容:
- C/C++ Build - 构建设置、工具链选项
- Build Variables - 构建变量
- Scanner Settings - 代码索引设置
- Project References - 引用项目
包含的关键信息:
- 编译器选项 - 所有
-v28,-ml,--float_support=fpu32等 - 包含路径 -
-I./Driver/inc等 - 宏定义 -
--define=CPU1等 - 链接器选项 -
.cmd文件、库文件等
| 文件 | 作用 | 编译必需 | 迁移到Makefile |
|---|---|---|---|
| .ccsproject | CCS主配置(设备/调试器) | ❌ | 提取设备信息 |
| .ccsproject | Eclipse CDT构建配置 | ✅ | 核心来源 |
| .project | Eclipse项目描述 | ❌ | 不需迁移 |
| .ccxml | 调试器连接配置 | ❌ | 烧写/调试用 |
而开发者在编写工程时,一般都是用将标准库链接参与编译,DSP2833x_common和DSP2833x_headers两个文件夹 里边包含了系统库文件、 链接器命令文件、目标配置文件,大部分教程告诉你让你包含对应的头文件路径,在CCS中编译你的工程文件。
这是就是对的。但现在我们的目标是丢掉臃肿的CSS,自己手动管理工程(makefile), 我们需要将库文件复制到工程Library里边。在编写工程前先保证层次工程结构。
1 | -Application 应用层 |
由Makefile替代掉原来的.ccsproject 也就是如何编译的问题。
根据目前的层级管理来编写Makefile
编译选项复制CCS6 的配置。
1 | # ============================================================ |
编译结果产出firmware.out 和 frimware.hex
将其烧录到板子上
编译过程中一些出错问题
- 提示某些库文件找不到,可库文件已经添加到Library目录下,这是由于库的.h的文件名不匹配改一下文件名就可以了,linux下对文件名大小写非常敏感,原来在windows下,标准库的部分文件名大小写不对,也能编译通过。
比如:DSP2833x_I2c_defines.h → DSP2833x_I2C_defines.h
提示那个不存在就修改对应的大小就ok
安装
使用工具安装UNIFLASH




