기존에 제작했던 정상적으로 Flash가 다운로드 되었던 보드에 신규로 FW를 다운로드 했더니 정상적으로 다운로드 되지 않는 현상이 발생하였다.
원인1) Keil의 Flash Download 설정 오류
Keil의 Flash Configuration Setting에 오류가 존재했다.
FW의 file size는 18KB였는데, Flash Download Setting에 Description에서 Device Size가 16KB로 설정되어있었다.
따라서 위와 같이 Description을 Device Size가 128kB인 STM32F10x Med_density로 변경해주었다.
해당 설정에서 다운로드 할 Flash의 시작 address와 Size를 설정 가능하다.
이후에 BootLoader와 Application을 구분하여 다운로드 진행시 해당 설정창에서 Start Address를 변경해 주면 된다.
원인2) SWD 다운로드시 Reset 핀불안정
우선 MCU에 Flash를 다운로드할 때 동작 Sequance를 이해할 필요가 있다.
동작 sequance는 다음과 같다.
1) 저장할 Flash 공간을 Erase 한다.
2) Flash 공간에 신규 FW를 Write 한다.
3) Write된 내용과 Write할 FW 파일간 비교를 통해 Verify한다. 두 내용이 동일할시 Verify 한다.
- 해당 기능은 Flash Download시 선택 가능하다.
에러가 발생하는 경우는 다음과 같았다.
1) Erase Fail
2) Flash Download Fail
3) Verify Fail
아래는 에러들에 대한 Log들이다.
* 결론
- SWD 핀에 존재하는 Reset 핀이 회로상의 다른 소자에 의해 간헐적으로 Low로 변경되었다.
- 따라서 다운로드 진행시 Reset 핀이 Low로 떨어져 정상적으로 다운&erase가 되지 않았던 것이다.