这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 44b0x 实在看不懂,所以还要劳烦各位大侠:关于44b0x的启动

共2条 1/1 1 跳转至

44b0x 实在看不懂,所以还要劳烦各位大侠:关于44b0x的启动

院士
2006-09-17 18:14:16     打赏
44b0x 实在看不懂,所以还要劳烦各位大侠:关于44b0x的启动



关键词: 44b0x     在看     不懂     所以     还要     劳烦     各位         

院士
2006-12-22 22:43:00     打赏
2楼
问 前两次发帖,问题基本得以解决。可是往下看还是遇到不少问题,实在想不通,所以还请高手解惑。
谢了先,呵呵。

AREA    Init,CODE,READONLY

    ENTRY
    b ResetHandler  ;for debug
    b HandlerUndef  ;handlerUndef
    b HandlerSWI    ;SWI interrupt handler
    b HandlerPabort ;handlerPAbort
    b HandlerDabort ;handlerDAbort
    b .            ;handlerReserved   //这里,b.是什么意思,跳转到哪里啊???
    b HandlerIRQ
    b HandlerFIQ
    ;***IMPORTANT NOTE***
    ;If the H/W vectored interrutp mode is enabled, The above two instructions should
    ;be changed like below, to work-around with H/W bug of S3C44B0X interrupt controller.
        //上面这两句是什么意思啊,它说s3c44b0x的中断控制器有bug,这是怎么回事啊???
    ; b HandlerIRQ  ->  subs pc,lr,#4
    ; b HandlerIRQ  ->  subs pc,lr,#4

VECTOR_BRANCH    //以下是中断向量表吗, 还有,这不是某条伪指令吧???
    ldr pc,=HandlerEINT0    ;mGA    H/W interrupt vector table
   //如果是中断向量表的话,怎么用ldr指令啊?还有,"="表示什么意思,可以省略吗???   
    ldr pc,=HandlerEINT1    ;    
    ldr pc,=HandlerEINT2    ;
    ldr pc,=HandlerEINT3    ;
    ldr pc,=HandlerEINT4567 ;
    ldr pc,=HandlerTICK        ;mGA
    b .    //这句话是什么意思啊???
    b .
    ldr pc,=HandlerZDMA0    ;mGB
    ldr pc,=HandlerZDMA1    ;
    ldr pc,=HandlerBDMA0    ;
    ldr pc,=HandlerBDMA1    ;
    ldr pc,=HandlerWDT        ;
    ldr pc,=HandlerUERR01   ;mGB
    b .
    b .
    ldr pc,=HandlerTIMER0   ;mGC
    ldr pc,=HandlerTIMER1   ;
    ldr pc,=HandlerTIMER2   ;
    ldr pc,=HandlerTIMER3   ;
    ldr pc,=HandlerTIMER4   ;
    ldr pc,=HandlerTIMER5   ;mGC
    b .
    b .
    ldr pc,=HandlerURXD0    ;mGD
    ldr pc,=HandlerURXD1    ;
    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//还有这句话,也不太懂

    LTORG    //这是什么指令???

HandlerFIQ    HANDLER HandleFIQ    //这句话是什么意思,HANDLER在这里不是一个指令吧???
HandlerIRQ    HANDLER HandleIRQ
HandlerUndef    HANDLER HandleUndef
HandlerSWI    HANDLER HandleSWI
HandlerDabort    HANDLER HandleDabort
HandlerPabort    HANDLER HandlePabort

HandlerADC    HANDLER HandleADC
HandlerRTC    HANDLER HandleRTC
HandlerUTXD1    HANDLER HandleUTXD1
HandlerUTXD0    HANDLER HandleUTXD0
HandlerSIO    HANDLER HandleSIO
HandlerIIC    HANDLER HandleIIC
HandlerURXD1    HANDLER HandleURXD1
HandlerURXD0    HANDLER HandleURXD0
HandlerTIMER5    HANDLER HandleTIMER5
HandlerTIMER4    HANDLER HandleTIMER4
HandlerTIMER3    HANDLER HandleTIMER3
HandlerTIMER2    HANDLER HandleTIMER2
HandlerTIMER1    HANDLER HandleTIMER1
HandlerTIMER0    HANDLER HandleTIMER0
HandlerUERR01    HANDLER HandleUERR01
HandlerWDT    HANDLER HandleWDT
HandlerBDMA1    HANDLER HandleBDMA1
HandlerBDMA0    HANDLER HandleBDMA0
HandlerZDMA1    HANDLER HandleZDMA1
HandlerZDMA0    HANDLER HandleZDMA0
HandlerTICK    HANDLER HandleTICK
HandlerEINT4567    HANDLER HandleEINT4567
HandlerEINT3    HANDLER HandleEINT3
HandlerEINT2    HANDLER HandleEINT2
HandlerEINT1    HANDLER HandleEINT1
HandlerEINT0    HANDLER HandleEINT0


;One of the following two routines CAN be used for non-vectored interrupt.//什么叫non-vectored interrupt???

IsrIRQ    ;using I_ISPR register.
    sub        sp,sp,#4       ;reserved for PC
    stmfd   sp!,{r8-r9}   

    ;IMPORTANT CAUTION
    ;if I_ISPC isn't used properly, I_ISPR CAN be 0 in this routine.

    ldr        r9,=I_ISPR
    ldr        r9,[r9]
    mov        r8,#0x0
0    //这是什么意思???
    movs    r9,r9,lsr #1
    bcs        %F1
    add        r8,r8,#4
    b        %B0

1    //同上
    ldr        r9,=HandleADC
    add        r9,r9,r8
    ldr        r9,[r9]
    str        r9,[sp,#8]
    ldmfd   sp!,{r8-r9,pc}

刚学ARM,很多问题不懂,见笑了哈! 1: re到我的主页上下载“ADS使用手册之ADS_COMPILERGUIDE_D”,
看了就知道了。你问的问题都在里面。
http://www.efw520.com/download.html
希望对你有帮助。 2: 刚才快写完了,结果关机了,郁闷! 3: 舍得花点时间看看ARM汇编和编译器连接器手册就少了许多问题1.b .            ;handlerReserved   //这里,b.是什么意思,跳转到哪里啊???
保留位置0x00000014,跳转到当前位置 JMP $
2.//上面这两句是什么意思啊,它说s3c44b0x的中断控制器有bug,这是怎么回事啊???
有bug是很正常的事,按照所说改就就行了,这里使能了硬件中断向量,出现相应中断会跳到响应地址.
3.//以下是中断向量表吗, 还有,这不是某条伪指令吧???
是,不是,内部中向量从0x20开始,VECTOR_BRANCH只是一个标号,起到助记符的作用.看44B0手册,这里很多代码全是手册上的,没有手册的话把mail留下,我给你发一份.
4.//如果是中断向量表的话,怎么用ldr指令啊?还有,"="表示什么意思,可以省略吗???   
将PC赋值,到HandleXXX执行.因为不是立即数或即存器所以,不能使用MOV.=就是其值也就标号所在位置的地址.
5.ldr pc,=EnterPWDN//还有这句话,也不太懂
我不知道你没看懂是指什么?这是中断向量的最后一个.
6.HandlerFIQ    HANDLER HandleFIQ    //这句话是什么意思,HANDLER在这里不是一个指令吧???
HANDLER是一个宏名,在你前面发的贴子里有定义.宏的格式查资料去吧.
7.;One of the following two routines CAN be used for non-vectored interrupt.//什么叫non-vectored interrupt???就是没使能硬件中断向量表,
使能硬件中断向量表后发生IRQ中断则ARM内核自动跳到相应地址执行,比如0x00000020,没使能则跳到0x18执行。
8.0    //这是什么意思???
使用数字做标号

详细的不是一句话能说明白的,还得靠你自己看了。

到hero415老兄的个人主页上看看吧,资料很多。
珊瑚虫这个名我很熟的。以前潜水总看到。

4: 谢谢各位
To hero415 :
   你主页上资料很多啊,对我这样的入门者很有帮助。谢谢啊。

To weiganglnu:
   每次都是你帮我解决问题,真的很麻烦你了,谢谢啦。像你这样热心的高手,现在不是很多了,呵呵!
   “珊瑚虫这个名我很熟的”,谢谢啦,谢谢你还注意到珊瑚虫这样一个菜鸟,呵呵。
   我从去年5月份开始学习嵌入式,中间做了一段时间8位单片机的开发,现在转做ARM,作为我的毕业设计。我狂爱嵌入式,经常到这里来潜水或者问问题,这里很多人对我帮助很大。所以再次深表感谢。 5: to weiganglnu
weiganglnu兄:
 还得麻烦你给我发一份44b0x的手册,我们学校上三星网站要用代理,不太方便,谢了先。
  我的邮箱:chenye_cau@163.com 6: 手册给你发过去了.还没毕业呀?就学ARM还研究Bootloader,暴强,佩服.
我去年毕业的.就只会51而已.学校较差,大公司不要,小公司工资太少.搞得我只能不做了.好好学习吧,别错过机会.一路走好. 7: 手册给你发过去了前两次发帖,问题基本得以解决。可是往下看还是遇到不少问题,实在想不通,所以还请高手解惑。
谢了先,呵呵。

AREA    Init,CODE,READONLY

    ENTRY
    b ResetHandler  ;for debug
    b HandlerUndef  ;handlerUndef
    b HandlerSWI    ;SWI interrupt handler
    b HandlerPabort ;handlerPAbort
    b HandlerDabort ;handlerDAbort
    b .            ;handlerReserved   //这里,b.是什么意思,跳转到哪里啊???
    b HandlerIRQ
    b HandlerFIQ
    ;***IMPORTANT NOTE***
    ;If the H/W vectored interrutp mode is enabled, The above two instructions should
    ;be changed like below, to work-around with H/W bug of S3C44B0X interrupt controller.
        //上面这两句是什么意思啊,它说s3c44b0x的中断控制器有bug,这是怎么回事啊???
    ; b HandlerIRQ  ->  subs pc,lr,#4
    ; b HandlerIRQ  ->  subs pc,lr,#4

VECTOR_BRANCH    //以下是中断向量表吗, 还有,这不是某条伪指令吧???
    ldr pc,=HandlerEINT0    ;mGA    H/W interrupt vector table
   //如果是中断向量表的话,怎么用ldr指令啊?还有,"="表示什么意思,可以省略吗???   
    ldr pc,=HandlerEINT1    ;    
    ldr pc,=HandlerEINT2    ;
    ldr pc,=HandlerEINT3    ;
    ldr pc,=HandlerEINT4567 ;
    ldr pc,=HandlerTICK        ;mGA
    b .    //这句话是什么意思啊???
    b .
    ldr pc,=HandlerZDMA0    ;mGB
    ldr pc,=HandlerZDMA1    ;
    ldr pc,=HandlerBDMA0    ;
    ldr pc,=HandlerBDMA1    ;
    ldr pc,=HandlerWDT        ;
    ldr pc,=HandlerUERR01   ;mGB
    b .
    b .
    ldr pc,=HandlerTIMER0   ;mGC
    ldr pc,=HandlerTIMER1   ;
    ldr pc,=HandlerTIMER2   ;
    ldr pc,=HandlerTIMER3   ;
    ldr pc,=HandlerTIMER4   ;
    ldr pc,=HandlerTIMER5   ;mGC
    b .
    b .
    ldr pc,=HandlerURXD0    ;mGD
    ldr pc,=HandlerURXD1    ;
    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//还有这句话,也不太懂

    LTORG    //这是什么指令???

HandlerFIQ    HANDLER HandleFIQ    //这句话是什么意思,HANDLER在这里不是一个指令吧???
HandlerIRQ    HANDLER HandleIRQ
HandlerUndef    HANDLER HandleUndef
HandlerSWI    HANDLER HandleSWI
HandlerDabort    HANDLER HandleDabort
HandlerPabort    HANDLER HandlePabort

HandlerADC    HANDLER HandleADC
HandlerRTC    HANDLER HandleRTC
HandlerUTXD1    HANDLER HandleUTXD1
HandlerUTXD0    HANDLER HandleUTXD0
HandlerSIO    HANDLER HandleSIO
HandlerIIC    HANDLER HandleIIC
HandlerURXD1    HANDLER HandleURXD1
HandlerURXD0    HANDLER HandleURXD0
HandlerTIMER5    HANDLER HandleTIMER5
HandlerTIMER4    HANDLER HandleTIMER4
HandlerTIMER3    HANDLER HandleTIMER3
HandlerTIMER2    HANDLER HandleTIMER2
HandlerTIMER1    HANDLER HandleTIMER1
HandlerTIMER0    HANDLER HandleTIMER0
HandlerUERR01    HANDLER HandleUERR01
HandlerWDT    HANDLER HandleWDT
HandlerBDMA1    HANDLER HandleBDMA1
HandlerBDMA0    HANDLER HandleBDMA0
HandlerZDMA1    HANDLER HandleZDMA1
HandlerZDMA0    HANDLER HandleZDMA0
HandlerTICK    HANDLER HandleTICK
HandlerEINT4567    HANDLER HandleEINT4567
HandlerEINT3    HANDLER HandleEINT3
HandlerEINT2    HANDLER HandleEINT2
HandlerEINT1    HANDLER HandleEINT1
HandlerEINT0    HANDLER HandleEINT0


;One of the following two routines CAN be used for non-vectored interrupt.//什么叫non-vectored interrupt???

IsrIRQ    ;using I_ISPR register.
    sub        sp,sp,#4       ;reserved for PC
    stmfd   sp!,{r8-r9}   

    ;IMPORTANT CAUTION
    ;if I_ISPC isn't used properly, I_ISPR CAN be 0 in this routine.

    ldr        r9,=I_ISPR
    ldr        r9,[r9]
    mov        r8,#0x0
0    //这是什么意思???
    movs    r9,r9,lsr #1
    bcs        %F1
    add        r8,r8,#4
    b        %B0

1    //同上
    ldr        r9,=HandleADC
    add        r9,r9,r8
    ldr        r9,[r9]
    str        r9,[sp,#8]
    ldmfd   sp!,{r8-r9,pc}

刚学ARM,很多问题不懂,见笑了哈!


* - 本贴最后修改时间:2005-5-26 20:29:38 修改者:珊瑚虫
* - 修改原因:添加内容



·---


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]