STM32 내장부트로더 개발계획

김상훈·2022년 9월 29일
0

<'땜스 전자연구소' 블로그를 참고하여 내장부트로더 공부를 하였다.>

나는 STM32F429I-DISC1 보드를 통해 내장부트로더를 이용하여 펌웨어를 다운해 보려고 한다.

내장부트로더를 사용하는 목적은 외부 시리얼 통신으로 디버거 없이 펌웨어를 다운로드 하기 위해서이다.

개발하기 위해서 첫째로 부트로더를 활성화 시킬 경우 부트로더 관련 데이터가 있는 메모리를 분석 -> Reference manual을 통해 BOOT MODE 분석 -> STM32 보드를 수정 (하드웨어) -> UART 통신 기반 부트로더 진입 -> visual basic을 이용한 GUI 설계 -> 설계한 GUI를 기반으로 펌웨어 다운로드 순서로 개발할 계획이다.

STM32의 메모리중 HEX파일(펌웨어 데이터가 들어있는 파일)이 쓰이는 곳은 FLASH MEMORY이다.

그 FLASH MEMORY 중에서 HEX 파일이 기록되는 곳은 Bank1이다.
그리고 STM32 내장부트로더 관련 데이터가 들어있는 곳은 system memory다.

메모리에 관한 분석은 했고 BOOD MODE를 분석해보겠다.

내장부트로더에 관한 데이터가 있는 곳은 system memory이므로

그림을 참조하여 BOOT1은 GND에 BOOT0는 VCC에 연결하면 된다.

그 다음으론 회로도를 보고 하드웨어적 수정이 필요할 수도 있는데

회로도를 보면 SB15, 111에는 아무것도 실장되어 있지 않아야 한다고 되어있는데
STM32F429I-DISC1 보드는 0옴 저항이 실장되어 있으므로 저항을 제거해준다.

후에 보드를 USART 통신 기반의 부트로더 진입시킨다.
그것은 USART protocol used in the STM32 bootloader문서를 보면 진입 방법을 알 수 있다.

후에 땜스에서 올려준 HEX파일을 Flash Loader Demonstrator 통해 다운로드 하고 ST-LINK를 통해 내부 FLASH MEMORY를 확인하여 기존 HEX파일이 FLASH MEMORY 데이터와 일치하는지 비교한다.

하지만 Flash Loader Demonstrator는 ST사에서 제공하는 프로그램이고 이 프로그램을 이용하여 펌웨어를 다운로드하면 명령어별 동작처리의 반복이므로 펌웨어 다운로드에 어려움이 있으므로 직접 GUI를 설계하여 펌웨어 다운로드를 할 수 있는 프로그램을 설계하겠다.

다음에는 땜스 전자연구소에서 올려준 visual basic GUI 설계시 필요한 소스코드를 분석해보겠다.

profile
처음 접하는 소프트웨어

0개의 댓글