본문 바로가기

임베디드

[RTOS 개발하기] 임베디드 개발 프로젝트 후기

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

 

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

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

www.yes24.com

 

공부 목적으로 이만우님의 저서 "임베디드 OS 개발 프로젝트"를 따라가며, RTOS "Navilos"를 개발하는 포스트입니다. 모든 내용은 "임베디드 OS 개발 프로젝트"에 포함되어 있습니다.

개발 목적

임베디드 시스템에 많이 사용되는 RTOS를 직접 개발해 보며 다음과 같은 지식을 학습하고자 합니다.
 - RTOS의 핵심 개념에 대해 학습한다.
 - 운영체제 핵심 기능을 설계해 보며 학습한다.
 - 펌웨어에 대한 진입장벽을 낮춘다.
 -  ARM 아키텍처에 대해 학습한다.
 - 하드웨어에 대한 지식을 학습한다.(펌웨어가 어떻게 하드웨어를 제어하는지)


https://github.com/umdoyuun/rtos-project

 

GitHub - umdoyuun/rtos-project

Contribute to umdoyuun/rtos-project development by creating an account on GitHub.

github.com

책을 따라가며 모든 과정을 마무리 했습니다. 정말 아무것도 없는 상황에서 printf()부터 타이머, 스케줄러, 컨텍스트 스위칭 등을 직접 작성하며 RTOS를 구현해볼 수 있었습니다. 이 책을 통해 배운 내용은 다음과 같습니다.

  • 개발 환경 설정
  • 컴파일러에 대한 이해
  • 링커에 대한 이해
  • 부트로더에 대한 이해
  • 레지스터 사용에 대한 이해
  • 인터럽트 처리
  • 메모리 관리
  • 주변장치 제어
  • 멀티코어 동기화
  • 멀티코어 간 메시지 처리

공부한 내용들이 생각 이상으로 도움이 되었습니다. 현재 SSAFY에서 임베디드 트랙으로 교육 수강중인데, 배우는 내용 중 많은 부분이 학습한 것과 많이 연관되어 있다는 걸 체감할 수 있었습니다. 또 훨씬 쉽고 깊이있게 이해할 수 있었습니다. 예를들어 STM32 보드를 다루며 HAL 인터페이스를 사용했는데, HAL 인터페이스를 왜 사용하는 것인지, 어떻게 구성되어 있는지를 이미 이해하고 있어 손쉽게 사용할 수 있었습니다.

 

또, 직접 손으로 개발해본다는게 기초적인 CS에도 이해를 많이 도왔습니다. 스케줄러, 동기화 등 이론적으로만 알던 기초적인 지식도 더 이해하게 된 것 같습니다.

 

앞으로는 학습한 내용을 바탕으로 RTOS를 구현해 라즈베리파이에 적재하는 것을 목표로 도전하겠습니다.