Download presentation
Presentation is loading. Please wait.
1
MicroC/OS-II 1. Miscellaneous
아이티즌 기술연구소 ITISN Technical Lab
2
실시간 시스템의 이해 실시간 시스템(Real Time System) 구조에 따른 3가지 분류
제한시간 내 논리적으로 완벽하게 동작해야 하는 시스템 제한시간 내 동작하지 않을 경우 심각한 결과 발생 종류 설명 HARD Real Time System 반드시 정해진 시간 내에 정확히 마쳐야 함 SOFT Real Time System 가능한 한 빠르게 임무를 수행 반드시 정해진 시간 내에 마칠 필요 없음 구조에 따른 3가지 분류 전경/배경(Foreground/Background) 시스템 비선점형 커널 (Non-preemptive Kernel) 시스템 선점형 커널 (Preemptive Kernel) 시스템 ITISN Technical Lab
3
실시간 시스템의 구조(1/2) 전경/배경 시스템 수퍼-루프(super-loop)라고도 부름 소형이며 단순한 구조
전경 프로세스(인터럽트 레벨) ISR을 통해 비동기적으로 발생하는 중요한 이벤트 처리 (ISR: Interrupt Service Routine) 배경 프로세스(태스크 레벨) 특정한 모듈이나 함수를 호출하는 무한루프 Back ground process Fore ground process module 1 module 2 ISR module 3 무한루프 ISR ISR ISR module 4 module 5 ITISN Technical Lab
4
실시간 시스템의 구조(2/2) 비선점형(Non-preemptive) 커널 시스템 : 느린 응답 시간
비선점형 커널 vs 선점형 커널 LOW LOW 인터럽트 발생 인터럽트 발생 ISR ISR 하던 일로 복귀 높은 우선순위 처리 LOW HIGH 생성 생성 하던 일로 복귀 LOW 높은 우선순위 처리 HIGH 시 간 시 간 ITISN Technical Lab
5
RTOS의 이해 Real Time Operating System 개요 (제한된시간안에 완료 해야함) RTOS의 특징
신뢰성과 정확성을 요하는 제어분야(핵발전소, 미사일,엔진) 실시간 응답성 보장 microC/OS-II는 상용 RTOS 중 하나 RTOS의 특징 Multitasking(멀티태스킹) Preemptive(선점) Deterministic(예측가능성) Portable(이식성) ROMable(내장성) ITISN Technical Lab
6
microC/OS-II의 개요 높은 안정성 높은 호환성 ROM 내장 가능 다양한 커널 크기 선점형 실시간 멀티태스킹 커널
1992년 발표 이후 수백여 상용 제품 적용 높은 호환성 8비트, 16비트, 32비트, 64비트 시스템 동작 ROM 내장 가능 임베디드 시스템 개발을 목적으로 개발 됨 다양한 커널 크기 응용에 따라 다양하게 조절 가능 선점형 실시간 멀티태스킹 커널 항상 실행 가능한 최고 우선순위의 태스크를 실행 멀티태스킹(Multitasking) 여러 태스크가 번갈아 CPU를 사용할 수 있도록 순번을 정함 64개의 태스크 지원(이미 그 중 8개는 예약, 56개 사용가능) ITISN Technical Lab
7
선점형 커널(Preemptive Kernel)
태스크들 간 통신 관리 태스크 문맥전환 관리 커널 서비스 지원: 세마포어, 메시지 박스, 큐, 시간지연 등 커널의 스케줄러(Scheduler) 기능 태스크 실행 순서 결정 디스패처(dispatcher)라고 부르기도 함. 중요도에 따른 작업의 우선순위 배정 수행 선점형 커널 CPU 제어권 : 실행준비가 된 최상위 우선순위 태스크가 획득 태스크 레벨의 응답시간은 최소화 ITISN Technical Lab
8
우선순위 관리 기능 1/3 주객전도!! 태스크 우선순위(Task Priority) 중요한 태스크일수록 높은 우선순위를 부여
정적 우선순위(Static Priorities) 실행하는 동안 우선순위를 바꾸지 않음 동적 우선순위(Dynamic Priorities) 실행하는 동안 우선순위를 바꾸는 경우 리얼타임 커널의 우선순위 전도 문제를 해결하는 방법 microC/OS-II지원 주객전도!! “중요한 일이 뒷전이고, 덜 중요한 일을 먼저하고 있다.” ITISN Technical Lab
9
우선순위 관리 기능 2/3 우선순위 전도(Priority Inversions) 문제 리얼타임 커널(RTOS)에서 주로 발생
태스크3 정지 태스크1 태스크1 (H) 태스크2 (M) 태스크3 (L) “어부지리” 우선순위 전도 발생 시간 공유메모리 중요 사용시작 사용불가 사용완료 세마포어 획득 세마포어 반환 ITISN Technical Lab
10
우선순위 관리 기능 3/3 우선순위 전도 문제 해결 우선순위 상속: 태스크의 우선순위를 자동으로 변경 태스크1 (H)
태스크2 (M) 태스크3 (L) 시간 공유메모리 중요 사용시작 정지 사용불가 사용완료 (H) 변경 우선순위 상속 ITISN Technical Lab ITISN Technical Lab 10
11
microC/OS-II 개발 환경 설정 AvrEdit 3.6 설치 C:\AvrEdit\ Avr-gcc 컴파일러 3.3.1 포함
환경변수 path 추가 C:\AvrEdit\WinAvr\utils\bin C:\AvrEdit\WinAvr\bin PonyProg f 설치 펌웨어 쓰기 목적 microC/OS-II 2.52에 있는 SOFTWARE 폴더를 C 드라이브에 포함 C:\SOFTWARE\ 실시간 운영체제 라이브러리 DK128 Port 설치 at-avr-jlu tgz MicroC/OS-II에 추가할 DK128 하드웨어 정보 Micrium\Software\uCOS-II C:\SOFTWARE\uCOS-II에 복사 ITISN Technical Lab
12
Port 수정 STK500 보드와 DK128은 매우 유사함
C:\SOFTWARE\uCOS-II\Ports\AVR\Atmega128\GNU\jlu\STK500 STK500 폴더를 복사하여 DK128로 이름 변경 삭제: includes.h, makefile 변경: includes.h.252includes.h, makefile.252makefile 변경: os_cfg.h 내용 #define CPU_CLOCK_HZ #define OS_TICKS_PER_SEC 50 125 변경: makefile 내용 UCOSDIR = c:/SOFTWARE/uCOS-II/Source PORTDIR = c:/SOFTWARE/uCOS- II/Ports/AVR/ATmega128/GNU/jlu DIRAVR = C:/AvrEdit/WinAvr CC = C:/AvrEdit/WinAvr/bin/avr-gcc OBJCOPY = $(DIRAVRBIN)/avr-objcopy ITISN Technical Lab
13
테스트 프로그램 작성 test.c 소스코드(ppt 16쪽)를 DK128 결선 상태에 맡게 포트 수정
test.c 파일을 DK128 폴더로 덮어 쓸 것 ITISN Technical Lab
14
테스트 프로그램 컴파일 DK128 폴더 밑에서 make 입력
C:\SOFTWARE\uCOS-II\Ports\AVR\ATmega128\GNU\jlu\DK128 다음과 같이 에러가 없으면 성공이다. ITISN Technical Lab
15
Miscellaneous 함수 목록 void OSInit(void); // uC/OS-II 초기화
void OSIntEnter(void); // 커널에 ISR 시작 통 보 void OSIntExit(void); // 커널에 ISR 종료 통보 void OSSchedLock(void); // 스케줄러 잠그기 void OSSchedUnlock(void); // 스케줄러 풀기 void OSStart(void); // 멀티태스킹 시작 void OSStatInit(void); // 통계 태스크 초기화 INT16U OSVersion(void); // 현재 버전 알아내기 ITISN Technical Lab
16
테스트 프로그램 분석 1/5 ITISN Technical Lab
17
테스트 프로그램 분석 2/5 메인 함수 ITISN Technical Lab
18
테스트 프로그램 분석 3/5 ITISN Technical Lab
19
테스트 프로그램 분석 4/5 LED 제어 태스크용 함수 ITISN Technical Lab
20
테스트 프로그램 분석 5/5 FND 제어 태스크용 함수 ITISN Technical Lab
21
실습 과제 1. OS Version 정보를 LED에 2진수로 표시하는 프로그램을 구현하 시오.
ITISN Technical Lab
Similar presentations