📄 os_cpu_a.s
字号:
AREA |subr|, CODE, READONLY
;//
EXPORT OSStartHighRdy
IMPORT OSTaskSwHook
IMPORT OSTCBHighRdy
IMPORT OSRunning
OSStartHighRdy
BL OSTaskSwHook
LDR r4,=OSRunning
MOV r5, #1
STRB r5, [r4]
LDR r4, =OSTCBHighRdy
LDR r4, [r4]
LDR sp, [r4]
LDMFD sp!, {r4}
MSR cpsr_cxsf, r4
LDMFD sp!, {r0-r12,lr,pc}
;//
EXPORT OSCtxSw
IMPORT OSPrioCur
IMPORT OSPrioHighRdy
IMPORT OSTCBCur
IMPORT OSTaskSwHook
IMPORT OSTCBHighRdy
OSCtxSw
STMFD sp!, {lr}
STMFD sp!, {r0-r12,lr}
MRS r4, cpsr
STMFD sp!, {r4}
LDR r4, =OSTCBCur
LDR r5, [r4]
STR sp, [r5]
;//
EXPORT OSIntCtxSw
IMPORT OSTaskSwHook
OSIntCtxSw
BL OSTaskSwHook
LDR r4, =OSTCBHighRdy
LDR r4, [r4]
LDR r5, =OSTCBCur
STR r4, [r5]
LDR r6, =OSPrioHighRdy
LDRB r6, [r6]
LDR r5, =OSPrioCur
STRB r6, [r5]
LDR sp, [r4]
LDMFD sp!, {r4}
MSR cpsr_cxsf, r4
LDMFD sp!, {r0-r12,lr,pc}
;//
IMPORT OSIntExit
IMPORT OSIntNesting
LINK_SAVE DCD 0
PSR_SAVE DCD 0
;//操作系统中断的宏定义
MACRO
$Handler CALL $Handle,$Handle_hook
IMPORT $Handle
IMPORT $Handle_hook
EXPORT $Handler
$Handler
STMFD sp!, {r4}
LDR r4, =LINK_SAVE
STR lr, [r4]
MRS lr, spsr
STR lr, [r4, #4]
LDMFD sp!, {r4}
ORR lr, lr, #0x80
MSR cpsr_cxsf, lr
SUB sp, sp, #4
STMFD sp!, {r0-r12, lr}
LDR r4, =LINK_SAVE
LDR lr, [r4, #0]
SUB lr, lr, #4
STR lr, [sp, #(14*4)]
LDR r4, [r4, #4]
STMFD sp!, {r4}
LDR R2, =OSIntNesting
LDRB R1, [R2]
ADD R1, R1, #1
STRB R1, [R2]
CMP R1, #1
LDREQ r4, =OSTCBCur
LDREQ r4, [r4]
STREQ sp, [r4]
BL $Handle_hook;
BL $Handle;
BL OSIntExit
LDMFD sp!, {r4}
MSR cpsr_cxsf, r4
LDMFD sp!, {r0-r12,lr,pc}
MEND
OSTickISR CALL OSTimeTick,tick_hook
;//系统时钟
;//TIMER0 CALL TIMER0isr,TIMER0HOOK
;//TIMER1 CALL TIMER1isr,TIMER1HOOK
;//TIMER5 CALL TIMER5isr,TIMER5HOOK
;//定时器0、定时器1、定时器5
UART0 CALL UART0ISR,UART0hook
UART1 CALL UART1ISR,UART1hook
UART2 CALL UART2ISR,UART2hook
EXPORT ARMDisableInt
ARMDisableInt
STMFD sp!, {r0}
MRS r0, cpsr
ORR r0, r0, #0xC0
MSR cpsr_c, r0
LDMIA sp!, {r0}
MOV pc, lr
EXPORT ARMEnableInt
ARMEnableInt
STMDB sp!, {r0}
MRS r0, CPSR
BIC r0, r0, #0x80
MSR CPSR_c, r0
LDMIA sp!, {r0}
MOV pc, lr
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -