本文主要是介绍014 JZ2440代码重定位(二)---lds脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在上一章中我们引入了为什么要使用代码重定位。
那么本章我们要讲解代码重定位的具体实现。
在实现的重定位的时候,我们需要引入链接脚本的概念。
也就是我们把代码重定位的起始和结束,具体内容的放置等等这些配置放到一个文件中。
然后由Makefile在编译的过程中来调用这个 *.lds 文件,然后执行代码的各个段的位置配置。
首先我们做了一个实验,在不实用lds链接脚本的情况下,直接在Makefile中做代码重定位。
然后发现生成的bin文件多达800M之多。
如上图,将 -Tdata 段(全局变量和static变量)设置放到SDRAM中,0x30001000处。
编译后可以看到:
有800MB+的内存占用。
查一下反汇编的dis文件可以看到:
我们实际代码结束段和我们重定向data的地址差
中间跨过的地址空间占0x30000000-0x3cc = 30000C34 (这中间的巨大空白脚 Hole)
所以为了缩小bin文件的大小我们才使用了lds文件。
将Makefile修改如下:
这篇关于014 JZ2440代码重定位(二)---lds脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!