RSS

Samsung原版44B0X的Bootloader分析(1)

来源:网络 作者:匿名 时间:2007-01-06 Tag: 点击:

    ldr pc,=HandlerIIC     ;

    ldr pc,=HandlerSIO           ;

    ldr pc,=HandlerUTXD0    ;

    ldr pc,=HandlerUTXD1    ;mGD

    b .

    b .

    ldr pc,=HandlerRTC           ;mGKA

    b .                     ;

    b .                     ;

    b .                     ;

    b .                     ;

    b .                     ;mGKA

    b .

    b .

    ldr pc,=HandlerADC          ;mGKB

    b .                     ;

    b .                     ;

    b .                     ;

    b .                     ;

    b .                     ;mGKB

    b .

    b .

;0xe0=EnterPWDN

    ldr pc,=EnterPWDN

通过这段代码,就在44B0的ROM中以0x00为起始地址的地方建立起了一张中断向量表,而且这个表的顺序完全符合44B0数据手册中对中断向量地址的定义要求。

2.一级与二级中断处理程序

在中断向量表中IRQ的地址处写入一条进入IRQ中断处理的指令,使IRQ发生中断时先到IRQ——SERIVE(一级中断处理程序)中对中断向量进行识别,再进入相应的在外部RAM中具体的IRQ中断程序。在此之间需要把中断向量表中的INT源中的中断与外部RAM中的与其对应的中断处理程序(二级中断处理程序)相对应,该操作是由一个宏来完成的,任何调用HandlerXXX HANDLER HandleXXX都将被下面的程序展开,该宏定义的代码用于将对应中断服务程序ISR的入口地址装载到PC中,可称之为“加载程序”

本初始化程序定义了一个34个字空间的数据区(在文件最后),用于存放相应中断服务程序的首地址。每个字空间都有一个标号,以HandleXXX命名。在向量中断模式下使用“加载程序”来执行中断服务程序。

向量中断和非向量中断模式的概念与区别

(一)向量中断模式是当CPU读取位于0x18处的IRQ中断指令的时候,系统自动读取对应于该中断源确定地址上的指令取代0x18处的指令,通过跳转指令系统就直接跳转到对应地址函数中,节省了中断处理时间提高了中断处理速度。例如 ADC 中断的向量地址为0xC0,则在0xC0处放如下代码:ldr PC,=HandlerADC 当ADC中断产生的时候系统会自动跳转到HandlerADC函数中处理中断。

(二)非向量中断模式处理方式是一种传统的中断处理方法,当系统产生中断的时候,系统将INTPND寄存器中对应标志位置位,然后跳转到位于0x18处的统一中断函数中;该函数通过读取INTPND寄存器中对应标志位来判断中断源,并根据优先级关系再跳到对应中断源的处理代码中处理中断。

1)设置缺省中断处理函数 。

    ;****************************************************

    ;*    Setup IRQ handler                       *

    ;****************************************************

    ldr       r0,=HandleIRQ              ;This routine is needed

    ldr       r1,=IsrIRQ                   ;if there isn't 'subs pc,lr,#4' at 0x18, 0x1c
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
合作站点