📄 os.c
字号:
/*****************************************************
*
* 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 + -