이 책이 다루고 있는 내용은 무엇입니까?

이 책은 총 17장으로 구성되어 있으며, 4개의 섹션으로 나뉩니다. 이미 익숙한 내용이 있다면 이 책을 처음부터 읽을 필요는 없습니다. 예를 들어, RTOS 기본 개념과 실시간 시스템에 이미 익숙하다면, 4장 "적절한 MCU 선택"으로 바로 가셔도 좋습니다. 다음은 각 장에 대한 간략한 설명입니다.

 

1장 “실시간 시스템 소개”에서는 RTOS가 무엇이며, 언제 그리고 왜 RTOS를 사용해야 하는지에 대한 간단한 소개입니다. MCU 기반 RTOS를 대체할 수 있는 하드웨어 및 소프트웨에 대해서도 논의합니다.

 

2장 “RTOS의 Task 이해”에서는 RTOS Task와 슈퍼 루프를 비교하고, 두 가지를 모두 사용하여 병렬 작업을 수행할 수 있는 다양한 방법을 제공합니다.

 

3장 “Task 신호 및 통신 메커니즘”은 많은 다이어그램과 함께 RTOS 개념을 간략하게 소개합니다. 이 장에서는 2장에 이어 RTOS Task 관련 개념 및 용어에 대한 레퍼런스 및 재교육으로 유용하게 활용할 수 있습니다.

 

4장 “적절한 MCU 선택”은 MCU를 선택할 때 고려해야 할 사항을 이해하는 데 도움이 됩니다. 하드웨어와 펌웨어의 상호 의존성을 평가한 후 하드웨어와 펌웨어 엔지니어가 모두 시스템 설계에 관여하는 것이 왜 중요한지 살펴봅니다.

 

5장 “IDE(통합개발환경) 선택”에서는 특정 IDE(Integrated Development Environment)를 선택해야 하는 이유를 포함하여 다양한 유형의 IDE를 소개하고 논의합니다. STM32CubeIDE를 설정하고 예제 코드를 불러들이는 방법을 설명합니다.

 

6장 “실시간 시스템을 위한 디버깅 도구”에서는 책 전체에서 사용할 SEGGER Ozone 및 SEGGER SystemView 시각화 디버깅 소프트웨어 도구를 포함하여 임베디드 시스템을 디버깅하는 도구에 대해 다룹니다. 하드웨어 기반 테스트 장비와 임베디드 시스템 개발 워크플로우를 위한 기타 유용한 도구도 포함되어 있습니다.

 

7장 “FreeRTOS 스케쥴러”에서는 FreeRTOS를 사용하여 작업을 생성하는 다양한 방법과 시작 오류를 해결하는 방법을 설명합니다. Task 상태와 성능을 최적화할 수 있는 다양한 방법을 이해할 수 있습니다.

 

8장 “데이터 보호 및 태스크 동기화”에서는 세마포어를 사용한 작업 동기화 및 뮤텍스를 사용한 데이터 보호, 레이스 조건 및 우선 순위 역전을 방지하는 방법에 대해 다룹니다. 소프트웨어 타이머에 대한 내용도 포함됩니다.

 

제9장 “태스크간 통신"에서는 값이나 참조의 방법으로 큐를 사용한 서로 다른 예제를 이용하여 태스크간 정보를 전달하는 방법을 살펴보고, 두 방법의 장점과 고려사항에 대해 논의합니다. 또한 태스크 알림 및 큐의 비교를 포함한 직접 작업 알림인 경량 태스크간 통신 메커니즘에 대해서도 알아봅니다.

 

10장 “드라이버 및 ISR”에서는 세마포어, 큐 및 스트림 버퍼를 포함한 다양한 FreeRTOS 기본 기능으로 효율적인 드라이버를 구현하는 방법에 대한 몇 가지 자세한 예를 살펴보겠습니다. 또한 DMA와 같은 MCU 하드웨어와 함께 FreeRTOS를 사용하여 CPU 효율성이 매우 높은 드라이버 구현을 제공하는 방법도 알아보겠습니다. 이 장에서는 MCU 주변장치 레지스터와 함께 STM32 HAL 코드와 작업합니다.

 

11장 “작업 간에 하드웨어 주변기기 공유”에서는 하드웨어 자원을 공유하면서 여러 작업에서 안전하게 사용할 수 있는 드라이버를 만드는 방법을 설명합니다. 우리는 여러 태스크에 걸쳐서 안전하게 사용할 수 있도록 뮤텍스와 큐에 집중하면서 사용자 친화적이고 효율적이기 위해 STM이 제공하는 USB CDC를 채택할 것입니다.

 

제12장 “잘 추상화된 아키텍처 생성에 대한 조언”에서는 코드 재사용성, 유연성 및 하드웨어 이식성을 다루며, 작업을 보다 쉽게 해주는 추상화를 생성하는 방법에 대해 설명합니다. 재사용을 촉진하는 소스 코드 조직화에 대한 몇 가지 제안 사항도 다룹니다.

 

13장 “큐를 이용한 느슨한 커플링 생성”은 이 책에서 다룬 모든 개념중 정점에 해당합니다. 여기에는 적절하게 추상화되고 엔드-투-엔드 애플리케이션을 만드는 데 사용되는 느슨하게 결합된 아키텍처의 완전히 다듬어진 예가 포함되어 있습니다. 앞에서 개발한 USB CDC 가상 통신 포트와 LED 추상화를 이용하여, 명령큐를 사용한 느슨하게 결합되고 완전히 재사용 가능한 LED 시퀀서를 만들 것입니다. 이 임베디드 프로그램은 Python으로 작성된 크로스 플랫폼 UI를 프로그램이 실행되는 PC에서 제어할 수 있습니다.

 

14장 “RTOS API 선택"에서는 FreeRTOS 기능에 액세스하는 데 사용할 수 있는 3가지 API, 즉 기본 FreeRTOS API, ARM의 CMSIS-RTOS 및 POSIX에 대한 개요와 함께 고급 아키텍처에 관한 논의를 계속합니다. 논의 항목에는 각 기능들의 비교와 각기 다른 프로젝트에 대해 하나의 API를 선택해야하는 이유가 포함됩니다.

 

15장 “FreeRTOS 메모리 관리”에서는 FreeRTOS에서 메모리 관리를 위한 몇 가지 다른 옵션을 자세히 살펴봅니다. 정적 할당과 동적 할당을 비롯하여 MPU(Memory Management Unit) 또한 알아봅시다.

 

16장 “멀티프로세서 및 멀티코어 시스템”에서는 멀티프로세서 및 멀티코어 시스템을 다양한 이유로 어떻게 사용하는지, 즉 멀티프로세서 및 멀티코어 시스템이 무엇인지, 시스템의 다양한 부분이 어떻게 통신하는지 설명합니다.

 

17장 “문제 해결 팁 및 다음 단계”에서는 스택오버플로를 방지하는 방법과 중단된 시스템(hung system)의 문제를 해결하는 방법을 포함한 시스템 문제 해결을 위한 팁을 다룹니다. 다음 단계를 위한 몇 가지 권장 사항도 다룹니다.

+ Recent posts