00001 /********************************************************* 00002 *Project: 80X86 32BIT MULTI TASKING OPERATING SYSTEM 00003 *Description: Root task of multi-tasking kernel 00004 * 00005 *File: roottask.c 00006 *Author: Book Chen 00007 *Date: 2010.01.01 00008 *********************************************************** 00009 */ 00010 #include "includes.h" 00011 00012 U8 RootTaskName[]="ROOTTASK"; 00013 OS_STACK RootTaskStack[ROOT_TASK_STACK_SIZE]; 00014 00015 void RootTaskInit(void){ 00016 InterruptInit(); //interrupt initialization 00017 CgaInit(); //vga initialization 00018 KeyboardInit(); //keyboard initialization 00019 Uart1Init(); //com1 initialization and install event 00020 Uart2Init(); //com2 initialization and install event 00021 Lpt1Init(); //lpt1 initialization 00022 RtcInit(); //rtc initialization and install event 00023 TimerInit(); //timer initialization 00024 XmodemInit(); //xmodem initalization 00025 GuiInit(); //gui initalization and install resource 00026 } 00027 00028 void RootTask(void){ 00029 RootTaskInit(); 00030 OsTaskCreat(ShellTask,(OS_STACK*)&ShellTaskStack[SHELL_TASK_STACK_SIZE-1],&ShellTaskName,0); 00031 while(1){ 00032 if(KeyboardKeyBufferCheck()!=BUFFER_EMPTY){ 00033 OsEventUp(&KeyboardCtrl.KeyboardEvent); 00034 } 00035 if(Uart1RxBufferCheck()!=BUFFER_EMPTY){ 00036 OsEventUp(&Uart1Ctrl.Uart1Event); 00037 } 00038 if(Uart2Ctrl.HasData==true){ 00039 //GuiStringPrint("\nCOM2 EVENT UP"); 00040 OsEventUp(&Uart2Ctrl.Uart2Event); 00041 } 00042 if((RtcCtrl.HasUpdate==true)||(RtcCtrl.HasPeriodic==true)){ 00043 //GuiStringPrint("\nRTC EVENT UP"); 00044 OsEventUp(&RtcCtrl.RtcEvent); 00045 } 00046 if(OsHasIntNesting==OS_TRUE){ 00047 OsHasIntNesting=OS_FALSE; 00048 //GuiPrintString("\nsee nesting interrupt."); 00049 } 00050 OsYield(); 00051 } 00052 }
1.5.9