개발 중에는 참고 사항 :이 펌웨어는 현재 개발 단계에 있습니다. 기능이 변경 될 수 있으며 코드에는 버그가 포함될 수 있습니다. 주의해서 사용하고 발생하는 모든 문제를보고하십시오.
STM32 마이크로 컨트롤러 의이 부트 로더는 펌웨어 업데이트를위한 강력하고 기능이 풍부한 솔루션을 제공합니다. 부트 로더는 내부 USB 또는 UART 인터페이스를 통한 펌웨어 업데이트를 용이하게하도록 설계되었으며 외부 SPI 플래시를 사용하여 펌웨어를 일시적으로 저장합니다.

듀얼 슬롯 펌웨어 스토리지 : 부트 로더는 외부 SPI 플래시에서 두 개의 별도 슬롯을 관리하여 다양한 버전의 펌웨어를 저장합니다. 이를 통해 롤백 기능을 갖춘 안전한 펌웨어 업데이트가 가능합니다.
펌웨어 롤백 : 업데이트 고장의 경우 부트 로더가 이전 작업 펌웨어로 되돌아 가서 장치가 작동 상태를 유지할 수 있습니다.
CRC32 유효성 검사 : SPI 플래시에 저장된 각 펌웨어는 데이터 무결성을 보장하고 손상된 펌웨어가 실행되는 것을 방지하기 위해 CRC32 점검을 사용하여 검증됩니다.
암호화 된 스토리지 : 부트 로더는 모든 펌웨어 데이터를 SPI 플래시에 저장하여 암호화 된 양식으로 유지하여 무단 액세스에 대한 보안을 향상시킵니다.
버전 관리 : 부트 로더는 현재 펌웨어 버전을보고하여 장치에 배포 된 펌웨어 버전을 유지 관리하고 추적하는 데 도움이됩니다.
외부 Python 스크립트 : 새 펌웨어를 장치에로드하는 데 도움이되는 Python 스크립트가 제공됩니다. 이 스크립트는 버전보고 및 기타 부트 로더 관련 작업을 용이하게합니다.
FW FILE )를 암호화하고 펌웨어 버전, 펌웨어 이름, 펌웨어 ID, 빌드 시간 및 출력 파일 ( BIN FILE )과 같은 중요한 메타 데이터를 첨부합니다.Lock Bin 도구는 이러한 입력을 펌웨어 파일과 결합하고 패키지를 암호화하여 전송 중 보안을 보장합니다.BIN FILE )입니다..fw 파일.Host App 은 암호화 된 펌웨어 파일을 마이크로 컨트롤러로 전송합니다..fw 파일을 읽고 로깅 또는 검증 목적으로 필요한 메타 데이터를 추출하며 COM 포트 (예 : USB/UART)를 통해 마이크로 컨트롤러와 연결됩니다.Host App 에서 암호화 된 펌웨어 및 메타 데이터를 수신합니다. 이 파이프 라인은 펌웨어 업데이트를 안전하게 처리하여 암호화에서 설치에 이르기까지 프로세스의 무결성을 보장합니다. .fw 파일에 빌드 시간과 날짜를 추가하면 각 펌웨어 버전에 대한 추적 성이 있습니다.
이 저장소를 복제하십시오.
git clone https://github.com/mayankpatel97/STM32-SPIFLASH-UART-BOOTLOADER.git
cd STM32-SPIFLASH-UART-BOOTLOADER선호하는 IDE (예 : STM32Cubeide) 또는 명령 줄을 사용하여 부트 로더를 구성하십시오.
부트 로더 프로젝트를 구축하고 STM32 마이크로 컨트롤러로 플래시하십시오.
USB 또는 UART를 통해 STM32 장치를 컴퓨터에 연결하십시오.
제공된 Python 스크립트를 실행하여 새 펌웨어를로드하십시오.
python firmware_loader.py --port /dev/ttyUSB0 --file firmware.bin스크립트는 전송, 검증 및 버전 관리를 자동으로 처리합니다.
펌웨어가 성공적으로로드되면 부트 로더는 CRC16 확인을 수행하고 새 펌웨어로 부팅하거나 오류가 감지되면 이전 버전으로 되돌아갑니다.
새로로드 된 펌웨어에 문제가 발생하면 부트 로더가 자동으로 다른 슬롯에 저장된 이전 펌웨어로 되돌아 장치가 작동 상태로 유지됩니다.
현재 실행중인 펌웨어 버전을 확인하려면 다음 명령을 사용하십시오.
python firmware_loader.py --port /dev/ttyUSB0 --version이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.
버그 또는 기능 요청에 대한 풀 요청 또는 개방 문제를 제출 하여이 프로젝트에 자유롭게 기여하십시오.
이 부트 로더 개발에 도움이되는 도구 및 라이브러리를 제공 한 오픈 소스 커뮤니티에 특별한 감사를드립니다.