Page 3 of 3
Re: STM32F10x light HID driverless bootloader supporting HD devices
Posted: Sun May 03, 2020 12:32 pm
by stevestrong
TheKikGen wrote: Sun May 03, 2020 11:07 am
My first approach was quite similar with HID, but you must first shutdown USB,...
That happens fast.
TheKikGen wrote: Sun May 03, 2020 11:07 am
... wait more or less 4 seconds
Nop. Why to wait?
In my approach I simply toggle the USB_DP line from 1->0->1. That is enough to signalize the host USB that a change occurred on the line.
The re-enumeration is performed within less than one second from both directions (user app-> bootloader -> user app).
For that the user app (core) should also have the same toggling method.
Re: STM32F10x light HID driverless bootloader supporting HD devices
Posted: Mon May 04, 2020 3:42 am
by TheKikGen
Thanks Steve. I will give a try to that...
Other subject :
I have added a new "page offset" option in TKG-Flash CLI. This allows to flash a bin firmware file from any bootloader at the right address.
The stm32duino bootloader flash at FLASH BASE+ 0x2000, last version of HID bootloader flash at +0x800, older version of HID booloader flash at 0x1000, etc... When you need to upload a bin file compiled and linked to a specific address with a different bootloader, most of the time, you will recompile the firmware. Not this time maybe ?
With that "-o" option, you add some pages to the usual start page (@FLASH BASE + 0x1000 also for a 4k bootloader size) to match the bin file original address. The booloader will flash at the offset required, but will also write the MSP / Reset handler in its first "user" page, so the vector table will be valid.
Ex : myfirmware.bin was compiled to be uploaded with the stm32duino bootloader, at @FLASH BASE + 0x2000 but my bootloader flash at 0x1000.
With a medium density Bluepill, the page size is 0x400 bytes. So I need to offset (0x2000- 0x1000) / 0x400 pages=> 4 pages.
Will do the adjustment, and will launch the firmware at the right address.
Re: STM32F10x light HID driverless bootloader supporting HD devices
Posted: Thu May 07, 2020 7:16 pm
by stevestrong
Btw, how do you do the progress bar for upload?
It seems that Arduino IDE message window only shows all printf-s from the flasher std output in one piece after the whole upload is done.
Don't you have the same problem?
Do you know a way to force the message window to be updated after each printf ?
Re: STM32F10x light HID driverless bootloader supporting HD devices
Posted: Mon May 11, 2020 1:05 am
by TheKikGen
Hi Steve. The IDE pseudo compilation console doesn't display correctly (as the IDE Terminal) most of C escape characters (e.g. \r).
So not possible to show a nice progression bar. The "-ide" option of tkg-flash shows consecutive characters on the same line instead.
Command line :
Code: Select all
+-----------------------------------------------------------------------+
| TKG-Flash v2.3 STM32F103 HID Bootloader Flash Tool |
| High density device support. |
| (c) 2020 - The KikGen Labs https://github.com/TheKikGen |
+-----------------------------------------------------------------------+
> Firmware file size is 49796 bytes.
> Searching for [1209:BEBA] HID device...|
> [1209:BEBA] HID device found !
> Flashing firmware (SIMULATION) (INFO) :
INFO - Informations reported by the MCU :
Flash memory size : 128 K (medium density device)
Page size : 1024 bytes
Flash base address : 0x8001000
[---------------------------------------------> ] 50176 bytes sent.
> Firmware flashing done !
49 sectors written (SIMULATION).
> End of firmware update.
in the IDE with the -ide option :
Code: Select all
$ ./tkg-flash umk-103c8-small-1000.bin -p=COM8 -sim -info -ide
+-----------------------------------------------------------------------+
| TKG-Flash v2.3 STM32F103 HID Bootloader Flash Tool |
| High density device support. |
| (c) 2020 - The KikGen Labs https://github.com/TheKikGen |
+-----------------------------------------------------------------------+
> Firmware file size is 49796 bytes.
> Searching for [1209:BEBA] HID device...|
> [1209:BEBA] HID device found !
> Flashing firmware (SIMULATION) (INFO) :
INFO - Informations reported by the MCU :
Flash memory size : 128 K (medium density device)
Page size : 1024 bytes
Flash base address : 0x8001000
-------------------------------------------------
> Firmware flashing done !
49 sectors written (SIMULATION).
50176 bytes sent.
> End of firmware update.
Re: STM32F10x light HID driverless bootloader supporting HD devices
Posted: Mon May 11, 2020 8:05 am
by stevestrong
Well, actually it is possible to display a progression bar, and \n is also shown correctly by Arduino IDE message window.
All I had to do is insert the line
before the first printf() and it did the job (see
viewtopic.php?p=2622#p2622).
Re: STM32F10x light HID driverless bootloader supporting HD devices
Posted: Tue May 12, 2020 2:45 pm
by TheKikGen
I already have this in my code. The \r is not usable at all.
Re: STM32F10x light HID driverless bootloader supporting HD devices
Posted: Tue May 12, 2020 3:44 pm
by stevestrong
True, but why would you use \r at all?
Re: STM32F10x light HID driverless bootloader supporting HD devices
Posted: Thu May 14, 2020 7:26 am
by TheKikGen
I use \r to animate the progression bar.
I just published the first release with binaries for Windows and Linux ready to use here :
https://github.com/TheKikGen/stm32-tkg- ... s/tag/V2.3
If anyone want to test it !