MCU를 공부 하다보면 ISP와 IAP라는 용어가 보이는데, ARM에서 다음과 같이 정의 한다.
- ISP(In-System Programming) : In-System Programming means that the device can be programmed in the circuit by using an utility such as the ULINK USB-JTAG Adapter.
; 특정 Utility(JTAG)를 이용하여 프로그램 하는 방식
- IAP(In-Application Programming) : In-Application Programming means that the application itself can re-program the on-chip Flash ROM.
; Flash에 저장된 binary가 실행되고 나서(부팅), application 자신이 Flash ROM에 Re-programming 하는 방식
ISP(In-System Programming)
1. ST-LINK를 사용하여 펌웨어 다운로드(ST-LINK Utility)
IAP(In-Application Programming)
2. USB 포트를 연결하여 펌웨어 다운로드(DFU)
3. 시리얼 포트를 사용하여 펌웨어 다운로드(Flash Loader Demonstrator)
이렇게 나뉠 수 있으며 각 방법으로 Firmware를 다운로드 하는 방법을 알아 본다.
1. ST-LINK를 사용하여 펌웨어 다운로드(ST-LINK Utility)
2. USB 포트를 연결하여 펌웨어 다운로드(DFU)
- 일부 MCU의 경우 DFU F/W가 있어서 BOOT0 = 1이면 System momory mode로 부팅하여 DFU가 가능한 USB 장치로 인식 된다.
3. 시리얼 포트를 사용하여 펌웨어 다운로드(Flash Loader Demonstrator)
- JTAG는 가격이 비싸고 추가 하드웨어 연결이 필요하다. 개발 중에는 모니터링 및 디버그가 필요 하지만 양산 또는 현장에서 Firmware 업데이트가 필요할때 추가 장치가 필요하지 않은 이 방법이 좋다.
- MCU가 부팅 될때 BOOT1, BOOT0 핀을 설정하여 Boot mode로 진입
- BOOT1 = 0, BOOT0 = 1 : System memory Boot mode로 진입되는데, 출하 부터 system boot loader가 들어있다. 필요에 따라 boot loader를 수정하여 쓰는 경우도 있다.
- 보통 BOOT1 = 0으로 고정해 놓고 BOOT0만 제어
- BOOT1 = 1 은 잘 사용하지 않음