본문 바로가기

SW 개발 공부/STM32

[Stm32 Project]BootLoader 구현

MCU에서 Bootloader를 구현시 고려한 사항들을 기술한다.

 

STM 관점에서 볼때 BootLoader는 FW업데이트를 더욱 용이하게 하기 위하여 구성된다.

STM Debugger가 없더라도, 다른 통신(UART,Ethernet..)등을 통하여 FW를 업데이트 할 수 있다는 장점이 있다.

 

BootLoader는 시작시 설정한 Flash 메모리 영역에 FW 이미지가 정상적으로 저장되었는지 확인 후, 해당 FW 이미지(Application)을 실행한다.

구체적으로는 프로그램의 SP(Stack Pointer)를 Application의 메모리 영역으로 Jump하여 Application Code가 실행되도록 한다.

 

이때, FW를 에러없이 다운로드 하기 위해선 이중 파티션 구조로 메모리를 설정해 놓아야한다.

 

이중 파티션 구조란, Flash 공간을 구분하여 사용하는것인데 FW 다운로드가 실패했을시 기존의 FW 파일로 롤백하여 실행 될 수 있게 하는 역할을 한다.

Flash 공간중 BANK1, BANK2를 설정하고 현재 동작중인 FW가 저장된 BANK가 아닌 다른 BANK에 FW를 저장한다.

BootLoader를 실행할때, 특정 BANK의 유효성검사(CRC등)을 진행후 비정상일시 다른 BANK를 사용하는것으로 MCU의 안정성을 높히며 FW를 다운로드 시킬 수 있다.