ccs编译器_还在为CCS编译报错而头疼?

5d2ef64bdab2af9432c44e9ef4d26c9f.png

一、前言

CCS,即Code Composer Studio,学过DSP的同学应该都对这个软件耳熟能详。虽然利用官方提供的库和例程编写代码并不困难,但是常常会遇到各种奇怪的报错。比如从其他电脑上导入项目,甚至是导入官方的例程项目,有时候都会出现动辄几十上百条报错,令不少初学者(包括我)头疼不已,这篇文章想要梳理一下我在导入项目的时候出现的报错,以及我的分析和解决办法,不定期更新,希望可以帮助到大家。

二、关于controlSuite

2588d36683023ddb6620018617bd8aaf.png
ControlSuite套件

首先必须安装controlSuite,里面包括了常用库文件以及例程。对于初学者来说,这些资料是必不可少的,也省去了很多直接去写寄存器数值的麻烦。这里以F28069为例,我们需要用到的库文件的位置在

$controlSuite$device_supportf2806xv150

由于这个路径比较长,下面以$LibPath$来表示这个库文件的位置。


三、报错分析

【Unresulved symbol系列报错】

  • Unresolved symbol +各类函数+,first referenced....

b0b6c179f54465ed216c48c2c7de3eb9.png
CCS 报错信息

分析

可以看到最下面提示unresolved symbol,即出现了无法解析的符号。涉及了_AdcOffsetSelfCal以及_InitAdc,这并非是我们自己定义的函数,因此一定是缺少了Adc.c这个库文件。而如果是自己定义的函数,则说明你只定义了函数声明,而缺少函数定义。(这就涉及到C语言基础了,不再赘述)

解决办法

  1. 在项目上右键
  2. 选择Add Files
  3. 在弹出的文件选择框中选择到$LibPath$f2806x_commonsource下的相应C文件,比如这里应该选择Adc.c文件。(LibPath的含义参见前文第二部分)
  4. 弹出的对话框中选择Copy file,最好不要选择Link,否则容易一不小心就把原始库文件给改了,影响以后的使用。
  5. 重新编译,报错消失
  • Unresolved symbol+各种寄存器变量+,first referenced....

af96ff3685594524345934d8913adc9d.png
CCS报错信息

分析

通过报错信息可以看到,无法解析的符号(Symbol)都是寄存器(Regs),同样说明缺少库文件的引入,这里则是缺少了GlobalVariableDef.c。这是一个定义了各种寄存器以及很多全局变量的库文件,不引入项目自然是无法编译的。

解决办法

用上一个报错的解决办法,添加$LibPath$f2806x_headerssource目录下的GlobalVariableDef.c文件

  • Unresolved symbol +各类以ISR结尾的函数(比如ADCINT1_ISR),first referenced....

6f6ed601f37a73f3e4efd8e0c20a0a5b.png
CCS报错信息

分析

从报错信息中可以看出,缺乏ISR,即Interrupt Service Routine,即缺乏中断服务,如果你在项目中使用到了中断,则必须要引入defaultISR.c文件,用于默认中断的实现。

解决办法

用上面一样的办法添加$LibPath$f2806x_commonsourceDefaultIsr.c文件

【Creating output section without section specification系列】

  1. 如下

cecf95e5431024d57db8f8cea1b024b3.png

分析

虽然都是警告,但实际上忽视警告有时候后果是很严重的,代码可能根本跑不了。这里的警告就是涉及到寄存器内存分配的问题,具体以后有时间再详细分析DSP的内存分配的问题

解决

项目中添加$LibPath$2806x_headerscmdf2806x_headers_non_BIOS.cmd即可。顺便提一句,当我们点开这个文件就可以看到每个模块的寄存器段的分配。

MEMORY

而在$LibPath$2806x_headerscmd目录下还有另外一个BIOS.cmd,二者区别参见

the difference betwenn BIOS and non-BIOS applications​e2e.ti.com

【导入例程错误】

  • --cdebug_asm_data is no longer supported --cdebug_asm_data is no longer supported

分析

由于编译器的升级,不再支持“--cdebug_asm_data”这一参数,因此需要删除该编译参数

解决办法

  1. 打开项目属性
  2. 进入如下位置

a9653c0770ec05d26793b2b8ea7f1ce7.png

3. 点击框选位置,删除--cdebug_asm_data字段即可

  • XDAIS报错

分析

7d73b45d5df46dcc0b2589db340b1337.png

解决办法

去掉下图中的勾即可

765c90fafa1ca8bfcde381a710698ca1.png

四、后续

关于CCS的报错分析还有很多,以后有时间再更新,觉得有帮助的朋友点个赞呗~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值