1 git的作用
第一个问题,也不算错误:工程文件会有一个名称会有一个横着的箭头并且文件名前面都有问好,不算错误(算个发现),但是发现将git文件删去即可,如果没有,右击工程文件->选择TEAM->选择disconnect即可。
后来查了一下git文件的用处如下:
git文件可以实现项目共享、数据同步,可以同步至GitHub,因为.git文件的目的是为了实现代码同步,让该project可以上传GitHub
参考网址:git工具使用说明
2 CCS的平台和配置文件选取
由于项目移植到另外一台电脑,经常因为配置文件、头文件出错。这一part主要从各项目文件的主要作用、头文件的添加规范、配置文件的方法、RTSC和XDCtools的作用和用法、SYS\BIOS的作用和用法。
2.1 各个项目文件的主要作用
一个项目文件有许多不同后缀的文件,一直没有搞明白它们的具体含义:
-
.c文件和.h文件
源文件和头文件很常见,也是必备。库的.h文件也就是头文件,不一定和.c文件匹配出现,因为很多寄存器配置不需要只需要声明,除非配置寄存器函数。像一些集成的单板开发直接用寄存器函数即可,但是裸机开发许多函数.h需要自己include进去,.c文件也经常打包在.lib文件中进行include。 -
.lib文件
一个类型的.c文件打包封装成库。
Rst.lib:C语言实时运行支持库,建立C运行环境,由_c_int00主要完成设置堆栈指针、初始化全局变量、调用main()
Csl.lib:芯片支持库,实现片内外设的操作
DSPLIB/IMGLIB:信号处理库,利用针对不同DSP的优化的函数进行数学运算
通用的视/音LIB:例如263、264、jpeg、G.7XX、mp3、wmv。。。
其他自己封装的LIB:例如bsl.lib(board source library),对DSP系统板上资源的操作。 -
.cmd文件
所有在DSP上运行的工程都需要cmd文件,这个文件负责定义memory region,并将用户的代码数据section映射到这些region中去。gel是系统定制的文件,主要描述整个系统的资源和分布状况,用于说明硬件平台的配置情况cmd则是软件开方人员根据实际的硬件资源情况进行个性配置的工作,进行程序与数据空间分配的操作,两者作用完全不相同的
上面这个双核的cmd文件 -
.ccxml文件
ccxml文件用于配制仿真器的。
-
.cfg文件
只有使用了sys-biso的工程才需要cfg文件。 -
.o文件和.out文件
在源文件经过汇编器(Assembler)输出的OBJ Files(目标文件)需要通过Linker(链接器)才能得到OUT files,在链接阶段Linker根据.cmd里面存储区、Section分配以及lib来链接rst.lib、csl.lib、DSP/BIOS library跟对段的重定位
所以.o文件可以理解成每个.c或.lib编译的目标文件,通过链接器生成最终的.out文件进行烧录。 -
其他文件
.opt工程关于开发环境的参数文件。如工具条位置等信息;
.aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他.
.clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘提示你是否重建.
.dsp (DeveloperStudio Project):项目文件,文本格式,不过不熟悉的话不要手工修改.DSW(DeveloperStudio
Workspace)是工作区文件,其他特点和DSP差不多.
.plg 是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用处不大.在Tools->Options里面有个选项可以控制这个文件的生成.
.hpj (Help Project)是生成帮助文件的工程,用microsfot Help Compiler可以处理.
.mdp (Microsoft DevStudio
Project)是旧版本的项目文件,如果要打开此文件的话,会提示你是否转换成新的DSP格式.
.bsc 是用于浏览项目信息的,如果用Source Brower的话就必须有这个文件.如果不用这个功能的话,可以在Project Options里面去掉Generate Browse Info File,可以加快编译速度.
.map 是执行文件的映像信息纪录文件,除非对系统底层非常熟悉,这个文件一般用不着.
.pch (Pre-Compiled File)是预编译文件,可以加快编译速度,但是文件非常大.
.pdb (Program Database)记录了程序有关的一些数据和调试信息,在调试的时候可能有用.
.exp 只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息.一般也没什么用.
.ncb 无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。build后会自动生成。
2.2 头文件的添加规范
头文件是转移项目文件最容易报错的,要么那个电脑上没有头文件,要么路径不对。如何在include中疯狂寻找,之前就在“无法解析的外部符号”错误中,将include看了个遍。关键要利用相对路径进行include,并且一个工程文件要保持include,library,source,includes四个文件,分别放自己写的.h文件、.lib文件、.c文件,includes包含的是头路径。其中includes中的头路径最好全是相对路径:
2.3 RTSC和XDCtools的作用和用法
RTSC开发相比于裸机开发,多了一个实时操作系统。
RTSC:Real-Time Software Component,实时软件组件。RTSC是一个基于C的编程模型,用于开发创建或实施嵌入式平台实时软件组件。
XDC:eXpress DSP Components 是一个为嵌入式实时系统提供可重用组件(称作:包)的标准。
XDCtools包含使用RTSC工具核运行时的组件,相当于工具。
下载SYS/BIOS组件时需要附带相应版本的XDCtools
2.4 SYS\BIOS的作用和用法
SYS是从DSP改过来的,因为不止是DSP还要ARM等板子的实时操作系统(下载链接)
里面有实时操作系统RTSC经常用的API:
操作流程网址
3 无法解析的外部符号
这个错误看见了很多说法,之前总是以为是当时的upp.LIB没有链接进去,就不停的修改link的include。后来发现,当前项目是CPP编译的,当时包含upp.h的时候一定要:
extern "C" {
#include "upp.h"
}