먼저, STM32 CubeProgrammer를 실행한 후, boot_loader.hex 파일을 불러들인다.

“Download” 버튼을 눌러서 파일내용과 같이 시작번지 0x8 000 000부터 Size 만큼 원칩에 저장한다. 이 boot_loader.hex 파일은 보드의 딥스위치가 “1111”이면 시리얼포트를 감시, 시작신호가 들어오면 data를 전송받아 플래시메모리의 특정 번지(0x8 010 000)에 data를 기록하는 프로그램이다.
이후, 다른 hex 파일을 가지고 왔다.

이 파일은 메인 제어프로그램이다. 이 메인제어 프로그램은 보드의 딥스위치 설정값에 따라서 활성 또는 비활성화 된다. 활성화시에는 당연히 보드의 목적에 맞는 제어명령어가 수행된다.
그런데 위와 같이 열려진 상태에서 “Download” 버튼을 누르면 어떻케 될까?
결론은 망한다!
Log창을 보면 아래와 같다.
15:29:53 : Memory Programming …
15:29:53 : Opening and parsing file: xxx.hex
15:29:53 : File : xxx.hex
15:29:53 : Size : 89.95 KB
15:29:53 : Address : 0x08010000
15:29:53 : Erasing memory corresponding to segment 0:
15:29:53 : Erasing internal memory sectors [4 5]
15:29:54 : Download in Progress:
15:29:55 : File download complete
15:29:55 : Time elapsed during download operation: 00:00:02.324
왜 잘 되었는데?
한 번, 플래시메모리를 읽어보겠다.

흠… 앞에 쓴 내용이 지워졌다.
왜냐하면, 데이타가 없는 영역을 지운 후 0x8 010 000번지부터 데이타를 기록하기 때문이다.
그럼 어떻케 해야 할까? 아래로 들어가서 처리해 주어야 한다.

파일을 불러들인 후, “Start Programming” 버튼을 누르면 된다.