📄 os_cpu_c.c
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: os_cpu_c.c
** Latest modified Date: 2009-07-24
** Latest Version: 1.0
** Descriptions: μCOS-II在Cortex-M3上的移植代码C语言部分,用realview编译
**
**--------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2009-07-24
** Version: 1.0
** Descriptions: The original version
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
*********************************************************************************************************/
#define OS_CPU_GLOBALS
#include "..\..\..\config.h" /* 系统头文件 */
/*********************************************************************************************************
全局变量
*********************************************************************************************************/
unsigned int __GuiOsEnterSum;
/*********************************************************************************************************
** Function name: svcallHandle
** Descriptions: svcall处理程序
** input parameters: uiHandle:选择子功能
** output parameters: none
** Returned value: none
*********************************************************************************************************/
__asm void svcallHandle (unsigned int uiHandle)
{
CMP R0, #5
IT HS
BXHS LR
LSL R0, #2
ADD R0, PC
LDR PC, [R0, #+2]
table
DCD __s_OSCtxSw
DCD __s_OSStartHighRdy
DCD __s_OS_ENTER_CRITICAL
DCD __s_OS_EXIT_CRITICAL
DCD __s_changeToSYSMode
}
/*********************************************************************************************************
** Function name: __OSStartHighRdy
** Descriptions: uC/OS-II启动使用OSStartHighRdy运行第一个任务,OSStartHighRdy直接调用
** __OSStartHighRdy
** input parameters: none
** output parameters: none
** Returned value: none
** Created by: chenmingji
** Created Date: 2009-07-24
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
__asm void __OSStartHighRdy (void)
{
MOV R0, #1
MSR CONTROL, R0
SWI 0
}
/*********************************************************************************************************
** Function name: __s_OSStartHighRdy
** Descriptions: uC/OS-II启动使用OSStartHighRdy运行第一个任务,OSStartHighRdy会调用
** __s_OSStartHighRdy
** input parameters: none
** output parameters: none
** Returned value: none
** Created by: chenmingji
** Created Date: 2009-07-24
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
__asm void __s_OSStartHighRdy (void)
{
IMPORT __GuiOsEnterSum
IMPORT OSRunning
IMPORT OSTCBCur
IMPORT OSTCBHighRdy
IMPORT OSTaskSwHook
preserve8
LDR R4, =OSRunning
MOV R5, #1
STRB R5, [R4]
MOV R7, LR
BL OSTaskSwHook
MOV LR, R7
LDR R6, =OSTCBHighRdy
LDR R6, [R6]
LDR R4, =OSTCBCur
STR R6, [R4]
LDR SP, [R6]
POP {R0}
LDR R1, =__GuiOsEnterSum
STR R0, [R1]
POP {R4-R11}
BX LR
NOP
}
/*********************************************************************************************************
** Function name: __s_OSStartHighRdy
** Descriptions: uC/OS-II任务调度函数
** input parameters: none
** output parameters: none
** Returned value: none
** Created by: chenmingji
** Created Date: 2009-07-24
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
__asm void __s_OSCtxSw (void)
{
IMPORT __GuiOsEnterSum
IMPORT OSTCBCur
IMPORT OSTCBHighRdy
IMPORT OSPrioCur
IMPORT OSPrioHighRdy
IMPORT OSTaskSwHook
preserve8
MOV R2, #OS_ISR_PRIO_ONE
MSR BASEPRI, R2
PUSH {LR}
BL OSTaskSwHook
POP {LR}
PUSH {R4-R11}
LDR R1, =__GuiOsEnterSum
LDR R0, [R1]
PUSH {R0}
LDR R2, =OSTCBCur
LDR R2, [R2]
STR SP, [R2]
LDR R4, =OSPrioCur
LDR R5, =OSPrioHighRdy
LDRB R6, [R5]
STRB R6, [R4]
LDR R6, =OSTCBHighRdy
LDR R6, [R6]
LDR R4, =OSTCBCur
STR R6, [R4]
LDR SP, [R6]
POP {R0}
STR R0, [R1]
CMP R0, #0
ITE EQ
MOVEQ R2, #0
MOVNE R2, #OS_ISR_PRIO_ONE
MSR BASEPRI, R2
POP {R4-R11}
BX LR
NOP
}
/*********************************************************************************************************
** Function name: __s_OS_ENTER_CRITICAL
** Descriptions: 禁止中断
**
** input parameters: none
** output parameters: none
** Returned value: none
** Created by: chenmingji
** Created Date: 2009-07-24
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
__asm void __s_OS_ENTER_CRITICAL (void)
{
IMPORT __GuiOsEnterSum
LDR R1, =__GuiOsEnterSum
LDR R0, [R1]
ADD R0, #1
MOV R2, #OS_ISR_PRIO_ONE
MSR BASEPRI, R2
CMP R0, #0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -