
본 포스팅은 취준 목적으로 RTOS를 공부하는 과정에서 작성된 내용입니다. 부족한 내용에 대해선 clauude 및 구글링, 서적 레퍼런싱을 통해 추후 업데이트 할 예정입니다Bare-metal과 RTOS의 차이점 이해RTOS가 필요한 이유 파악실시간 시스템의 특징 학습F

FreeRTOS의 내부 구조 이해커널의 핵심 구성 요소 파악스케줄러 동작 원리 학습FreeRTOSConfig.h 설정 파일 분석1\. Kernel (커널)시스템의 핵심, Task 스케줄링과 관리 담당Task 상태 전이 처리시스템 시간 관리 (Tick)2\. Schedu

VSCode 개발 환경 설정STM32 프로젝트 구조 이해Wokwi 시뮬레이터 설정 및 사용법첫 번째 FreeRTOS 프로젝트 빌드 및 실행https://code.visualstudio.com/ 접속운영체제에 맞는 버전 다운로드설치 진행C/C++ 관련:기타 유용

Task 함수의 구조와 특징 이해Task 파라미터 전달 방법 학습Task와 일반 함수의 차이점 파악Multi-task 프로그램 작성 및 실행Task는 무한 루프를 포함하는 특별한 함수입니다, 기본 구조는 다음과 같습니다.C 버전:C++ 버전:xTaskCreate()는

FreeRTOS 스케줄링 알고리즘 상세 분석Priority-based Preemptive 스케줄링 동작 원리Round-robin 스케줄링 이해Context Switch 타이밍 분석Tick Interrupt와 스케줄링의 관계스케줄링은 어느 Task를 언제 실행할지 결정하

xTaskCreate()와 xTaskCreateStatic()의 차이를 이해한다Task 삭제 방법과 주의사항을 파악한다Task 일시정지/재개 기능을 활용할 수 있다Task 우선순위를 동적으로 변경할 수 있다Task Stack 사용량을 모니터링하고 최적화할 수 있다동적

Week 2 Day 2: Task 우선순위 학습 목표 Task 우선순위의 개념과 범위를 이해한다 우선순위에 따른 Task 실행 순서를 파악한다 vTaskPrioritySet()을 사용하여 동적으로 우선순위를 변경할 수 있다 우선순위 역전 문제를 인식하고 해결 방법을

FreeRTOS의 4가지 Task 상태를 이해한다Task 상태 간 전이 조건과 흐름을 파악한다vTaskDelay()와 vTaskDelayUntil()의 차이를 이해하고 적절히 사용할 수 있다주기적 Task를 정확하게 구현할 수 있다상태 전이 다이어그램을 읽고 분석할 수

Week 2 Day 4: Task 삭제와 리소스 관리 학습 목표 vTaskDelete()의 동작 원리와 안전한 사용법을 이해한다 Task 자기 자신을 삭제하는 방법과 주의사항을 파악한다 Task 삭제 시 발생할 수 있는 메모리 누수를 방지하는 방법을 학습한다 동적으로

Week 2 Day 5: Idle Task와 시스템 모니터링 학습 목표 Idle Task의 역할과 동작 원리를 이해한다 vApplicationIdleHook()을 활용하여 시스템 유휴 시간에 작업을 수행한다 CPU 사용률 측정 방법을 학습한다 시스템 상태 모니터링 기

Week 3 Day 1: 동기화가 필요한 이유 학습 목표 Race Condition의 개념과 발생 원인을 이해한다 Critical Section의 필요성과 특징을 학습한다 공유 자원 접근 시 발생할 수 있는 문제를 파악한다 동기화 문제를 실습을 통해 재현하고 분석한다

taskENTER_CRITICAL() / taskEXIT_CRITICAL()의 동작 원리를 이해한다ISR 환경에서의 Critical Section 처리 방법을 학습한다Critical Section 사용 시 주의사항을 파악한다공유 변수 보호를 실습을 통해 구현하고 검증한

Mutex의 개념과 Binary Semaphore와의 차이를 이해한다xSemaphoreCreateMutex()를 통한 Mutex 생성 방법을 학습한다xSemaphoreTake() / xSemaphoreGive()의 동작 원리를 파악한다Mutex를 활용하여 UART 공유

Mutex와 Binary Semaphore의 구조적 차이와 올바른 사용 기준을 이해한다Priority Inheritance의 동작 원리와 한계를 파악한다Recursive Mutex의 필요성과 xSemaphoreCreateRecursiveMutex() 사용법을 학습한다복

Week 3 Day 5: Semaphore 실습 학습 목표 Binary Semaphore의 구조와 ISR-Task 동기화 패턴을 이해한다 Counting Semaphore의 동작 원리와 자원 풀 관리 방법을 학습한다 두 세마포어의 사용 시나리오를 구분하고 적절히 선택

Queue가 Semaphore와 달리 데이터 자체를 전달할 수 있는 이유를 이해한다FreeRTOS Queue의 FIFO 구조와 내부 복사(by value) 동작 원리를 파악한다xQueueCreate(), xQueueSend(), xQueueReceive()의 기본 사용

xQueueSend()와 xQueueReceive()의 Blocking과 Timeout 동작 원리를 정확히 이해한다Queue가 가득 찼거나 비어있을 때 각 API가 어떻게 반응하는지 시나리오별로 파악한다pdMS_TO_TICKS() 변환과 portMAX_DELAY의 차이

xQueueSendFromISR()과 portYIELD_FROM_ISR()을 정확히 이해하고 ISR-Task 파이프라인을 구현한다xQueuePeek()과 xQueueReset()의 용도를 파악하고 시스템 복구 시나리오에 적용한다여러 Task가 하나의 Queue를 공유할

FreeRTOS Queue가 구조체를 전송할 때 내부적으로 데이터를 어떻게 복사하는지 이해한다포인터 전송 방식과 데이터 복사 방식의 장단점과 위험성을 비교하여 올바른 선택 기준을 파악한다구조체 크기가 Queue 메모리 사용량에 미치는 영향을 이해하고 최적화 방법을 적용

FreeRTOS Event Groups가 Queue와 Semaphore와 다른 점을 이해하고 적합한 사용 시나리오를 파악한다xEventGroupSetBits()와 xEventGroupWaitBits()의 매개변수 의미와 동작 방식을 정확히 파악한다여러 이벤트를 AND/