經過前述處理,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