STM32 Nucleo系列的板子如何实现拖固件至U盘升级固件的呢?
2019-07-14 20:07发布
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
STM32 Nucleo的开发板,装完驱动后,接入电脑,此时电脑会模拟一个容量较小的U盘,这个容量应该就是MCU内部flash剩余的空间大小了。我们可以通过mbed或MDK-ARM编译一个bin文件,然后直接把该bin文件拖到该MCU模拟的U盘目录中即可完成MCU固件的烧录,请问此方式是如何实现的呢?哪有相关的资料?ST的UM0412手册讲述了通过DFU方式升级固件,DFU和上述显然不同,DFU使用起来更加复杂。
是否是如下实现呢:STM32 Nucleo板子都有一个编程器(可掰开的上半部分),一般由F103充当,F103具有usb-device功能,即Nucleo板子的编程器实现了一个usb-device,当发现有固件放入usb-device后便,它开始把接受到的固件按照其它方式(比如ISP的方式)烧写到评估的MCU中去。这种方式下,Nucleo板子可以随时接受一个固件并烧录,因为编程器一直模拟为一个usb-device。
如果我想实现一个不带编程器的、通过拖固件至U盘的方式实现固件烧写的功能,那么该如何实现呢?就是有一个用户场景,产品只有一个MCU(不可能产品上还带有编程器部分),当用usb线缆接入电脑后,电脑模拟一个U盘,然后通过拖动固件的方式完成固件的升级。ST的AN4657中有一个图:可以在IAP代码区中实现usb-device,但它需要通过一个按键来执行IAP代码,否则跳过IAP进入User代码区,这个很难实现开发板一直模拟U盘且开发板一直在运行用户程序(不同于Nucleo开发板可以一直有U盘出现在电脑上且Nucleo开发板也在正常使用中--比如闪烁程序)。有没有相关的usb-device方式的IAP示例呢?
一周热门 更多>