x
x

DSP编程技巧之13-揭开编译器神秘面纱之链接器的基本选项

发布时间:2014-9-29 10:44    发布者:看门狗
关键词: DSP , cmd , 寄存器
作者:paradoxfx 来源:电子产品世界

  在我们对DSP编程的时候,相信没有人会把所有的代码都放在同一个源文件里面:光各种寄存器的初始化代码就有几百上千行了,再加上我们自己书写的代码,想想假如一个.c文件里面有一万行,该如何管理、调试呢?所以要按照功能、寄存器分类等进行划分,这样一个工程就包含了很多的头文件、源程序等等,每个源程序经过编译、汇编之后都会产生单独的目标文件。因为对于程序的任何一点修改,都需要编译器进行编译,如果每次都把所有的程序进行重新编译的话,是对时间和资源的极大浪费:特别是那些基于Eclipse的编译环境,因为基于Java这样的技术,本身就很慢,如果一次编译的文件很多,编译过程是非常痛苦的等待,甚至经常怀疑编译环境是不是已经挂掉了?所以为了提高效率,我们可以使用增量编译技术只对有修改的文件进行重新编译和汇编,而没有修改的则不需要更新目标文件。但是因为编译器和汇编器对每个源文件是单独汇编的,它们并不知道某个模块中的数据和程序相对于另一个模块而言,具体位置在哪里,所以接下来我们就需要使用链接器把所有的目标文件给“拼接”起来,最终生成一个可以独立运行的文件,即可执行文件。它的功能包括三个主要的步骤:

  (1)将代码和数据放入“假想”中的内存:链接器基于.cmd文件中对存储器地址的划分,按照不同的段把代码和数据分别装入对应的地址中;当然这完全是在电脑上完成的,不需要实际的DSP和RAM“出面”。

  (2)为数据和指令分配内存地址:最简单的例子,为函数中断的入口制定一个地址,这样在进中断的时候,程序指针直接跳转到中断入口的地址就行了。

  (3)修改内部和外部的引用:链接器使用每个目标文件中的重定位信息和符号表,来解析某个目标文件中未定义的符号,因为它有可能是在别的目标文件中定义的。

  为了更好地理解链接器的行为,我们就需要了解一下它的配置选项。链接器的配置选项也很多,但是和程序优化的那些选项相比,其含义要更容易理解一些。表1是链接器的最基本选项,定义了链接器正常工作所必须的参数。

1.png

  链接器的文件搜索选项则是链接器用来寻找文件时使用的,例如查找某个和FPU运行有关的浮点库函数,如表2所示。

2.png
3.png

4.png
5.png

本文地址:https://www.eechina.com/thread-133211-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

  • Microchip视频专区
  • EtherCAT®和Microchip LAN925x从站控制器介绍培训教程
  • MPLAB®模拟设计器——在线电源解决方案,加速设计
  • 让您的模拟设计灵感,化为触手可及的现实
  • 深度体验Microchip自动辅助驾驶应用方案——2025巡展开启报名!
  • 贸泽电子(Mouser)专区

相关在线工具

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表