????д???????????????
???????????? ???????[ 2013/8/14 11:30:19 ] ????????
?????????????о????RTOS?????????е????????????????????????????飬???????????飬???????????????????????????????????????????????????????о?????????????????????????????????????????.???????????????????????????????????????????????ж??????????????????????л?????????????????????????????????????????????????漰?????е?????????????????????????????????bootloader????????????????????????IO???????????顣
????????????????????????ж??????????????????????譚????????????°?????????????????????????????????????ucos/II??stm32????????????????а??????????á???????????????????????????????????????????????????????????????????Ч??????????????и?????????????????????????????????????????linux????е?list_head????????????????????к???????????С?????keilRTX???е??????????????allox()?????????TCB????飬???????????????е????
????????????????OS_CPU_A.ASM??????????????л?????????檔
???????????????????OSCurTCB??OSNewTCB????????????????????cд???????????????????????
???????????????????????????????????????????????OSCtxSw()???????????????????????OSNewTCB??????????????л???
;/*********************** (C) COPYRIGHT 2010 Libraworks *************************
;* File Name : os_cpu_a.asm
;* Author : Librae
;* Version : V1.0
;* Date : 06/10/2010
;* Description : μCOS-II asm port for STM32
;*******************************************************************************/
IMPORT OSCurTCB ; External references
IMPORT OSNewTCB
IMPORT OSTaskSwHook
EXPORT OSStartTask
EXPORT OSCtxSw
EXPORT OSIntCtxSw
EXPORT OS_CPU_SR_Save ; Functions declared in this file
EXPORT OS_CPU_SR_Restore
EXPORT PendSV_Handler
NVIC_PENDSV_PRI EQU 0xFFFF0000 ; PendSV priority value (lowest)
NVIC_PENDSVSET EQU 0x10000000 ; value to trigger PendSV exception
NVIC_INT_CTRL EQU 0xE000ED04 ; interrupt control state register
NVIC_SYSPRI2 EQU 0xE000ED20 ; system priority register (2)
PRESERVE8
AREA |.text|?? CODE?? READONLY
THUMB
;********************************************************************************************************
; CRITICAL SECTION METHOD 3 FUNCTIONS
;
;********************************************************************************************************
OS_CPU_SR_Save
MRS R0?? PRIMASK ;???PRIMASK??R0??R0??????
CPSID I ;PRIMASK=1?????ж?(NMI?????FAULT???????)
BX LR ;????
OS_CPU_SR_Restore
MSR PRIMASK?? R0 ;???R0??PRIMASK?У?R0?????;open interrupt
BX LR ;????
;/**************************************************************************************
;* ????????: OSStartTask
;*
;* ????????: ???????????е????????
;*
;* ?? ??: None
;*
;* ?? ?? ?: None
;**************************************************************************************/
OSStartTask
LDR R4?? =NVIC_SYSPRI2 ; set the PendSV exception priority
LDR R5?? =NVIC_PENDSV_PRI
STR R5?? [R4]
MOV R4?? #0 ; set the PSP to 0 for initial context switch call
MSR PSP?? R4
;?л????????????????
LDR R4?? =NVIC_INT_CTRL ;rigger the PendSV exception (causes context switch)
LDR R5?? =NVIC_PENDSVSET ;????PendSV?? (causes context switch)
STR R5?? [R4]
CPSIE I ;enable interrupts at processor level
OSStartHang
B OSStartHang ;should never get here
;/**************************************************************************************
;* ????????: OSCtxSw
;*
;* ????????: ???????????л?
;*
;* ?? ??: None
;*
;* ?? ?? ?: None
;***************************************************************************************/
OSCtxSw
PUSH {R4?? R5}
LDR R4?? =NVIC_INT_CTRL ;????PendSV?? (causes context switch)
LDR R5?? =NVIC_PENDSVSET
STR R5?? [R4]
POP {R4?? R5}
BX LR
NOP
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11