BEST
하드웨어

/

임베디드 · IoT

FreeRTOS 프로그래밍

RTOS를 사용하기만 하면 실시간 처리가 된다고 믿고 계시나요? 이 강의를 보시고 확인해보세요. 까다로운 인터럽트, 우선순위, 상호배제, 포팅에 대한 통찰력을 만들어드립니다.

(4.7) 수강평 47

수강생 638

Thumbnail

초급자를 위해 준비한
[임베디드 · IoT, 반도체] 강의입니다.

이런 걸
배워요!

  • 하드리얼타임을 구현하는 법

  • 인터럽트를 안정적, 효율적으로 운용하는 법

  • 잦은 상호배제로 인한 시스템 성능 저하를 극복하는 법

  • 태스크 우선순위 결정을 확실하게 하는 법

  • 내가 만든 태스크가 실시간으로 동작하는지 테스트하기

  • 포팅 노하우

강의 하나로 정리하는 FreeRTOS!
개념부터 실제 노하우까지 확인하세요.

강의 주제 📖

RTOS란?

Real-Time Operating System?

RTOS는 실시간 운영체제의 약자로,
제한된 시간 내에 원하는 작업을 처리할 수 있도록
만들어진 운영체제입니다.

RTOS는 실시간 응용 프로그램을 위해 개발된 운영체제입니다. 고성능 및 신뢰성이 필수적인 환경과 자동차, 가전, 의료, 항공 우주, 국방, 산업 제어 및 자동화를 비롯한 다양한 분야의 임베디드(Embedded) 제품에 사용됩니다.

높은 수준(Hard-Realtime)을 요구하는 작업 역시 실시간 운영 체제를 통해 제한된 시간 안에 결과를 처리할 수 있습니다.

FreeRTOS란?

여러 분야에 적용되는 만큼 RTOS도 그 종류와 라이센스 형태가 다양합니다. FreeRTOS는 마이크로 컨트롤러 및 소형 마이크로 프로세서를 위한 최고의 실시간 운영 체제(RTOS)입니다. FreeRTOS 소스 코드는 무료로 배포되므로 FreeRTOS를 다운로드하여 개발을 시작할 수 있습니다.

FreeRTOS (클릭)

FreeRTOS는 일반적으로 임베디드 애플리케이션에 필요한 모든 구성 요소와 함께 컴파일된 단일 이미지형태로 메모리에 플래시되어 사용됩니다.
사용된 마이크로 프로세서에 관계없이 임베디드 애플리케이션 개발자는 FreeRTOS 커널 및 모든 FreeRTOS 소프트웨어 라이브러리에 대해 동일한 표준화된 인터페이스를 사용할 수 있습니다

FreeRTOS 커널은 작고 간단하며 사용하기 쉽게 설계되었습니다. 일반적인 RTOS 커널 바이너리 이미지 크기는 4~9K바이트입니다.

FreeRTOS 호환 $100 미만의 마이크로컨트롤러 보드를 쉽게 구할 수 있습니다.

일반적으로 FreeRTOS 기반 애플리케이션Linux 기반 시스템보다 훨씬 간단하다는 이점이 있습니다

출처: VDC Research (클릭)

Freeertos.org는 빠른 시작 가이드(클릭)를 포함하여 FreeRTOS 커널 사용에 대한 일련의 자세한 자습서 및 가이드를 제공합니다. Tickless 인터럽트를 지원함으로써 마이크로 컨트롤러는 인터럽트가 발생하거나 RTOS 커널이 작업을 준비 상태로 전환할 때까지 DEEP SLEEP의 절전 상태를 유지할 수 있습니다.

Amazon은 IoT 디바이스가 자사의 클라우드에 안전하게 연결할 수 있도록 지원하는 수많은 소프트웨어 라이브러리를 FreeRTOS 커널을 기반으로 구현하고 있습니다. Amazon FreeRTOS가 사물인터넷 디바이스에 적용되면 AWS IoT Core와 같은 클라우드 서비스에 안전하게 연결하고 OTA 업데이트 기능을 사용하여 원격으로 업데이트할 수 있습니다.


다음 내용을 학습합니다 📚

FreeRTOS가 무료이면서 소스코드 기반의 커널을 갖추고 있다는 점은 주지의 사실입니다.
그렇다면 커널의 소스를 활용할 수 있다는 것의 진정한 장점은 무엇일까요?

내가 사용하는 커널이 소스 코드를 제공해준다는 말은 사용자가 원할 경우 언제든지 그 내용을 들여다볼 수 있다는 것을 말하죠. 하지만, 우리의 궁극적인 목적이 RTOS라는 자동차를 잘 운행하는 것에 있다면 내연기관 차량의 구조나 원리의 학습에 그 의의를 둘 것이 아니라 방향 지시등 준수, 횡단보도 안전 의무 준수, 백미러 잘 관찰하기, 급가속하지 않기 등에 더 많은 시간과 노력을 들이는 것이 나에게 더 큰 도움이 되지 않을까요?

또 커널 소스를 분석하여 커널을 더욱 좋게 성능을 개량할 수도 있겠지만, 모든 코드 수정에는 책임이 동반되는 터라 감히 추천드릴 수는 없습니다. 그보다는 내가 작성한 애플리케이션이 가진 문제를 찾아내고 수정함에 있어 커널 소스의 도움을 받거나 커널의 동작에 대한 이해를 높이는 용도로서 가치가 있다고 생각합니다.    

지금부터 FreeRTOS라는 자동차를 잘 운행하기 위해 우리가 필수적으로 알아야 할 내용을 정리해보겠습니다.

RTOS의 6가지 핫 토픽 ✅

  1. 하드 리얼타임을 구현하는 법
  2. 인터럽트안정적, 효율적으로 운영하는 법
  3. 잦은 상호배제로 인한 시스템 성능 저하를 극복하는 법
  4. 태스크 우선순위 결정을 확실히 하는 법
  5. 내가 만든 태스크가 실시간으로 동작하는지 테스트하기
  6. 포팅 노하우

위의 내용은 모두 이번 강의의 핵심 주제입니다. 자, 세부 내용을 알아볼까요.

첫째, RTOS를 사용하기만 하면 자동으로 실시간 처리가 된다고 오해하고 있지 않나요?

똑같은 재료를 가지고 집을 짓더라도 어떤 목수가 지은 집은 강풍이나 누수에도 흔들림 없이 안전한 반면, 또 다른 목수가 지은 집은 비가 조금만 오더라도 천장에서 물이 떨어지고, 겨울에는 단열도 잘 안 돼 난방비가 많이 나올 수 있죠. 무슨 차이일까요? RTOS를 사용한다고 해서 자동적으로 내가 만든 프로그램이나 제품의 실시간성이 보장되는 것이 아닙니다. 비단 FreeRTOS 뿐만이 아니라 RTOS 모두에 해당되는 말입니다. 하드 리얼타임을 보장하기 위해, 혹은 도달하기 위해서 어떤 노력이 필요한지를 이 강의를 통해 알려드립니다.

둘째, 인터럽트(Interrupt)를 빠르게 처리해야만 하는 작업으로 단정짓고 있지는 않았나요?

우리의 그런 고정관념이 내가 만드는 제품이나 프로그램에 얼마나 악영향을 미치는지에 대해 사례를 통해 알아보고, 그 해결 방안까지 살펴봅니다.

셋째, 작성하고 있는 소스코드 함수 내에 임계 구역이 보이면 바로 뮤텍스를 사용하려 하시지는 않나요?

잠깐만요. 뮤텍스(Mutex)가 시스템 성능 저하를 유발한다는 점을 알고 계시겠죠? 이를 보완할 수 있는 방법 혹은 그 대안을 알아봅니다.

넷째, 중요한 태스크(작업)에 높은 우선순위를 할당하고 계시지 않나요?

태스크들에 우선 순위를 할당해 보신 분들은 잘 아실 겁니다. 참 어렵죠. 중요한 작업에 높은 우선순위를 배정하는 것의 함정에 대해 말씀드리고, 그 대안을 제시합니다.

다섯째, 프로그램의 구현만큼이나 중요한 것이 내가 의도한 대로 태스크가 실시간으로 동작하는지를 검증하는 일입니다.

필요하다면 디버거 외에도 계측기나 이에 상응하는 장비가 필요할 수도 있습니다. 물론 이러한 장비가 없어도 개발하고 테스트할 수는 있지만, 더 손쉽게 문제를 확인하고 대책을 마련할 수 있습니다. 내가 만든 태스크가 하드 리얼타임으로 동작하는지 여부를 확인하는 방법을 알려드립니다.

여섯째, 내가 만든 프로그램이 항상 동일한 하드웨어에서 동작하리라고 기대할 수 없습니다.

내가 만든 제품 하드웨어 성능이 업그레이드가 되면 당연히 포팅(Porting) 작업을 요구하게 됩니다. 다른 사람의 도움 없이 내가 직접 커널 포팅을 할 수 있도록 오랫동안 숙련된 경험과 노하우를 알려드립니다. 

13년 이상 숙련된 RTOS 강의 노하우 💡

여러분의 시간을 내 시간처럼 소중히 생각하며 강의를 만들었습니다.

13년간 RTOS 현장 강의를 해오면서 더 많은 학습자들과 만남을 갖기 위해서 이렇게 온라인에서도 강의를 만들게 되었습니다. 현장 강의 수업일수 기준 4일 분량의 내용을 8시간 내로 최적화한 온라인 강의로 여러분을 찾아갑니다. 


이런 분들께 추천합니다! 🔑

RTOS를 처음
배우는 입문자

FreeRTOS 기반 제품의
최적화를 고민하는 분

경량형 OS를 제품에
적용하고자 하는 분

IoT(사물인터넷)
개발자

이외에, 이런 분들도 배우면 좋습니다!

👉 제품의 하드 리얼 타임과 안정성, 두 마리 토끼를 다 잡고 싶으신 분
👉 리눅스 운영체제와 비교, 검토를 원하시는 분
👉 운영체제에 대한 이해를 높이고자 하는 분
👉 오프라인 수업에 참여할 시간적인 여유가 없으신 분

선수 지식을 확인해주세요!

  • 학습을 위한 선수 지식으로 C언어를 알고 있어야 합니다.

이 강의만의 특별한 점 ✨

  • 특징 1. 영상을 180개 소챕터로 쪼개, 나중에 찾아보기에도 도움이 되게끔 구성했습니다.
  • 특징 2. 2D 애니메이션을 적극 활용해 이해에 도움이 되도록 만들었습니다.
  • 특징 3. 모든 실습 예제는 TO-DO와 함께합니다. 수강생이 직접 실습에 참여하는 강의가 될 수 있도록 했습니다.
  • 특징 4. 불필요한 내용은 과감히 버리고, 더욱 핵심에 집중할 수 있도록 돕습니다.
  • 특징 5. 개발자 매뉴얼을 보지 않고도 영상만으로 학습할 수 있도록 최대한 신경썼습니다.


사용 툴을 확인하세요 🧰

  • 컴파일러: STM32CubeIDE
  • 실습 보드: STmicro 사 공식보드(뉴클레오, 디스커버리)
  • 실습 예제 및 교재파일: freeRTOS_tutorials.zip ( 파일은 섹션 0. FreeRTOS 시작에 있습니다 )
  • 강의에서 사용한 보드는 Nucleo-64 F103RB 입니다. 하지만 실습 예제는 다음과 같은 보드도 지원합니다. DISCO_F429I, DISCO_F469I, NUCLEO_F401RE, NUCLEO_F767ZI, NUCLEO_L010RB ( 이 파일들은 마지막 섹션에 보시면 있습니다 )
  • 여러분이 원하시는 STM32 보드가 위 열거된 목록에 없다면  '(부록)내가 가진 뉴클레오 보드로 강의 따라가기' 영상을 시청하신 후 실습예제파일(freeRTOS_tutorials) 소스를  직접 여러분이 원하시는 보드용으로 수정하시고 본 강의를 이용하시거나, 소스 코드를 여러분이 원하시는 보드용으로 강사에게 수정 요청하시면 됩니다(무료. 통상 작업 1~2일 소요. 질문하기코너에서 신청)

강의를 만든
지식공유자를 소개합니다
✒️

홍영기(가일스쿨)

주요 이력

  • 1995: VRTXsa RTOS(68K MCU기반 셋톱박스)
  • 1999: VXWorks RTOS(MPC860 MCU 기반 VoIP)
  • 2003: NucleusPlus RTOS(ARM MP3)
  • 2004: uC/OS-II RTOS(ARM MP3)
  • 2008~: RTOS 커널 분석 및 활용 실무 현업 강의
  • 2019~: FreeRTOS 프로그래밍 실무 현업 강의

기타

  • uC/OS-II 기반 malloc/free 호환 동적 메모리 관리자 개발
  • uC/OS-II 기반 miniGUI 포팅
  • uC/OS-II 기반 ethernet(DM9000A) TCP/IP 포팅
  • uC/OS-II 기반 FatFs + SD card 포팅
  • uC/OS-II 기반 YAFFS + NANDFLASH 포팅
  • RTOS 커널 포팅 다수
  • 유튜브 채널, 깃허브

예상 질문 Q&A 💬

Q. C언어를 모르는 사람이 수강해도 좋을까요?

이 강의는 엔지니어분들 외에도 비전공자나 RTOS 내장 제품에 관심을 갖고 계신 분들 모두 수강하시면 좋습니다. 다만 C언어를 모르시면 수업 중 실습과 관계된 부분에 대해서는 이해하기 어려우실 수도 있습니다.

Q. 중급자도 이 강의를 수강해도 좋을까요?

RTOS에 입문하시려는 분들은 물론, 이미 RTOS를 사용하고 계시는 중급자 분들까지도 커버할 수 있도록 강의를 기획했습니다. 13년간 삼성전자, LG전자, 현대모비스, LS산전, 국방과학연구소 등에서 RTOS 프로그래밍 강의를 한 경험으로 나름대로 RTOS 프로그래밍에서 까다로운 부분, 중요한 주제들을 심도있게 다루고 있습니다.

Q. 사물인터넷(IoT)에 대해서도 수업의 주제로 다루나요?

FreeRTOS가 다양한 IoT 기기에서 사용됩니다. 하지만 본 수업은 RTOS 커널이라는 하나의 주제에 집중하고 있습니다. 

Q. 실습을 위한 STM32 보드 종류가 다양한데, 아무 거나 상관없나요?

영상에선 현재 STM32 Nucleo64 f103rb 보드 기준으로 수업을 진행합니다.

만약 다른 STM32 보드에서 실습을 하고 싶다면  '(부록)내가 가진 뉴클레오 보드로 강의 따라가기' 영상을 시청하신 후 실습예제파일(freeRTOS_tutorials) 소스를  직접 여러분이 원하시는 보드용으로 수정하시고 본 강의를 이용하시거나 소스 코드를 여러분이 원하시는 보드용으로 강사에게 수정 요청하시면 됩니다(무료. 통상 작업 1~2일 소요. 질문하기코너에서 신청)

Q. FreeRTOS가 좋은가요?

아주 좋은 질문입니다. 그리고 어려운 질문이기도 하네요. 저는 12년간 임베디드 시스템을 개발한 경력을 가지고 있으며 경험은 펌웨어, RTOS, 임베디드 리눅스를 망라하고 있습니다.

어떤 OS가 좋으냐라는 질문에 대해 저는 다음처럼 공식적인 답변을 준비하고 있습니다.
(1)무료/유료 (2)소스코드/바이너리 (3)많은 사용자를 가지고 있는가 (4)개발환경 지원
이상은 RTOS을 고를 때 따져 볼 중요한 항목들입니다. 

FreeRTOS 는 위의 1,2,3 항목에 대해 거의 만점을 줄 수 있습니다. FreeRTOS 가 최고의 OS다라고 말할 수는 없더라도, 적어도 추천할 만하다고는 생각합니다.

Q. 저는 VxWorks 을 사용하고 있는데, 이 강의가 저에게 도움이 될까요?

비록 강의 타이틀은 FreeRTOS 프로그래밍이지만, 이 강의는 RTOS의 정수(핵심)에 집중하는 교육으로 설계되었습니다. 또 제 이력을 보시면 아실 테지만, 이미 다양한 RTOS를 사용해 보았습니다. 

어떤 RTOS를 사용하든 공통적으로 꼭 알고 가야 할 지식, 자주 사용하는 스킬, 사용자들이 하기 쉬운 오해나 편견을 모아서 이 강의에서 다루고 있습니다. 도움이 되실 것으로 믿습니다.

수강 전 확인해주세요! (라이센스)

  • 강의에서 사용된 프리젠테이션 자료는 PDF 문서 형태로 수강생에게 무상 제공됩니다.
  • 함께 제공되는 문서는 인프런 내에서 강의 영상의 보조 자료로써 개인적인 사용 목적으로만 이용되어야 합니다. 책 내용의 일부 또는 전부를 복제(홈페이지나 인쇄 매체에 전재하는 것, 전자 파일로 복사하는 것도 포함함)할 때는 한국 저작권법 제27조에 규정한 사적 사용을 제외하고, 영리목적 여부와 상관없이 한국 저작권법 제42조에 따라 저작권자인 지식공유자 홍영기의 허락을 요구합니다.

다른 강의 함께 보기 🔍

리눅스 쉘 스크립트 마스터
리눅스 쉘(Shell) 코딩의 
막강한 기능을 경험하세요.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • RTOS 입문자

  • 경량형 OS를 제품에 적용하고자 하는 분

  • 운영체제에 대한 학습이 필요한 분

  • FreeRTOS 기반 제품의 최적화를 고민하는 분

  • 제품의 하드 리얼 타임과 안정성, 두 마리 토끼를 다 잡고 싶으신 분

선수 지식,
필요할까요?

  • C 언어

인하대학교 공과대학에서 전자공학 학사 학위를 받았으며 임베디드 시스템용 소프트웨어 개발자로써 수년간의 경력을 쌓았습니다. 임베디드 시스템 및 프로그래밍을 위한 전문 강사로도 활동 중입니다. 아이폰 3GS 등장과 같은 시기에 맥(북)에 입문하였고, 그때부터 맥(북) 자동화에 관심을 갖게 되었습니다. '맥(북)에서 사용할 수 있는 시리 리모트', '키보드마에스트로를 이용한 구글번역기' 같은 오픈 소스를 깃허브(https://github.com/guileschool) 에 두고 개발 및 유지보수하고 있습니다. 오픈 소스 하드웨어 '비글본블랙' 에도 많은 관심을 가지고 있습니다. 맥(북) 자동화를 이용하여 생산성을 높일 수 있는 컴퓨터를 사용하는 모든 분야에 관심을 가지고 있고, 이를 필요로 하는 사람들을 돕고 있습니다.

강의 요청 및 기타 문의사항은 guileschool@gmail.com으로 보내주세요 :)

커리큘럼

전체

203 ∙ 9시간 21분

수업 자료

가 제공되는 강의입니다.

강의 게시일: 2021년 06월 22일
마지막 업데이트일: 2024년 07월 17일

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!