arm-none-eabi-gcc 5.3을 사용하여 STM32L4 용 바이너리를 생성했습니다. 부트 로더를 사용하여 프로그램을 플래시하고 있습니다. 문제는 내가 전체 파일을 깜빡 일지 모르겠다. 나는 유효한 CRC가 없다. 플래시는 0x80000000
과 0x80040000
(부트 로더와 메인 프로그램은 2 뱅크)에서 시작됩니다. 현재 0x80040004가 0x80040000
과 0x80080000
사이에 있으면 프로그램이 플래시됩니다. 하지만 프로그램이 유효한지 어떻게 확인할 수 있습니까? 플래시에 기록해야하는 바이너리의 크기가 어디인지 알 수 없으므로 마지막 정수를 확인할 수 있습니다. BIN에서ARM에서 전체 프로그램이 플래시되었는지 확인하는 방법은 무엇입니까?
다음은 처음 몇 바이트 (죄송합니다, 전체 파일을 게시 할 수 없습니다) : 마지막 바이트 프로그램되지 않은 (프로그램이 72704 바이트가) 0x80051C00
입니다.
나는 확실하지 않다 파일 내용이 모두 유용하지만 질문 내용에 대한 오프 사이트 링크를 게시하지 마십시오. – Clifford
마지막 몇 개를 확인하면 중간에있는 내용이 올바른지 확인할 수 있습니다. 당신은 바이너리에 무언가를 추가하고, 끝을 채우기/채우기로 채우고, 그 다음에 체크섬/crc를 추가하여 검증 또는 런타임으로 로더 끝에서이 작업을 수행해야합니다. 런타임 시작 코드는 전체 공간을 검사합니다. 또는 이전 옵션은 호스트에서 mcu를 프로그래밍 할 때 읽은 다음 다시 확인합니다. –
이 애플리케이션 노트 [AN277] (http://www.keil.com/appnotes/files/an277.pdf)는 바이너리 이미지에 CRC를 추가하는 방법에 대한 아이디어를 제공 할 수 있습니다. 이 예제는 Keil 도구를 사용하지만 다른 도구 체인에 적용 할 수 있습니다. – kkrambo