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

📄 os_cpu_c.c

📁 ucos在三星s3c4419B上的移植
💻 C
字号:
/*
*********************************************************************************************************
*                                               uC/OS-II实时内核
*
*                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
*                                          All Rights Reserved
*                        (c) Copyright ARM Limited 1999.  All rights reserved.
*
*                                               ARM 专用代码
*
*
* 文件名称 : OS_CPU_C.C
*********************************************************************************************************
*/

#define  OS_CPU_GLOBALS
#include "..\test\SRC\includes.h"

/*
*********************************************************************************************************
*                                       操作系统的初始化钩子函数
*                                            (开始处)
*
* 函数描述: 该函数在函数 OSInit()开始处被调用。
*
* 输入参数: 无
*
* 注释    : 在调用过程中,中断应是关闭的。
*********************************************************************************************************
*/
	#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
		void  OSInitHookBegin (void)
		{
		}
	#endif

/*
*********************************************************************************************************
*                                       操作系统的初始化钩子函数
*                                               (结束处)
*
* 函数描述: 该函数在函数 OSInit()结束处被调用。
*
* 输入参数: 无
*
* 注释    : 在调用过程中,中断应是关闭的。
*********************************************************************************************************
*/
	#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
		void  OSInitHookEnd (void)
		{
		}
	#endif

/*
*********************************************************************************************************
*                                        初始化任务堆栈
*
* 函数描述:  该函数由 OSTaskCreate() 或 OSTaskCreateExt() 调用以初始化创建的任务的堆栈。
*
* 输入参数:    task          指向任务代码的指针
*
*              pdata         当任务首先执行时,传递给任务的由用户提供的数据域的指针
*
*              ptos          指向栈顶的指针。'ptos' 指到任务堆栈中的空闲栈处。如果OS_STK_GROWTH 设为 1, 
*                            则'ptos'将是最高的有效堆栈地址。如果OS_STK_GROWTH 设为0, 'ptos' 将是最低的
*                            有效堆栈地址。
*
*              opt           用于改变 OSTaskStkInit()的特殊选项。
*                            (见 uCOS_II.H 的 OS_TASK_OPT_???).
*
* 返回值 :  在处理器的寄存器以恰当的顺序压入堆栈后,总是返回新的栈顶的地址。
*
* 注意   :  任务开始执行时,中断是打开的。通过设定PSW到0x0002可以改变。在该种情形下,当任务启动时,中断关闭。
*           应用程序应负责在任务的开始处打开中断。需要修改OSTaskIdle() 和OSTaskStat() 以便能打开中断。如果
*           没有这么做,将使系统崩溃。
*********************************************************************************************************
*/
OS_STK *OSTaskStkInit(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt)
{
    OS_STK *stk;

    opt    = opt;                           /* 'opt' 没有使用, 预防警告错误                      		*/
    stk    = ptos;                          /* 加载堆栈指针                                     		*/
    *(stk) = (OS_STK)task;                  /* 进入点                                             		*/
    *(--stk) = (INT32U)0;                   /* lr                                                       */
    *(--stk) = (INT32U)0;                   /* r12                                                      */
    *(--stk) = (INT32U)0;                   /* r11                                                      */
    *(--stk) = (INT32U)0;                   /* r10                                                      */
    *(--stk) = (INT32U)0;                   /* r9                                                       */
    *(--stk) = (INT32U)0;                   /* r8                                                       */
    *(--stk) = (INT32U)0;                   /* r7                                                       */
    *(--stk) = (INT32U)0;                   /* r6                                                       */
    *(--stk) = (INT32U)0;                   /* r5                                                       */
    *(--stk) = (INT32U)0;                   /* r4                                                       */
    *(--stk) = (INT32U)0;                   /* r3                                                       */
    *(--stk) = (INT32U)0;                   /* r2                                                       */
    *(--stk) = (INT32U)0;                   /* r1                                                       */
    *(--stk) = (INT32U)pdata;               /* r0                                            			*/
    *(--stk) = (INT32U)(SVC32MODE|0x0);     /* CPSR   SVC32MODE           				    			*/ 
    *(--stk) = (INT32U)(SVC32MODE|0x0);     /* SPSR   SVC32MODE            								*/
    
    return (stk);
}

/*$PAGE*/

#if OS_CPU_HOOKS_EN
/*
*********************************************************************************************************
*                                          任务创建钩子函数
*
* 函数描述 : 当任务创建时,该函数被调用。
*
* 输入参数 : ptcb   指向创建的任务的任务控制块的指针。
*
* 注意     : 在调用过程中,中断应是关闭的。
*********************************************************************************************************
*/
	void OSTaskCreateHook (OS_TCB *ptcb)
	{
    	ptcb = ptcb;                       				                           /*   预防警告错误   */
	}

/*
*********************************************************************************************************
*                                           删除任务的钩子函数
*
* 函数描述 : 当任务删除时,该函数被调用。
*
* 输入参数 : ptcb   指向被删除的任务的任务控制块的指针。
*
* 注意     : 在调用过程中,中断应是关闭的。
*********************************************************************************************************
*/
	void OSTaskDelHook (OS_TCB *ptcb)
	{
    	ptcb = ptcb;                       				                /*        预防警告错误         */
	}

/*
*********************************************************************************************************
*                                             空闲任务的钩子函数
*
* 函数描述: 该函数被空闲任务调用  该函数用于做一些如停止CPU以节省电源的工作。
*
* 输入参数: 无
*
* 注意     : 在调用过程中,中断应是关闭的。
*********************************************************************************************************
*/
	#if OS_CPU_HOOKS_EN > 0 && OS_VERSION >= 251
		void  OSTaskIdleHook (void)
		{
 		}
	#endif

/*
*********************************************************************************************************
*                                          任务控制块初始化的钩子函数
*
* Description: 在建立起大部分的TCB后,该函数由OS_TCBInit()调用。
*
* 输入参数 : ptcb   指向创建的任务的任务控制块的指针。
*
* 注意     : 在调用过程中,中断可开可闭。
*********************************************************************************************************
*/
	#if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
		void  OSTCBInitHook (OS_TCB *ptcb)
		{
    		ptcb = ptcb;                                                         /* 预防警告错误       */
		}
	#endif

/*
*********************************************************************************************************
*                                           任务切换钩子函数
*
* 函数描述: 当任务切换时该函数被调用。允许用户在任务切换时完成一定的操作。
*
* 输入参数  :无
*
* 注意     : 1)在调用过程中,中断应是关闭的。
*            2)指向任务的TCB的全局指针 'OSTCBHighRdy' 将切换进 (例如,最高优先级任务) 以及, 指向任务的
*              'OSTCBCur'被切换出(例如 剥夺式任务).
*********************************************************************************************************
*/
	void OSTaskSwHook (void)
	{
	}

/*
*********************************************************************************************************
*                                           统计任务的钩子函数
*
* 函数描述: 该函数被uC/OS-II'的统计任务每秒调用一次。这允许用户填加功能到统计任务里。
*
* 输入参数  : 无
*********************************************************************************************************
*/
	void OSTaskStatHook (void)
	{
	}

/*
*********************************************************************************************************
*                                               时钟节拍的钩子函数
*
* 函数描述: 每个节拍调用该函数一次。
*
* 输入参数: 无
*
* 注意    : 在调用过程中,中断可开可闭。
*********************************************************************************************************
*/
	#if (OS_CPU_HOOKS_EN > 0) && (OS_TIME_TICK_HOOK_EN > 0)

		void OSTimeTickHook (void)
		{
		}
	#endif

	INT32U        OSIntCtxSwFlag = 0;                                                 /* 使用任务切换标志*/ 

#endif  //OS_CPU_HOOKS_EN 
/*
*************************************************************************************************************
**                            				结束文件													   **
*************************************************************************************************************
*/



⌨️ 快捷键说明

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