본문 바로가기
Embedded/OSEK Real-Time OS

OSEK project 기초

by kjy1010 2024. 1. 20.

OSEK 프로젝트의 파일구조와 관리에 대해 알아보았기에 기본적인 함수를 사용하고 코드를 작성해보며 어떠한 구조로 이루어져있는지 알아보는 시간을 가지겠습니다.

첫번째로 Hello World를 출력하는 프로그램을 작성해보도록 하겠습니다.

1. Hello World
bsw.cpp파일과 bsw.h파일, asw.c 파일과 conf.oil파일을 수정하면됩니다.

#include “bsw.h”

TASK(Task1)
{
	printfSerial(“Hello World\n”);

	TerminateTask();
}
TASK Task1{
	PRIORITY = 1;
	STACK = SHARED;
	SCHEDULE = FULL; //preemptive
	AUTOSTART = TRUE; //자동시작
	ACTIVATION = 1;
};


위 코드처럼 수정후 Termite를 실행 및 연결후 아두이노를 reset하면 OS시작후 메시지가 출력됩니다.




2. Timer
OSEK RTOS에서 타이머는 시간 관리 및 작업 스케줄링을 지원하는 데 사용됩니다.

사용법은 다음과 같습니다.

  • asw.c. 파일에 Timer ISR 추가
  • OIL파일에 Timer ISR 추가
ISR2 (Timer ISR)
{
	;	
}
ISR TimerISR{
	CATEGORY = 2;
	SOURCE = “TIMER1_COMPA”;
};


3. mdelay
Delay를 줄때 사용하는 함수입니다.
Task1의 코드를 수정하여 사용법을 알아보겠습니다.

TASK(Task1)
{
	printfSerial(“Hello World\n”);

	mdelay(3000);

	printfSerial(“Goodbye World\n”);
	TerminateTask();
}

위코드를 실행하면 OS 시작후 Hello World가 출력되고 3초 후 Goodbye World가 출력되는 모습을 확인 할 수 있습니다.

4.Timeline
Timer를 이용하여 초단위 timeline을 출력해보는 실습을 진행해보겠습니다.
TimerISR를 다음과 같이 수정해보겠습니다.

ISR2(TimerISR)
{
	static long c =0;
	printfSerial(“\n%4ld: ”,c++);
}


코드를 실행해보면 OS 시작후 Hello World가 출력되고 timeline이 출력되며, 3초 후 Goodbye World가 출력되는 모습을 확인 할 수 있습니다.

'Embedded > OSEK Real-Time OS' 카테고리의 다른 글

Alarm & Event  (0) 2024.01.20
Task  (0) 2024.01.20
OSEK project 생성과 파일구조  (0) 2024.01.18
OSEK RTOS 실습 환경 구축  (0) 2024.01.17
차량용 실시간 운영체제 기반 프로그래밍  (0) 2024.01.15