사용자 정의 Cortex-M3 기반 장치에서 작업 중이며 JTAG없이 장치 펌웨어를 업데이트 할 수 있도록 인앱 프로그래밍 (IAP) 메커니즘을 구현해야합니다 (대신 TFTP 또는 HTTP를 사용합니다).). ST 마이크로 일렉트로닉스에서 제공하는 IAP 관련 코드 예제는 충분히 명확하지만 재 플래시가 어떻게 작동하는지 실제로 이해하지 못합니다.ARM (Cortex M3)의 인앱 (in-application) 프로그래밍은 어떻게 작동합니까?
내가 이해하는 한, 지침은 ICode 버스 (물론 프리 페치 블록)를 통해 플래시에서 CPU로 가져온다. 그래서, 여기 내 바보 같은 질문 : 실행중인 프로그램이 다시 깜박일 때 (즉, 실행중인 플래시 메모리를 변경하는) 실행중인 프로그램이 손상되지 않는 이유는 무엇입니까?
아 - 하 ... 맞아, 나는 코드를 공부하는 동안 그 부분을 놓쳤다! –
예. 그러나 많은 장치에서 플래시를 프로그래밍하는 동안 RAM에서 실제로 실행해야하므로 프로그래밍 프로세스의 짧은 블록을 RAM으로 복사하고 실제 프로그래밍을 수행해야합니다. 플래시의 예약 된 부분에 코드. –
고려해야 할 많은 실패 시나리오가 있습니다. 그렇지 않으면 시스템이 브릭 업 될 수 있습니다.IAP는 f/w 개발의 모퉁이 돌이며 특히 손실이 많은 네트워크를 통해 올바르게 수행하는 것은 까다로운 작업 일 수 있습니다. – Amit