目的: 依赖链接文件得到某一个段的地址
1首先分析一下 elf格式的文件
readelf -S android_server 使用 readelf -S 看一下有哪些段, 显示的地址 是运行地址
一般 flash 上的有效字节就是 text data rodata
SECTIONS
{
. = 0x30000000;
__code_start = .;
. = ALIGN(4);
.text :
{
*(.text)
}
. = ALIGN(4);
.rodata : { *(.rodata) }
. = ALIGN(4);
.data : { *(.data) }
. = ALIGN(4);
__bss_start = .;
.bss : { *(.bss) *(.COMMON) }
_end = .;
}
void clean_bss(void)
{
/* 要从lds文件中获得 __bss_start, _end
*/
extern int _end, __bss_start;
volatile unsigned int *start = (volatile unsigned int *)&__bss_start;
volatile unsigned int *end = (volatile unsigned int *)&_end;
//此时的start 和 end 都是地址
//如何得到段的大小
//printf("size is %d\n",end-start+1); size*4
while (start <= end)
{
*start++ = 0;
}
}