μμ΄ κ³ μμ λ§μ΄ ν΄μ κ·Έλ μ§ μμ€λ λ³λ‘ λ§μ§ μλ€..λ€λ§ λ€ μμΌλ‘ μΉλΌκ΅¬ νλ νλ€μμ λΏ
μ¬ννΌ κ·Έλμ μ£ΌμλΆλΆμ μμ€λ λ€ λ³΄μ¬μ€ κ² κ°λ€.
μ¬μ€ 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









