dsp免费编译器
1. 关于DSP开发软件CCS
其实差别不太大,都是TI自带的,应该是跟你的CCS编译器版本有关系,如果你想用c2812.gel,你可以把原来的f2812.gel去掉,再手动将c2812.gel添加进来就好了,gel文件在CCS的安装目录下,如:C:\CCStudio_v3.3PLA\cc\gel,其实对于一般用户而言,gel文件用处不太大,关键看你调试中用不用的到,用不到完全可以不用加的。
2. 请问有没有DSP芯片的免费编译器
有啊,各芯片公司都自己提供。
比如TI公司的CCS,这些都是不收费的。
3. 在DSP的TMS320F2812编程中c编译器の作用是什么。在连链接器中使用的cmd文件的作用是什
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
/*:*/
.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中打开可视化链接器的图形界面,调整每个内存模块的大小,直到认为合适,然后只需要重新连编,程序即可生成新的输出文件,重复上面的步骤,直到出现满意的结果。
4. 如何在DSP的编译器CCS中使用位操作像<<、>>这种符号在CCS都会报错。怎么办
请贴出具体代码和报错信息,CCS肯定是支持移位操作的。
5. 使用DSP编译器ccs时,如何通过函数的调用处,快速找到函数的定义处。
CCS有这个功能啊!把鼠标移动到一个函数上面,就显示一个淡黄色的框,其中显示函数名称,点第一行的f符号就跳转到函数的原型,即函数的正文,点第二行的fx符号就跳转到这函数在头文件中的声明。
6. DSP编译器如何进行优化
优化是一个很大的学问,c6000的编程工具指南(清华出版)大部分讲的是这个,可以看看,貌似这本书不好买
7. DSP的编译器什么时候支持C++呢
错啦,这对DSP来说并不需要,汇编、C语言完全够用了,这个关键是要和硬件直接关联,需要编写类似于底层驱动程序,处理大量数据自然需要选择有操作系统的处理器,那时候C++就可以用了,目前为止,没有发现有哪个单片机或者DSP用C++,也没有发现业内有这个呼声
8. 基于DSP的嵌入式系统的软件可以用什么语言编程相应的开发工具有哪些
一般来说以C为主,汇编当然可以的,C++一般的编译器也支持。其他语言很少见了。
9. DSP编译问题
先看CCS设置
再看链接库是否添加正确
还有CMD文件是否正确,有的实验箱用了两个CMD,头文件一个,用户代码一个。一般开发板一个。
实在不行就把源码发上来,包括你的包含文件,以及设置选项。
CCS编译器报错有很多种情况。
10. 如果要学习DSP和matlab前是不是要学C如果要的话该用那些C语言编译器vc++6.0
不需要。完全是两回事。
matlab和dsp都可以直接学,不需要学C
另外如果你学c的话,最好先不要用IDE,用虚拟机装一个linux系统,用记事本编写,用命令行编译运行,这样学基础比较扎实,IDE太方便了,掩盖了很多细节。
