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