【问题标题】:Can ESP32 flash its own flash from SD card?ESP32 可以从 SD 卡刷自己的 flash 吗?
【发布时间】:2021-05-27 19:56:49
【问题描述】:

所以,我想知道是否可以为 ESP32 程序创建某种“引导加载程序”,从 SD 卡加载所述程序?

我知道我不能在飞行中这样做,所以我的想法是:创建一种没有互联网和第二个分区的 OTA,因为我的特定用例将需要它可以获得的每一点内存,所以 拆分它不是一个真正的选择

现在我看到两个问题:

  1. 我需要在开始加载程序后终止所有内容(主要是 FreeRTOS,因此没有任何潜在的中断)
  2. 我需要将所有内容都放入 IRAM 并为应用程序的其余部分留出足够的空间。 这将需要完全重写 esp-idf 函数,因为它们中的大多数都不在 IRAM 中。

【问题讨论】:

  • 如果不是 esp32,还有什么可以将 OTA 更新写入闪存。新二进制文件的来源是什么并不重要。它只需要写入正确的分区然后激活

标签: esp32


【解决方案1】:

是的。无需 IRAM,您可以从 Flash 运行应用程序并同时写入同一个 Flash,没有任何问题。乐鑫提供了一个 API 来满足您的需求:Over The Air Updates (OTA)。您必须为当前运行的固件和“新”固件创建单独的分区(如文档中所述)。然后,您只需从 SD 卡中读取新固件映像的数据并将其提供给 API 的 esp_ota_write...() 函数即可。

【讨论】:

  • 值得注意的是 OTA 将最大可用图像大小减半的缺点,因为它将闪存分成两个分区。
  • 是的,OTA 可以,但我需要整个闪存,我实在负担不起拆分它...
  • Espressif OTA 的替代方案是自己从头开始构建它——这并非易事。由您决定,但您将看到比采用现成解决方案多几个数量级的工作。也许您可以使用具有 8 或 16 MiB 闪存的模块?
  • @haberturdeur,您创建了一个使用整个闪存的自定义分区?默认分区有一个分区用于应用程序的第二个副本
  • 基本上是的。我还没有做,因为我还在做底层的东西,但是我在其他项目中已经做过很多次了……
猜你喜欢
  • 2022-07-04
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
  • 2020-07-15
  • 1970-01-01
  • 2023-03-08
  • 2018-06-27
  • 2014-01-19
相关资源
最近更新 更多