본문 바로가기

개발/임베디드

RTOS 2 - uC/OS 실시간 커널 구조

반응형

- uC/OS 특징

: 커널 코드의 대부분이 C 기반이라 이식하기 쉬움

: 선점형 스케줄링

: Real Time OS

: 우선순위를 이용한 멀티태스킹 지원

: 신뢰성과 안정성

: 인터럽트 관리(중첩, 일시정지: OSTaskSuspend(), 재개: OSTaskResume())

: 스택 체크, Mail Box, Mail Queue, Semaphore 등의 시스템 서비스 제공

: 같은 우선순위를 제공하지 않으므로, 라운드 로빈 기법 적용 불가

 

- uC/OS 태스크

: 태스크의 ID가 곧 태스크의 우선순위. 이 값이 낮을수록 우선순위는 높아짐

: Ready 상태의 태스크 중 가장 높은 우선순위의 태스크 실행

: ISR: 인터럽트 발생 후, CPU가 수행하는 인터럽트 서비스 루틴

: TCB

: 태스크 생성시 각 태스크에게 할당되는 Task Control Block

: OS_TCB는 메모리에 상주하여 태스크 상태 관리

: TCB가 담고있는 내부 변수

: OSTCBStkPtr: 태스크 스택을 가리키는 포인터(스택 포인터 인자를 최상위 인자로 배치하는 이유는 어셈블리 언어의 효율성 증대를 위함)

: OSTCBStat: 태스크의 상태 표시 비트 (ucos.c)

: OSTCBPrio: 태스크의 우선순위

: OSTCBDly: 태스크의 지연 시간. 이벤트 발생 대기용

: OSTCBX, OSTCBY, OSTCBBitX, OSTCBBitY: 태스크가 생성되거나 우선순위가 바뀔 때 사용

OSTCBY = prio >> 3;

OSTCBX = prio & 0x07;

OSTCBBitY = 1 << OSTCBY;

OSTCBBitX = 1 << OSTCBX;

: OSTCBNext, OSTCBPrev: TCB를 양방향으로 링크

: OSTCBEventPtr: Event Control Block를 가리키는 포인터

: OSTaskCreate(): 태스크 생성

: OSTaskDel(): 태스크 삭제

: OSTaskDelReq(): 공유자원을 점유한 태스크 삭제(삭제를 요청하는 쪽과 삭제 대상이 되는 쪽 모두에서 호출)

: OSTaskQuery(): 태스크 정보 획득

: OS_TCBInIt(): TCB구조체를 새로 만들고, 세팅하여 TCBList에 추가

: Task Ready List: OSRdyGrp과 OSRdyTbl[]를 통해 Ready 상태 태스크 관리

: 더욱 빠르게 찾기 위하여, 미리 계산한 결과를 담은 Lookup Table을 이용해서 OSTCBX ,OSTCBY 값을 찾고, 우선순위를 계산하여 Ready List 중 최고 우선순위의 태스크 찾거나 List에 추가하거나 제거함

: OS_Sched(): 우선순위가 가장 높은 태스크를 실행함

: Context Switch(os_cpu_a.asm에 구현): R4~R11는 LDM 명령어를 통해 수동 백업or복원하고, R0~R3,R12,LR,PC,xPSR은 자동 백업or복원(PSP, 프로세스 스택 포인터 이용)

: OSSchedLock(): 스케줄링 잠금 설정. OSLockNesting 변수 이용

: OSSchedUnlock(): 스케줄링 잠금 해제. (OSLockNesting--후, OSLockNesting==0이어야 해제됨)

: Idle Task: Ready 상태의 태스크가 없을 경우, 시스템에 의해 자동 실행되는 태스크

: Statistics Task: CPU 사용률 계산. 전체 CPU 수행 카운트 중에 Idle Task가 수행된 카운트를 제외한 카운트의 비율

 

 

https://www.micrium.com/

 

Micrium | Real Time Operating Systems

Embedded Software for the Internet of Things μC/OS is an essential component of the DIRIS G Communications Gateway Learn...

www.micrium.com

 

본 게시글은 개인 공부용으로 작성하여 내용의 퀄리티가 부족할 수 있습니다. 

반응형