bootloader 异常向量表

来源:互联网 发布:流程优化小故事 编辑:程序博客网 时间:2024/05/02 13:19

异常向量表:


一丶 概念解析



1.1异常定义 :因为处理器内部或外部的一些事件,导致处理器停下正在处理的工作,转而去执行发生的事件。



1.2异常类型 :


1.3异常向量 : 当某一异常发生时,ARM会跳到对应异常的固定地址去执行异常处理程序, 这个固定地址就是异常向量。



1.4异常向量表: 由7个异常向量以及其处理函数跳转关系组成的表。





二丶代码编写:


start.S :

.text.global _start_start:b resetldr pc,_undefined_instructionldr pc,_software_interruptldr pc,_prefetch_abortldr pc,_data_abortldr pc,_not_usedldr pc,_irqldr pc,_fiq_undefined_instruction: .word undefined_instruction _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 fiqundefined_instruction:nopsoftware_interrupt:nopprefetch_abort:nopdata_abort:nopnot_used:nopirq:nopfiq:nopreset:nop





Myboot.lds:



OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{. = 0x30008000;. = 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 -TMyboot.lds -o Myboot.elf $^arm-linux-objcopy -O binary Myboot.elf Myboot.bin%.o : %.Sarm-linux-gcc -g -c $^%.o : %.carm-linux-gcc -g -c $^






0 0
原创粉丝点击