我使用 mikroe 开发板 stm32f207vg 开发了一个嵌入式设备。我是新手,所以请多多包涵。我的问题是,如果以后(公开发布后)我希望设备的最终用户更新设备软件,我该如何启用此功能。例如,当我改进设备软件并希望用户使用 USB 端口使用新的 .hex 文件更新设备时。我猜我需要制作一个桌面应用程序。我让应用程序做什么?在开发过程中,我使用 Mikroe 引导加载程序应用程序将 hex 文件发送/安装到我的设备。我想做一个类似的应用程序。我在看DFU协议。Stm 有 Defuse 演示应用程序。这个应用程序是为此目的吗?我希望创建我的自定义应用程序来做到这一点。我应该从哪里开始?
问问题
978 次
1 回答
1
我用 C# 构建了一个程序,允许我的最终用户更新固件。我通过对 Dufse 程序进行逆向工程来做到这一点,该程序可以在此处找到。包含所有源代码。 此链接描述了该协议。
我的电路板在 boot0 引脚上有一个开关,允许 MCU 启动到“系统内存”。当启动到“系统内存”时,MCU 的 USB 接口将作为 DFU 设备运行。您需要在主机 PC 上安装 ST DFU 驱动程序,然后您可以使用 Dfuse 程序或您自己的程序来更新固件。
我也发现这个讨论很有用,但不要让它让你误入歧途。ST 文档是真正的信息来源。
还有其他方法。您知道您的固件实际上可以写入闪存吗?您可以编写自己的引导加载程序,使用 USART、USB、以太网或其他一些外围设备通过写入闪存来对设备进行编程。请注意不要覆盖您的引导加载程序。ST 似乎将此称为“应用内编程”(IAP)。
这些可能适用于不同的 MCU,但原理是相同的。
希望这会给你你正在寻找的开始。
于 2014-02-04T00:11:17.153 回答