인터럽트 처리·주변장치 드라이버 구현으로 ARM MCU 펌웨어 개발 경험결
ARM MCU 기반 펌웨어 개발 경험은 학부 임베디드 수업과 개인 프로젝트에서 쌓았습니다. 사용한 MCU는 STM32 시리즈로, HAL 라이브러리를 활용해서 UART, SPI, I2C 통신과 GPIO 제어를 구현했습니다.
가장 많은 시간이 걸렸던 부분은 인터럽트 기반 통신 처리입니다. 폴링 방식으로 먼저 구현했다가, CPU가 계속 대기 상태에 머물러 다른 작업을 못 하는 문제가 생겼습니다. 인터럽트 핸들러를 작성해서 데이터가 들어올 때만 처리하는 방식으로 바꿨더니 CPU 사용률이 줄었습니다.
타이밍 민감한 처리에서는 인터럽트 우선순위 설정이 잘못되면 예상치 못한 동작이 생기는 것을 경험했습니다. NVIC 설정에서 우선순위 그룹과 선점 우선순위를 맞추는 작업이 필요했습니다. 펌웨어 개발은 하드웨어와 소프트웨어의 경계를 이해하는 것이 디버깅의 출발점이라는 것을 이 경험에서 배웠습니다.