목록2025/06/28 (2)
지노랩 /JinoLab
LED 블링킹 예제(003 LED_Block_Tasks)에서 50 mA → ≈ 18 mA로!1. 문제: Block 지연으로 CPU 가 놀고 있다 🤦♂️vTaskDelay()를 써서 LED 를 토글하면, 각 태스크는 Blocked 로 빠지고 스케줄러는 Idle Task 를 실행합니다.Tracealyzer 로 보면 대부분의 시간(흰색)이 Idle Task 구간이죠.“Idle 동안 코어 클럭을 끄면 전력이 확 줄 텐데…?”2. 해결: Idle Hook 에서 Sleep 진입Idle Task 는 매 사이클 아래 과정을 거칩니다.내부 정리/클린업(TCB 반환 등)사용자 Hook 함수 호출 ➜ 여기서 저전력 진입!2-1. FreeRTOS 설정FreeRTOSConfig.h#define configUSE_IDLE_H..
Idle Hook, Tick Hook, Malloc-Failed Hook, Stack-Overflow Hook―언제 호출되고, 왜 필요할까?1. Hook Function이란?FreeRTOS 커널이 특정 이벤트(아이들 상태, RTOS 틱, 메모리 부족 등)를 감지했을 때 사용자가 미리 등록한 함수를 자동 호출해 주는 ‘콜백’ 메커니즘입니다.코어 수정 없이 애플리케이션 레벨에서 커널 동작을 확장별도 태스크를 만들지 않아 RAM·CPU 절약Hook 사용 여부는 FreeRTOSConfig.h 안의 configUSE_… 매크로로 스위치!2. Idle Task Hook항목 내용매크로configUSE_IDLE_HOOK (1 로 설정)함수 시그니처void vApplicationIdleHook(void);호출 시점모든 ..