微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > DSP编程技巧之:编译流程与处理器选项

DSP编程技巧之:编译流程与处理器选项

时间:12-21 来源:互联网 点击:

语言。在CCS的调试模式下,我们可以打开disassembler窗口,然后单步运行,就能看到一条条的汇编指令是如何执行的了。

  3. 加载器:把可执行的二进制文件复制到DSP的内存中,并运行启动程序,使得程序从程序入口处开始运行,这个入口地址可能是地址0,也可能是带有一个偏移量的地址,这个具体的值我们可以以后再具体讨论。

  4. 其它:补充一下名词的定义,包括:

  符号:在整个编译、链接的过程中都会使用到符号symbol的概念,简单地理解,符号就是指一些变量、函数名字等。

  库文件:多个目标文件的压缩包,包含了所有目标文件定义的全局符号的索引。在源程序中如果找不到某些符号的定义,链接器从尝试从库里面提取出对应的目标文件,然后链接到可执行文件里。

  也许你已经熟练使用了CCS好多年,可是当某一天出现一个与cl2000有关的错误的时候,突然间也摸不着头脑了;例如使用老版本的还不支持C2000 FPU的CCS来编译28335的程序,cl2000就会提示你各种不支持然后报错不运行了。Cl2000.exe是神马?

  Cl2000.exe就是和我们的程序编译密切相关的编译器了,使用的方法是:

  cl2000 [编译器选项] [需要编译的文件] [--运行链接器 [链接器选项] 目标文件]]

  使用方法看起来很复杂,还好CCS已经帮我们调用它了(或者说CCS就是一个框架,它完成的编译、调试、链接等功能几乎都需要调用一些别的exe来执行,所以你可能体会过升级了一些库文件、编辑器版本等,界面文件等却不需要进行任何的更改),这些句子会显示在工程的属性里面。当然如果你想亲自体验一把,也可以在ccs安装目录下面的toolscompilerc2000_6.1.5bin下面找到它,即cl2000.exe,然后用命令行的方式运行起来)。举个简单例子:

  cl2000 -v28 symtab.c file.c seek.asm --run_linker --library=lnk.cmd

  --output_file=myprogram.out  在上面的例子中,如果需要编译的文件,例如几个.c或者.asm找不到,CCS就会提示xxx.c或者xxx.asm找不到或者未定义了;或者你改了目标文件的名字,例如改成了a.out,但是加载程序到DSP中的时候却仍然使用更改前的b.out,自然有可能出现预料之外的结果了:在以前帮助网友解决问题的时候,确实出现过这样的状况。

  明白了编译器的调用方法之后,我们就更进一步,揭开编译器中形形色色选项的神秘面纱,从此看到编译器提示的形形色色的警告和错误不再用发怵。

  具体说来,编译器的选项有多大20个大类,超过一百个具体的选项。当然这些选项是有轻重之分的,有的是必须用到的,例如支持一下FPU等功能;有的则是不常接触的,例如MISRA这样的汽车工业软件可靠性检查,只有在对软件进行标准化时才会用到。所以我们首先看一下最常用的选项,例如处理器的选项,它们的意义在于定义了在编译程序时CPU的模式。补充一点是,cl2000的帮助里看到的选项都是很长的名字,在CCS里面为了书写方便(因为选项框就那么点面积啊),一般用别名来代替;没有别名的则直接使用选项名字。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top