Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

UF2 bootloader based on TinyUSB for embedded devices such as ESP32S2, STM32F4 and iMX RT10xx

License

NotificationsYou must be signed in to change notification settings

adafruit/tinyuf2

Repository files navigation

Build StatusLicense

This repo is cross-platform UF2 Bootloader projects for MCUs based onTinyUSB

.├── apps              # Useful applications such as self-update, erase firmware├── lib               # Sources from 3rd party such as tinyusb, mcu drivers ...├── ports             # Port/family specific sources│   ├── espressif│   │   └── boards/   # Board specific sources│   │   └── Makefile  # Makefile for this port│   └── mimxrt10xx├── src               # Cross-platform bootloader sources files

Features

Supported features are

  • Double tap to enter DFU, reboot to DFU and quick reboot from application
  • DFU with MassStorage (MSC)
  • Self update with uf2 file
  • Indicator: LED, RGB, TFT
  • Debug log with uart/swd

Not all features are implemented for all MCUs, following is supported MCUs and its feature

MCUMSCDouble ResetSelf-updateWrite ProtectionNeopixelTFT
ESP32 S2/S3Need RC
K32L2
LPC55
iMXRT
STM32F3
STM32F4
STM32H5

Build and Flash

Following is generic compiling information. Each port may require extra set-up and slight different process e.g esp32s2 require setup IDF.

Clone

Clone this repo with its submodule

$ git clone git@github.com:adafruit/tinyuf2.git tinyuf2$ cd tinyuf2$ git submodule update --init

Compile

To build this for a specific board, we need to change current directory to its port folder

$ cd ports/stm32f4

Firstly we need to get all submodule dependency for our board usingtools/get_deps.py script with either family input or using --board option. You only need to do this once for each family

python tools/get_deps.py stm32f4python tools/get_deps.py --board feather_stm32f405_express

Then compile withall target:

make BOARD=feather_stm32f405_express all

Flash

flash target will use the default on-board debugger (jlink/cmsisdap/stlink/dfu) to flash the binary, please install those support software in advance. Some board use bootloader/DFU via serial which is required to pass to make command

$ make BOARD=feather_stm32f405_express flash

If you use an external debugger, there isflash-jlink,flash-stlink,flash-pyocd which are mostly like to work out of the box for most of the supported board.

Debug

To compile for debugging addDEBUG=1, this will mostly change the compiler optimization

$ make BOARD=feather_stm32f405_express DEBUG=1 all

Log

Should you have an issue running example and/or submitting an bug report. You could enable TinyUSB built-in debug logging with optionalLOG=.

  • LOG=1 will print message from bootloader and error if any from TinyUSB stack.
  • LOG=2 andLOG=3 will print more information with TinyUSB stack events
$ make BOARD=feather_stm32f405_express LOG=1 all

Logger

By default log message is printed via on-board UART which is slow and take lots of CPU time comparing to USB speed. If your board support on-board/external debugger, it would be more efficient to use it for logging. There are 2 protocols:

  • LOGGER=rtt: useSegger RTT protocol
    • Cons: requires jlink as the debugger.
    • Pros: work with most if not all MCUs
    • Software viewer is JLink RTT Viewer/Client/Logger which is bundled with JLink driver package.
$ make BOARD=feather_stm32f405_express LOG=2 LOGGER=rtt all

[8]ページ先頭

©2009-2025 Movatter.jp