完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
在我们对DSP编程的时候,相信没有人会把所有的代码都放在同一个源文件里面:光各种寄存器的初始化代码就有几百上千行了,再加上我们自己书写的代码,想想假如一个.c文件里面有一万行,该如何管理、调试呢?所以要按照功能、寄存器分类等进行划分,这样一个工程就包含了很多的头文件、源程序等等,每个源程序经过编译、汇编之后都会产生单独的目标文件。因为对于程序的任何一点修改,都需要编译器进行编译,如果每次都把所有的程序进行重新编译的话,是对时间和资源的极大浪费:特别是那些基于Eclipse的编译环境,因为基于Java这样的技术,本身就很慢,如果一次编译的文件很多,编译过程是非常痛苦的等待,甚至经常怀疑编译环境是不是已经挂掉了?所以为了提高效率,我们可以使用增量编译技术只对有修改的文件进行重新编译和汇编,而没有修改的则不需要更新目标文件。但是因为编译器和汇编器对每个源文件是单独汇编的,它们并不知道某个模块中的数据和程序相对于另一个模块而言,具体位置在哪里,所以接下来我们就需要使用链接器把所有的目标文件给“拼接”起来,最终生成一个可以独立运行的文件,即可执行文件。它的功能包括三个主要的步骤:
(1)将代码和数据放入“假想”中的内存:链接器基于.cmd文件中对存储器地址的划分,按照不同的段把代码和数据分别装入对应的地址中;当然这完全是在电脑上完成的,不需要实际的DSP和RAM“出面”。 (2)为数据和指令分配内存地址:最简单的例子,为函数中断的入口制定一个地址,这样在进中断的时候,程序指针直接跳转到中断入口的地址就行了。 (3)修改内部和外部的引用:链接器使用每个目标文件中的重定位信息和符号表,来解析某个目标文件中未定义的符号,因为它有可能是在别的目标文件中定义的。 为了更好地理解链接器的行为,我们就需要了解一下它的配置选项。链接器的配置选项也很多,但是和程序优化的那些选项相比,其含义要更容易理解一些。表1是链接器的最基本选项,定义了链接器正常工作所必须的参数。 链接器的文件搜索选项则是链接器用来寻找文件时使用的,例如查找某个和FPU运行有关的浮点库函数,如表2所示。 |
|
|
|
只有小组成员才能发言,加入小组>>
715 浏览 1 评论
2132 浏览 5 评论
2446 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2221 浏览 6 评论
2177 浏览 7 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
327浏览 9评论
316浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
451浏览 6评论
311浏览 5评论
356浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-13 12:28 , Processed in 0.722030 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号