Android 的 STM32 设备固件升级 (DFU/DfuSe)
STM32 Device Firmware Upgrade (DFU/DfuSe) from Android
我有一个 STM32F4
微控制器连接到 Android (4.4) USB 主机端口。我想从 Android 设备对微控制器进行固件升级。
=================== ===================
| Android 4.4 | <=======================> | STM32F405xx |
| Device | USB Host USB Device | Microcontroller |
=================== ===================
传统上,STM32
微控制器可以使用 ST 提供的名为 DfuSe Utility
的 PC 工具升级其固件。但我需要从 Android 设备上执行此操作。提供了他们工具的来源。
问题:
- 可以使用
Java
中 Android 的标准 USB Host libraries 升级微控制器的固件吗?
- 或者这是否需要使用
NDK
完成并移植 DfuSe
源?如果是这样,应该使用哪些库从 NDK
? 访问 USB
应该采取哪个方向,如何做到这一点?
在我的项目中,我只是将STM32编程为一个虚拟com端口设备,并定义了一组简单的通信协议到erase/writeSTM32的内部闪存。我认为您可以对 Andriod 执行相同的操作,但我不知道 android 中是否存在用于虚拟 com 端口的驱动程序。
但无论如何,一旦你可以将一个字节传输到STM32或从STM32传输一个字节,你就可以让它自己编程了。引导加载程序的基本功能非常简单,就是接收数据并将它们写入应有的位置。
我们最终创建了自己的解决方案,使用 DFU 直接从 Android 通过 USB 对 STM32 微控制器进行编程,而不使用 NDK。我们在这里开源项目:
https://github.com/UmbrelaSmart/android-stm32-dfu-programmer
我有一个 STM32F4
微控制器连接到 Android (4.4) USB 主机端口。我想从 Android 设备对微控制器进行固件升级。
=================== ===================
| Android 4.4 | <=======================> | STM32F405xx |
| Device | USB Host USB Device | Microcontroller |
=================== ===================
传统上,STM32
微控制器可以使用 ST 提供的名为 DfuSe Utility
的 PC 工具升级其固件。但我需要从 Android 设备上执行此操作。提供了他们工具的来源。
问题:
- 可以使用
Java
中 Android 的标准 USB Host libraries 升级微控制器的固件吗? - 或者这是否需要使用
NDK
完成并移植DfuSe
源?如果是这样,应该使用哪些库从NDK
? 访问 USB
应该采取哪个方向,如何做到这一点?
在我的项目中,我只是将STM32编程为一个虚拟com端口设备,并定义了一组简单的通信协议到erase/writeSTM32的内部闪存。我认为您可以对 Andriod 执行相同的操作,但我不知道 android 中是否存在用于虚拟 com 端口的驱动程序。
但无论如何,一旦你可以将一个字节传输到STM32或从STM32传输一个字节,你就可以让它自己编程了。引导加载程序的基本功能非常简单,就是接收数据并将它们写入应有的位置。
我们最终创建了自己的解决方案,使用 DFU 直接从 Android 通过 USB 对 STM32 微控制器进行编程,而不使用 NDK。我们在这里开源项目:
https://github.com/UmbrelaSmart/android-stm32-dfu-programmer