昨天我创建了自己的u-boot模块,并希望将文本基地址设置为0xd0020010。 但是在编译之后,链接器生成的.map文件就像这样显示了
inker script and memory map
0x00000000 . = 0x0
0x00000000 . = ALIGN (0x4)
.text 0xd0020010 0x1f0
0xd0020010 __image_copy_start = .
*(.vectors)
*fill* 0xd0020010 0x10 00
.vectors 0xd0020020 0x60 arch/arm/lib/built-in.o
0xd0020020 _start
0xd0020044 _undefined_instruction
0xd0020048 _software_interrupt
0xd002004c _prefetch_abort
0xd0020050 _data_abort
0xd0020054 _not_used
0xd0020058 _irq
0xd002005c _fiq
你可以看到上面的.vectors部分,有16个字节的0x00,其名称是“* fill *”。
我的链接脚本就像这样
SECTIONS
{
. = 0x00000000;
. = ALIGN(4);
.text :
{
__image_copy_start = .;
*(.vectors)
CPUDIR/start.o (.text*)
*(.text*)
}
.........
我试图移除ALIGH(4),但它仍然停滞不前。 0xd0020010是一个对齐的地址吗?所以它应该与“ALIGH”无关
尽管16字节的内存由0x00填充,这些是 nop 指令,但我仍然想知道为什么会有“* fill *”部分。