美文网首页嵌入式单片机学习程序员
uboot-step 1 设置异常向量表

uboot-step 1 设置异常向量表

作者: 2625K | 来源:发表于2016-08-03 22:22 被阅读180次

    uboot-step 1 设置异常向量表

    何为异常

    异常是指处理器的正常运行被内部或者外部事件所打断导致处理器去处理这个事件的现象,例如一个外部中断的产生或者是尝试去执行一个未定义的指令等都会产生异常,ARM处理器的异常主要有以下几种:

    ARM exception

    产生异常做什么

    处理器一旦产生了异常,便会去处理这个异常,但是它去哪里去处理这个异常呢,这就是异常向量表的作用了,ARM 公司规定了这些异常的入口地址,如上表所示,当产生异常后,处理器就会去对应的异常地址来执行相关代码去处理异常
    由于这些异常地址间隔为4个字节,根本放不下异常的处理代码,因此在每个 地址处放置了一个32位的跳转指令,就形成了异常向量表,ldr指令是将操作数2地址处的值赋给操作数1 , .word 表示占用一个32位的存储区,来存储真正的跳转地址(标号)

    .globl _start     @定义全局标号
    _start: b   reset @ 相对跳转 
    ldr pc, _undefined_instruction @将_undefined_insttuction 地址(标号)处存储的值(也是一个地址,真正的异常处理代码所在)赋给pc指针
    ldr pc, _software_interrupt
    ldr pc, _prefetch_abort
    ldr pc, _data_abort
    ldr pc, _not_used
    ldr pc, _irq
    ldr 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 fiq
    
    underfined_instruction: xxxx
    software_interrupt: xxx
    prefetch_abort : xxxx
    data_abort : xxxx
    not_used: xxx
    irq: xxx
    fiq: xxx
    

    此去经年
    zhaiyk@sina.cn
    August 1, 2016

    相关文章

      网友评论

        本文标题:uboot-step 1 设置异常向量表

        本文链接:https://www.haomeiwen.com/subject/mkzxsttx.html