技术笔记20230720 rBoot学习5
继续昨天的学习。
rBoot临时启动选项与APP的通信
要启用rBoot与应用程序之间的通信,我们应该在rBoot.h
中启用BOOT_RTC_ENABLED
。然后,rBoot将使用RTC数据区传递一个包含引导信息的结构体,该结构体可以被应用程序读取。这将允许应用程序确定启动模式(正常、临时或GPIO)和启动rom(即使此应用程序只是临时启动)。我们的应用程序也可以更新这个结构体,以便在设备下一次重启时与rBoot通信,例如,指示它暂时启动一个不同于配置中保存的rom。有关更多细节,请参阅API文档和rBoot项目示例。注意:通常在启动时看到的"don‘t use rtc mem data"消息来自SDK,这与rBoot的功能无关。
与其他框架的集成
如果我们希望将rBoot集成到一个开发框架中(例如Sming),我们可以定义宏RBOOT_INTEGRATION
。这样做可以在编译时将文件rBoot-integration.h
包含到源代码中。本项目应该允许我们设置一些特定于平台的选项,而不必修改rBoot的源代码,从而使项目更容易集成与维护。
至此,rBoot的readme我们就看完了。前面有提到rBoot项目示例。于是,我在其作者raburton的仓库中找到了这个示例:raburton/rboot-sample-bigflash。下面就开始对这个项目的学习。老样子,从readme看起。
rboot-sample-bigflash
介绍
这是一个示例项目,展示了如何构建用于rBoot的rom以及如何执行OTA升级。我们可以使用rboot-ota.c和rboot-ota.h来添加我们项目对OTA的支持。在rboot_ota_start中也有一些注释掉的代码,展示了如何将非rom文件写入到Flash上的任意位置(例如,数据或嵌入式文件系统)。
此版本的示例使用rBoot大闪存模式,该模式适用于具有较大闪存芯片的设备,例如ESP-12F。
编译
- 如果我们还没有编译rBoot,需要先编译,并启用大闪存支持。
- 我们还需要一个esptools的编译副本。
- 符号链接或复制rboot.h、rboot-api.h、rboot-api.c和rboot-bigflash.c到该目录下。
- 编辑Makefile,设置SDK和esptool2的路径。
- 将WIFI_SSID和WIFI_PWD设置为环境变量或写在Makefile中。
- 在boot-ota.h中设置OTA服务器的详细信息。
- 闪存,如下。
- 连接终端并输入help
可以这样简单地编译:esptool.py --port COM2 write_flash -fs 32m 0x00000 rboot.bin 0x02000 rom.bin