设置异常向量表:
首先根据手册《ARM Architecture Reference Manual》的2.6小节找到异常的类型
然后建立start.S文件,代码如下
.text .global _start _start: b reset ldr pc, _undefined_instructions ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq _undefined_instructions: .word undefined_instructions _software_interrupt: .word software_interrupt _prefetch_abort: .word prefetch_abort _data_abort: .word data_abort _not_used: .word not_used _irq: .word irq _fiq: .word fiq undefined_instructions: nop software_interrupt: nop prefetch_abort: nop data_abort: nop not_used: nop irq: nop fiq: nop reset: nop
然后建立链接器脚本gboot.lds文件
代码如下
OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS{ . = 0x50008000; . = ALIGN(4); .text : { start.o(.text) *(.text) } . = ALIGN(4); .data : { *(.data) } . = ALIGN(4); bss_start = .; .bss : { *(.bss) } bss_end = .; }
最后建立makefile工程文件出代码如下:
all : start.o arm-linux-ld -Tgboot.lds -o gboot.elf $^ arm-linux-objcopy -O binary gboot.elf gboot.bin %.o : %.S arm-linux-gcc -g -c $^ %.o : %.c arm-linux-gcc -g -c $^ .PHONY: clean clean: rm *.o *.elf *.bin
编译得到.bin的二进制文件。
