使用zig编写的,一个bin文件适配STM32全系列的通用BootLoader!
代码仓库:
github//github.com/puppy-rtos/stm32-zboot
gitee//gitee.com/puppy-rtos/stm32-zboot
功能特性
自动探测芯片架构、片上flash容量
支持配置uart、spi管脚信息
支持crc、hash校验固件
默认使用FastLZ压缩固件
支持SPI Flash,自动探测型号、容量
自带配置工具:支持生成boot,打包更新包,生成测试app
固件体积极小,仅14.6KB
依托于zig强大的性能和跨平台构建能力,zboot在功能性和固件体积之间取得了良好的平衡!
使用方式
下面以星火1号开发板(主控:stm32f407)为例,展示zboot的使用方法。
1. 下载zboot工具
https://gitee.com/puppy-rtos/stm32-zboot/releases/tag/v0.0.6
目前默认提供了Linux和Windows上的二进制包,MAC的可通过源码编译获取。
2. 生成stm32-zboot.bin
使用zboot工具生成对应的stm32-zboot.bin和config.json配置文件,运行zboot boot 命令,即可生成这两份文件,如下所示:
stm32-zboot.bin:stm32全系列通用的boot镜像,需要下载到芯片的起始地址。
config.json:stm32 boot配置文件,用来配置boot文件的参数,具体参数的意义看下面的图片。可以按照自己硬件的参数,修改配置文件。修改完之后,再次运行 zboot boot 命令即可更新stm32-zboot.bin的参数配置。
下面是我修改过的配置文件。
烧录配置好的stm32-zboot.bin到开发板,即可通过配置的uart引脚,查看到启动信息。
3. 测试引导功能
使用命令 zboot app可以生成测试应用固件。
(默认生成的app.bin加载地址是0x08008000,如果要生成其他地址的测试应用,需要修改项目源码,重新编译。)
烧录测试固件到0x08008000地址处,然后重启硬件,测试跳转正常。
4. 测试OTA功能
使用命令 zboot rbl 可以打包app固件。默认使用fastlz算法压缩固件体积。
然后将stm32-app.bin.rbl烧录到swap分区对应的位置0x08040000。重启硬件,zboot会自动完成应用固件的更新。
zboot默认集成了SFUD功能,会自动探测外部flash,如果硬件有外部SPI Flash的话,也可以修改配置文件中的引脚信息,并使能外部Flash。
期待您的测试反馈!!!