NVIC 인터럽트 설정 오류 경험 + 전력 모드·HAL 추상화 레이어 이해 순으로 설명
졸업 논문에서 ARM Cortex-M 기반 마이크로컨트롤러로 간단한 펌웨어를 처음 작성했습니다. ARM 아키텍처를 이해하면 레지스터 맵과 메모리 영역 배치를 직접 제어할 수 있어서 펌웨어 최적화에 도움이 됐습니다. 인터럽트 처리에서는 NVIC 우선순위 설정을 잘못해서 센서 읽기 루틴이 중단되는 문제가 생겼고, 우선순위 레지스터 구조를 공부한 뒤에야 해결됐습니다. 전력 절감 모드에서는 Sleep과 Stop 모드의 차이를 ARM 문서와 데이터시트를 교차 확인하며 이해했습니다. 아키텍처를 모르면 HAL 라이브러리가 왜 그렇게 동작하는지 이해하기 어려워서, 추상화 레이어 아래를 한 번은 직접 읽어봐야 한다는 걸 배웠습니다. 디버거로 레지스터 값을 직접 확인하는 방법을 익히면서 하드웨어와 소프트웨어가 만나는 지점을 눈으로 볼 수 있게 됐습니다.
ARM 아키텍처 이해는 펌웨어 버그를 하드웨어 계층에서 직접 추적할 수 있는 힘을 준다고 생각합니다.