【问题标题】:Is it possible program STM32 device wireless?是否可以对 STM32 设备进行无线编程?
【发布时间】:2021-06-27 21:09:54
【问题描述】:

我有一个 STM32-discovery 板,我正在尝试不使用任何电缆对其进行编程。在我实习的地方,他们首先希望我使用 UART 对 STM32-discovery 进行编程。通过建立必要的连接并使用 Flash loader 演示,我能够做到这一点。现在我的下一个任务是在 STM32-discovery 板上添加一个 ESP-07 wifi 模块,将该模块连接到与我的计算机相同的网络,并在我的计算机上对其进行无线编程。两者之间不需要其他设备(如 Raspberry)。我对这个主题进行了一些研究,但无法得出结论。我发现了什么;我可以通过将卡连接到 Raspberry 或名为 Codegrip 的设备来远程编程。没有这些设备,是否可以仅使用 ESP-07 来执行此操作?如果你能告诉我我应该寻找什么,我会很高兴。

【问题讨论】:

  • 您需要为此编写自己的软件。
  • 我投票结束这个问题,因为它太宽泛了,
  • 是否可以设计各种自定义引导加载程序?是的。 Wi-fi 虽然很乏味,因为它具有很多复杂性。而例如蓝牙可以以更简单的方式用作无线 UART,用于点对点通信。

标签: embedded stm32 stm32f4discovery


【解决方案1】:

是的,如果 STM32 正在运行支持此功能的程序,则可以对 STM32 闪存进行无线重新编程。当您通过 UART 对 STM32 进行编程时,STM32 上运行了一个程序:

  1. 打开UART端口,
  2. 通过 UART(使用某种协议)接收到新的程序数据,
  3. 然后将新数据编程到闪存中。

要以无线方式进行同样的操作,STM32 需要运行以下程序:

  1. 打开 Wi-Fi 端口,
  2. 通过 Wi-Fi(使用某种协议)接收新的节目数据,
  3. 然后将新数据编程到闪存中。

您可能已经使用 STM32 内部 ROM 引导加载程序通过 UART 重新编程。如果是这样,那么您使用了该 ROM 引导加载程序所需的协议。但 ROM 引导加载程序可能不支持 Wi-Fi。因此,您可能会创建自己的可以通过 Wi-Fi 进行通信的引导加载程序。您可能正在定义自己的协议以通过 Wi-Fi 传输程序数据。或者,也许您可​​以应用一些已建立的协议,例如 FTP。搜索支持 OTA(无线)固件更新的引导加载程序示例。

【讨论】:

    【解决方案2】:

    有两种可能的解决方案。

    1. 为 STM32 编写自定义引导加载程序 - 闪存在开始时以较小的块进行组织以支持这一点,因此您可以将应用程序移动到更高的内存,并让引导加载程序跳转到应用程序以加载新应用程序。然后,引导加载程序可以访问 Wi-Fi 模块(和其他接口)以获取更新。
    2. 为 ESP0-07 编写自定义固件,使其接收并存储 STM32 映像,然后使用现有的 ROM 串行引导加载程序将其传输到 STM32。在这种情况下,您需要引导加载程序协议的详细信息,如果 ESP-07 有一个到 STM32 复位线的 GPIO 连接,这样它就可以在不手动复位的情况下调用引导加载程序。

    无论哪种方式,您都需要为其中一种或另一种设备编写软件。

    【讨论】:

      【解决方案3】:

      您可以使用任何标准引导加载程序并连接无线模块,如 ESP32(蓝牙和 Wifi)、ESP8266(蓝牙和 Wifi)、BT-05(蓝牙)、HM-10(蓝牙)等。

      然后创建安卓应用或网页应用并更新固件或应用。

      如果您不想使用标准引导加载程序,您可以实现自己的引导加载程序并将此 OTA 功能添加到其中。

      我们已逐步添加教程。如果您有时间,请参考this。我们在那里开发了自定义引导加载程序并更新了固件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-17
        • 2013-07-24
        • 1970-01-01
        • 2010-10-15
        • 2014-03-21
        相关资源
        最近更新 更多