start.s
. = 0x30008000 ;//代码段起始地址,2440的内存起始地址是0x30000000在这里NBA代码段放在0x30008000
. =
ALIGN(4) ;
{
*(.data)
}
.text
.global _start
_start:
b rest
ldr pc ,
_undefine_instruction
ldr pc , _software_interrrupt/
*这个ldr不是伪指令*/
ldr pc , _prefetch_aport
ldr pc , _data_abort
ldr pc , _not_use
ldr pc , _irq
ldr pc , _fiq
_undefine_instruction: .word undefine_instruction
_software_interrrupt: .word software_interrrupt
_prefetch_aport: .word prefetch_aport
_data_abort:.word data_abort
_not_use: .word not_use
_irq: .word irq
_fiq: .word fiq
undefine_instruction:
nop
software_interrrupt:
nop
prefetch_aport:
nop
data_abort:
nop
not_use:
nop
irq:
nop
fiq:
nop
rest:
nop
gboot.lds
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS{
.text :
{
start.o(.text)
*(.text)
}
. = ALIGN(4) ;
.data :
. = ALIGN(4) ;
bss_start = . ;
.bss :
{
*(.bss)
}
bss_end = . ;
}
makefile
all : start.o
arm-linux-ld -Tgboot.lds -o start.elf
$^
arm-linux-objcopy -O binary start.elf gboot.bin
%.o : %.S
arm-linux-gcc -g -c $^
%.o : %.c
arm-linux-gcc -g -c $^
clear :
rm *.o
*.bin
*.elf