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