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

📄 os.c

📁 基于16位单片机的符合osek标准的操作系统
💻 C
📖 第 1 页 / 共 3 页
字号:
/*****************************************************
* 
* created by ProOSEK 4 Configurator
* 
* (c) 1998-2002 3SOFT GmbH
* Frauenweiherstr. 14
* 91058 Erlangen
* GERMANY
* 
* see: www.3SOFT.de
* 
*****************************************************
* Host-System       : Windows XP
* Date              : 5/15/06 7:31 PM
* Licence           : ARCH_HC12-AUTOSOFT-203566-15Feb2006, 15:48-01Mar2007-1577067287
*****************************************************
* This file is generated automatically. DO NOT EDIT!!
*****************************************************/
/*****************************************************
* RevisionNumber     : 2 
* RevisionDate       : 2004-12-07
* 
*****************************************************/
#include "os.h"
# ifdef OSEKOS_BOARD_NO_TASK_STACK_ELEMENTS
#  define  OSEKOS_NO_TASK_STACK_ELEMENTS OSEKOS_BOARD_NO_TASK_STACK_ELEMENTS
# else
#  ifdef OSEKOS_ARCH_NO_TASK_STACK_ELEMENTS
#   define OSEKOS_NO_TASK_STACK_ELEMENTS OSEKOS_ARCH_NO_TASK_STACK_ELEMENTS
#  endif
# endif 
# ifndef OSEKOS_NO_TASK_STACK_ELEMENTS
#  define OSEKOS_NO_TASK_STACK_ELEMENTS 1
# endif 
# if (!(defined(__HIWARE__)))
# if (!(defined(__COSMIC__)))
# error "Compiler is currently not supported"
# endif 
# endif 
# if (defined(__HIWARE__))
# if (defined(__BANKED__))
# pragma CODE_SEG NON_BANKED 
# pragma CONST_SEG CONST_NON_BANKED 
# endif 
# endif 
/*****************************************************
* RevisionNumber     : 2 
* RevisionDate       : 2004-12-07
* 
*****************************************************/
#if GENERATION_ID_OS_H!=936444223UL
#error Ids of os.c and os.h did not match! Hint: A wrong os.h was most probably included.
#endif
TaskType OSEKOSpliste[]={
  ATMAX,
  ATMAX,
  ATMAX,
  ATMAX,
  ATMAX,
  ATMAX,
TMAX};

OSEK_U8 OSEK_CONST OSEKOS_Callschedule[] = {0,0,0,0,0,0};
OSEK_TASK OSEKOS_Twrap_Loop(void)
{OSEKOS_T_Loop();OSEKOSShutdownOS(E_OS_SYS_CODE);}
OSEK_TASK OSEKOS_Twrap_InitTask(void)
{OSEKOS_T_InitTask();OSEKOSShutdownOS(E_OS_SYS_CODE);}
OSEK_TASK OSEKOS_Twrap_Cyclic(void)
{OSEKOS_T_Cyclic();OSEKOSShutdownOS(E_OS_SYS_CODE);}
OSEK_TASK OSEKOS_Twrap_KlineCommunicationTask(void)
{OSEKOS_T_KlineCommunicationTask();OSEKOSShutdownOS(E_OS_SYS_CODE);}
OSEK_TASK OSEKOS_Twrap_CreatRespMesKWP2000Task(void)
{OSEKOS_T_CreatRespMesKWP2000Task();OSEKOSShutdownOS(E_OS_SYS_CODE);}
OSEK_TASK OSEKOS_Twrap_KLineTimerTask(void)
{OSEKOS_T_KLineTimerTask();OSEKOSShutdownOS(E_OS_SYS_CODE);}
TaskType OSEK_CONST OSEKOStaskRbIndex[]={
  0,
  0,
  1,
  1,
  1,
  1,
0};
TaskStateType OSEKOStaskStatus[]={    
  SUSPENDED,NPRTASK|
  SUSPENDED,NPRTASK|
  SUSPENDED,NPRTASK|
  SUSPENDED,    
  NPRTASK|
  SUSPENDED,NPRTASK|
  SUSPENDED,NPRTASK|RUNNING};
#if defined(__COSMIC__) && defined(__BANKED__)
OSEK_CONST OSEK_U32 OSEKOStaskStartAddressBanked[]={(OSEK_U32)OSEKOS_Twrap_Loop,(OSEK_U32)OSEKOS_Twrap_InitTask,(OSEK_U32)OSEKOS_Twrap_Cyclic,(OSEK_U32)OSEKOS_Twrap_KlineCommunicationTask,(OSEK_U32)OSEKOS_Twrap_CreatRespMesKWP2000Task,(OSEK_U32)OSEKOS_Twrap_KLineTimerTask
};
#else
OSEK_TASK ((* OSEK_CONST OSEKOStaskStartAddress[])(void))={    OSEKOS_Twrap_Loop,OSEKOS_Twrap_InitTask,OSEKOS_Twrap_Cyclic,OSEKOS_Twrap_KlineCommunicationTask,OSEKOS_Twrap_CreatRespMesKWP2000Task,OSEKOS_Twrap_KLineTimerTask
};
#endif
OSEKOSPrioType OSEK_CONST OSEKOStaskPrio[]={
  1,
  0,
  2,
  3,
  4,
  5,
};
#ifdef TKETTE
TaskType OSEKOStaskTKette[]={
  ATMAX,ATMAX,ATMAX,ATMAX,ATMAX,ATMAX};
#endif
struct {
  unsigned int task_stack[84];
  unsigned int interrupt_stack[15];
} OSEKOSstacks;
OSEK_U8 * OSEK_CONST OSEKOStaskStack[]={    
  (OSEK_U8*)&OSEKOSstacks+88,
  (OSEK_U8*)&OSEKOSstacks+88,
  (OSEK_U8*)&OSEKOSstacks+168,
  (OSEK_U8*)&OSEKOSstacks+168,
  (OSEK_U8*)&OSEKOSstacks+168,
  (OSEK_U8*)&OSEKOSstacks+168,
};
const int OSEKOSAppModeTaskIndex[] = {0,};
const TaskType OSEKOSAppModeTasks[] = {InitTask,INVALID_TASK,};
const int OSEKOSAppModeAlarmIndex[] = {0,};
const AlarmType OSEKOSAppModeAlarms[] = {INVALID_ALARM,};
const TickType OSEKOSAppModeAlarmStart[] = {0,};
const TickType OSEKOSAppModeAlarmCycle[] = {0,};
OSEKOSPrioType OSEK_CONST OSEKOSresPrio[]={    
  2,
  PMAX,};
OSEKOSPrioType OSEKOSresTaskPrio[]={    
  OSEKOS_INVALID_PRIO,
OSEKOS_INVALID_PRIO};
ResourceType OSEKOSresLIFO[2];
ResourceType OSEKOSresLIFOindex = 0xff;
TickType OSEK_CONST OSEKOSc_maxtick[]={1000};
TickType OSEK_CONST OSEKOSc_ticksperbase[]={
  100};
TickType OSEK_CONST OSEKOSc_mincycle[]={    
  1};
CounterType OSEK_CONST OSEKOSa_counter[]={
  C_SysCounter
  ,C_SysCounter
};
TaskType OSEK_CONST OSEKOSa_task[]={
  Cyclic
  ,KLineTimerTask
};
TickType OSEKOSa_zykw[]={
  0,0,};
AlarmType OSEKOSca_kette[]={
  0,
  1,
  2
};
#ifdef  __HIWARE__
#pragma NO_EXIT
#pragma NO_FRAME
#pragma NO_ENTRY
#ifdef  __BANKED__
#pragma CODE_SEG NON_BANKED
#endif
#ifdef INCLUDE_VectorTable
void interrupt OSEKOSisrRoutine_SysCounter()
#else
void interrupt (7) OSEKOSisrRoutine_SysCounter()
#endif
#endif
#ifdef __COSMIC__
#ifdef __BANKED__
#ifdef OSEKOS_RELOCATE_NONBANKED
#pragma section (non_banked)
#endif
@near @interrupt void OSEKOSisrRoutine_SysCounter()
#else
@interrupt void OSEKOSisrRoutine_SysCounter()
#endif
#endif
{
  OSEKOS_timerClearISRFlag_RTI();
  OSEKOSEnterISR();
  IAdvanceCounter(SysCounter);
  OSEKOSLeaveISR();
}
#ifdef __COSMIC__
#ifdef  __BANKED__
#ifdef OSEKOS_RELOCATE_NONBANKED
#pragma section ()
#endif
#endif
#endif
#ifdef INCLUDE_VectorTable
#ifdef  __HIWARE__
#pragma CONST_SEG VECTORTABLE
#endif
#ifdef  __COSMIC__
#pragma section const {VECTORTABLE}
#endif
#ifndef DC_FLARE_VECTORTABLE
const OSEK_U16 OSEKOSVectorTable[] = {
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)OSEKOSisrRoutine_SysCounter,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardInvalidInterrupt,
  (const OSEK_U16)boardStartup,
  (const OSEK_U16)boardStartup,
  (const OSEK_U16)boardStartup
};
#else /*DC_FLARE_VECTORTABLE*/
const  tIntJmpTable ApplIntJmpTable[] = {
  0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)OSEKOSisrRoutine_SysCounter,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardInvalidInterrupt,
    0x06 , (const OSEK_U16)boardStartup,
    0x06 , (const OSEK_U16)boardStartup,
    0x06 , (const OSEK_U16)boardStartup,
    0xaa , (const OSEK_U16)boardInvalidInterrupt
};
#endif /*DC_FLARE_VECTORTABLE*/
#ifdef  __HIWARE__
#ifdef  __BANKED__
#pragma CONST_SEG CONST_NON_BANKED
#else
#pragma CONST_SEG DEFAULT
#endif
#endif
#ifdef  __COSMIC__
#pragma section const {}
#endif
#endif /*INCLUDE_VectorTable*/
OSEKOSSaveType   OSEKOSrbliste[SMAX+1]; 
OSEKOSSaveType   *   OSEKOSrbptr = &OSEKOSrbliste[0]; 
TaskType   OSEKOStidact = TMAX;
OSEKOSPrioType   OSEKOSrunprio = PMAX;
OSEK_U8   OSEKOStermregie = 0;
static TaskType   rtact;
volatile OSEKOSPrioType	OSEKOShighPrio = 0;
ResourceType   OSEKOStaskResCounter[TMAX];
static AlarmType   aprev, anext;
TickType   OSEKOSa_startw[AMAX_STD+1];
TickType   OSEKOSc_atic[CMAX_STD]; 
StatusType   OSEKOStmpStatus = 0;
OSEK_U8   OSEKOSapplicationMode = 0;
volatile OSEK_U8 OSEKOSkernel = 0;
void OSEKOScheckInitialConfiguration(void);
void OSEKOScheckInitialConfiguration(void)
{
  int i=0;
  OSEK_U8 * ptr;
  OSEKOS_COV(0);
  for ( ; i<PMAX ; i++){
    OSEKOS_COV(1);
    if(OSEKOSpliste[i]!=ATMAX){
      OSEKOS_COV(2);
      OSEKOSShutdownOS(E_OS_SYS_INIT);
    }
  }
  if(OSEKOSpliste[i]!=TMAX){
    OSEKOS_COV(3);
    OSEKOSShutdownOS(E_OS_SYS_INIT);
  }
  ptr = (OSEK_U8*)OSEKOSrbliste;
  for (i=0 ; i<sizeof(OSEKOSrbliste) ; i++){
    OSEKOS_COV(4);
    if((*ptr)!=0){
      OSEKOS_COV(5);
      OSEKOSShutdownOS(E_OS_SYS_INIT);
    }
    ptr++;
  }
  OSEKOScheckArchInitialConfiguration();
}  
void OSEKOSSystem(void)
{
  OSEKOS_COV(8);
  OSEKOScheckInitialConfiguration();  
  OSEKOS_COV(9);
  OSEKOSa_startw[AMAX_STD]=1;
  OSEKOS_COV(10);
  StartupHook();
  OSEKOS_COV(11);
  {  
    register int z;
    for(z = OSEKOSAppModeTaskIndex[OSEKOSapplicationMode]; 
    OSEKOSAppModeTasks[z]!=INVALID_TASK; 
    z++){
      OSEKOSActivateTask(OSEKOSAppModeTasks[z]);
      OSEKOS_COV(12);
    }
  }
  OSEKOSEnableSystemTimers();
  OSEKOSStartupEnable();
  OSEKOS_COV(14);
  OSEKOSSETneuregie(0xff);
  OSEKOSpliste[PMAX] = ATMAX;    
  OSEKOStermregie = OSEK_TASK_TERMINATION;
  OSEKOSTaskSwitch();           
}
# ifndef OSEKOSPossibleInterrupt
# define OSEKOSPossibleInterrupt()
# endif
# ifndef OSEKOSArchIdle
# define OSEKOSArchIdle()
# endif 
void OSEKOSTaskSwitch()
{  
  register OSEKOSPrioType p;
  OSEKOS_COV(15);
  OSEKOScheckSuspendResumeNesting();
  OSEKOS_COV(16);
  if (OSEKOSneuregie == 1)

⌨️ 快捷键说明

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