大意是說Region$Table 一定要放在和boot region 所在區域中,否則initial code沒辦法access到。
如果一定要將 C library code, 和其他code方開放。
loading script就要這樣寫:
ROM_LOAD 0x0也就是明確標出 Region$$Table, 和 ZISection$$Table 所在區域。
{
ROM_EXEC 0x0
{
vectors.o (Vect, +First)
__main.o (+RO)
* (Region$$Table)
* (ZISection$$Table)
}
RAM_EXEC 0x100000
{
*.o (+RO,+RW,+ZI)
}
}
實際上 只有 Region$$Table, ZI$$Table 需要在 Root region。
__main.o 可以在其他地方。
如果不再同一個region,link時會自動在root region 加上一個挑版,ldr pc, ="real __main address",不會直接跳過去。
?? 這一篇好像比較接近 這個問題的說明...
沒有留言:
張貼留言