⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 expdrv.s

📁 ucos移植在S3C44BOX上的源码
💻 S
字号:
;**************************************************************************************************
;*
;* 作者: 胡翌博,浙江大学信电系电路与系统2001研
;*
;* 文件名:expDrv.s 
;*
;* 版本: 3.2
;*
;* 功能描述:本文件包含了各个模式下的异常处理程序
;*
;* 被本文件引用的文件列表:no
;*
;* 本文件引用的文件列表:no
;*
;* 版本更迭:
;*         DATE        Version     Author     REMARKS               
;*      07-20-2003       2.0       胡翌博           
;*      07-27-2003       3.0       胡翌博
;*      08-15-2003       3.1       胡翌博     --文件名从intDrv.s更新为expDrv.s
;*      08-29-2003       3.2       胡翌博     --修正了swi异常处理程序中错误的代码
;**************************************************************************************************
;**************************************************************************************************
;* 异常入口:
;* Exception type	Lower		Higher
;* reset         	0x00000000      0xFFFF0000
;* undefined            0x00000004      0xFFFF0004
;* swi                  0x00000008      0xFFFF0008
;* prefetch             0x0000000c      0xFFFF000c
;* data                 0x00000010      0xFFFF0010
;* reserved             0x00000014      0xFFFF0014
;* irq                  0x00000018      0xFFFF0018
;* fiq                  0x0000001c	0xFFFF001c
;**************************************************************************************************
;**************************************************************************************************
;* 异常优先级:
;* Exception type	Priority
;* reset                   1
;* data                    2
;* fiq                     3
;* irq                     4
;* prefetch                5
;* undefined,swi           6
;**************************************************************************************************



	AREA    ExpDrv, CODE, READONLY
	
	CODE32
	        
        
        
;**************************************************************************************************
;* 将expDrv中的中断处理程序声明为全局的,便于外部文件中的程序访问
;**************************************************************************************************
    EXPORT undefinedHandler
	EXPORT swiHandler
	EXPORT prefetchHandler
	EXPORT dataHandler
	EXPORT irqHandler
	EXPORT fiqHandler
	
	
	
;**************************************************************************************************
;* Reset Handler-->0x00000000:1
;* 在init.s文件中
;**************************************************************************************************



;**************************************************************************************************
;* Undefined insturction Handler-->0x00000004:6
;**************************************************************************************************
undefinedHandler
	MOVS pc,lr



;**************************************************************************************************
;* SWI Handler-->0x00000008:6
;**************************************************************************************************
swiHandler
    ;以下是原来错误的代码
    ;STMFD R13!, {R0-R2, lr}     ;保存工作寄存器和返回地址
    ;LDR   R0, [R14, #-4]        ;获取SWI指令二进制编码
    ;BIC   R0, R0, #0xFF000000   ;SWI指令二进制编码的高8位清零
    ;MOV   R1, R0, LSR #8        ;获得低24位的SWI超级调用号
    ;ADR   R2, swiTable          ;获取SWI超级调用表的起始地址
    ;LDR   pc, [R2, R1, LSL #2]  ;跳转到相应的超级调用
    
    ;以下是修改后正确的代码
    STMFD R13!, {R0-R1, lr}     ;保存工作寄存器和返回地址
    LDR   R0, [R14, #-4]        ;获取SWI指令二进制编码
    BIC   R0, R0, #0xFF000000   ;SWI指令二进制编码的高8位清零
    ADR   R1, swiTable          ;获取SWI超级调用表的起始地址
    LDR   pc, [R1, R0, LSL #2]
	
drtReturn
    LDMFD R13!, {R0-R2, pc}^    ;恢复现场,直接退出异常模式
    

softReset
    LDR r0, =0x03FF5000         ;复位前熄灭所有LED
    LDR r1, =0x000000FF
    STR r1, [r0]
    LDR r0, =0x03FF5008
    LDR r1, =0x000000FF
    STR r1, [r0]
    LDR pc, =0x00000000         ;软复位重新执行
    
swiTable
    DCD drtReturn
    DCD softReset




;**************************************************************************************************
;* Prefetch abort Handler-->0x0000000C:5
;**************************************************************************************************
prefetchHandler
	SUBS pc,lr,#4



;**************************************************************************************************
;* Data abort Handler-->0x00000010:2
;**************************************************************************************************
dataHandler
	SUBS pc,lr,#8



;**************************************************************************************************
;* FIQ Handler-->0x00000018:3
;**************************************************************************************************
fiqHandler
	SUBS pc,lr,#4



;**************************************************************************************************
;* IRQ Handler-->0x0000001C:4
;**************************************************************************************************
irqHandler
	SUBS pc,lr,#4
	
	
	
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -