μμ΄ κ³ μμ λ§μ΄ ν΄μ κ·Έλ μ§ μμ€λ λ³λ‘ λ§μ§ μλ€..λ€λ§ λ€ μμΌλ‘ μΉλΌκ΅¬ νλ νλ€μμ λΏ
μ¬ννΌ κ·Έλμ μ£ΌμλΆλΆμ μμ€λ λ€ λ³΄μ¬μ€ κ² κ°λ€.
μ¬μ€ U_C_OS λ μ£Όμκ³Ό μ°μλκΈ° μλ μ½λκ° μ’ λ§λ€.
κ·Έλ¦¬κ³ μΈλ§ν¬μ΄μ μ΄λ²€νΈμ κ΄ν μ½λλ λλΆλΆ λΉμ€λ―λ νλ€...μ΄μ λ κ±°μ λκΈ°ννλ λ°©λ²μ΄
λΉμ·νκ² λλ¬Έμ΄λ€. κ·Έλμ μ€μμ½λλ₯Ό 보면 κ·Έλ κ² λ§μ§ μλ€..κ±°κΈ°λ€ U_C_OS-Iμμ U_C_OS_IIλ‘ κ°λ λμ€μ
νΈνμ± λλ¬Έμ λ§μ μ£Όμμ΄ λ νμνμ‘λ€...μνΌ κ·Έλμ..λ΄ μ½λλ μ§§λ€....
μ¬ννΌ κ·Έλμ μ£ΌμλΆλΆμ μμ€λ λ€ λ³΄μ¬μ€ κ² κ°λ€.
μ¬μ€ U_C_OS λ μ£Όμκ³Ό μ°μλκΈ° μλ μ½λκ° μ’ λ§λ€.
κ·Έλ¦¬κ³ μΈλ§ν¬μ΄μ μ΄λ²€νΈμ κ΄ν μ½λλ λλΆλΆ λΉμ€λ―λ νλ€...μ΄μ λ κ±°μ λκΈ°ννλ λ°©λ²μ΄
λΉμ·νκ² λλ¬Έμ΄λ€. κ·Έλμ μ€μμ½λλ₯Ό 보면 κ·Έλ κ² λ§μ§ μλ€..κ±°κΈ°λ€ U_C_OS-Iμμ U_C_OS_IIλ‘ κ°λ λμ€μ
νΈνμ± λλ¬Έμ λ§μ μ£Όμμ΄ λ νμνμ‘λ€...μνΌ κ·Έλμ..λ΄ μ½λλ μ§§λ€....
~cpp #if !defined(LIB_STACK_CPP) #define LIB_STACK_CPP void LIB_STACK_INIT (void (*task)(void),INT16U * Stack) { *Stack-- = 0x0000; *Stack-- = (INT16U)FP_SEG(task); *Stack-- = (INT16U)FP_OFF(task); *Stack-- = (INT16U)0x0202; // Flag Register *Stack-- = (INT16U)FP_SEG(task); *Stack-- = (INT16U)FP_OFF(task); *Stack-- = (INT16U)0xAAAA;// AX *Stack-- = (INT16U)0xBBBB;// BX *Stack-- = (INT16U)0xCCCC;// CX *Stack-- = (INT16U)0xDDDD;// DX *Stack-- = (INT16U)0xEEEE;// ES *Stack-- = _DS; *Stack-- = (INT16U)0x0000;// SI *Stack-- = (INT16U)0x0000;// DI *Stack-- = (INT16U)0xFFFF;// BP }μ€ν μ¬μ΄μ¦ ꡬνλ λΆλΆ
~cpp INT16U LIB_STACK_SIZE (INT16U *Stack) { int size = 0; for (int i = 0 ; i<256 ; i ++){ if ( (*Stack--) != 0 ) size++; } return size; } #endif
λ€μμ TCB ꡬ쑰체 λͺ¨μμ΄λ€....
TCBλ TASK CONTROL BLOCKμ μ½μ.. νλ§λλ‘ νμ€ν¬μ λν μ 보λ₯Ό λ΄κ³ μλ ꡬ쑰체
REAL_LIBOS
TCBλ TASK CONTROL BLOCKμ μ½μ.. νλ§λλ‘ νμ€ν¬μ λν μ 보λ₯Ό λ΄κ³ μλ ꡬ쑰체
~cpp #if !defined(LIB_STRU) #define LIB_STRU #include "LIB_DATA.H" struct LIB_TCB { // Task Priority INT8U *Task_Name; INT8U priority; // Task Stack INT16U StackSeg; INT16U StackOff; INT16U *Stack; // Task Delay int delay; // Task Status INT8U Task_Status; // Event Ptr; LIB_TCB *NextEvent; };μ΄λ²€νΈμ κ΄ν λΈλ
~cpp struct LIB_ECB { void *Event_Ptr; LIB_TCB *Wait_TCB; INT8U Event_Type; INT16U Sema_Count; }; #endif---
REAL_LIBOS