经过前述处理,VDSP提示错误:
[Warning li2060] The following input section(s) that contain program code
and/or data have not been placed into the executable for processor 'p0'
as there are no relevant commands specified in the LDF:
corea.dlb[coreA.doj](.init.text)
在uclinux内核中.init.*段是放在数据段的后面的,这样在系统启动完成后,这一段内存空间将可以进行回收,如下所示:
___init_begin = .;
.init.text :
{
. = ALIGN(PAGE_SIZE);
__sinittext = .;
*(.init.text)
__einittext = .;
}
.init.data :
{
. = ALIGN(16);
*(.init.data)
}
在这里用了___init_begin来存储初始化段的起始地址,但在符号定义只能放在段的内部,因此在LDF文件中相应修改:
.init
{
___init_begin = .;
//.init.text
INPUT_SECTION_ALIGN(4096)
. = (. + 4095) / 4096 * 4096;
__sinittext = .;
INPUT_SECTIONS($LIBRARIES_CORE_A(.init.text))
__einittext = .;
//.init.data
INPUT_SECTION_ALIGN(16)
INPUT_SECTIONS($LIBRARIES_CORE_A(.init.data))
} > MEM_SDRAM