反过来,用户也可以把自己已经调试、验证过的汇编子程序,做成二进制库文件,供C程序调用,这样可以大大提高软件的可重复利用率。要制作二进制库文件,只要用lib21.exe工具处理就行了。注意,生成的二制库文件的名字必须以.a作为文件扩展名。
笔者在实际的开发中,遇到这样的情况,自制的2181目标板上有一个自己开忍气吞声驻留程序,通过软件模拟的异步串口与PC通信,加载程序。但是这个驻留程序占据了0~0x500的空间,用户开发的程序只能加载到从0x500开始的空间内,而用C语言开发的程序起始地址都是从0开始的。为了解决这个问题,只能自己修改2181_hdr.dsp源文件。首先把第一行的.MODULE/ABS=0改成.MODULE/ABS=0x500,然后汇编成obj文件,代替原来的文件。另外,在自己的程序中定义一个从0开始0x500大小的PM区域,并初始化成0,就可以防止编译器在该区域内分配别的变量或程序代码,这样编译后的可执行文件的0~0x500空间都是0,加载时把它剔除,而其它有用的指令代码都在0x500之后,解决了这一个问题。
5 总结
从实际开发的经验来看,VisualDSP的C语言开发功能十分丰富。虽然提供的库函数只是ANSI的一个不完备子集,但是对于一般的工程开发来说已经足够用了,而且VisualDSP还提供了C运行库的源代码,这对于解决函数不完备的问题也好处。用C语言开发的好处还包括开发时间大大减少,程序的稳定性大大提高,这对于面对激烈的市场竞争,对于减轻设计工程师的工作量都很有好处。最后,用C语言开发是趋势,必将更加流行。