docs: Update bootloaders.md with HID bootloader documentation
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
ab87af90a3
commit
a9426d045b
|
@ -299,6 +299,126 @@ bootloader is still active (the bootloader will flash a board led
|
||||||
while it is running). Alternatively, set the "boot 0" pin to low and
|
while it is running). Alternatively, set the "boot 0" pin to low and
|
||||||
"boot 1" pin to high to stay in the bootloader after a reset.
|
"boot 1" pin to high to stay in the bootloader after a reset.
|
||||||
|
|
||||||
|
## STM32F103 with HID bootloader ##
|
||||||
|
The [HID bootloader](https://github.com/Serasidis/STM32_HID_Bootloader) is a
|
||||||
|
compact, driverless bootloader capable of flashing over USB. Also available
|
||||||
|
is a [fork with builds specific to the SKR Mini E3 1.2](
|
||||||
|
https://github.com/Arksine/STM32_HID_Bootloader/releases/tag/v0.5-beta).
|
||||||
|
|
||||||
|
For generic STM32F103 boards such as the blue pill it is possible to flash
|
||||||
|
the bootloader via 3.3v serial using stm32flash as noted in the stm32duino
|
||||||
|
section above, substituting the file name for the desired hid bootloader binary
|
||||||
|
(ie: hid_generic_pc13.bin for the blue pill).
|
||||||
|
|
||||||
|
It is not possible to use stm32flash for the SKR Mini E3 as the boot0 pin is
|
||||||
|
tied directly to ground and not broken out via header pins. It is recommended
|
||||||
|
to use a STLink V2 with STM32Cubeprogrammer to flash the bootloader. If you
|
||||||
|
don't have access to a STLink it is also possible to use a [Raspberry Pi and
|
||||||
|
OpenOCD](#running-openocd-on-the-raspberry-pi) with the following chip config:
|
||||||
|
```
|
||||||
|
source [find target/stm32f1x.cfg]
|
||||||
|
```
|
||||||
|
If you wish you can make a backup of the current flash with the following
|
||||||
|
command. Note that it may take some time to complete:
|
||||||
|
```
|
||||||
|
flash read_bank 0 btt_skr_mini_e3_backup.bin
|
||||||
|
```
|
||||||
|
finally, you can flash with commands similar to:
|
||||||
|
```
|
||||||
|
stm32f1x mass_erase 0
|
||||||
|
program hid_btt_skr_mini_e3.bin verify 0x08000000
|
||||||
|
```
|
||||||
|
NOTES:
|
||||||
|
- The example above erases the chip then programs the bootloader. Regardless
|
||||||
|
of the method chosen to flash it is recommended to erase the chip prior to
|
||||||
|
flashing.
|
||||||
|
- Prior flashing the SKR Mini E3 with this bootloader you should be aware
|
||||||
|
that you will no longer be able to update firmware via the sdcard.
|
||||||
|
- You may need to hold down the reset button on the board while launching
|
||||||
|
OpenOCD. It should display something like:
|
||||||
|
```
|
||||||
|
Open On-Chip Debugger 0.10.0+dev-01204-gc60252ac-dirty (2020-04-27-16:00)
|
||||||
|
Licensed under GNU GPL v2
|
||||||
|
For bug reports, read
|
||||||
|
http://openocd.org/doc/doxygen/bugs.html
|
||||||
|
DEPRECATED! use 'adapter speed' not 'adapter_khz'
|
||||||
|
Info : BCM2835 GPIO JTAG/SWD bitbang driver
|
||||||
|
Info : JTAG and SWD modes enabled
|
||||||
|
Info : clock speed 40 kHz
|
||||||
|
Info : SWD DPIDR 0x1ba01477
|
||||||
|
Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints
|
||||||
|
Info : stm32f1x.cpu: external reset detected
|
||||||
|
Info : starting gdb server for stm32f1x.cpu on 3333
|
||||||
|
Info : Listening on port 3333 for gdb connections
|
||||||
|
```
|
||||||
|
After which you can release the reset button.
|
||||||
|
|
||||||
|
|
||||||
|
This bootloader requires 2KiB of flash space (the application
|
||||||
|
must be compiled with a start address of 2KiB).
|
||||||
|
|
||||||
|
The hid-flash program is used to upload a binary to the bootloader. You
|
||||||
|
can install this software with the following commands:
|
||||||
|
```
|
||||||
|
sudo apt install libusb-1.0
|
||||||
|
cd ~/klipper/lib/hidflash
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
If the bootloader is running you can flash with something like:
|
||||||
|
```
|
||||||
|
~/klipper/lib/hidflash/hid-flash ~/klipper/out/klipper.bin
|
||||||
|
```
|
||||||
|
alternatively, you can use `make flash` to flash klipper directly:
|
||||||
|
```
|
||||||
|
make flash FLASH_DEVICE=1209:BEBA
|
||||||
|
```
|
||||||
|
OR if klipper has been previously flashed:
|
||||||
|
```
|
||||||
|
make flash FLASH_DEVICE=/dev/ttyACM0
|
||||||
|
```
|
||||||
|
|
||||||
|
It may be necessary to manually enter the bootloader, this can be done by
|
||||||
|
setting "boot 0" low and "boot 1" high. On the SKR Mini E3 "Boot 1" is
|
||||||
|
not available, so it may be done by setting pin PA2 low if you flashed
|
||||||
|
"hid_btt_skr_mini_e3.bin". This pin is labeld "TX0" on the TFT header in
|
||||||
|
the SKR Mini E3's "PIN" document. There is a ground pin next to PA2
|
||||||
|
which you can use to pull PA2 low.
|
||||||
|
|
||||||
|
STM32F4 micro-controllers (SKR Pro 1.1)
|
||||||
|
===============================================
|
||||||
|
STM32F4 microcontrollers come equipped with a built-in system bootloader
|
||||||
|
capable of flashing over USB (via DFU), 3.3v Serial, and various other
|
||||||
|
methods (see STM Document AN2606 for more information). Some
|
||||||
|
STM32F4 boards, such as the SKR Pro 1.1, are not able to enter the DFU
|
||||||
|
bootloader. The HID bootloader is available for STM32F405/407
|
||||||
|
based boards should the user prefer flashing over USB over using the sdcard.
|
||||||
|
Note that you may need to configure and build a version specific to your
|
||||||
|
board, a [build for the SKR Pro 1.1 is available here](
|
||||||
|
https://github.com/Arksine/STM32_HID_Bootloader/releases/tag/v0.5-beta).
|
||||||
|
|
||||||
|
Unless your board is DFU capable the most accessable flashing method
|
||||||
|
is likely via 3.3v serial, which follows the same procedure as [flashing the
|
||||||
|
STM32F103 using stm32flash](#stm32f103-micro-controllers-blue-pill-devices).
|
||||||
|
For example:
|
||||||
|
```
|
||||||
|
wget https://github.com/Arksine/STM32_HID_Bootloader/releases/download/v0.5-beta/hid_bootloader_SKR_PRO.bin
|
||||||
|
|
||||||
|
stm32flash -w hid_bootloader_SKR_PRO.bin -v -g 0 /dev/ttyAMA0
|
||||||
|
```
|
||||||
|
|
||||||
|
This bootloader requires 16Kib of flash space on the STM32F4 (the application
|
||||||
|
must be compiled with a start address of 16KiB).
|
||||||
|
|
||||||
|
As with the STM32F1, the STM32F4 uses the hid-flash tool to upload binaries to
|
||||||
|
the MCU. See the instructions above for details on how to build and use
|
||||||
|
hid-flash.
|
||||||
|
|
||||||
|
It may be necessary to manually enter the bootloader, this can be done by
|
||||||
|
setting "boot 0" low, "boot 1" high and plugging in the device. After
|
||||||
|
programming is complete unplug the device and set "boot 1" back to low
|
||||||
|
so the application will be loaded.
|
||||||
|
|
||||||
LPC176x micro-controllers (Smoothieboards)
|
LPC176x micro-controllers (Smoothieboards)
|
||||||
==========================================
|
==========================================
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue