본문 바로가기

임베디드

[RTOS 개발하기] 임베디드 OS 개발 프로젝트ch.0-ch.2

https://www.yes24.com/Product/Goods/84909414

 

임베디드 OS 개발 프로젝트 - 예스24

나만의 임베디드 운영체제를 만들어 보자.이 책은 펌웨어 개발 과정을 실시간 운영체제(RTOS)를 만들어 가며 설명한다. 임베디드 운영체제를 개발 환경 구성에서 시작해 최종적으로 RTOS를 만드는

www.yes24.com

공부 목적으로 이만우님의 저서 "임베디드 OS 개발 프로젝트"를 따라가며, RTOS "Navilos"를 개발하는 포스트입니다.

개발 목적

임베디드 시스템에 많이 사용되는 RTOS를 직접 개발해보며 다음과 같은 지식을 학습하고자 합니다.

 - RTOS의 핵심 개념에 대해 학습한다.

 - 운영체제 핵심 기능을 설계해보며 학습한다.

 - 펌웨어에 대한 진입장벽을 낮춘다.

 -  ARM 아키텍처에 대해 학습한다.

 - 하드웨어에 대한 지식을 학습한다.(펌웨어가 어떻게 하드웨어를 제어하는지)


이번 챕터는 운영체제 및 RTOS에 대한 기본 개념을 설명하고, 개발 환경을 세팅하는 내용입니다.

 

OS를 개발하기 위해서는 어떤 기술들이 필요한가?

 - 개발 환경 설정

 - 컴파일러에 대한 이해

 - 링커에 대한 이해

 - 부트로더에 대한 이해

 - 레지스터 사용에 대한 이해

 - 인터럽트 처리

 - 메모리 관리

 - 주변장치 제어

 - 멀티코어 동기화

 - 멀티코어 간 메시지 처리

 

운영체제란?

하드웨어 관리하고, 응용프로그램과 하드웨어 사이의 인터페이스 역할을 하며 시스템 동작을 제어하는 시스템 소프트웨어

 

운영체제의 주요 역할

 1. 프로세스 관리

     - 프로그램을 관리하는 기능. CPU가 점유해야할 프로세스를 결정하고 자원을 할당함.

 2. 저장장치 관리

     - 메인 메모리와 스토리지 메모리(SSD, HDD) 등을 관리하는 기능.

 3. 네트워킹 관리

     - TCP/IP기반 인터넷 혹은 다른 프로토콜을 연결할 때 운영체제는 네트워크 프로토콜을 지원해주어야 함.

 4. 사용자 관리

     - 여러 사용자가 사용할 수 있도록, 각 사용자를 관리하는 기능

 5. 디바이스 드라이버

     -  운영체제는 시스템 하드웨어를 관리함. 이를 인식할 수 있도록 디바이스 드라이버를 관리하는 기능을 수행해야 함.

 

 

RTOS란?

실시간 운영체제(RealTime Operating System)이라 부르며, 운영체제의 응답과 동작이 즉각적이며 실시간으로 동작함. 항공기 등 정확한 작업이 완료되어야 하는 임베디드 시스템에 사용됨.

현재 임베디드 시스템의 대부분이 RTOS라고 합니다

 

에뮬레이터 개발 환경

임베디드 개발할 때는 하드웨어가 필요하지만, 비싸기 때문에 해당 프로젝트에서는 QEMU란 에뮬레이터를 사용해 RTOS(나빌로스)를 개발할 예정입니다.


개발 환경 구성

개발은 리눅스(우분투) 환경에서 진행하였습니다.

컴파일러 설치

펌웨어를 만드려면 해당 임베디드 시스템에 맞는 컴파일러를 사용해야 합니다.

ARM용 컴파일러를 설치해줍니다.

// 설치
sudo apt install gcc-arm-none-eabi
// 버전 확인(설치 확인)
arm-none-eabi-gcc -v

 

QEMU 설치

앞서 말한대로 해당 프로젝트는 QEMU를 활용해 개발할 예정입니다.

 - QEMU : x86, ARM 등 여러 환경을 가상 머신으로 사용할 수 있는 에뮬레이터

우선 QEMU를 설치해주겠습니다.

//qemu-system-arm 설치
sudo apt install qemu-system-arm
//설치 확인
qemu-system-arm --version

아래는 qemu가 어떤 ARM 시스템(머신)을 에뮬레이트할 수 있는지 확인하는 명령어입니다.

// ?까지 붙여주자
qemu-system-arm -M ?

qemu-system-arm이 지원하는 머신 목록 중 일부

이 중 아무 머신이나 사용해도 문제없지만, 해당 프로젝트에서는 realview-pb-a8을 사용할 것입니다. 데이터 시트를 가장 구하기 쉬운 머신 중 하나이기 때문입니다.

 


참고

https://kldp.org/node/162560

 

펌웨어 RTOS 책을 썼습니다. | KLDP

10년만에 책을 한 권 썼습니다. 10년전에 KLDP에 쓴 글을 바탕으로 책을 냈었습니다. 이 책이죠. 아직도 절판되지 않고 팔리고 있습니다. 10년동안 꾸준히 일정 권수만큼 매년 팔리는 것 보면 아마

kldp.org

저자 이만우님 깃허브 https://github.com/navilera/Navilos

 

GitHub - navilera/Navilos: RTOS for various embedded platform

RTOS for various embedded platform. Contribute to navilera/Navilos development by creating an account on GitHub.

github.com


마치며

임베디드 개발자를 희망하며 RTOS라는 이름은 많이 들어보았지만, 실제로 접해 볼만한 경험이 없었습니다. 이번 프로젝트를 통해 RTOS와 펌웨어 개발, ARM 아키텍처에 대한 이해도를 높히고, 좀 더 친숙해지면 좋겠습니다. 10월 중에 모두 끝내는 것을 목표로 진행하고자 합니다.