首页 code
link script
发布时间:2016年09月09日 评论数:抢沙发 阅读数:147
1.示例
ENTRY(start)
MEMORY
{
rom : org = 0xbfc00000, len = 0x1000
ram : org = 0x80001000. len = 0x1000
}
SECTIONS
{
.text (VMA) : AT (LMA):
{
*(.text);
} > ram
_gp = .;
.bss :
{
. = ALIGN(4);
__bss_start = ABSOLUTE(.);
*(.bss) *(.sbss)
. = ALIGN(4);
__bss_end = ABSOULUTE(.);
} > ram
}
2. SECTIONS 对齐
1) 只保证VMA的对齐(常用方式):
. = ALIGN(0x8);
2) 可以保证LMA地址对齐的方式:
AT( ( LOADADDR(.text)+SIZEOF(.text) + 8-1 ) & ~( 8-1 ) )
3.SECTIONS COPY FROM ROM TO RAM
1) linkscript 加 copy 段, 该段 VMA=LMA, 修改程序ENTRY(copy_start)
.text_copy 0xbfc00000 : AT (0xbfc00000)
{
*(.text_copy)
} > rom
2) 汇编代码中添加该段程序
.section ".text_copy", "ax"
.globl copy_start
.ent copy_start
copy_start:
/* copy .text .data .ehframe */
LA a0, __lma1_start
LA a2, __vma1_start
LA a3, __vma1_end
1: lw v0, 0(a0)
addiu a0, 4
sw v0, 0(a2)
addiu a2, 4
blt a2, a3, 1b
nop
/* initial .bss */
LA v0, __bss_start
LA v1, __bss_end
LA a0, 0
2: sw a0, 0(v0)
addiu v0, v0, 4
bltu v0, v1, 2b
nop
/*jump to start*/
la v0, start
j v0
nop
.end copy_start
本文作者:admin
文章标题: link script
本文地址:http://jiang.shuang.he.cn/blog/?post=49
版权声明:若无注明,本文皆为“”原创,转载请保留文章出处。
本文地址:http://jiang.shuang.he.cn/blog/?post=49
版权声明:若无注明,本文皆为“”原创,转载请保留文章出处。
相关文章