doc: provide project background
This commit is contained in:
parent
3865612f0c
commit
24f7828766
72
README.md
72
README.md
|
@ -1,6 +1,48 @@
|
||||||
This is a [USB DFU](https://www.usb.org/document-library/device-firmware-upgrade-11-new-version-31-aug-2004) (DFU mode) implementation for [ESP32-S2](https://www.espressif.com/en/products/socs/esp32-s2) based on [tinyUSB](https://docs.tinyusb.org/en/latest/index.html).
|
This is a [USB DFU](https://www.usb.org/document-library/device-firmware-upgrade-11-new-version-31-aug-2004) (DFU mode) implementation for [ESP32-S2](https://www.espressif.com/en/products/socs/esp32-s2) based on [tinyUSB](https://docs.tinyusb.org/en/latest/index.html).
|
||||||
It allows flashing the firmware using [dfu-util](http://dfu-util.sourceforge.net/).
|
It allows flashing the firmware using [dfu-util](http://dfu-util.sourceforge.net/).
|
||||||
|
|
||||||
|
background
|
||||||
|
==========
|
||||||
|
|
||||||
|
ESP-ROM
|
||||||
|
-------
|
||||||
|
|
||||||
|
The ESP-S2 comes with a ROM bootloader that already allows you to flash over USB using the serial CDC ACM profile.
|
||||||
|
But this method does not let you restart into the main firmware.
|
||||||
|
The ROM bootloader USB stack even offers DFU capability, and you can flash using dfu-util.
|
||||||
|
But this one also does not let you restart into the main firmware.
|
||||||
|
|
||||||
|
To flash using USB serial (can't restart the device):
|
||||||
|
|
||||||
|
~~~
|
||||||
|
idf.py -p /dev/ttyACM0 flash
|
||||||
|
...
|
||||||
|
WARNING: ESP32-S2 chip was placed into download mode using GPIO0.
|
||||||
|
esptool.py can not exit the download mode over USB. To run the app, reset the chip manually.
|
||||||
|
To suppress this note, set --after option to 'no_reset'.
|
||||||
|
~~~
|
||||||
|
|
||||||
|
And to [flash using DFU](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/api-guides/dfu.html):
|
||||||
|
|
||||||
|
~~~
|
||||||
|
# generate the DFU binary (not the same as the usual flash binary)
|
||||||
|
idf.py dfu
|
||||||
|
dfu-util --device 303a:0002 --download build/dfu.bin
|
||||||
|
# or
|
||||||
|
idf.py dfu-flash
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Note: after detaching, the bootloader claims for be in runtime mode, but this is still the bootloader, and not the flashed firmware.
|
||||||
|
|
||||||
|
mode switch
|
||||||
|
-----------
|
||||||
|
|
||||||
|
To switch from the ESP32-S2 ROM bootloader back to the firmware flashed over USB, you need to press the reset button.
|
||||||
|
This is cumbersome when developing firmware, and sometimes impossible if the board is encased or installed remotely.
|
||||||
|
|
||||||
|
This USB DFU implementation allows to switch back to runtime mode without pressing a button.
|
||||||
|
The runtime firmware can also reboot into the DFU mode without pressing a button.
|
||||||
|
|
||||||
install
|
install
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
@ -94,36 +136,6 @@ Feel free to reuse the 'partitions.csv' file as example.
|
||||||
alternatives
|
alternatives
|
||||||
============
|
============
|
||||||
|
|
||||||
ESP-ROM
|
|
||||||
-------
|
|
||||||
|
|
||||||
The ESP-S2 comes with a ROM bootloader that already allows you to flash over USB using the serial CDC ACM profile.
|
|
||||||
But this method does not let you restart into the main firmware.
|
|
||||||
The ROM bootloader USB stack even offers DFU capability, and you can flash using dfu-util.
|
|
||||||
But this one also does not let you restart into the main firmware.
|
|
||||||
|
|
||||||
To flash using USB serial (can't restart the device):
|
|
||||||
|
|
||||||
~~~
|
|
||||||
idf.py -p /dev/ttyACM0 flash
|
|
||||||
...
|
|
||||||
WARNING: ESP32-S2 chip was placed into download mode using GPIO0.
|
|
||||||
esptool.py can not exit the download mode over USB. To run the app, reset the chip manually.
|
|
||||||
To suppress this note, set --after option to 'no_reset'.
|
|
||||||
~~~
|
|
||||||
|
|
||||||
And to [flash using DFU](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/api-guides/dfu.html):
|
|
||||||
|
|
||||||
~~~
|
|
||||||
# generate the DFU binary (not the same as the usual flash binary)
|
|
||||||
idf.py dfu
|
|
||||||
dfu-util --device 303a:0002 --download build/dfu.bin
|
|
||||||
# or
|
|
||||||
idf.py dfu-flash
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Note: after detaching, the bootloader claims for be in runtime mode, but this is still the bootloader, and not the flashed firmware.
|
|
||||||
|
|
||||||
TinyUF2
|
TinyUF2
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue