1、报错如下:
------------------------- tam2012112701.pjt - Debug -------------------------
[] "C:\CCStudio_v3.3\C2000\cgtools\bin\cl2000" -@"Debug.lkf"
<Linking>
>> 28335_d: error: system error, can't open file '/.obj' for input:
No such file or directory
>> Compilation failure
Build Complete,
2 Errors, 0 Warnings, 0 Remarks.
解决方法
是修改了CMD文件,看来它的确不能动,我只是做了一些注释,网上说CMD里面不能用" // "注释。
2、报错
"tam2012112801.c", line 59: warning: last line of file ends without a newline
解决
最后一行后多加几个回车键,不要不光标放在最后一行。
3、Include Search Path
C:\CCStudio_v3.3\MyProjects\DSP2833x_common\include;C:\CCStudio_v3.3\MyProjects\DSP2833x_headers\include
4、
注意添加rts2800_fpu32.lib和GlobalVariableDefs.c\
5、
那应该到原因了,ADC_cal这个函数是默认在ROM里的, 看下面的CMD:
/* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
.adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD
6、
"DSP2833x_PieVect.c", line 20: error: identifier "PIE_RESERVED" is undefined
"DSP2833x_PieVect.c", line 36: error: identifier "INT13_ISR" is undefined
"DSP2833x_PieVect.c", line 37: error: identifier "INT14_ISR" is undefined
原因是我没有加DSP281x_DefaultIsr.h所以不行的。
7、
返回的数据只有一个,而且乱码。
解决:ScicRegs.SCICCR.bit.LOOPBKENA=1;
8、
error: symbol _InitGpio is defined multiple times:
C:\\CCStudio_v3.3\\MyProjects\\tam2013010901\\Debug\\DSP2833x_Gpio.obj and C:\\CCStudio_v3.3\\MyProjects\\tam2013010901\\Debug\\tam2013010901.obj
解决:删除DSP2833x_Gpio.c
9、
undefined first referenced
symbol in file
--------- ----------------
_XINT7_ISR C:\\CCStudio_v3.3\\MyProjects\\tam2013010901\\Debug\\DSP2833x_PieVect.obj
_ECAN1INTA_ISR C:\\CCStudio_v3.3\\MyProjects\\tam2013010901\\Debug\\DSP2833x_PieVect.obj
_USER10_ISR
解决:添加源文件DSP2833x_DefaultIsr.c
10、变量修饰符
static:
修饰变量,函数。作用域:变量仅仅在本文件可见,函数在本文件可以被调用。static在函数内部定义的话,分配在堆中,数值保存在data段,而不是在栈中,而且只赋值一次。
extern:
修饰变量,函数。修饰变量时候,变量的声明在外面,修饰函数的时候,如果函数已经声明,则作用不是很大。
const:
修饰变量,函数。修饰变量时候,不能被重复赋值,只能放在只读段中。修饰函数时候,表明函数的返回值必须为常数。
volatile:
volatile最初的意思是表示汽油容易挥发,在c中的作用大概有两点(1)表示变量是易失的,易变的。(2)强制访存操作,防止编译器去优化,告诉编译器每次必须去内存中取值,而不是从寄存器或者缓存。
编译器错误11、注意 GpioCtrlRegs.GPBDIR.all = 0xFFFFFFFF; // GPIO32-GPIO63 are inputs
寄存器GPBDIR是32位的,需要8个字母配置。
GPI的Ctrl寄存器都需要EALLOW和EDIS保护。
12、
DSP的lib
今天在里讨论了关于lib,受益匪浅,类似的把东西总结一下,希望以后大家遇到这样的问题后,能很容易的解决。在此也练一下笔法,从小就讨厌写东西,今天试一试,有不足之处还请大家见谅。
帮助留的第二个问题,我们好多学员都在里讨论了,收获很多,我就把讨论的内容和论坛上以前别人发的一部分内容总结的写一下。
.lib文件是库文件,寄存器地址和对应的标示符定义都包含在这个库里面了,里面包括标准的C/C++运行支持库函数,浮点运算程序,系统启动程序_c_int00 等,这些库中也包括由汇编实现的子程序,可以在汇编中调用,比如除法子程序 FD$$DIV等。从编程的角度讲,通常有静态库文件和动态库文件。静态库文件就是.lib文件,动态库文件就是.dll文件。内容一样,都是将函数封装在一起编译后供自己或他人调用。好处在于编译后的库文件看不到源代
码,可保密;同时不会因为不小心修改了函数而出问题,便于维护。
两种库的区别在于静态库被调用时直接加载到内存,而动态库再是在需要的时候加载到内存,不使用的时候再从内存释放。
对于dll与lib的解释,002+吻之龙<*****************> 给出了相信的解释
(1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。
在开发和调试阶段,当然最好都有。
(2) 一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。
(3)在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL和.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误
当你打开ccs里的库文件函数时你就会发现有好多个库文件函数,不知道怎么用,我查了好多资料,也没查出个什么来,只查到了这些感觉有用的
For C28x these libraries can be built:'
rts2800.lib (C/C++ run-time object library)
rts2800_ml.lib (C/C++ large memory model run-time object library)
rts2800_eh.lib (C/C++ run-time object library with exception handling support)
rts2800_ml_eh.lib (C/C++ large memory model run-time object library with exception handling support)!
rts2800_fpu32.lib (C/C++ run-time object library for FPU targets)
rts2800_fpu32_eh.lib (C/C++ run-time object library for FPU targets with exception handling support)
当你把别人的东西拷到你的电脑后,运行时就会出现错误,提示
.Oundefined first referenced
symbol in file' x0
--------- ----------------
FS$$MPY C:\dsppro\gpio\Debug\DSP28_CpuTimers.obj
FS$$TOL C:\dsppro\gpio\Debug\DSP28_CpuTimers.obj
这种错误主要是DSP28_CpuTimers.obj没有连上,解决方法一:在ccs软件的工程下的Libraries下先移除rts2800.lib,然后右击选择CCStudio_v3.3\C2000\cgtools\lib下的rts2800.lib就可以了,解决方法二:133+sowellwww<*********************>:rts2800_ml.lib是系统自带的,只要在option里面包含就可以了,不需要单独再往里面加了,就好像C语言里写头文件一样,#include <stdio.h>,我们不需要再专门把这个文件出来加进去,只要定义过了,系统会自动为你添加的,而像其他的lib,比如IQmath.lib不是系统里有的,这种要自己添加进去才能使用,同样用C语言头文件包涵为例#include "IQmathLib.h" 这个文件就一定要添加进去才能使用。具体操作:你project菜单下的build option下的link里的libraries里的incl:libraries里输入你所用的lib,就可以了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论