百韵网 >>  正文

CCS编程环境中include目录下包含.h .c .inc文件,.c文件是什么用的?不应该只含.h文件吗? CCS中include中包含的文件的作用

来源:www.baiyundou.net   日期:较早时间
c是源文件,h是头文件,一般h文件中都会有外部调用源文件,所以在主程序里只声明h文件即可。你这个文件的方法挺怪的,一般要么不分文件夹,全在一个工程下,要么分文件夹分配.c.h文件,不过搜索路径设置好的话编译一般都没问题的。

CCS中include中包含的文件的作用~

ccs?
我当你是问的css

include 在功能方面和直接把2个文件的内容写在一起没什么区别,只是浏览器那边会把2个文件当成一个文件来读取,少请求服务器一次,如果是大量的web访问的话会减少一些服务器方面的压力,是一个好习惯

DSP芯片以其极高的精度,性能及运算速度等无与伦比的优点使它得到了十分广泛的应用,TMS320F2812是TI公司生产的到目前为止用于数字控制领域的最好的DSP芯片,在对它的仿真开发过程中,编译器生成的代码和数据要由链接器分配到合适的存储空间,通常链接器的命令文件.cmd文件是由用户自己编写的,编写不当,就会使仿真开发不能进行,TI公司虽然在《TMS320C28x Optimizing C/C++ Compiler User’s Guide 6》和《TMS320C28x Assembly Language Tools User’s Guide 6》做了介绍,但内容却比较散乱而且要求读者对整个开发系统要有较全面的认识,这对于初学者来说是比较困难的。下面以TMS320F2812芯片为例,结合具体的仿真调试实例加以说明使大家能够既快速又准确的掌握.cmd文件的分配方法。

1存储空间的配置
TMS320F2812的DSP存储器分为三个独立选择的空间-程序空间、数据空间和I/O空间,其中程序存储器存放待执行的指令和执行中所用的系数(常数),可使用片内或片外的RAM、ROM或EPROM等来构成;数据存储器存放指令执行中产生的数据,可使用片内或片外
的RAM和ROM来构成;I/O存储器存放与映象外围接口相关的数据,也可以作为附加的数据存储空间使用。表1是TMS320F2812的存储空间分布。

2CMD文件的分配方法
TI公司新的汇编器和链接器创建的目标文件采用一种COFF(通用目标文件格式),该目标文件格式更利于模块化编程,为管理代码段和目标系统存储器提供了强有力和灵活的编程方法。用户可以通过编写链接命令文件(.cmd文件)将链接信息放在一个文件中,以便在多次使用同样的链接信息时调用。在命令文件中使用两个十分有用的伪指令MEMORY和SECTIONS,来指定实际应用中的存储器结构和进行地址的映射。Memory用来指定目标存储器结构,Memory下可以通过PAGE选项配置地址空间,链接器把每一页都当作一个独立的存储空间。通常情况下,PAGE0代表程序存储器用来存放程序,PAGE1代表数据存储器,用来存放数据。由编译器生成的可重定位的代码和数据块叫做“SECTIONS”(段),SECTIONS用来控制段的构成与地址分配。对于不同的系统配置,“SECTION”的分配方式也不相同,链接器通过“SECTIONS”来控制地址的分配,所以“SECTIONS”的分配就成了配置.cmd文件的重要环节。以下是对“SECTIONS”的定义及分配的详细介绍。
(1)
被初始化的“SECTIONS”(包括数据表和可执行代码)
.text它包括所有的可执行代码和常数,必须放在程序页;
.cinit它包括初始化的变量和常量表,要求放在程序页;
.pinit它包括全局构造器(C++)初始化的变量和常量表,要求放在程序页;
.const它包括字符串、声明、以及被明确初始化过的全局和静态变量,要求放在低地址的数据页;
.econst它是在使用大存储器模式时使用的,包括字符串、声明、以及被明确初始化过的全局变量和静态变量,可以放在数据页的任何地方。
.switch它包括为转换声明设置的表格,可以放在程序页也可以放在低地址的数据页。
(2)未被初始化的“SECTIONS”(为程序运行中创建和存放的变量在存储器中保留空间)
.bss它为全局变量和静态变量保留空间。在程序开始运行时,C导入路径把数据从.cinit节复制出去然后存在.bss节中,要求放在低地址的数据页;
.ebss它是在远(far)访问(只用于C)和大存储模式下使用,它为全局变量和静态变量保留空间。在程序开始运行时,C导入路径把数据从.cinit段复制出去然后存在.ebss节中,可以放在数据页的任何地方;
.stack为C系统堆栈保留空间,这部分存储器为用来将声明传给函数及为局部变量留出空间,要求放在低地址的数据页;
.system动态存储器分配保留空间。这个空间用于malloc函数,如果不使用malloc函数,这个段的大小就是0,要求放在低地址的数据页;
.esystem动态存储器分配保留空间,这个空间用于外部malloc函数,如果不使用外部malloc函数,这个段的大小就是0,可以放在数据页的任何地方。


3举例说明.cmd文件的分配方法
以下是仿真调试串行通信接口SCI时的.cmd文件的分配,已经在TMS320F2812仿真调试中得到了很好的应用。
MEMORY

{PAGE0:
/*ProgramMemory*/

RAMH0:origin=0x3F8000,length=0x001000

RAML0:origin=0x008000,length=0x001000

RAML1:origin=0x009000,length=0x001000

ROM:
origin=0x3FF000,length=0x000FC0

RESET: origin="0x3FFFC0",length=0x000002M

VECTORS:origin=0x3FFFC2,length=0x00003EM

PAGE1:/*DataMemory*/

RAMM0:origin=0x000000,length=0x000400

RAMM1:origin=0x000400,length=0x000400

RAMH0:origin=0x3F9000,length=0x001000
,,,
}

SECTIONS
{/*Allocateprogramareas:*/

.cinit
:>RAMH0
PAGE=0

.pinit
:>RAMH0
PAGE=0

.text
:>RAMH0
PAGE=0

.reset
:>RESET,PAGE=0,TYPE=DSECT

Vectors :>VECTORS,PAGE=0,TYPE=DSEC

/*Allocateuninitalizeddatasections:*/

.stack
:>RAMM0
PAGE=1

.ebss
:>RAMH0
PAGE=1

.esysmem :>RAMH0
PAGE=1

.econst :>RAMM1
PAGE=1

.switch :>RAMM1
PAGE=1


,,,
}
为充分利用18k×16位的SARAM,本例将高地址的8k×16位的H0 SARAM区分成两部分,一部分用做存放程序放在PAGE0里,一部分用做存放数据放在PAGE1中以达到合理的分配;对实际仿真调试过程中的外围帧frame0,frame1,frame2等的分配因为篇幅问题就不做具体介绍了。
4查看段的分配及使用情况
在cmd文件中包括各种各样的链接器选项,每种选项代表不同的含义。其中,使用-m选项可以创建一个扩展名为.map的链接器(存储器)分配映射文件,其语法为:-m filename(文件名)。链接器的map文件描述以下内容:
存储器结构输入和输出段的定位在重新定位后外部符号的地址
通过map文件可以查看各段的分配情况,包括段的起始地址,使用的字节数等配合cmd文件的使用,可确定各个段的使用情况,从而保证程序的正常运行和最小的空间使用。
5 VisualLinker可视化链接器
TI公司出品的DSP软件开发环境CCS还提供了一种可视化生成存储器配置文件的工具:VisualLinker可视化链接器。如果程序原来包含了一个链接器命令文件(.cmd文件),则当创
建可视化链接文件的时候,原来cmd文件中的内存配置仍然会被使用。如果读者想修改内存配置,双击.rcp文件就会在CCS中打开可视化链接器的图形界面,调整每个内存模块的大小,直到认为合适,然后只需要重新连编,程序即可生成新的输出文件,重复上面的步骤,直到出现满意的结果。

相关要点总结:

15288326326:ccs中能读取本地的图像数据吗?
宰霭答:/* --- * * * * ReadImage * * * * --- */#include "stdio.h"void ReadImage(Uint8 *pImage,char *cFileName,Uint16 nWidth,Uint16 nHeight){ int j; Uint8 *pWork; FILE *fp; if ( fp=fopen(cFileName,"rb" ) ) { fseek(fp,1078L...

15288326326:外设寄存器头文件 怎样添加到ccs中?
宰霭答:头文件不用“导入”,使用“包含”,即#include ……再者,如果有在项目目录下,要指定头文件所在的目录。

15288326326:ccs导入工程文件,discovered里面的工程文件没法选择
宰霭答:按钮导入一个3.3版本的工程项目;3.按照对话框提示,一步步导入CCS3.3版本的pjt文件,最后,出现如下警告对话框;4.按下“OK”,这个CCS3.3版本工程项目文件被导入CCS6.0版本编译器中;5.编译工程是无法通过的。右击工程选项,选择Properties;6.进入属性编辑框中,在Build下选中IncludeOptions选项,将...

15288326326:请问ccs3.3中如何调用math.h中的函数?因为我需要用到sqrt函数等函数_百 ...
宰霭答:在程序开头的前面几行:#include<math.h>(单独占一行)或者#include<cmath>(单独占一行)using namespace std ;(写#include<cmath>,必须还有下一行using namespace std;)

15288326326:CCS中新建工程后的include和cmd文件怎么导入啊?在安装文件里找吗...
宰霭答:针对每一个系列的DSP,TI官方网站上都有相应的头文件和cmd文件,你可以去TI的官网上搜索,搜索器件型号比如TMS320F2812或者关键字C/C++ Header Files,可以下载的。下载以后,解压到你想要的位置,就可以通过添加文件的方法添加了。TI提供的头文件和cmd文件很详细,具体,基本上就够用了,当然cmd文件有...

15288326326:dsp开发环境ccs的问题
宰霭答:打开Project-->properties,找到CCS Build下的include Options,在下侧的specify a preinclude file(--preinclude)中添加.h文件所在路径。

15288326326:ccs5.5git保存
宰霭答:文件-保存。在debug界面下,你用memory工具,输入变量数据的地址,然后里面有保存数据的选项。把数据保存在文件后,通过EXCEL导入。关于CCS软件的Git使用说明:新建工程,点击窗口上的File-New-CCSProject,设置工程名、工程路径,选择创建EmptyProject(withmain.c)工程目录下包含“include”、“Debug”、“...

15288326326:ccs中调用fft的问题,急!
宰霭答:确定是你是否安装了C67xDSPLIB_v200.exe,如果安装了,并且在默认目录下,会在你的C盘生成一个CCStdio文件夹,你需要的软件和文档都在这里面。添加dsp67X.lib文件,代码上加上#include "dspf_sp_cfftr2_dit.h"即可。

15288326326:ccs左侧目录如何弄出来
宰霭答:操作步骤如下:1、打开CCS集成开发环境。2、在CCS界面中,找到并点击左侧的项目管理器窗口。该窗口位于CCS界面的左侧或左下方。3、在项目管理器窗口中,找到工程名称,单击展开。4、展开工程文件夹后,将看到该工程的所有文件和文件夹,将显示在左侧目录中。

15288326326:ccs工程中如何加入头文件
宰霭答:使用#include<>不就可以吗?CCS支持ANSI C的

(编辑:本站网友)
相关推荐
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 百韵网