1 uclinux的内存布局
在uclinux启动时,有一段空间利用的提示:
Memory map:
text = 0x00001000-0x000b0db0
init = 0x000b1000-0x000bd23c
data = 0x000bf1b8-0x000e5588
stack = 0x000c0000-0x000c2000
bss = 0x000e5590-0x000f14d8
available = 0x000f14d8-0x03500000
rootfs = 0x03500000-0x03f00000
DMA Zone = 0x03f00000-0x04000000
其中text代表这段空间中存储的是uclinux内核的代码;init中存放的也是 uclinux内核的代码,但是这一段空间在内核启动完成后是可以回收的,即它可以供内核重新分配;DATA段是 uClinux 未被初始化的数据空间;BSS段是 uClinux初始化的数据空间,它的初始化操作将在head.s中完成。此外从0到text开始的这一段空间也会被初始化为0。
2 VDSP中的空间分配
uclinux的空间定位是由链接器完成的,由arch/blackfin /kernel/vmlinux.lds.s控制完成。而VDSP的空间定位则是由ldf文件完成的,而ldf文件的语法与vmlinux.lds.s相似。我们所要做的就是将vmlinux.lds.s中的相关定义转移到ldf文件中。
1、定义一块uclinux使用的内存空间:
MEM_SDRAM_UCLINUX { TYPE(RAM) START(0x00010000) END(0x001fffff) WIDTH(8) } 在这里,空间的结束使用了一个较大的数值,实际上在uclinux内核中会从代码实际结束的地方开始管理存储空间。
2、将uclinux内核的入口函数写入到0xFFA00000,即a核的启动地址。
RESOLVE(__start, 0xFFA00000)
KEEP(__start,_main)
编缉推荐阅读以下文章
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!