Full Code of hathach/tinyusb for AI

master 8a9f44bdd267 cached
2411 files
17.4 MB
4.7M tokens
1 requests
Copy disabled (too large) Download .txt
Showing preview only (18,747K chars total). Download the full file to get everything.
Repository: hathach/tinyusb
Branch: master
Commit: 8a9f44bdd267
Files: 2411
Total size: 17.4 MB

Directory structure:
gitextract_0tofuoxf/

├── .circleci/
│   ├── config.yml
│   └── config2.yml
├── .clang-format
├── .codespellrc
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   └── feature_request.yml
│   ├── actions/
│   │   ├── get_deps/
│   │   │   └── action.yml
│   │   └── setup_toolchain/
│   │       ├── action.yml
│   │       ├── download/
│   │       │   └── action.yml
│   │       ├── espressif/
│   │       │   └── action.yml
│   │       └── toolchain.json
│   ├── membrowse_pr_message.j2
│   └── workflows/
│       ├── build.yml
│       ├── build_util.yml
│       ├── ci_set_matrix.py
│       ├── cifuzz.yml
│       ├── claude-code-review.yml
│       ├── claude.yml
│       ├── labeler.yml
│       ├── membrowse-comment.yml
│       ├── membrowse-onboard.yml
│       ├── metrics_comment.yml
│       ├── pre-commit.yml
│       ├── static_analysis.yml
│       └── trigger.yml
├── .gitignore
├── .idea/
│   ├── .gitignore
│   ├── cmake.xml
│   ├── debugServers/
│   │   ├── AT32F423VCT7.xml
│   │   ├── ST_LINK.xml
│   │   ├── at32f403acgu7.xml
│   │   ├── esp32s2.xml
│   │   ├── lpc1769.xml
│   │   ├── lpc55s69.xml
│   │   ├── max32690.xml
│   │   ├── mcxa153.xml
│   │   ├── nrf52833.xml
│   │   ├── nrf5340.xml
│   │   ├── ra6m1.xml
│   │   ├── ra6m5.xml
│   │   ├── rp2040.xml
│   │   ├── rp2350.xml
│   │   ├── rt1011.xml
│   │   ├── rt1060.xml
│   │   ├── rt1064.xml
│   │   ├── rt1170.xml
│   │   ├── s3.xml
│   │   ├── sam21.xml
│   │   ├── sam51.xml
│   │   ├── stm32f072.xml
│   │   ├── stm32f303.xml
│   │   ├── stm32f411.xml
│   │   ├── stm32f769.xml
│   │   ├── stm32h563.xml
│   │   ├── stm32h743.xml
│   │   ├── stm32l053.xml
│   │   └── wch_riscv.xml
│   ├── runConfigurations/
│   │   ├── k64f.xml
│   │   ├── kl25.xml
│   │   ├── lpc1857.xml
│   │   ├── lpc4088.xml
│   │   ├── lpc54628.xml
│   │   ├── lpc55s69.xml
│   │   ├── mcx947.xml
│   │   ├── nrf52840.xml
│   │   ├── nrf5340.xml
│   │   ├── ra2a1.xml
│   │   ├── ra4m1.xml
│   │   ├── ra6m1.xml
│   │   ├── ra6m5.xml
│   │   ├── rp2040.xml
│   │   ├── rt1010.xml
│   │   ├── rt1060.xml
│   │   ├── samd21g18.xml
│   │   ├── samd51j19.xml
│   │   ├── stlink.xml
│   │   ├── stm32g474.xml
│   │   ├── stm32h563.xml
│   │   ├── stm32h743.xml
│   │   ├── stm32u5a5.xml
│   │   └── uno_r4.xml
│   └── vcs.xml
├── .pre-commit-config.yaml
├── .readthedocs.yaml
├── AGENTS.md
├── CODE_OF_CONDUCT.rst
├── CONTRIBUTORS.rst
├── LICENSE
├── README.rst
├── SConscript
├── docs/
│   ├── _static/
│   │   └── custom.css
│   ├── conf.py
│   ├── faq.rst
│   ├── getting_started.rst
│   ├── index.rst
│   ├── info/
│   │   ├── changelog.rst
│   │   ├── code_of_conduct.rst
│   │   ├── contributors.rst
│   │   └── index.rst
│   ├── integration.rst
│   ├── porting.rst
│   ├── reference/
│   │   ├── architecture.rst
│   │   ├── boards.rst
│   │   ├── concurrency.rst
│   │   ├── dependencies.rst
│   │   ├── glossary.rst
│   │   ├── index.rst
│   │   └── usb_concepts.rst
│   ├── requirements.txt
│   └── troubleshooting.rst
├── examples/
│   ├── CMakeLists.txt
│   ├── CMakePresets.json
│   ├── build_system/
│   │   ├── cmake/
│   │   │   ├── cpu/
│   │   │   │   ├── arm1176jzf-s.cmake
│   │   │   │   ├── arm926ej-s.cmake
│   │   │   │   ├── cortex-a53.cmake
│   │   │   │   ├── cortex-a72.cmake
│   │   │   │   ├── cortex-m0.cmake
│   │   │   │   ├── cortex-m0plus.cmake
│   │   │   │   ├── cortex-m23.cmake
│   │   │   │   ├── cortex-m3.cmake
│   │   │   │   ├── cortex-m33-nodsp-nofp.cmake
│   │   │   │   ├── cortex-m33-nodsp.cmake
│   │   │   │   ├── cortex-m33.cmake
│   │   │   │   ├── cortex-m4-nofpu.cmake
│   │   │   │   ├── cortex-m4.cmake
│   │   │   │   ├── cortex-m55.cmake
│   │   │   │   ├── cortex-m7-fpsp.cmake
│   │   │   │   ├── cortex-m7.cmake
│   │   │   │   ├── cortex-m85.cmake
│   │   │   │   ├── ft32.cmake
│   │   │   │   ├── msp430.cmake
│   │   │   │   ├── rv32i-ilp32.cmake
│   │   │   │   ├── rv32imac-ilp32.cmake
│   │   │   │   ├── rx610.cmake
│   │   │   │   └── rx64m.cmake
│   │   │   └── toolchain/
│   │   │       ├── aarch64_gcc.cmake
│   │   │       ├── arm_clang.cmake
│   │   │       ├── arm_gcc.cmake
│   │   │       ├── arm_iar.cmake
│   │   │       ├── common.cmake
│   │   │       ├── cstat_sel_checks.txt
│   │   │       ├── ft32_gcc.cmake
│   │   │       ├── msp430_gcc.cmake
│   │   │       ├── riscv_gcc.cmake
│   │   │       └── rx_gcc.cmake
│   │   └── make/
│   │       ├── cpu/
│   │       │   ├── arm1176jzf-s.mk
│   │       │   ├── arm926ej-s.mk
│   │       │   ├── cortex-a53.mk
│   │       │   ├── cortex-a72.mk
│   │       │   ├── cortex-m0.mk
│   │       │   ├── cortex-m0plus.mk
│   │       │   ├── cortex-m23.mk
│   │       │   ├── cortex-m3.mk
│   │       │   ├── cortex-m33-nodsp-nofp.mk
│   │       │   ├── cortex-m33.mk
│   │       │   ├── cortex-m4-nofpu.mk
│   │       │   ├── cortex-m4.mk
│   │       │   ├── cortex-m55.mk
│   │       │   ├── cortex-m7-fpsp.mk
│   │       │   ├── cortex-m7.mk
│   │       │   ├── cortex-m85.mk
│   │       │   ├── msp430.mk
│   │       │   ├── rv32i-ilp32.mk
│   │       │   └── rv32imac-ilp32.mk
│   │       └── toolchain/
│   │           ├── arm_clang.mk
│   │           ├── arm_gcc.mk
│   │           ├── arm_iar.mk
│   │           ├── clang_rules.mk
│   │           ├── gcc_common.mk
│   │           ├── gcc_rules.mk
│   │           ├── iar_rules.mk
│   │           └── riscv_gcc.mk
│   ├── device/
│   │   ├── 99-tinyusb.rules
│   │   ├── CMakeLists.txt
│   │   ├── CMakePresets.json
│   │   ├── audio_4_channel_mic/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── plot_audio_samples.py
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── audio_4_channel_mic_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── sdkconfig.defaults
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── plot_audio_samples.py
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── audio_test/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── plot_audio_samples.py
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── audio_test_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── sdkconfig.defaults
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── plot_audio_samples.py
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── audio_test_multi_rate/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── plot_audio_samples.py
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── board_test/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── sdkconfig.defaults
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       └── tusb_config.h
│   │   ├── cdc_dual_ports/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── cdc_msc/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── prj.conf
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── msc_disk.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── cdc_msc_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── sdkconfig.defaults
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── msc_disk.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── cdc_uac2/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── cdc_app.c
│   │   │       ├── common.h
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── uac2_app.c
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── dfu/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── dfu_runtime/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── dynamic_configuration/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── msc_disk.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── hid_boot_interface/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── hid_composite/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── hid_composite_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── sdkconfig.defaults
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── hid_generic_inout/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── boards.js
│   │   │   ├── hid_test.js
│   │   │   ├── hid_test.py
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── hid_multiple_interface/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── midi_test/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── midi_test_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── msc_dual_lun/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── prj.conf
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── msc_disk_dual.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── mtp/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── prj.conf
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── mtp_fs_example.c
│   │   │       ├── tinyusb_logo_png.h
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── net_lwip_webserver/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── arch/
│   │   │       │   ├── bpstruct.h
│   │   │       │   ├── cc.h
│   │   │       │   └── epstruct.h
│   │   │       ├── lwipopts.h
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── printer_to_cdc/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── uac2_headset/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── uac2_speaker_fb/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── audio_debug.py
│   │   │       ├── common_types.h
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── usbtmc/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   ├── src/
│   │   │   │   ├── main.c
│   │   │   │   ├── main.h
│   │   │   │   ├── tusb_config.h
│   │   │   │   ├── usb_descriptors.c
│   │   │   │   ├── usbtmc_app.c
│   │   │   │   └── usbtmc_app.h
│   │   │   └── visaQuery.py
│   │   ├── video_capture/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── images.h
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── video_capture_2ch/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── images.h
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   └── webusb_serial/
│   │       ├── CMakeLists.txt
│   │       ├── CMakePresets.json
│   │       ├── Makefile
│   │       ├── src/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── main.c
│   │       │   ├── tusb_config.h
│   │       │   ├── usb_descriptors.c
│   │       │   └── usb_descriptors.h
│   │       └── website/
│   │           ├── application.js
│   │           ├── divider.js
│   │           ├── index.html
│   │           ├── serial.js
│   │           └── style.css
│   ├── dual/
│   │   ├── CMakeLists.txt
│   │   ├── CMakePresets.json
│   │   ├── dynamic_switch/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── only.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── host_hid_to_device_cdc/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   └── host_info_to_device_cdc/
│   │       ├── CMakeLists.txt
│   │       ├── CMakePresets.json
│   │       ├── Makefile
│   │       ├── only.txt
│   │       └── src/
│   │           ├── CMakeLists.txt
│   │           ├── main.c
│   │           ├── tusb_config.h
│   │           └── usb_descriptors.c
│   ├── host/
│   │   ├── CMakeLists.txt
│   │   ├── CMakePresets.json
│   │   ├── bare_api/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       └── tusb_config.h
│   │   ├── cdc_msc_hid/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── app.h
│   │   │       ├── cdc_app.c
│   │   │       ├── hid_app.c
│   │   │       ├── main.c
│   │   │       ├── msc_app.c
│   │   │       └── tusb_config.h
│   │   ├── cdc_msc_hid_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── app.h
│   │   │       ├── cdc_app.c
│   │   │       ├── hid_app.c
│   │   │       ├── main.c
│   │   │       ├── msc_app.c
│   │   │       └── tusb_config.h
│   │   ├── device_info/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       └── tusb_config.h
│   │   ├── hid_controller/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── app.h
│   │   │       ├── hid_app.c
│   │   │       ├── main.c
│   │   │       └── tusb_config.h
│   │   ├── midi_rx/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       └── tusb_config.h
│   │   └── msc_file_explorer/
│   │       ├── CMakeLists.txt
│   │       ├── CMakePresets.json
│   │       ├── Makefile
│   │       ├── only.txt
│   │       ├── skip.txt
│   │       └── src/
│   │           ├── main.c
│   │           ├── msc_app.c
│   │           ├── msc_app.h
│   │           └── tusb_config.h
│   ├── typec/
│   │   ├── CMakeLists.txt
│   │   ├── CMakePresets.json
│   │   └── power_delivery/
│   │       ├── CMakeLists.txt
│   │       ├── CMakePresets.json
│   │       ├── Makefile
│   │       ├── only.txt
│   │       └── src/
│   │           ├── main.c
│   │           └── tusb_config.h
│   └── west.yml
├── hw/
│   ├── bsp/
│   │   ├── BoardPresets.json
│   │   ├── ansi_escape.h
│   │   ├── at32f402_405/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f402_405_clock.c
│   │   │   ├── at32f402_405_clock.h
│   │   │   ├── at32f402_405_conf.h
│   │   │   ├── at32f402_405_int.c
│   │   │   ├── at32f402_405_int.h
│   │   │   ├── boards/
│   │   │   │   ├── at_start_f402/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── at_start_f405/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f403a_407/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f403a_407_clock.c
│   │   │   ├── at32f403a_407_clock.h
│   │   │   ├── at32f403a_407_conf.h
│   │   │   ├── at32f403a_407_int.c
│   │   │   ├── at32f403a_407_int.h
│   │   │   ├── boards/
│   │   │   │   ├── at32f403a_weact_blackpill/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── at_start_f403a/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── at_start_f407/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f413/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f413_clock.c
│   │   │   ├── at32f413_clock.h
│   │   │   ├── at32f413_conf.h
│   │   │   ├── at32f413_int.c
│   │   │   ├── at32f413_int.h
│   │   │   ├── boards/
│   │   │   │   └── at_start_f413/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f415/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f415_clock.c
│   │   │   ├── at32f415_clock.h
│   │   │   ├── at32f415_conf.h
│   │   │   ├── at32f415_int.c
│   │   │   ├── at32f415_int.h
│   │   │   ├── boards/
│   │   │   │   └── at_start_f415/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f423/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f423_clock.c
│   │   │   ├── at32f423_clock.h
│   │   │   ├── at32f423_conf.h
│   │   │   ├── at32f423_int.c
│   │   │   ├── at32f423_int.h
│   │   │   ├── boards/
│   │   │   │   └── at_start_f423/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f425/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f425_clock.c
│   │   │   ├── at32f425_clock.h
│   │   │   ├── at32f425_conf.h
│   │   │   ├── at32f425_int.c
│   │   │   ├── at32f425_int.h
│   │   │   ├── boards/
│   │   │   │   └── at_start_f425/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f435_437/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f435_437_clock.c
│   │   │   ├── at32f435_437_clock.h
│   │   │   ├── at32f435_437_conf.h
│   │   │   ├── at32f435_437_int.c
│   │   │   ├── at32f435_437_int.h
│   │   │   ├── boards/
│   │   │   │   ├── at_start_f435/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── at_start_f437/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f45x/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f45x_clock.c
│   │   │   ├── at32f45x_clock.h
│   │   │   ├── at32f45x_conf.h
│   │   │   ├── at32f45x_int.c
│   │   │   ├── at32f45x_int.h
│   │   │   ├── boards/
│   │   │   │   ├── at_start_f455/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── at_start_f456/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── at_start_f457/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── board.c
│   │   ├── board_api.h
│   │   ├── broadcom_32bit/
│   │   │   ├── boards/
│   │   │   │   └── raspberrypi_zero/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── broadcom_64bit/
│   │   │   ├── boards/
│   │   │   │   ├── raspberrypi_cm4/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── raspberrypi_zero2/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── ch32f20x/
│   │   │   ├── boards/
│   │   │   │   └── ch32f205r-r0/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── ch32f205.ld
│   │   │   ├── ch32f20x_conf.h
│   │   │   ├── ch32f20x_it.c
│   │   │   ├── ch32f20x_it.h
│   │   │   ├── core_cm3.h
│   │   │   ├── debug_uart.c
│   │   │   ├── debug_uart.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── startup_gcc_ch32f20x_d8c.s
│   │   │   ├── system_ch32f20x.c
│   │   │   └── system_ch32f20x.h
│   │   ├── ch32v10x/
│   │   │   ├── boards/
│   │   │   │   └── ch32v103r_r1_1v0/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── ch32v10x_conf.h
│   │   │   ├── ch32v10x_it.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   └── ch32v10x.ld
│   │   │   ├── system_ch32v10x.c
│   │   │   ├── system_ch32v10x.h
│   │   │   └── wch-riscv.cfg
│   │   ├── ch32v20x/
│   │   │   ├── boards/
│   │   │   │   ├── ch32v203c_r0_1v0/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── ch32v203g_r0_1v0/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── nanoch32v203/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── ch32v20x_conf.h
│   │   │   ├── ch32v20x_it.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   └── ch32v20x.ld
│   │   │   ├── system_ch32v20x.c
│   │   │   ├── system_ch32v20x.h
│   │   │   └── wch-riscv.cfg
│   │   ├── ch32v30x/
│   │   │   ├── boards/
│   │   │   │   ├── ch32v307v_r1_1v0/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── nanoch32v305/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── ch32v30x_conf.h
│   │   │   ├── ch32v30x_it.c
│   │   │   ├── ch32v30x_it.h
│   │   │   ├── debug_uart.c
│   │   │   ├── debug_uart.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   └── ch32v30x.ld
│   │   │   ├── system_ch32v30x.c
│   │   │   ├── system_ch32v30x.h
│   │   │   └── wch-riscv.cfg
│   │   ├── cxd56/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── spresense/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── da1469x/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── da14695_dk_usb/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── syscfg/
│   │   │   │   │       └── syscfg.h
│   │   │   │   └── da1469x_dk_pro/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── syscfg/
│   │   │   │           └── syscfg.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── gcc_startup_da1469x.S
│   │   │   ├── linker/
│   │   │   │   └── da1469x.ld
│   │   │   └── product_header.dump
│   │   ├── efm32/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── sltb009a/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── espressif/
│   │   │   ├── boards/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── adafruit_feather_esp32_v2/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_feather_esp32c6/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_feather_esp32s2/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_feather_esp32s3/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_magtag_29gray/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_metro_esp32s2/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_addax_1/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_c3_devkitc/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_c6_devkitc/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_kaluga_1/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_p4_function_ev/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── sdkconfig.defaults
│   │   │   │   ├── espressif_s2_devkitc/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_s3_devkitc/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_s3_devkitm/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_saola_1/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   └── family.c
│   │   │   ├── components/
│   │   │   │   ├── led_strip/
│   │   │   │   │   ├── CHANGELOG.md
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── api.md
│   │   │   │   │   ├── examples/
│   │   │   │   │   │   └── led_strip_rmt_ws2812/
│   │   │   │   │   │       ├── CMakeLists.txt
│   │   │   │   │   │       ├── README.md
│   │   │   │   │   │       └── main/
│   │   │   │   │   │           ├── CMakeLists.txt
│   │   │   │   │   │           ├── idf_component.yml
│   │   │   │   │   │           └── led_strip_rmt_ws2812_main.c
│   │   │   │   │   ├── idf_component.yml
│   │   │   │   │   ├── include/
│   │   │   │   │   │   ├── led_strip.h
│   │   │   │   │   │   ├── led_strip_rmt.h
│   │   │   │   │   │   ├── led_strip_spi.h
│   │   │   │   │   │   └── led_strip_types.h
│   │   │   │   │   ├── interface/
│   │   │   │   │   │   └── led_strip_interface.h
│   │   │   │   │   └── src/
│   │   │   │   │       ├── led_strip_api.c
│   │   │   │   │       ├── led_strip_rmt_dev.c
│   │   │   │   │       ├── led_strip_rmt_dev_idf4.c
│   │   │   │   │       ├── led_strip_rmt_encoder.c
│   │   │   │   │       ├── led_strip_rmt_encoder.h
│   │   │   │   │       └── led_strip_spi_dev.c
│   │   │   │   └── tinyusb_src/
│   │   │   │       └── CMakeLists.txt
│   │   │   └── family.cmake
│   │   ├── f1c100s/
│   │   │   ├── README.md
│   │   │   ├── boards/
│   │   │   │   └── f1c100s/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── family_rules.mk
│   │   ├── family_support.cmake
│   │   ├── family_support.mk
│   │   ├── fomu/
│   │   │   ├── boards/
│   │   │   │   └── fomu/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── crt0-vexriscv.S
│   │   │   ├── dfu.py
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── fomu.ld
│   │   │   ├── include/
│   │   │   │   ├── csr.h
│   │   │   │   ├── hw/
│   │   │   │   │   └── common.h
│   │   │   │   └── irq.h
│   │   │   ├── output_format.ld
│   │   │   └── regions.ld
│   │   ├── ft9xx/
│   │   │   ├── boards/
│   │   │   │   └── mm900evxb/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── gd32vf103/
│   │   │   ├── boards/
│   │   │   │   └── sipeed_longan_nano/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── system_gd32vf103.c
│   │   ├── hpmicro/
│   │   │   ├── boards/
│   │   │   │   └── hpm6750evk2/
│   │   │   │       ├── board.c
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── pinmux.c
│   │   │   │       └── pinmux.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── imxrt/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── metro_m7_1011/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1010_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1010_flexspi_nor_config.h
│   │   │   │   │   ├── metro_m7_1011.ld
│   │   │   │   │   ├── metro_m7_1011.mex
│   │   │   │   │   └── ozone/
│   │   │   │   │       └── metro_m7_1011.jdebug
│   │   │   │   ├── mimxrt1010_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1010_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1010_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1010_evk.mex
│   │   │   │   ├── mimxrt1015_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1015_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1015_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1015_evk.mex
│   │   │   │   ├── mimxrt1020_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1020_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1020_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1020_evk.mex
│   │   │   │   ├── mimxrt1024_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1024_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1024_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1024_evk.mex
│   │   │   │   ├── mimxrt1050_evkb/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkbimxrt1050_flexspi_nor_config.c
│   │   │   │   │   ├── evkbimxrt1050_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1050_evkb.mex
│   │   │   │   ├── mimxrt1060_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1060_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1060_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1060_evk.mex
│   │   │   │   ├── mimxrt1064_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1064_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1064_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1064_evk.mex
│   │   │   │   ├── mimxrt1170_evkb/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkbmimxrt1170_flexspi_nor_config.c
│   │   │   │   │   ├── evkbmimxrt1170_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1170_evkb.mex
│   │   │   │   ├── teensy_40/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── teensy40.mex
│   │   │   │   │   ├── teensy40_flexspi_nor_config.c
│   │   │   │   │   └── teensy40_flexspi_nor_config.h
│   │   │   │   └── teensy_41/
│   │   │   │       ├── board/
│   │   │   │       │   ├── clock_config.c
│   │   │   │       │   ├── clock_config.h
│   │   │   │       │   ├── pin_mux.c
│   │   │   │       │   └── pin_mux.h
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── teensy41.mex
│   │   │   │       ├── teensy41_flexspi_nor_config.c
│   │   │   │       └── teensy41_flexspi_nor_config.h
│   │   │   ├── debug.jlinkscript
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── kinetis_k/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── frdm_k64f/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── frdm_k64f.mex
│   │   │   │   └── teensy_35/
│   │   │   │       ├── board/
│   │   │   │       │   ├── clock_config.c
│   │   │   │       │   ├── clock_config.h
│   │   │   │       │   ├── pin_mux.c
│   │   │   │       │   └── pin_mux.h
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── teensy_35.mex
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── kinetis_k32l/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── frdm_k32l2a4s/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── clock_config.c
│   │   │   │   │   └── clock_config.h
│   │   │   │   ├── frdm_k32l2b/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── clock_config.c
│   │   │   │   │   └── clock_config.h
│   │   │   │   └── kuiic/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── clock_config.c
│   │   │   │       ├── clock_config.h
│   │   │   │       └── kuiic.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── kinetis_kl/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── frdm_kl25z/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── clock_config.c
│   │   │   │       └── clock_config.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── gcc/
│   │   │       ├── MKL25Z128xxx4_flash.ld
│   │   │       └── startup_MKL25Z4.S
│   │   ├── lpc11/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── lpcxpresso11u37/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── lpc11u37.ld
│   │   │   │   └── lpcxpresso11u68/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── lpc11u68.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc13/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── lpcxpresso1347/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── lpc1347.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc15/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── lpcxpresso1549/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── lpc1549.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc17/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── lpcxpresso1769/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── lpc1769.ld
│   │   │   │   └── mbed1768/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── lpc1768.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc18/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── lpcxpresso18s37/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── lpc1837.ld
│   │   │   │   └── mcb1800/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── lpc1857.ld
│   │   │   │       └── ozone/
│   │   │   │           └── lpc1857.jdebug
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc40/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── ea4088_quickstart/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── lpc4088.ld
│   │   │   │       └── ozone/
│   │   │   │           └── ea4088_quickstart.jdebug
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc43/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── ea4357/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── lpc4357.ld
│   │   │   │   │   ├── pca9532.c
│   │   │   │   │   └── pca9532.h
│   │   │   │   └── lpcxpresso43s67/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── lpc4367.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc51/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── lpcxpresso51u68/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc54/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── lpcxpresso54114/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── lpcxpresso54608/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── lpcxpresso54628/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── iar/
│   │   │       ├── LPC54608_flash.icf
│   │   │       ├── LPC54628_flash.icf
│   │   │       ├── startup_LPC54608.s
│   │   │       └── startup_LPC54628.s
│   │   ├── lpc55/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── double_m33_express/
│   │   │   │   │   ├── LPC55S69_cm33_core0_uf2.ld
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── peripherals.c
│   │   │   │   │   │   ├── peripherals.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── double_m33_express.mex
│   │   │   │   ├── lpcxpresso55s28/
│   │   │   │   │   ├── LPCXpresso55S28.mex
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── peripherals.c
│   │   │   │   │   │   ├── peripherals.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── lpcxpresso55s69/
│   │   │   │   │   ├── LPCXpresso55S69.mex
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── peripherals.c
│   │   │   │   │   │   ├── peripherals.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── mcu_link/
│   │   │   │       ├── board/
│   │   │   │       │   ├── clock_config.c
│   │   │   │       │   ├── clock_config.h
│   │   │   │       │   ├── peripherals.c
│   │   │   │       │   ├── peripherals.h
│   │   │   │       │   ├── pin_mux.c
│   │   │   │       │   └── pin_mux.h
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── mcu_link.mex
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── maxim/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── README.md
│   │   │   ├── boards/
│   │   │   │   ├── apard32690/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32650evkit/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32650fthr/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32651evkit/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32666evkit/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32666fthr/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32690evkit/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── max78002evkit/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── linker/
│   │   │       ├── max32650.ld
│   │   │       ├── max32651.ld
│   │   │       ├── max32665.ld
│   │   │       ├── max32690.ld
│   │   │       └── max78002.ld
│   │   ├── mcx/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── frdm_mcxa153/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── clock_config.c
│   │   │   │   │   ├── clock_config.h
│   │   │   │   │   ├── frdm_mcxa153.mex
│   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   └── pin_mux.h
│   │   │   │   ├── frdm_mcxa156/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── clock_config.c
│   │   │   │   │   ├── clock_config.h
│   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   └── pin_mux.h
│   │   │   │   ├── frdm_mcxn947/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── clock_config.c
│   │   │   │   │   ├── clock_config.h
│   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   └── pin_mux.h
│   │   │   │   └── mcxn947brk/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── clock_config.c
│   │   │   │       ├── clock_config.h
│   │   │   │       ├── pin_mux.c
│   │   │   │       └── pin_mux.h
│   │   │   ├── debug.jlinkscript
│   │   │   ├── drivers/
│   │   │   │   └── spc/
│   │   │   │       ├── fsl_spc.c
│   │   │   │       └── fsl_spc.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── mm32/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── mm32f327x_mb39/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── flash.ld
│   │   │   │   └── mm32f327x_pitaya_lite/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── msp430/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── msp_exp430f5529lp/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── msp432e4/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── msp_exp432e401y/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── nrf/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── adafruit_clue/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── arduino_nano33_ble/
│   │   │   │   │   ├── arduino_nano33_ble.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── circuitplayground_bluefruit/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── feather_nrf52840_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── feather_nrf52840_sense/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── itsybitsy_nrf52840/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── nrf52833dk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── nrf52840dk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── ozone/
│   │   │   │   │       └── nrf52840.jdebug
│   │   │   │   ├── nrf52840dongle/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── nrf52840dongle.ld
│   │   │   │   ├── nrf5340dk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── ozone/
│   │   │   │   │       └── nrf5340.jdebug
│   │   │   │   └── nrf54h20dk/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   ├── nrf52833_xxaa.ld
│   │   │   │   ├── nrf52840_s140_v6.ld
│   │   │   │   ├── nrf52840_xxaa.ld
│   │   │   │   ├── nrf5340_xxaa_application.ld
│   │   │   │   └── nrf54h20_xxaa_application.ld
│   │   │   └── nrfx_config/
│   │   │       ├── nrfx_config.h
│   │   │       ├── nrfx_config_common.h
│   │   │       ├── nrfx_config_ext.h
│   │   │       ├── nrfx_glue.h
│   │   │       └── nrfx_log.h
│   │   ├── nuc100_120/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── nutiny_sdk_nuc120/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── nuc120_flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── nuc121_125/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── nutiny_sdk_nuc121/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── nuc121_flash.ld
│   │   │   │   └── nutiny_sdk_nuc125/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── nuc125_flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── nuc126/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── nutiny_nuc126v/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── nuc126_flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── nuc505/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── nutiny_sdk_nuc505/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── nuc505_flashtoram.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── pic32mz/
│   │   │   ├── boards/
│   │   │   │   ├── olimex_emz64/
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── olimex_emz64.c
│   │   │   │   └── olimex_hmz144/
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── olimex_hmz144.c
│   │   │   ├── family.c
│   │   │   └── family.mk
│   │   ├── ra/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── board_cfg.h
│   │   │   ├── boards/
│   │   │   │   ├── portenta_c33/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra2a1_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra4m1_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra4m3_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra6m1_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra6m5_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ozone/
│   │   │   │   │   │   └── ra6m5.jdebug
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra8m1_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ozone/
│   │   │   │   │   │   ├── Renesas_RA8_TracePins.pex
│   │   │   │   │   │   └── ra8m1.jdebug
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   └── uno_r4/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── ra_cfg/
│   │   │   │       │   └── fsp_cfg/
│   │   │   │       │       ├── bsp/
│   │   │   │       │       │   ├── bsp_cfg.h
│   │   │   │       │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │       │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │       │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │       │       │   └── bsp_pin_cfg.h
│   │   │   │       │       └── r_ioport_cfg.h
│   │   │   │       ├── ra_gen/
│   │   │   │       │   ├── bsp_clock_cfg.h
│   │   │   │       │   ├── common_data.c
│   │   │   │       │   ├── common_data.h
│   │   │   │       │   └── pin_data.c
│   │   │   │       ├── script/
│   │   │   │       │   ├── fsp.ld
│   │   │   │       │   └── memory_regions.ld
│   │   │   │       └── smart_configurator/
│   │   │   │           └── configuration.xml
│   │   │   ├── debug.jlinkscript
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── vector_data.h
│   │   ├── rp2040/
│   │   │   ├── boards/
│   │   │   │   ├── adafruit_feather_rp2040_usb_host/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_fruit_jam/
│   │   │   │   │   ├── adafruit_fruit_jam.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_metro_rp2350/
│   │   │   │   │   ├── adafruit_metro_rp2350.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── feather_rp2040_max3421/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── pico_sdk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── raspberry_pi_pico/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── raspberry_pi_pico2/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   └── raspberry_pi_pico_w/
│   │   │   │       ├── board.cmake
│   │   │   │       └── board.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── pico_sdk_import.cmake
│   │   │   ├── rp2040-openocd.cfg
│   │   │   └── rp2350-openocd.cfg
│   │   ├── rw61x/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── frdm_rw612/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── clock_config.c
│   │   │   │       ├── clock_config.h
│   │   │   │       ├── pin_mux.c
│   │   │   │       └── pin_mux.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── rx/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── gr_citrus/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── gr_citrus.c
│   │   │   │   │   └── r5f5631fd.ld
│   │   │   │   └── rx65n_target/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── r5f565ne.ld
│   │   │   │       └── rx65n_target.c
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── samd11/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── cynthion_d11/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── cynthion_d11.ld
│   │   │   │   └── samd11_xplained/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── samd11d14am_flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── samd2x_l2x/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── atsamd21_xpro/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── samd21j18a_flash.ld
│   │   │   │   ├── atsaml21_xpro/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── saml21j18b_flash.ld
│   │   │   │   ├── circuitplayground_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── circuitplayground_express.ld
│   │   │   │   ├── curiosity_nano/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── samd21g17a_flash.ld
│   │   │   │   ├── cynthion_d21/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── samd21g18a_flash.ld
│   │   │   │   ├── feather_m0_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── feather_m0_express.ld
│   │   │   │   ├── itsybitsy_m0/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── itsybitsy_m0.ld
│   │   │   │   ├── metro_m0_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── metro_m0_express.ld
│   │   │   │   ├── qtpy/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── qtpy.ld
│   │   │   │   ├── saml22_feather/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── saml22_feather.ld
│   │   │   │   ├── seeeduino_xiao/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── seeeduino_xiao.ld
│   │   │   │   ├── sensorwatch_m0/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── sensorwatch_m0.ld
│   │   │   │   ├── sparkfun_samd21_mini_usb/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── sparkfun_samd21_mini_usb.ld
│   │   │   │   └── trinket_m0/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── trinket_m0.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── samd5x_e5x/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── d5035_01/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── same51j19a_flash.ld
│   │   │   │   ├── feather_m4_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── feather_m4_express.ld
│   │   │   │   ├── itsybitsy_m4/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── itsybitsy_m4.ld
│   │   │   │   ├── metro_m4_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── metro_m4_express.ld
│   │   │   │   ├── pybadge/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── pybadge.ld
│   │   │   │   ├── pyportal/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── pyportal.ld
│   │   │   │   └── same54_xplained/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── same54p20a_flash.ld
│   │   │   │       └── same54p20a_sram.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── same7x/
│   │   │   ├── boards/
│   │   │   │   ├── same70_qmtech/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── hpl_pmc_config.h
│   │   │   │   │   ├── hpl_usart_config.h
│   │   │   │   │   ├── hpl_xdmac_config.h
│   │   │   │   │   └── peripheral_clk_config.h
│   │   │   │   └── same70_xplained/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── hpl_pmc_config.h
│   │   │   │       ├── hpl_usart_config.h
│   │   │   │       ├── hpl_xdmac_config.h
│   │   │   │       └── peripheral_clk_config.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── samg/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── samg55_xplained/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── samg55j19_flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── hpl_usart_config.h
│   │   │   └── peripheral_clk_config.h
│   │   ├── stm32c0/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32c071nucleo/
│   │   │   │       ├── STM32C071RBTx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── stm32c071xx_flash.icf
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32c0xx_hal_conf.h
│   │   ├── stm32f0/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32f070rbnucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── stm32F070rbtx_flash.ld
│   │   │   │   ├── stm32f072disco/
│   │   │   │   │   ├── STM32F072RBTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32f072eval/
│   │   │   │       ├── STM32F072VBTx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f0xx_hal_conf.h
│   │   ├── stm32f1/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32f103_bluepill/
│   │   │   │   │   ├── STM32F103X8_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── stm32f103x8_flash.icf
│   │   │   │   ├── stm32f103_mini_2/
│   │   │   │   │   ├── STM32F103XC_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── stm32f103xc_flash.icf
│   │   │   │   └── stm32f103ze_iar/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f1xx_hal_conf.h
│   │   ├── stm32f2/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32f207nucleo/
│   │   │   │       ├── STM32F207ZGTx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f2xx_hal_conf.h
│   │   ├── stm32f3/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32f303disco/
│   │   │   │       ├── STM32F303VCTx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f3xx_hal_conf.h
│   │   ├── stm32f4/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── feather_stm32f405/
│   │   │   │   │   ├── STM32F405RGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── pyboardv11/
│   │   │   │   │   ├── STM32F405RGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f401blackpill/
│   │   │   │   │   ├── STM32F401VCTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f407blackvet/
│   │   │   │   │   ├── STM32F407VETx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f407disco/
│   │   │   │   │   ├── STM32F407VGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f411blackpill/
│   │   │   │   │   ├── STM32F411CEUx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f411disco/
│   │   │   │   │   ├── STM32F411VETx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f412disco/
│   │   │   │   │   ├── STM32F412ZGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f412nucleo/
│   │   │   │   │   ├── STM32F412ZGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32f439nucleo/
│   │   │   │       ├── STM32F439ZITX_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f4xx_hal_conf.h
│   │   ├── stm32f7/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stlinkv3mini/
│   │   │   │   │   ├── STM32F723xE_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f723disco/
│   │   │   │   │   ├── STM32F723xE_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f746disco/
│   │   │   │   │   ├── STM32F746ZGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f746nucleo/
│   │   │   │   │   ├── STM32F746ZGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f767nucleo/
│   │   │   │   │   ├── STM32F767ZITx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32f769disco/
│   │   │   │       ├── STM32F769ZITx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f7xx_hal_conf.h
│   │   ├── stm32g0/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32g0b1nucleo/
│   │   │   │       ├── STM32G0B1RETx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32g0xx_hal_conf.h
│   │   ├── stm32g4/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── b_g474e_dpow1/
│   │   │   │   │   ├── STM32G474RETx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── cubemx/
│   │   │   │   │       └── b_g474e_dpow1.ioc
│   │   │   │   ├── stm32g474nucleo/
│   │   │   │   │   ├── STM32G474RETx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32g491nucleo/
│   │   │   │       ├── STM32G491RETX_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32g4xx_hal_conf.h
│   │   ├── stm32h5/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32h503nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32h563nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── cubemx/
│   │   │   │   │       └── stm32h563nucleo.ioc
│   │   │   │   └── stm32h573i_dk/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   ├── STM32H503xx_FLASH.ld
│   │   │   │   ├── STM32H523xx_FLASH.ld
│   │   │   │   ├── STM32H533xx_FLASH.ld
│   │   │   │   ├── STM32H562xx_FLASH.ld
│   │   │   │   ├── STM32H563xx_FLASH.ld
│   │   │   │   ├── STM32H573xx_FLASH.ld
│   │   │   │   ├── stm32h503xx_flash.icf
│   │   │   │   ├── stm32h523xx_flash.icf
│   │   │   │   ├── stm32h562xx_flash.icf
│   │   │   │   ├── stm32h563xx_flash.icf
│   │   │   │   └── stm32h573xx_flash.icf
│   │   │   └── stm32h5xx_hal_conf.h
│   │   ├── stm32h7/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── daisyseed/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── stm32h750ibkx_flash.ld
│   │   │   │   │   └── stm32h750ibkx_ram.ld
│   │   │   │   ├── stm32h723nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32h743eval/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── cubemx/
│   │   │   │   │   │   └── stm32h743eval.ioc
│   │   │   │   │   └── ozone/
│   │   │   │   │       └── stm32h743.jdebug
│   │   │   │   ├── stm32h743nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── cubemx/
│   │   │   │   │       └── stm32h743nucleo.ioc
│   │   │   │   ├── stm32h745disco/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32h747disco/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32h750_weact/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── stm32h750xx_flash_CM7.ld
│   │   │   │   ├── stm32h750bdk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── stm32h750xx_flash_CM7.ld
│   │   │   │   └── waveshare_openh743i/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   ├── stm32h723xx_flash.ld
│   │   │   │   ├── stm32h743xx_flash.ld
│   │   │   │   ├── stm32h745xx_flash_CM7.ld
│   │   │   │   └── stm32h747xx_flash_CM7.ld
│   │   │   └── stm32h7xx_hal_conf.h
│   │   ├── stm32h7rs/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32h7s3nucleo/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   └── stm32h7s3xx_flash.ld
│   │   │   └── stm32h7rsxx_hal_conf.h
│   │   ├── stm32l0/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32l052dap52/
│   │   │   │   │   ├── STM32L052K8Ux_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32l0538disco/
│   │   │   │       ├── STM32L053C8Tx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32l0xx_hal_conf.h
│   │   ├── stm32l4/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32l412nucleo/
│   │   │   │   │   ├── STM32L412KBUx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32l476disco/
│   │   │   │   │   ├── STM32L476VGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32l496nucleo/
│   │   │   │   │   ├── STM32L496ZGTX_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32l4p5nucleo/
│   │   │   │   │   ├── STM32L4P5ZGTX_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32l4r5nucleo/
│   │   │   │       ├── STM32L4RXxI_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32l4xx_hal_conf.h
│   │   ├── stm32n6/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32n6570dk/
│   │   │   │   │   ├── STM32N657XX_AXISRAM2_fsbl.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32n657nucleo/
│   │   │   │       ├── STM32N657XX_AXISRAM2_fsbl.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── partition_stm32n657xx.h
│   │   │   ├── setup_iar.mac
│   │   │   ├── stm32n6.jdebug
│   │   │   └── stm32n6xx_hal_conf.h
│   │   ├── stm32u0/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32u083cdk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32u083nucleo/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── cubemx/
│   │   │   │           └── cubemx.ioc
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   ├── STM32U083xx_FLASH.ld
│   │   │   │   └── stm32u083xx_flash.icf
│   │   │   └── stm32u0xx_hal_conf.h
│   │   ├── stm32u5/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── b_u585i_iot2a/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32u545nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32u575eval/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32u575nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32u5a5nucleo/
│   │   │   │       ├── STM32U5A5ZJTXQ_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── cubemx/
│   │   │   │           └── stm32u5a5nucleo.ioc
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   ├── STM32U535xx_FLASH.ld
│   │   │   │   ├── STM32U545xx_FLASH.ld
│   │   │   │   ├── STM32U575xx_FLASH.ld
│   │   │   │   ├── STM32U585xx_FLASH.ld
│   │   │   │   ├── STM32U595xx_FLASH.ld
│   │   │   │   ├── STM32U599xx_FLASH.ld
│   │   │   │   ├── STM32U5A9xx_FLASH.ld
│   │   │   │   ├── STM32U5F7xx_FLASH.ld
│   │   │   │   ├── STM32U5F9xx_FLASH.ld
│   │   │   │   ├── STM32U5G7xx_FLASH.ld
│   │   │   │   └── STM32U5G9xx_FLASH.ld
│   │   │   └── stm32u5xx_hal_conf.h
│   │   ├── stm32wb/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32wb55nucleo/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── stm32wb55xx_flash_cm4.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32wbxx_hal_conf.h
│   │   ├── stm32wba/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32wba_nucleo/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   └── STM32WBA65xx_FLASH_ns.ld
│   │   │   └── stm32wbaxx_hal_conf.h
│   │   ├── tm4c/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── ek_tm4c123gxl/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ek_tm4c123gxl.ccxml
│   │   │   │   │   └── tm4c123.ld
│   │   │   │   └── ek_tm4c1294xl/
│   │   │   │       ├── TM4C1294NC.icf
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── tm4c1294nc.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── xmc4000/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── xmc4500_relax/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── xmc4700_relax/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   └── zephyr_board_aliases.cmake
│   └── mcu/
│       ├── bridgetek/
│       │   └── ft9xx/
│       │       ├── Readme.md
│       │       └── scripts/
│       │           ├── crt0.S
│       │           └── ldscript.ld
│       ├── dialog/
│       │   ├── README.md
│       │   └── da1469x/
│       │       ├── SDK_10.0.8.105/
│       │       │   └── sdk/
│       │       │       └── bsp/
│       │       │           ├── arm_license.txt
│       │       │           └── include/
│       │       │               ├── DA1469xAB.h
│       │       │               ├── cmsis_compiler.h
│       │       │               ├── cmsis_gcc.h
│       │       │               ├── cmsis_version.h
│       │       │               ├── core_cm0.h
│       │       │               ├── core_cm33.h
│       │       │               ├── mpu_armv8.h
│       │       │               ├── system_ARMCM0.h
│       │       │               └── system_DA1469x.h
│       │       ├── da1469x.ld
│       │       ├── include/
│       │       │   ├── hal/
│       │       │   │   └── hal_gpio.h
│       │       │   └── mcu/
│       │       │       ├── da1469x_clock.h
│       │       │       ├── da1469x_hal.h
│       │       │       └── mcu.h
│       │       └── src/
│       │           ├── da1469x_clock.c
│       │           ├── hal_gpio.c
│       │           ├── hal_system.c
│       │           ├── hal_system_start.c
│       │           └── system_da1469x.c
│       ├── nordic/
│       │   └── nrf5x/
│       │       └── s140_nrf52_6.1.1_API/
│       │           └── include/
│       │               ├── ble.h
│       │               ├── ble_err.h
│       │               ├── ble_gap.h
│       │               ├── ble_gatt.h
│       │               ├── ble_gattc.h
│       │               ├── ble_gatts.h
│       │               ├── ble_hci.h
│       │               ├── ble_l2cap.h
│       │               ├── ble_ranges.h
│       │               ├── ble_types.h
│       │               ├── nrf52/
│       │               │   └── nrf_mbr.h
│       │               ├── nrf_error.h
│       │               ├── nrf_error_sdm.h
│       │               ├── nrf_error_soc.h
│       │               ├── nrf_nvic.h
│       │               ├── nrf_sdm.h
│       │               ├── nrf_soc.h
│       │               └── nrf_svc.h
│       └── sony/
│           └── cxd56/
│               ├── mkspk/
│               │   ├── .gitignore
│               │   ├── Makefile
│               │   ├── clefia.c
│               │   ├── clefia.h
│               │   ├── elf32.h
│               │   ├── mkspk.c
│               │   └── mkspk.h
│               └── tools/
│                   ├── flash_writer.py
│                   └── xmodem.py
├── lib/
│   ├── SEGGER_RTT/
│   │   ├── Config/
│   │   │   └── SEGGER_RTT_Conf.h
│   │   ├── LICENSE.md
│   │   ├── README.md
│   │   └── RTT/
│   │       ├── SEGGER_RTT.c
│   │       ├── SEGGER_RTT.h
│   │       ├── SEGGER_RTT_ASM_ARMv7M.S
│   │       └── SEGGER_RTT_printf.c
│   ├── embedded-cli/
│   │   └── embedded_cli.h
│   ├── fatfs/
│   │   ├── LICENSE.txt
│   │   └── source/
│   │       ├── 00history.txt
│   │       ├── 00readme.txt
│   │       ├── diskio.c
│   │       ├── diskio.h
│   │       ├── ff.c
│   │       ├── ff.h
│   │       ├── ffconf.h
│   │       ├── ffsystem.c
│   │       └── ffunicode.c
│   ├── networking/
│   │   ├── dhserver.c
│   │   ├── dhserver.h
│   │   ├── dnserver.c
│   │   ├── dnserver.h
│   │   ├── ndis.h
│   │   ├── rndis_protocol.h
│   │   └── rndis_reports.c
│   └── rt-thread/
│       ├── SConscript
│       ├── port/
│       │   └── msc_device_port.c
│       ├── tusb_config.h
│       └── tusb_rt_thread_port.c
├── library.json
├── pkg.yml
├── repository.yml
├── sonar-project.properties
├── src/
│   ├── CMakeLists.txt
│   ├── class/
│   │   ├── audio/
│   │   │   ├── audio.h
│   │   │   ├── audio_device.c
│   │   │   └── audio_device.h
│   │   ├── bth/
│   │   │   ├── bth_device.c
│   │   │   └── bth_device.h
│   │   ├── cdc/
│   │   │   ├── cdc.h
│   │   │   ├── cdc_device.c
│   │   │   ├── cdc_device.h
│   │   │   ├── cdc_host.c
│   │   │   ├── cdc_host.h
│   │   │   ├── cdc_rndis.h
│   │   │   └── serial/
│   │   │       ├── ch34x.h
│   │   │       ├── cp210x.h
│   │   │       ├── ftdi_sio.h
│   │   │       └── pl2303.h
│   │   ├── dfu/
│   │   │   ├── dfu.h
│   │   │   ├── dfu_device.c
│   │   │   ├── dfu_device.h
│   │   │   ├── dfu_rt_device.c
│   │   │   └── dfu_rt_device.h
│   │   ├── hid/
│   │   │   ├── hid.h
│   │   │   ├── hid_device.c
│   │   │   ├── hid_device.h
│   │   │   ├── hid_host.c
│   │   │   └── hid_host.h
│   │   ├── midi/
│   │   │   ├── README_midi_host.md
│   │   │   ├── midi.h
│   │   │   ├── midi_device.c
│   │   │   ├── midi_device.h
│   │   │   ├── midi_host.c
│   │   │   └── midi_host.h
│   │   ├── msc/
│   │   │   ├── msc.h
│   │   │   ├── msc_device.c
│   │   │   ├── msc_device.h
│   │   │   ├── msc_host.c
│   │   │   └── msc_host.h
│   │   ├── mtp/
│   │   │   ├── mtp.h
│   │   │   ├── mtp_device.c
│   │   │   └── mtp_device.h
│   │   ├── net/
│   │   │   ├── ecm_rndis_device.c
│   │   │   ├── ncm.h
│   │   │   ├── ncm_device.c
│   │   │   └── net_device.h
│   │   ├── printer/
│   │   │   ├── printer.h
│   │   │   ├── printer_device.c
│   │   │   └── printer_device.h
│   │   ├── usbtmc/
│   │   │   ├── usbtmc.h
│   │   │   ├── usbtmc_device.c
│   │   │   └── usbtmc_device.h
│   │   ├── vendor/
│   │   │   ├── vendor_device.c
│   │   │   ├── vendor_device.h
│   │   │   ├── vendor_host.c
│   │   │   └── vendor_host.h
│   │   └── video/
│   │       ├── video.h
│   │       ├── video_device.c
│   │       └── video_device.h
│   ├── common/
│   │   ├── tusb_common.h
│   │   ├── tusb_compiler.h
│   │   ├── tusb_debug.h
│   │   ├── tusb_fifo.c
│   │   ├── tusb_fifo.h
│   │   ├── tusb_mcu.h
│   │   ├── tusb_private.h
│   │   ├── tusb_types.h
│   │   └── tusb_verify.h
│   ├── device/
│   │   ├── dcd.h
│   │   ├── usbd.c
│   │   ├── usbd.h
│   │   ├── usbd_control.c
│   │   └── usbd_pvt.h
│   ├── host/
│   │   ├── hcd.h
│   │   ├── hub.c
│   │   ├── hub.h
│   │   ├── usbh.c
│   │   ├── usbh.h
│   │   └── usbh_pvt.h
│   ├── osal/
│   │   ├── osal.h
│   │   ├── osal_freertos.h
│   │   ├── osal_mynewt.h
│   │   ├── osal_none.h
│   │   ├── osal_pico.h
│   │   ├── osal_rtthread.h
│   │   ├── osal_rtx4.h
│   │   ├── osal_threadx.h
│   │   └── osal_zephyr.h
│   ├── portable/
│   │   ├── analog/
│   │   │   └── max3421/
│   │   │       ├── hcd_max3421.c
│   │   │       └── hcd_max3421.h
│   │   ├── bridgetek/
│   │   │   └── ft9xx/
│   │   │       └── dcd_ft9xx.c
│   │   ├── chipidea/
│   │   │   ├── ci_fs/
│   │   │   │   ├── ci_fs_kinetis.h
│   │   │   │   ├── ci_fs_mcx.h
│   │   │   │   ├── ci_fs_type.h
│   │   │   │   └── dcd_ci_fs.c
│   │   │   └── ci_hs/
│   │   │       ├── ci_hs_hpm.h
│   │   │       ├── ci_hs_imxrt.h
│   │   │       ├── ci_hs_lpc18_43.h
│   │   │       ├── ci_hs_mcx.h
│   │   │       ├── ci_hs_rw61x.h
│   │   │       ├── ci_hs_type.h
│   │   │       ├── dcd_ci_hs.c
│   │   │       └── hcd_ci_hs.c
│   │   ├── dialog/
│   │   │   └── da146xx/
│   │   │       └── dcd_da146xx.c
│   │   ├── ehci/
│   │   │   ├── ehci.c
│   │   │   ├── ehci.h
│   │   │   └── ehci_api.h
│   │   ├── mentor/
│   │   │   └── musb/
│   │   │       ├── dcd_musb.c
│   │   │       ├── hcd_musb.c
│   │   │       ├── musb_max32.h
│   │   │       ├── musb_ti.h
│   │   │       └── musb_type.h
│   │   ├── microchip/
│   │   │   ├── pic/
│   │   │   │   ├── README.md
│   │   │   │   └── dcd_pic.c
│   │   │   ├── pic32mz/
│   │   │   │   ├── dcd_pic32mz.c
│   │   │   │   └── usbhs_registers.h
│   │   │   ├── samd/
│   │   │   │   ├── dcd_samd.c
│   │   │   │   └── hcd_samd.c
│   │   │   ├── samg/
│   │   │   │   └── dcd_samg.c
│   │   │   └── samx7x/
│   │   │       ├── dcd_samx7x.c
│   │   │       └── samx7x_common.h
│   │   ├── mindmotion/
│   │   │   └── mm32/
│   │   │       └── dcd_mm32f327x_otg.c
│   │   ├── nordic/
│   │   │   └── nrf5x/
│   │   │       └── dcd_nrf5x.c
│   │   ├── nuvoton/
│   │   │   ├── nuc120/
│   │   │   │   └── dcd_nuc120.c
│   │   │   ├── nuc121/
│   │   │   │   └── dcd_nuc121.c
│   │   │   └── nuc505/
│   │   │       └── dcd_nuc505.c
│   │   ├── nxp/
│   │   │   ├── khci/
│   │   │   │   ├── dcd_khci.c
│   │   │   │   └── hcd_khci.c
│   │   │   ├── lpc17_40/
│   │   │   │   ├── dcd_lpc17_40.c
│   │   │   │   └── dcd_lpc17_40.h
│   │   │   ├── lpc_ip3511/
│   │   │   │   └── dcd_lpc_ip3511.c
│   │   │   └── lpc_ip3516/
│   │   │       ├── hcd_lpc_ip3516.c
│   │   │       └── hcd_lpc_ip3516.h
│   │   ├── ohci/
│   │   │   ├── ohci.c
│   │   │   ├── ohci.h
│   │   │   └── ohci_nxp.h
│   │   ├── raspberrypi/
│   │   │   ├── pio_usb/
│   │   │   │   ├── dcd_pio_usb.c
│   │   │   │   └── hcd_pio_usb.c
│   │   │   └── rp2040/
│   │   │       ├── dcd_rp2040.c
│   │   │       ├── hcd_rp2040.c
│   │   │       ├── rp2040_usb.c
│   │   │       └── rp2040_usb.h
│   │   ├── renesas/
│   │   │   └── rusb2/
│   │   │       ├── dcd_rusb2.c
│   │   │       ├── hcd_rusb2.c
│   │   │       ├── rusb2_common.c
│   │   │       ├── rusb2_common.h
│   │   │       ├── rusb2_ra.h
│   │   │       ├── rusb2_rx.h
│   │   │       └── rusb2_type.h
│   │   ├── sony/
│   │   │   └── cxd56/
│   │   │       └── dcd_cxd56.c
│   │   ├── st/
│   │   │   ├── stm32_fsdev/
│   │   │   │   ├── dcd_stm32_fsdev.c
│   │   │   │   ├── fsdev_at32.h
│   │   │   │   ├── fsdev_ch32.h
│   │   │   │   ├── fsdev_common.c
│   │   │   │   ├── fsdev_common.h
│   │   │   │   ├── fsdev_stm32.h
│   │   │   │   └── hcd_stm32_fsdev.c
│   │   │   └── typec/
│   │   │       └── typec_stm32.c
│   │   ├── sunxi/
│   │   │   ├── dcd_sunxi_musb.c
│   │   │   └── musb_def.h
│   │   ├── synopsys/
│   │   │   └── dwc2/
│   │   │       ├── dcd_dwc2.c
│   │   │       ├── dwc2_at32.h
│   │   │       ├── dwc2_bcm.h
│   │   │       ├── dwc2_common.c
│   │   │       ├── dwc2_common.h
│   │   │       ├── dwc2_efm32.h
│   │   │       ├── dwc2_esp32.h
│   │   │       ├── dwc2_gd32.h
│   │   │       ├── dwc2_info.md
│   │   │       ├── dwc2_info.py
│   │   │       ├── dwc2_nrf.h
│   │   │       ├── dwc2_stm32.h
│   │   │       ├── dwc2_type.h
│   │   │       ├── dwc2_xmc.h
│   │   │       └── hcd_dwc2.c
│   │   ├── template/
│   │   │   ├── dcd_template.c
│   │   │   └── hcd_template.c
│   │   ├── ti/
│   │   │   └── msp430x5xx/
│   │   │       └── dcd_msp430x5xx.c
│   │   ├── valentyusb/
│   │   │   └── eptri/
│   │   │       ├── dcd_eptri.c
│   │   │       └── dcd_eptri.h
│   │   └── wch/
│   │       ├── ch32_usbfs_reg.h
│   │       ├── ch32_usbhs_reg.h
│   │       ├── dcd_ch32_usbfs.c
│   │       ├── dcd_ch32_usbhs.c
│   │       └── hcd_ch32_usbfs.c
│   ├── tinyusb.mk
│   ├── tusb.c
│   ├── tusb.h
│   ├── tusb_option.h
│   └── typec/
│       ├── pd_types.h
│       ├── tcd.h
│       ├── usbc.c
│       └── usbc.h
├── test/
│   ├── fuzz/
│   │   ├── dcd_fuzz.cc
│   │   ├── device/
│   │   │   ├── cdc/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── Makefile
│   │   │   │   └── src/
│   │   │   │       ├── fuzz.cc
│   │   │   │       ├── tusb_config.h
│   │   │   │       └── usb_descriptors.cc
│   │   │   ├── msc/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── Makefile
│   │   │   │   └── src/
│   │   │   │       ├── fuzz.cc
│   │   │   │       ├── tusb_config.h
│   │   │   │       └── usb_descriptors.cc
│   │   │   └── net/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── Makefile
│   │   │       └── src/
│   │   │           ├── arch/
│   │   │           │   └── cc.h
│   │   │           ├── fuzz.cc
│   │   │           ├── lwipopts.h
│   │   │           ├── tusb_config.h
│   │   │           └── usb_descriptors.cc
│   │   ├── dicts/
│   │   │   └── cdc.dict
│   │   ├── fuzz.cc
│   │   ├── fuzz.h
│   │   ├── fuzz_private.h
│   │   ├── make.mk
│   │   ├── msc_fuzz.cc
│   │   ├── net_fuzz.cc
│   │   ├── rules.mk
│   │   └── usbd_fuzz.cc
│   ├── hil/
│   │   ├── hfp.json
│   │   ├── hil_ci_set_matrix.py
│   │   ├── hil_test.py
│   │   ├── pymtp.py
│   │   ├── requirements.txt
│   │   └── tinyusb.json
│   └── unit-test/
│       ├── CMakeLists.txt
│       ├── ceedling
│       ├── project.yml
│       └── test/
│           ├── device/
│           │   ├── msc/
│           │   │   └── test_msc_device.c
│           │   └── usbd/
│           │       └── test_usbd.c
│           ├── support/
│           │   └── tusb_config.h
│           ├── test_common_func.c
│           └── test_fifo.c
├── tools/
│   ├── build.py
│   ├── build_utils.py
│   ├── codespell/
│   │   ├── exclude-file.txt
│   │   └── ignore-words.txt
│   ├── file2carray.py
│   ├── gen_doc.py
│   ├── gen_presets.py
│   ├── get_deps.py
│   ├── iar_gen.py
│   ├── iar_template.ipcf
│   ├── make_release.py
│   ├── metrics.py
│   ├── mksunxi.py
│   ├── pcapng_to_corpus.py
│   └── usb_drivers/
│       └── tinyusb_win_usbser.inf
└── version.yml

================================================
FILE CONTENTS
================================================

================================================
FILE: .circleci/config.yml
================================================
version: 2.1

setup: true
orbs:
  continuation: circleci/continuation@1

jobs:
  set-matrix:
    executor: continuation/default
    docker:
      - image: cimg/base:current
    resource_class: large
    steps:
      - checkout
      - run:
          name: Set matrix
          command: |
            MATRIX_JSON=$(python .github/workflows/ci_set_matrix.py)
            echo "MATRIX_JSON=$MATRIX_JSON"

            BUILDSYSTEM_LIST=(
              "cmake"
              "make"
            )

            TOOLCHAIN_LIST=(
              "aarch64-gcc"
              "arm-clang"
              "arm-gcc"
              "esp-idf"
              "ft9xx-gcc"
              "msp430-gcc"
              "riscv-gcc"
            )

            # only build IAR if not forked PR, since IAR token is not shared
            if [ -z $CIRCLE_PR_USERNAME ]; then
              TOOLCHAIN_LIST+=("arm-iar")
            fi

            gen_build_entry() {
              local build_system="$1"
              local toolchain="$2"
              local family="$3"
              local build_args=""

              if [[ "$toolchain" == "arm-iar" || "$build_system" == "make" ]]; then
                build_args="--one-random"
              fi

              if [[ "$toolchain" == "esp-idf" ]]; then
                echo "      - build-vm:" >> .circleci/config2.yml
              else
                echo "      - build:" >> .circleci/config2.yml
              fi
              echo "          matrix:" >> .circleci/config2.yml
              echo "            alias: build-${build_system}-${toolchain}" >> .circleci/config2.yml
              echo "            parameters:" >> .circleci/config2.yml
              echo "              build-system: ['$build_system']" >> .circleci/config2.yml
              echo "              toolchain: ['$toolchain']" >> .circleci/config2.yml
              echo "              family: $family" >> .circleci/config2.yml
              echo "              resource_class: ['large']" >> .circleci/config2.yml
              echo "              build-args: ['$build_args']" >> .circleci/config2.yml
            }

            # Collect all build aliases for code-metrics requires (cmake only, exclude esp-idf)
            BUILD_ALIASES=()

            for build_system in "${BUILDSYSTEM_LIST[@]}"; do
              for toolchain in "${TOOLCHAIN_LIST[@]}"; do
                # make does not support these toolchains
                if [ "$build_system" == "make" ] && { [ "$toolchain" == "arm-clang" ] || [ "$toolchain" == "arm-iar" ] || [ "$toolchain" == "esp-idf" ]; }; then
                  continue
                fi

                FAMILY=$(echo $MATRIX_JSON | jq -r ".\"$toolchain\"")
                echo "FAMILY_${toolchain}=$FAMILY"
                gen_build_entry "$build_system" "$toolchain" "$FAMILY"

                # Only add cmake builds: excluding esp-idf or build_args="--one-random" to metrics requirements
                if [ "$build_system" == "cmake" ] && [ "$toolchain" != "esp-idf" ] && [ "$toolchain" != "arm-iar" ]; then
                  BUILD_ALIASES+=("build-${build_system}-${toolchain}")
                fi
              done
            done

            # Add code-metrics job that requires all build jobs
            echo "      - code-metrics:" >> .circleci/config2.yml
            echo "          requires:" >> .circleci/config2.yml
            for alias in "${BUILD_ALIASES[@]}"; do
              echo "            - $alias" >> .circleci/config2.yml
            done

      - continuation/continue:
          configuration_path: .circleci/config2.yml

workflows:
  set-matrix:
    jobs:
      - set-matrix


================================================
FILE: .circleci/config2.yml
================================================
version: 2.1

commands:
  setup-toolchain:
    parameters:
        toolchain:
            type: string

    steps:
      - run:
          name: Set toolchain url and key
          command: |
            toolchain_url=$(jq -r '."<< parameters.toolchain >>"' .github/actions/setup_toolchain/toolchain.json)
            # only cache if not a github link
            if [[ $toolchain_url != "https://github.com"* ]]; then
              echo "<< parameters.toolchain >>-$toolchain_url" > toolchain_key
            fi
            echo "export toolchain_url=$toolchain_url" >> $BASH_ENV

      - restore_cache:
          name: Restore Toolchain Cache
          key: deps-{{ checksum "toolchain_key" }}
          paths:
            - ~/cache/<< parameters.toolchain >>

      - run:
          name: Install Toolchain
          command: |
            # download if folder does not exist (not cached)
            if [ ! -d ~/cache/<< parameters.toolchain >> ]; then
              mkdir -p ~/cache/<< parameters.toolchain >>
              if [[ << parameters.toolchain >> == rx-gcc ]]; then
                wget --progress=dot:giga $toolchain_url -O toolchain.run
                chmod +x toolchain.run
                ./toolchain.run -p ~/cache/<< parameters.toolchain >>/gnurx -y
              elif [[ << parameters.toolchain >> == ft9xx-gcc ]]; then
                wget --progress=dot:giga $toolchain_url -O ~/cache/<< parameters.toolchain >>/ft9xxtoolchain.deb
              elif [[ << parameters.toolchain >> == arm-iar ]]; then
                wget --progress=dot:giga https://netstorage.iar.com/FileStore/STANDARD/001/003/926/iar-lmsc-tools_1.8_amd64.deb -O ~/cache/<< parameters.toolchain >>/iar-lmsc-tools.deb
                wget --progress=dot:giga $toolchain_url -O ~/cache/<< parameters.toolchain >>/toolchain.deb
              else
                wget --progress=dot:giga $toolchain_url -O toolchain.tar.gz
                tar -C ~/cache/<< parameters.toolchain >> -xaf toolchain.tar.gz
              fi
            fi

            # Add toolchain to PATH
            if [[ << parameters.toolchain >> == arm-iar ]]; then
              # Install IAR since we only cache deb file
              sudo dpkg -i ~/cache/<< parameters.toolchain >>/iar-lmsc-tools.deb
              sudo dpkg --ignore-depends=libusb-1.0-0 -i ~/cache/<< parameters.toolchain >>/toolchain.deb
              echo "export PATH=$PATH:/opt/iar/cxarm/arm/bin" >> $BASH_ENV
            elif [[ << parameters.toolchain >> == ft9xx-gcc ]]; then
              sudo apt install -y ~/cache/<< parameters.toolchain >>/ft9xxtoolchain.deb
              echo "export PATH=$PATH:/opt/ft32/bin" >> $BASH_ENV
            else
              echo "export PATH=$PATH:`echo ~/cache/<< parameters.toolchain >>/*/bin`" >> $BASH_ENV
            fi

      - save_cache:
          name: Save Toolchain Cache
          key: deps-{{ checksum "toolchain_key" }}
          paths:
            - ~/cache/<< parameters.toolchain >>

  build:
    parameters:
      build-system:
        type: string
      toolchain:
        type: string
      family:
        type: string
      build-args:
        type: string
        default: ""

    steps:
      - checkout
      - run:
          name: Get Dependencies
          command: |
            python tools/get_deps.py << parameters.family >>

            # Install ninja  if cmake build system
            if [ << parameters.build-system >> == "cmake" ]; then
              NINJA_URL=https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip
              wget $NINJA_URL -O ninja-linux.zip
              unzip ninja-linux.zip -d ~/bin
            fi

            # rx-gcc is 32-bit binary
            if [[ << parameters.toolchain >> == rx-gcc ]]; then
              sudo dpkg --add-architecture i386
              sudo apt update
              sudo apt install libc6:i386 libstdc++6:i386 zlib1g:i386
            fi

            # Install Pico SDK
            if [ << parameters.family >> == "rp2040" ]; then
              git clone --depth 1 https://github.com/raspberrypi/pico-sdk.git ~/pico-sdk
              echo "export PICO_SDK_PATH=~/pico-sdk" >> $BASH_ENV
            fi

      - when:
          condition:
            not:
              equal: [esp-idf, << parameters.toolchain >>]
          steps:
            - setup-toolchain:
                toolchain: << parameters.toolchain >>

      - run:
          name: Build
          no_output_timeout: 20m
          command: |
            if [ << parameters.toolchain >> == esp-idf ]; then
              docker run --rm -v $PWD:/project -w /project espressif/idf:v5.5.3 python tools/build.py << parameters.build-args >> --target all << parameters.family >>
            else
              # Toolchain option default is gcc
              if [ << parameters.toolchain >> == arm-clang ]; then
                TOOLCHAIN_OPTION="--toolchain clang"
              elif [ << parameters.toolchain >> == arm-iar ]; then
                TOOLCHAIN_OPTION="--toolchain iar"
                iccarm --version
              elif [ << parameters.toolchain >> == arm-gcc ]; then
                TOOLCHAIN_OPTION="--toolchain gcc"
              fi

              # circleci docker return $nproc as 36 core, limit parallel to 4 (resource-class = large)
              # Required for IAR, also prevent crashed/killed by docker
              BUILD_PY_ARGS="-s << parameters.build-system >> $TOOLCHAIN_OPTION -j 4 << parameters.build-args >> --target all"
              if [ << parameters.build-system >> == "cmake" ]; then
                BUILD_PY_ARGS="$BUILD_PY_ARGS --target tinyusb_metrics"
              fi
              python tools/build.py $BUILD_PY_ARGS << parameters.family >>
            fi

      # Only collect and persist metrics for cmake builds (excluding esp-idf and --one-random)
      - when:
          condition:
            and:
              - equal: [ cmake, << parameters.build-system >> ]
              - not:
                  equal: [ esp-idf, << parameters.toolchain >> ]
              - not:
                  equal: [ arm-iar, << parameters.toolchain >> ]
          steps:
            - run:
                name: Collect Metrics
                command: |
                  # Create unique directory per toolchain to avoid workspace conflicts
                  METRICS_DIR="/tmp/metrics/<< parameters.toolchain >>"
                  mkdir -p "${METRICS_DIR}"
                  # Copy all metrics.json files
                  for f in cmake-build/cmake-build-*/metrics.json; do
                    if [ -f "$f" ]; then
                      BOARD_DIR=$(dirname "$f" | xargs basename)
                      cp "$f" "${METRICS_DIR}/${BOARD_DIR}.json"
                    fi
                  done

            - persist_to_workspace:
                root: /tmp
                paths:
                  - metrics/<< parameters.toolchain >>

jobs:
  # Build using docker
  build:
    parameters:
      resource_class:
        type: string
        default: large
      build-system:
        type: string
      toolchain:
        type: string
      family:
        type: string
      build-args:
        type: string
        default: ""

    docker:
      - image: cimg/base:current
    working_directory: ~/project/tinyusb
    resource_class: << parameters.resource_class >>

    steps:
      - build:
          build-system: << parameters.build-system >>
          toolchain: << parameters.toolchain >>
          family: << parameters.family >>
          build-args: << parameters.build-args >>

  # Build using VM
  build-vm:
    parameters:
      resource_class:
        type: string
        default: large
      build-system:
        type: string
      toolchain:
        type: string
      family:
        type: string
      build-args:
        type: string
        default: ""

    machine:
      image: ubuntu-2404:current
    working_directory: ~/project/tinyusb
    resource_class: << parameters.resource_class >>

    steps:
      - build:
          build-system: << parameters.build-system >>
          toolchain: << parameters.toolchain >>
          family: << parameters.family >>
          build-args: << parameters.build-args >>

  # Aggregate code metrics from all builds
  code-metrics:
    docker:
      - image: cimg/python:3.12
    resource_class: large
    steps:
      - checkout
      - attach_workspace:
          at: /tmp

      - run:
          name: Aggregate Code Metrics
          command: |
            python tools/get_deps.py
            # Combine all metrics files from all toolchain subdirectories
            ls -R /tmp/metrics
            if ls /tmp/metrics/*/*.json 1> /dev/null 2>&1; then
              python tools/metrics.py combine -j -m -f tinyusb/src /tmp/metrics/*/*.json
            else
              echo "No metrics files found"
              exit 1
            fi

      - store_artifacts:
          path: metrics.json
          destination: metrics.json

      # Compare with base master metrics on PR branches
      - when:
          condition:
            not:
              equal: [ master, << pipeline.git.branch >> ]
          steps:
            - run:
                name: Download Base Branch Metrics
                command: |
                  # Download metrics.json artifact from the latest successful build on master branch
                  mkdir -p base-metrics
                  # Use CircleCI API to get the latest artifact
                  curl -s -L "https://dl.circleci.com/api/v2/project/gh/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/latest/artifacts?branch=master&filter=successful" \
                    -H "Circle-Token: ${CIRCLE_TOKEN:-}" | \
                    jq -r '.items[] | select(.path == "metrics.json") | .url' | \
                    head -1 | xargs -I {} curl -s -L -o base-metrics/metrics.json {} || true

            - run:
                name: Compare with Base Branch
                command: |
                  if [ -f base-metrics/metrics.json ]; then
                    python tools/metrics.py compare -f tinyusb/src base-metrics/metrics.json metrics.json
                    cat metrics_compare.md
                  else
                    echo "No base metrics found, skipping comparison"
                    cp metrics.md metrics_compare.md
                  fi

            - store_artifacts:
                path: metrics_compare.md
                destination: metrics_compare.md

workflows:
  build:
    jobs:
# The jobs below are populated dynamically by config.yml set-matrix job
# Example entries that will be generated:
#      - build:
#          matrix:
#            alias: build-cmake-arm-gcc
#            parameters:
#              toolchain: [ 'arm-gcc' ]
#              build-system: [ 'cmake' ]
#              family: [ 'nrf' ]
#              resource_class: ['large']
#      - code-metrics:
#          requires:
#            - build-cmake-arm-gcc


================================================
FILE: .clang-format
================================================
---
Language: Cpp
BasedOnStyle: LLVM
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments:
  Enabled: true
  AcrossEmptyLines: false
  AcrossComments: false
AlignConsecutiveBitFields:
  Enabled: true
  AcrossEmptyLines: false
  AcrossComments: false
AlignConsecutiveDeclarations:
  Enabled: true
  AcrossEmptyLines: false
  AcrossComments: false
AlignConsecutiveMacros:
  Enabled: true
  AcrossEmptyLines: true
  AcrossComments: false
AlignConsecutiveShortCaseStatements:
  Enabled: true
  AcrossEmptyLines: true
  AcrossComments: true
  AlignCaseColons: false
AlignEscapedNewlines: LeftWithLastLine
AlignOperands: true
AlignTrailingComments:
  Kind: Always
  OverEmptyLines: 2
AllowAllArgumentsOnNextLine: false
AllowAllConstructorInitializersOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseExpressionOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: Never
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: true
BreakBeforeBraces: Custom
BraceWrapping:
  AfterCaseLabel: false
  AfterClass: false
  AfterControlStatement: false
  AfterEnum: false
  AfterFunction: false
  AfterNamespace: false
  AfterStruct: false
  AfterUnion: false
  AfterExternBlock: false
  BeforeCatch: true
  BeforeElse: false
  BeforeLambdaBody: false
  BeforeWhile: false
  SplitEmptyFunction: true
  SplitEmptyRecord: true
  SplitEmptyNamespace: true
BracedInitializerIndentWidth: 2
BreakBeforeBinaryOperators: None
BreakConstructorInitializers: AfterColon
BreakConstructorInitializersBeforeComma: false
ContinuationIndentWidth: 2
ColumnLimit: 120
ConstructorInitializerAllOnOneLineOrOnePerLine: false
Cpp11BracedListStyle: true
IncludeBlocks: Preserve
IncludeCategories:
  - Regex: '^<.*'
    Priority: 1
  - Regex: '^".*'
    Priority: 2
  - Regex: '.*'
    Priority: 3
IncludeIsMainRegex: '([-_](test|unittest))?$'
IndentPPDirectives: BeforeHash
InsertBraces: true
IndentCaseLabels: true
InsertNewlineAtEOF: true
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 2
NamespaceIndentation: All
PenaltyBreakBeforeFirstCallParameter: 1000000
PenaltyBreakOpenParenthesis: 1000000
PPIndentWidth: 2
QualifierAlignment: Custom
QualifierOrder: ['static', 'const', 'volatile', 'restrict', 'type']
SpaceAfterTemplateKeyword: false
SpaceBeforeRangeBasedForLoopColon: false
SpaceInEmptyParentheses: false
SpacesInAngles: false
SpacesInConditionalStatement: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SortIncludes: false
TabWidth: 2
...


================================================
FILE: .codespellrc
================================================
# See: https://github.com/codespell-project/codespell#using-a-config-file
[codespell]
# In the event of a false positive, add the problematic word, in all lowercase, to 'ignore-words.txt' (one word per line).
# Or copy & paste the whole problematic line to 'exclude-file.txt'
ignore-words = tools/codespell/ignore-words.txt
exclude-file = tools/codespell/exclude-file.txt
check-filenames =
check-hidden =
count =
skip = *.rb,.cproject,.git,./lib,./examples/*/*/_build,./examples/*/*/ses,./examples/*/*/ozone,./hw/mcu,./tests_obsolete


================================================
FILE: .gitattributes
================================================
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto

*.c text
*.cpp text
*.h text
*.icf text
*.js text
*.json text
*.ld text
*.md text
*.mk text
*.py text
*.rst text
*.s text
*.txt text
*.xml text
*.yml text

Makefile text

# Windows-only Visual Studio things

*.sln        text eol=crlf
*.csproj     text eol=crlf


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: Bug Report
description: Report a problem with TinyUSB
labels: 'Bug 🐞'
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report!
        It's okay to leave some blank if it doesn't apply to your problem.

  - type: dropdown
    attributes:
      label: Operating System
      options:
              - Linux
              - MacOS
              - RaspberryPi OS
              - Windows 7
              - Windows 10
              - Windows 11
              - Others
    validations:
      required: true

  - type: input
    attributes:
      label: Commit SHA
      placeholder: e.g 3a042b37da28d0ba1e5593eb1068ca5645d77b56 or version bundled by esp-idf or pico-sdk
    validations:
      required: true

  - type: input
    attributes:
      label: Board
      placeholder: e.g Adafruit Feather nRF52840 Express
    validations:
      required: true

  - type: textarea
    attributes:
      label: Firmware
      placeholder: |
        e.g examples/device/cdc_msc. If it is custom firmware, it is preferably compiled like one in example folder and reviewable for people to comment on. The easiest way is
        - Fork this repo, checkout a new branch
        - Add your-own-example based on stock one
        - Push and post it here.
    validations:
      required: true

  - type: textarea
    attributes:
      label: What happened ?
      placeholder: A clear and concise description of what the bug is.
    validations:
      required: true

  - type: textarea
    attributes:
      label: How to reproduce ?
      placeholder: |
        Exact steps in chronological order, details should be specific e.g if you use a command/script to test with, please post it as well.
        1. Go to '...'
        2. Click on '....'
        3. See error
    validations:
      required: true

  - type: textarea
    attributes:
      label: Debug Log as txt file (LOG/CFG_TUSB_DEBUG=2)
      placeholder: |
        Attach your debug log txt file here, where the issue occurred, best with comments to explain the actual events.

        Note1: Please DO NOT paste your lengthy log contents here since it hurts the readability.
        Note2: To enable logging, add `LOG=2` to to the make command if building with stock examples or set `CFG_TUSB_DEBUG=2` in your tusb_config.h.
        More information can be found at [example's readme](https://github.com/hathach/tinyusb/blob/master/docs/getting_started.md)
    validations:
      required: true

  - type: textarea
    attributes:
      label: Screenshots
      description: If applicable, add screenshots to help explain your problem.
    validations:
      required: false

  - type: checkboxes
    attributes:
      label: I have checked existing issues, discussion and documentation
      description: You agree to check all the resources above before opening a new issue.
      options:
        - label: I confirm I have checked existing issues, discussion and documentation.
          required: true


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: TinyUSB Discussion
    url: https://github.com/hathach/tinyusb/discussions
    about: If you have other questions or need help, post it here.
  - name: TinyUSB Docs
    url: https://docs.tinyusb.org/
    about: Online documentation


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: Feature Request
description: Suggest an idea for this project
labels: 'Feature 💡'
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this request!
        It's okay to leave some blank if it doesn't apply to your request.

  - type: input
    attributes:
      label: Related area
      description: Please briefly explain the area of your Feature Request.
      placeholder: eg. new port support, device stack, class driver ...
    validations:
      required: true

  - type: input
    attributes:
      label: Hardware specification
      description: Please provide if your proposal depends on specific Hardware.
      placeholder: eg. rp2040, samd51 ...
    validations:
      required: true

  - type: textarea
    attributes:
      label: Is your feature request related to a problem?
      description: Please provide a clear and concise description of what the problem is. Add relevant issue link.
      placeholder: ex. I'm facing the issue/missing function...
    validations:
      required: true

  - type: textarea
    attributes:
      label: Describe the solution you'd like
      description: Please provide a clear and concise description of what you want to happen.
      placeholder: ex. When using this function...
    validations:
      required: true

  - type: checkboxes
    attributes:
      label: I have checked existing issues, dicussion and documentation
      description: You agree to check all the resources above before opening a new issue.
      options:
        - label: I confirm I have checked existing issues, dicussion and documentation.
          required: true


================================================
FILE: .github/actions/get_deps/action.yml
================================================
name: Get dependencies

inputs:
  arg:
    description: 'Arguments to get_deps.py'
    required: true

runs:
  using: "composite"
  steps:
    - name: Checkout pico-sdk for rp2040
      if: >-
        contains(inputs.arg, 'rp2040') ||
        contains(inputs.arg, 'rp2350') ||
        contains(inputs.arg, 'raspberry_pi_pico') ||
        contains(inputs.arg, 'adafruit_fruit_jam')
      uses: actions/checkout@v6
      with:
        repository: raspberrypi/pico-sdk
        ref: master
        path: pico-sdk

    - name: Linux dependencies
      if: runner.os == 'Linux'
      run: |
        NINJA_URL=https://github.com/ninja-build/ninja/releases/download/v1.13.1/ninja-linux.zip
        wget $NINJA_URL -O ninja-linux.zip
        unzip ninja-linux.zip -d ninja-bin
        pip install membrowse
        echo >> $GITHUB_PATH "${{ github.workspace }}/ninja-bin"
      shell: bash

    - name: Get Dependencies
      env:
        ARG: ${{ inputs.arg }}
      run: |
        python3 tools/get_deps.py ${ARG}
        echo "PICO_SDK_PATH=${{ github.workspace }}/pico-sdk" >> $GITHUB_ENV
      shell: bash


================================================
FILE: .github/actions/setup_toolchain/action.yml
================================================
name: Setup Toolchain

inputs:
  toolchain:
    description: 'Toolchain name'
    required: true

outputs:
  build_option:
    description: 'Build option for the toolchain e.g --toolchain clang'
    value: ${{ steps.set-toolchain-option.outputs.build_option }}

runs:
  using: "composite"
  steps:
    - name: Pull ESP-IDF docker
      if: inputs.toolchain == 'esp-idf'
      uses: ./.github/actions/setup_toolchain/espressif
      with:
        toolchain: ${{ inputs.toolchain }}

    - name: Get Toolchain URL
      if: inputs.toolchain != 'esp-idf'
      id: set-toolchain-url
      env:
        TOOLCHAIN: ${{ inputs.toolchain }}
      run: |
        TOOLCHAIN_URL=$(jq -r --arg tc "$TOOLCHAIN" '.[$tc]' .github/actions/setup_toolchain/toolchain.json)
        echo "toolchain_url=$TOOLCHAIN_URL"
        echo "toolchain_url=$TOOLCHAIN_URL" >> $GITHUB_OUTPUT
      shell: bash

    - name: Download Toolchain
      if: inputs.toolchain != 'esp-idf'
      uses: ./.github/actions/setup_toolchain/download
      with:
        toolchain: ${{ inputs.toolchain }}
        toolchain_url: ${{ steps.set-toolchain-url.outputs.toolchain_url }}

    - name: Set toolchain option
      id: set-toolchain-option
      env:
        TOOLCHAIN: ${{ inputs.toolchain }}
      run: |
          BUILD_OPTION=""
          if [[ "$TOOLCHAIN" == *"clang"* ]]; then
            BUILD_OPTION="--toolchain clang"
          elif [[ "$TOOLCHAIN" == "arm-iar" ]]; then
            BUILD_OPTION="--toolchain iar"
          fi
          echo "build_option=$BUILD_OPTION"
          echo "build_option=$BUILD_OPTION" >> $GITHUB_OUTPUT
      shell: bash


================================================
FILE: .github/actions/setup_toolchain/download/action.yml
================================================
name: Download Toolchain

inputs:
  toolchain:
    description: 'Toolchain name'
    required: true
  toolchain_url:
    description: 'Toolchain URL'
    required: true

runs:
  using: "composite"
  steps:
    - name: Cache Toolchain
      if: ${{ !startsWith(inputs.toolchain_url, 'https://github.com') }}
      uses: actions/cache@v5
      id: cache-toolchain-download
      with:
        path: ~/cache/${{ inputs.toolchain }}
        key: ${{ runner.os }}-${{ inputs.toolchain }}-${{ inputs.toolchain_url }}

    - name: Install Toolchain
      if: steps.cache-toolchain-download.outputs.cache-hit != 'true'
      env:
        TOOLCHAIN: ${{ inputs.toolchain }}
        TOOLCHAIN_URL: ${{ inputs.toolchain_url }}
      run: |
        mkdir -p ~/cache/${TOOLCHAIN}
        FILE_EXT="${TOOLCHAIN_URL##*.}"

        if [[ ${TOOLCHAIN} == rx-gcc ]]; then
          wget --progress=dot:giga ${TOOLCHAIN_URL} -O toolchain.run
          chmod +x toolchain.run
          ./toolchain.run -p ~/cache/${TOOLCHAIN}/gnurx -y
        elif [[ ${TOOLCHAIN} == ft9xx-gcc ]]; then
          wget --progress=dot:giga ${TOOLCHAIN_URL} -O ~/cache/${TOOLCHAIN}/ft9xxtoolchain.deb
        elif [[ ${TOOLCHAIN} == arm-iar ]]; then
          wget --progress=dot:giga https://netstorage.iar.com/FileStore/STANDARD/001/003/926/iar-lmsc-tools_1.8_amd64.deb -O ~/cache/${TOOLCHAIN}/iar-lmsc-tools.deb
          wget --progress=dot:giga ${TOOLCHAIN_URL} -O ~/cache/${TOOLCHAIN}/cxarm.deb
        elif [[ ${FILE_EXT} == zip ]]; then
          curl -L "$TOOLCHAIN_URL" -o toolchain.zip
          unzip -q toolchain.zip -d ~/cache/${TOOLCHAIN}
          ~/cache/${TOOLCHAIN}/xpack-arm-none-eabi-gcc-14.2.1-1.1/bin/arm-none-eabi-gcc.exe --version
        elif [[ ${FILE_EXT} == gz ]]; then
          wget --progress=dot:giga ${TOOLCHAIN_URL} -O toolchain.tar.gz
          tar -C ~/cache/${TOOLCHAIN} -xaf toolchain.tar.gz
        else
          echo "Unsupported toolchain file extension: ${FILE_EXT}"
          exit 1
        fi
      shell: bash

    - name: Setup Toolchain
      env:
        TOOLCHAIN: ${{ inputs.toolchain }}
      run: |
        if [[ ${TOOLCHAIN} == arm-iar ]]; then
          sudo dpkg -i ~/cache/${TOOLCHAIN}/iar-lmsc-tools.deb
          sudo apt install -y ~/cache/${TOOLCHAIN}/cxarm.deb
          TOOLCHAIN_PATH="/opt/iar/cxarm/arm/bin"
        elif [[ ${TOOLCHAIN} == ft9xx-gcc ]]; then
          sudo apt install -y ~/cache/${TOOLCHAIN}/ft9xxtoolchain.deb
          TOOLCHAIN_PATH="/opt/ft32/bin"
        else
          # Find the single toolchain bin directory
          TOOLCHAIN_BIN_DIRS=(~/cache/${TOOLCHAIN}/*/bin)
          if [[ ${#TOOLCHAIN_BIN_DIRS[@]} -ne 1 ]]; then
            echo "Error: Expected exactly one toolchain bin directory, found ${#TOOLCHAIN_BIN_DIRS[@]}"
            exit 1
          fi
          TOOLCHAIN_PATH="${TOOLCHAIN_BIN_DIRS[0]}"
        fi
        # Convert to native path for Windows compatibility
        if [[ "$RUNNER_OS" == "Windows" ]]; then
          TOOLCHAIN_PATH=$(cygpath -w "$TOOLCHAIN_PATH")
        fi
        echo "$TOOLCHAIN_PATH" >> $GITHUB_PATH
      shell: bash


================================================
FILE: .github/actions/setup_toolchain/espressif/action.yml
================================================
name: Setup ESP-IDF Toolchain

inputs:
  toolchain:
    description: 'Toolchain name'
    required: true
  toolchain_version:
    description: 'Toolchain version'
    required: false
    default: 'v5.5.3'

runs:
  using: "composite"
  steps:
    - name: Set DOCKER_ESP_IDF
      env:
        TOOLCHAIN: ${{ inputs.toolchain }}
      run: |
        DOCKER_ESP_IDF=$HOME/cache/${TOOLCHAIN}/docker_image.tar
        echo "DOCKER_ESP_IDF=$DOCKER_ESP_IDF" >> $GITHUB_ENV
      shell: bash

    - name: Cache Docker Image
      uses: actions/cache@v5
      id: cache-toolchain-espressif
      with:
        path: ${{ env.DOCKER_ESP_IDF }}
        key: ${{ inputs.toolchain }}-${{ inputs.toolchain_version }}

    - name: Pull and Save Docker Image
      if: steps.cache-toolchain-espressif.outputs.cache-hit != 'true'
      env:
        TOOLCHAIN_VERSION: ${{ inputs.toolchain_version }}
      run: |
        docker pull espressif/idf:${TOOLCHAIN_VERSION}
        mkdir -p $(dirname $DOCKER_ESP_IDF)
        docker save -o $DOCKER_ESP_IDF espressif/idf:${TOOLCHAIN_VERSION}
        du -sh $DOCKER_ESP_IDF
      shell: bash

    - name: Load Docker Image
      if: steps.cache-toolchain-espressif.outputs.cache-hit == 'true'
      run: |
        du -sh $DOCKER_ESP_IDF
        docker load --input $DOCKER_ESP_IDF
      shell: bash

    - name: Tag Local Image
      env:
        TOOLCHAIN_VERSION: ${{ inputs.toolchain_version }}
      run: |
        docker tag espressif/idf:${TOOLCHAIN_VERSION} espressif/idf:tinyusb
        docker images
      shell: bash


================================================
FILE: .github/actions/setup_toolchain/toolchain.json
================================================
{
  "aarch64-gcc": "https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz",
  "arm-clang": "https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-19.1.1/LLVM-ET-Arm-19.1.1-Linux-x86_64.tar.xz",
  "arm-gcc": "https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v14.2.1-1.1/xpack-arm-none-eabi-gcc-14.2.1-1.1-linux-x64.tar.gz",
  "ft9xx-gcc": "https://github.com/Bridgetek/ft32-toolchain-linux/releases/download/v2.7.6/ft9xxtoolchain_2.7.6_amd64.deb",
  "arm-gcc-macos-latest": "https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v14.2.1-1.1/xpack-arm-none-eabi-gcc-14.2.1-1.1-darwin-arm64.tar.gz",
  "arm-gcc-windows-latest": "https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v14.2.1-1.1/xpack-arm-none-eabi-gcc-14.2.1-1.1-win32-x64.zip",
  "msp430-gcc": "http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/9_2_0_0/export/msp430-gcc-9.2.0.50_linux64.tar.bz2",
  "riscv-gcc": "https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v13.2.0-2/xpack-riscv-none-elf-gcc-13.2.0-2-linux-x64.tar.gz",
  "rx-gcc": "https://github.com/hathach/rx_device/releases/download/0.0.1/gcc-8.3.0.202411-GNURX-ELF.run",
  "arm-iar": "https://netstorage.iar.com/FileStore/STANDARD/001/003/723/cxarm-9.70.1.deb"
}


================================================
FILE: .github/membrowse_pr_message.j2
================================================
{#- Top 10 targets with biggest memory changes + project dashboard link -#}
{% set section_columns = ['.text', '.rodata', '.data', '.bss'] -%}
{#- --- Compute per-target total absolute delta and collect changed targets --- -#}
{% set changed = [] -%}
{% for target in targets -%}
{% if target.has_changes -%}
{% set ns = namespace(total_delta=0, total_current=0) -%}
{% for region in target.regions -%}
{% set ns.total_delta = ns.total_delta + region.delta -%}
{% set ns.total_current = ns.total_current + region.used_size -%}
{% endfor -%}
{% set total_old = ns.total_current - ns.total_delta -%}
{% set pct = (ns.total_delta / total_old * 100) if total_old > 0 else 0 -%}
{% set abs_pct = (ns.total_delta | abs) if total_old == 0 else (pct | abs) -%}
{% set _ = changed.append({'target': target, 'total_current': ns.total_current, 'total_old': total_old, 'total_delta': ns.total_delta, 'pct': pct, 'abs_pct': abs_pct}) -%}
{% endif -%}
{% endfor -%}
{#- --- Sort by absolute percentage change descending and take top 10 --- -#}
{% set sorted_changed = changed | sort(attribute='abs_pct', reverse=true) -%}
{% set top10 = sorted_changed[:10] -%}
{#- --- Render --- -#}
{% if top10 %}
### Top {{ top10 | length }} targets by memory change (%) (out of {{ targets | length }} targets) {% if dashboard_url %} [View Project Dashboard →]({{ dashboard_url }}){% endif %}

| target | .text | .rodata | .data | .bss | total | % diff |
|--------|-------|---------|-------|------|-------|--------|
{% for info in top10 -%}
{% set target = info.target -%}
{% set section_map = {} -%}
{% for section in target.sections -%}
{% set _ = section_map.update({section.name: section}) -%}
{% endfor -%}
| {% if target.comparison_url %}[{{ target.name }}]({{ target.comparison_url }}){% else %}{{ target.name }}{% endif %} |
{%- for col in section_columns %} {% if col in section_map %}{{ "{:,}".format(section_map[col].old.size) }} → {{ "{:,}".format(section_map[col].size) }} ({{ section_map[col].delta_str }}){% else %}—{% endif %} |{% endfor %} {{ "{:,}".format(info.total_old) }} → {{ "{:,}".format(info.total_current) }} ({% if info.total_delta >= 0 %}+{{ "{:,}".format(info.total_delta) }}{% else %}{{ "{:,}".format(info.total_delta) }}{% endif %}) | {% if info.total_old > 0 %}{% if info.pct >= 0 %}+{% endif %}{{ "%.1f" | format(info.pct) }}%{% else %}N/A{% endif %} |
{% endfor %}
{% else %}
No memory changes detected across {{ targets | length }} target{{ 's' if targets | length != 1 else '' }}.{% if dashboard_url %} [View Project Dashboard →]({{ dashboard_url }}){% endif %}
{% endif -%}


================================================
FILE: .github/workflows/build.yml
================================================
name: Build

on:
  workflow_dispatch:
  push:
    branches: [master]
  pull_request:
  release:
    types: [ published ]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  HIL_JSON: test/hil/tinyusb.json

jobs:
  # Check if the code changes and we need to run ci build
  # Cannot use paths filter in the on-event since we want this workflow to run even when there are no code changes, to register the commit chain
  check-paths:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
    outputs:
      code_changed: ${{ steps.filter.outputs.code }}
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 2  # Needed for push commit comparison
      - uses: dorny/paths-filter@v4
        id: filter
        with:
          filters: |
            code:
              - 'src/**'
              - 'examples/**'
              - 'lib/**'
              - 'hw/**'
              - 'test/hil/**'
              - 'tools/build.py'
              - 'tools/get_deps.py'
              - '.github/actions/**'
              - '.github/workflows/build.yml'
              - '.github/workflows/build_util.yml'
              - '.github/workflows/ci_set_matrix.py'

  set-matrix:
    runs-on: ubuntu-latest
    outputs:
      json: ${{ steps.set-matrix-json.outputs.matrix }}
      hil_json: ${{ steps.set-matrix-json.outputs.hil_matrix }}
    steps:
      - name: Checkout TinyUSB
        uses: actions/checkout@v6

      - name: Generate matrix json
        id: set-matrix-json
        run: |
          # build matrix
          MATRIX_JSON=$(python .github/workflows/ci_set_matrix.py)/
          echo "matrix=$MATRIX_JSON"
          echo "matrix=$MATRIX_JSON" >> $GITHUB_OUTPUT
          # hil matrix
          HIL_MATRIX_JSON=$(python test/hil/hil_ci_set_matrix.py ${{ env.HIL_JSON }})
          echo "hil_matrix=$HIL_MATRIX_JSON"
          echo "hil_matrix=$HIL_MATRIX_JSON" >> $GITHUB_OUTPUT

  # ------------------------------------------------------------------------------
  # CMake build: only one board per family (first alphabetically). Full build is done by CircleCI in PR
  # Note:
  # For Make and IAR build: will be done on CircleCI only (one random per family as well)
  # ------------------------------------------------------------------------------
  cmake:
    needs: [ check-paths, set-matrix ]
    uses: ./.github/workflows/build_util.yml
    strategy:
      fail-fast: false
      matrix:
        toolchain:
          - 'aarch64-gcc'
          #- 'arm-clang'
          - 'arm-gcc'
          #- 'esp-idf'
          - 'ft9xx-gcc'
          - 'msp430-gcc'
          - 'riscv-gcc'
    with:
      build-system: 'cmake'
      toolchain: ${{ matrix.toolchain }}
      build-args: ${{ toJSON(fromJSON(needs.set-matrix.outputs.json)[matrix.toolchain]) }}
      build-options: '--one-first'
      upload-metrics: true
      upload-artifacts: false
      upload-membrowse: true
      code-changed: ${{ needs.check-paths.outputs.code_changed == 'true' }}
    secrets: inherit

  code-metrics:
    needs: [ check-paths, cmake ]
    if: needs.check-paths.outputs.code_changed == 'true'
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
      contents: write
    steps:
      - name: Checkout TinyUSB
        uses: actions/checkout@v6
        with:
          fetch-tags: ${{ github.event_name == 'release' }}

      - name: Download Artifacts
        uses: actions/download-artifact@v5
        with:
          pattern: metrics-*
          path: cmake-build
          merge-multiple: true

      - name: Aggregate Code Metrics
        run: |
          python tools/get_deps.py
          python tools/metrics.py combine -j -m -f tinyusb/src cmake-build/*/metrics.json

      - name: Upload Metrics Artifact
        if: github.event_name == 'push' || github.event_name == 'release'
        uses: actions/upload-artifact@v7
        with:
          name: metrics-tinyusb
          path: metrics.json

      - name: Download Base Branch Metrics
        if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
        uses: dawidd6/action-download-artifact@v11
        with:
          workflow: build.yml
          workflow_conclusion: ''
          branch: ${{ github.base_ref }}
          name: metrics-tinyusb
          path: base-metrics
        continue-on-error: true

      - name: Download Previous Release Asset
        if: github.event_name == 'release'
        env:
          GH_TOKEN: ${{ github.token }}
        run: |
          PREV_TAG=$(git tag --sort=-creatordate | head -n 2 | tail -n 1)
          echo "Previous Release: $PREV_TAG"
          echo "PREV_TAG=$PREV_TAG" >> $GITHUB_ENV

          mkdir -p base-metrics
          gh release download $PREV_TAG -p metrics.json -D base-metrics || echo "No metrics.json found in $PREV_TAG release"

      - name: Compare with Base Branch
        if: github.event_name != 'push'
        run: |
          if [ -f base-metrics/metrics.json ]; then
            python tools/metrics.py compare -m -f tinyusb/src base-metrics/metrics.json metrics.json
            cat metrics_compare.md
          else
            echo "No base metrics found, skipping comparison"
            cp metrics.md metrics_compare.md
          fi

      - name: Upload Release Assets
        if: github.event_name == 'release'
        env:
          GH_TOKEN: ${{ github.token }}
        run: |
          CURR_TAG=${{ github.event.release.tag_name }}
          COMPARE_FILE="metrics_compare_${CURR_TAG}-${PREV_TAG}.md"
          mv metrics_compare.md $COMPARE_FILE
          gh release upload $CURR_TAG metrics.json $COMPARE_FILE

      - name: Save PR number
        if: github.event_name == 'pull_request'
        run: echo ${{ github.event.number }} > pr_number.txt

      - name: Upload Metrics Comment Artifact
        if: github.event_name == 'pull_request'
        uses: actions/upload-artifact@v7
        with:
          name: metrics-comment
          path: |
            metrics_compare.md
            metrics.json
            pr_number.txt

      - name: Post Code Metrics as PR Comment
        if: (github.event_name == 'workflow_dispatch') || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false)
        uses: marocchino/sticky-pull-request-comment@v2
        with:
          header: code-metrics
          path: metrics_compare.md

  # ---------------------------------------
  # Build Make/CMake on Windows/MacOS
  # ---------------------------------------
  build-os:
    needs: [ check-paths ]
    if: needs.check-paths.outputs.code_changed == 'true'
    uses: ./.github/workflows/build_util.yml
    strategy:
      fail-fast: false
      matrix:
        os: [ windows-latest, macos-latest ]
        build-system: [ 'make', 'cmake' ]
    with:
      os: ${{ matrix.os }}
      build-system: ${{ matrix.build-system }}
      toolchain: 'arm-gcc-${{ matrix.os }}'
      build-args: '["stm32h7rs"]'
      build-options: '--one-random'

  # ---------------------------------------
  # Zephyr
  # ---------------------------------------
  zephyr:
    needs: [ check-paths ]
    # skip zephyr build due to failed build, fix later
    if: false
    #if: needs.check-paths.outputs.code_changed == 'true'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout TinyUSB
        uses: actions/checkout@v6

      - name: Setup Zephyr project
        uses: zephyrproject-rtos/action-zephyr-setup@v1
        with:
          app-path: examples
          toolchains: arm-zephyr-eabi

      - name: Build
        run: |
          west build -b nrf52840dk -d examples/device/cdc_msc/build examples/device/cdc_msc -- -DRTOS=zephyr
          west build -b nrf52840dk -d examples/device/msc_dual_lun/build examples/device/msc_dual_lun -- -DRTOS=zephyr

  # ---------------------------------------
  # Hardware in the loop (HIL)
  # Run on PR only (hil-tinyusb), hil-hfp only run on non-forked PR
  # ---------------------------------------
  hil-build:
    needs: [ check-paths, set-matrix ]
    if: needs.check-paths.outputs.code_changed == 'true' && github.repository_owner == 'hathach'
    uses: ./.github/workflows/build_util.yml
    strategy:
      fail-fast: false
      matrix:
        toolchain:
          - 'arm-gcc'
          - 'esp-idf'
    with:
      build-system: 'cmake'
      toolchain: ${{ matrix.toolchain }}
      build-args: ${{ toJSON(fromJSON(needs.set-matrix.outputs.hil_json)[matrix.toolchain]) }}
      upload-artifacts: true

  # ---------------------------------------
  # Hardware in the loop (HIL)
  # self-hosted on local VM, for attached hardware checkout HIL_JSON
  # ---------------------------------------
  hil-tinyusb:
    needs: hil-build
    runs-on: [ self-hosted, X64, hathach, hardware-in-the-loop ]
    steps:
      - name: Get Skip Boards from previous run
        if: github.run_attempt != '1'
        run: |
          if [ -f "${{ env.HIL_JSON }}.skip" ]; then
            SKIP_BOARDS=$(cat "${{ env.HIL_JSON }}.skip")
          else
            SKIP_BOARDS=""
          fi
          echo "SKIP_BOARDS=$SKIP_BOARDS"
          echo "SKIP_BOARDS=$SKIP_BOARDS" >> $GITHUB_ENV

      - name: Clean workspace
        run: |
          echo "Cleaning up for the first run"
          rm -rf "${{ github.workspace }}"
          mkdir -p "${{ github.workspace }}"

      - name: Checkout TinyUSB
        uses: actions/checkout@v6

      - name: Download Artifacts
        uses: actions/download-artifact@v5
        with:
          pattern: binaries-*
          path: cmake-build
          merge-multiple: true

      - name: Test on actual hardware
        run: |
          python3 test/hil/hil_test.py ${{ env.HIL_JSON }} $SKIP_BOARDS || \
          (if [ -f "${{ env.HIL_JSON }}.skip" ]; then
            SKIP_BOARDS=$(cat "${{ env.HIL_JSON }}.skip")
            echo "Re-running with SKIP_BOARDS=$SKIP_BOARDS"
            python3 test/hil/hil_test.py ${{ env.HIL_JSON }} $SKIP_BOARDS
          else
            exit 1
          fi)

  # ---------------------------------------
  # Hardware in the loop (HIL)
  # self-hosted by HFP, build with IAR toolchain, for attached hardware checkout test/hil/hfp.json
  # Since IAR Token secret is not passed to forked PR, only build non-forked PR
  # ---------------------------------------
  hil-hfp:
    needs: [ check-paths ]
    if: |
      needs.check-paths.outputs.code_changed == 'true' &&
      github.repository_owner == 'hathach' &&
      !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == true)
    runs-on: [ self-hosted, Linux, X64, hifiphile ]
    env:
      IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
    steps:
      - name: Clean workspace
        run: |
          echo "Cleaning up previous run"
          rm -rf "${{ github.workspace }}"3
          mkdir -p "${{ github.workspace }}"

      - name: Toolchain version
        run: |
          iccarm --version

      - name: Checkout TinyUSB
        uses: actions/checkout@v6

      - name: Get build boards
        run: |
          MATRIX_JSON=$(python test/hil/hil_ci_set_matrix.py test/hil/hfp.json)
          BUILD_ARGS=$(echo $MATRIX_JSON | jq -r '.["arm-gcc"] | join(" ")')
          echo "BUILD_ARGS=$BUILD_ARGS"
          echo "BUILD_ARGS=$BUILD_ARGS" >> $GITHUB_ENV

      - name: Get Dependencies
        run: python3 tools/get_deps.py $BUILD_ARGS

      - name: Build
        run: python3 tools/build.py --toolchain iar $BUILD_ARGS

      - name: Test on actual hardware (hardware in the loop)
        run: python3 test/hil/hil_test.py hfp.json


================================================
FILE: .github/workflows/build_util.yml
================================================
name: Reusable build util

on:
  workflow_call:
    inputs:
      os:
        required: false
        type: string
        default: 'ubuntu-latest'
      build-system:
        required: true
        type: string
      toolchain:
        required: true
        type: string
      build-args:
        required: true
        type: string
      build-options:
        required: false
        default: ''
        type: string
      upload-artifacts:
        required: false
        default: false
        type: boolean
      upload-metrics:
        required: false
        default: false
        type: boolean
      upload-membrowse:
        required: false
        default: false
        type: boolean
      code-changed:
        required: false
        default: true
        type: boolean

jobs:
  family:
    runs-on: ${{ inputs.os }}
    strategy:
      fail-fast: false
      matrix:
        arg: ${{ fromJSON(inputs.build-args) }}
    steps:
      - name: Checkout TinyUSB
        uses: actions/checkout@v6
        with:
          fetch-depth: ${{ !inputs.upload-membrowse && 1 || 0 }}

      - name: Setup Toolchain
        id: setup-toolchain
        uses: ./.github/actions/setup_toolchain
        with:
          toolchain: ${{ inputs.toolchain }}

      - name: Get Dependencies
        uses: ./.github/actions/get_deps
        with:
          arg: ${{ matrix.arg }}

      - name: Build
        if: ${{ inputs.code-changed }}
        env:
          IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
        run: |
          if [ "${{ inputs.toolchain }}" == "esp-idf" ]; then
            docker run --rm -e MEMBROWSE_API_KEY="$MEMBROWSE_API_KEY" -v $PWD:/project -w /project espressif/idf:tinyusb python tools/build.py --target all ${{ matrix.arg }}
          else
            BUILD_PY_ARGS="-s ${{ inputs.build-system }} ${{ steps.setup-toolchain.outputs.build_option }} ${{ inputs.build-options }} --target all"
            if [ "${{ inputs.upload-metrics }}" = "true" ]; then
              BUILD_PY_ARGS="$BUILD_PY_ARGS --target tinyusb_metrics"
            fi
            python tools/build.py $BUILD_PY_ARGS ${{ matrix.arg }}
          fi
        shell: bash

      - name: Membrowse Upload
        if: inputs.toolchain != 'esp-idf' && inputs.upload-membrowse == true
        continue-on-error: true
        env:
          MEMBROWSE_API_KEY: ${{ secrets.MEMBROWSE_API_KEY }}
        run: |
          # if code-changed is false --> there is no elf -> membrowse target upload with --identical flag
          BUILD_PY_ARGS="-s ${{ inputs.build-system }} ${{ steps.setup-toolchain.outputs.build_option }} ${{ inputs.build-options }}"
          python tools/build.py $BUILD_PY_ARGS --target examples-membrowse-upload -j 1 ${{ matrix.arg }}
        shell: bash

      - name: Upload Artifacts for Metrics
        if: inputs.upload-metrics == true && inputs.code-changed == true
        uses: actions/upload-artifact@v7
        with:
          name: metrics-${{ matrix.arg }}
          path: cmake-build/cmake-build-*/metrics.json

      - name: Upload Artifacts for Hardware Testing
        if: inputs.upload-artifacts == true && inputs.code-changed == true
        uses: actions/upload-artifact@v7
        with:
          name: binaries-${{ matrix.arg }}
          path: |
            cmake-build/cmake-build-*/*/*/*.elf
            cmake-build/cmake-build-*/*/*/*.bin
            cmake-build/cmake-build-*/*/*/*.bin
            cmake-build/cmake-build-*/*/*/bootloader/bootloader.bin
            cmake-build/cmake-build-*/*/*/partition_table/partition-table.bin
            cmake-build/cmake-build-*/*/*/config.env
            cmake-build/cmake-build-*/*/*/flash_args
            cmake-build/hw/mcu/**/*.ld


================================================
FILE: .github/workflows/ci_set_matrix.py
================================================
#!/usr/bin/env python3
import json

# toolchain, url
toolchain_list = [
    "aarch64-gcc",
    "arm-clang",
    "arm-iar",
    "arm-gcc",
    "esp-idf",
    "ft9xx-gcc",
    "msp430-gcc",
    "riscv-gcc",
    "rx-gcc"
]

# family: [supported toolchain]
family_list = {
    "at32f402_405": ["arm-gcc"],
    "at32f403a_407": ["arm-gcc"],
    "at32f413": ["arm-gcc"],
    "at32f415": ["arm-gcc"],
    "at32f423": ["arm-gcc"],
    "at32f425": ["arm-gcc"],
    "at32f435_437": ["arm-gcc"],
    "at32f45x": ["arm-gcc"],
    "broadcom_32bit": ["arm-gcc"],
    "broadcom_64bit": ["aarch64-gcc"],
    "ch32f20x": ["arm-gcc"],
    "ch32v10x": ["riscv-gcc"],
    "ch32v20x": ["riscv-gcc"],
    "ch32v30x": ["riscv-gcc"],
    "da1469x": ["arm-gcc"],
    "fomu": ["riscv-gcc"],
    "ft9xx": ["ft9xx-gcc"],
    "gd32vf103": ["riscv-gcc"],
    "hpmicro": ["riscv-gcc"],
    "imxrt": ["arm-gcc", "arm-clang"],
    "kinetis_k": ["arm-gcc"],
    "kinetis_k32l": ["arm-gcc"],
    "kinetis_kl": ["arm-gcc"],
    "lpc11": ["arm-gcc", "arm-clang"],
    "lpc13": ["arm-gcc", "arm-clang"],
    "lpc15": ["arm-gcc", "arm-clang"],
    "lpc17": ["arm-gcc", "arm-clang"],
    "lpc18": ["arm-gcc", "arm-clang"],
    "lpc40": ["arm-gcc", "arm-clang"],
    "lpc43": ["arm-gcc", "arm-clang"],
    "lpc51": ["arm-gcc", "arm-clang"],
    "lpc54": ["arm-gcc", "arm-clang"],
    "lpc55": ["arm-gcc", "arm-clang"],
    "maxim": ["arm-gcc"],
    "mcx": ["arm-gcc"],
    "mm32": ["arm-gcc"],
    "msp430": ["msp430-gcc"],
    "msp432e4": ["arm-gcc"],
    "nrf": ["arm-gcc", "arm-clang"],
    "nuc100_120": ["arm-gcc"],
    "nuc121_125": ["arm-gcc"],
    "nuc126": ["arm-gcc"],
    "nuc505": ["arm-gcc"],
    "ra": ["arm-gcc"],
    "rp2040": ["arm-gcc"],
    "rw61x": ["arm-gcc"],
    "rx": ["rx-gcc"],
    "samd11": ["arm-gcc", "arm-clang"],
    "samd2x_l2x": ["arm-gcc", "arm-clang"],
    "samd5x_e5x": ["arm-gcc", "arm-clang"],
    "samg": ["arm-gcc", "arm-clang"],
    "stm32c0": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32f0": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32f1": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32f2": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32f3": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32f4": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32f7": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32g0": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32g4": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32h5": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32h7": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32h7rs": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32l0": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32l4": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32n6": ["arm-gcc"],
    "stm32u0": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32u5": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32wb": ["arm-gcc", "arm-clang", "arm-iar"],
    "stm32wba": ["arm-gcc", "arm-clang", "arm-iar"],
    "tm4c": ["arm-gcc"],
    "xmc4000": ["arm-gcc"],
    # S3, P4 will be built by hil test
    # "-bespressif_s3_devkitm": ["esp-idf"],
    # "-bespressif_p4_function_ev": ["esp-idf"],
}


def set_matrix_json():
    matrix = {}
    for toolchain in toolchain_list:
        filtered_families = [family for family, supported_toolchain in family_list.items() if
                             toolchain in supported_toolchain]
        matrix[toolchain] = filtered_families

    print(json.dumps(matrix))


if __name__ == '__main__':
    set_matrix_json()


================================================
FILE: .github/workflows/cifuzz.yml
================================================
name: CIFuzz
on:
  workflow_dispatch:
  pull_request:
    branches:
      - master
    paths:
      - '**.c'
      - '**.cc'
      - '**.cpp'
      - '**.cxx'
      - '**.h'
jobs:
 Fuzzing:
   runs-on: ubuntu-latest
   steps:
   - name: Build Fuzzers
     id: build
     uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
     with:
       oss-fuzz-project-name: 'tinyusb'
       language: c++

   - name: Run Fuzzers
     uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
     with:
       oss-fuzz-project-name: 'tinyusb'
       language: c++
       fuzz-seconds: 400

   - name: Upload Crash
     uses: actions/upload-artifact@v7
     if: failure() && steps.build.outcome == 'success'
     with:
       name: artifacts
       path: ./out/artifacts


================================================
FILE: .github/workflows/claude-code-review.yml
================================================
name: Claude Code Review

on:
  pull_request_target:
    types: [opened, synchronize, ready_for_review, reopened]

jobs:
  claude-review:
    if: false
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
      issues: read
      id-token: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 1

      - name: Run Claude Code Review
        id: claude-review
        uses: anthropics/claude-code-action@v1
        with:
          claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
          plugin_marketplaces: 'https://github.com/anthropics/claude-code.git'
          plugins: 'code-review@claude-code-plugins'
          prompt: '/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}'
          # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
          # or https://code.claude.com/docs/en/cli-reference for available options


================================================
FILE: .github/workflows/claude.yml
================================================
name: Claude Code

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  issues:
    types: [opened, assigned]
  pull_request_review:
    types: [submitted]

jobs:
  claude:
    if: |
      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
      (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write
      actions: read # Required for Claude to read CI results on PRs
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 1

      - name: Run Claude Code
        id: claude
        uses: anthropics/claude-code-action@v1
        with:
          claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

          # This is an optional setting that allows Claude to read CI results on PRs
          additional_permissions: |
            actions: read

          # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
          # prompt: 'Update the pull request description to include a summary of changes.'

          # Optional: Add claude_args to customize behavior and configuration
          # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
          # or https://code.claude.com/docs/en/cli-reference for available options
          # claude_args: '--allowed-tools Bash(gh pr:*)'


================================================
FILE: .github/workflows/labeler.yml
================================================
name: Labeler

on:
  issues:
    types: [opened]
  pull_request_target:
    types: [opened]

jobs:
  label-priority:
    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write
    steps:
      - name: Label New Issue or PR
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            let label = '';
            let username = '';
            let issueOrPrNumber = 0;

            if (context.eventName === 'issues') {
              username = context.payload.issue.user.login;
              issueOrPrNumber = context.payload.issue.number;
            } else if (context.eventName === 'pull_request_target') {
              username = context.payload.pull_request.user.login;
              issueOrPrNumber = context.payload.pull_request.number;
            }

            // Check if an Adafruit member
            try {
              const adafruitResponse = await github.rest.orgs.checkMembershipForUser({
                org: 'adafruit',
                username: username
              });

              if (adafruitResponse.status === 204) {
                console.log('Adafruit Member');
                label = 'Prio Urgent';
              }
            } catch (error) {
              console.log('Not an Adafruit member');
            }

            // Check if a contributor
            if (label == '') {
              try {
                const collaboratorResponse = await github.rest.repos.checkCollaborator({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  username: username
                });

                if (collaboratorResponse.status === 204) {
                  console.log('Contributor');
                  label = 'Prio Higher';
                }
              } catch (error) {
                console.log('Not a contributor');
              }
            }

            if (label !== '') {
              await github.rest.issues.addLabels({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: issueOrPrNumber,
                labels: [label]
              });
            }


================================================
FILE: .github/workflows/membrowse-comment.yml
================================================
name: Membrowse Comment

on:
  workflow_run:
    workflows: ["Build"]
    types:
      - completed

jobs:
  post-comment:
    runs-on: ubuntu-latest
    # Run the comment job even if some of the builds fail
    if: >
      github.event.workflow_run.event == 'pull_request' &&
      github.event.workflow_run.conclusion != 'cancelled'
    permissions:
      contents: read
      actions: read
      pull-requests: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Post Membrowse PR comment
        if: ${{ env.MEMBROWSE_API_KEY != '' }}
        uses: membrowse/membrowse-action/comment-action@v1
        with:
          api_key: ${{ secrets.MEMBROWSE_API_KEY }}
          commit: ${{ github.event.workflow_run.head_sha }}
          comment_template: .github/membrowse_pr_message.j2
        env:
          MEMBROWSE_API_KEY: ${{ secrets.MEMBROWSE_API_KEY }}
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/membrowse-onboard.yml
================================================
name: Onboard to Membrowse

on:
  workflow_dispatch:
    inputs:
      num_commits:
        description: 'Number of commits to process'
        required: true
        default: '10'
        type: string

jobs:
  load-targets:
    runs-on: ubuntu-22.04
    outputs:
      targets: ${{ steps.load.outputs.targets }}
      toolchains: ${{ steps.load.outputs.toolchains }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Load target matrix
        id: load
        run: |
          echo "targets=$(jq -c '.targets' .github/membrowse-targets.json)" >> $GITHUB_OUTPUT
          echo "toolchains=$(jq -c '.toolchains' .github/membrowse-targets.json)" >> $GITHUB_OUTPUT

  onboard:
    needs: load-targets
    runs-on: ubuntu-22.04
    strategy:
      fail-fast: false
      matrix:
        include: ${{ fromJson(needs.load-targets.outputs.targets) }}

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
          submodules: recursive

      - name: Install packages
        run: |
          ${{ fromJson(needs.load-targets.outputs.toolchains)[matrix.toolchain].setup_cmd }} && python3 tools/get_deps.py ${{ matrix.get_deps || matrix.port }}

      - name: Setup ccache
        uses: hendrikmuhs/ccache-action@v1
        with:
          key: ${{ matrix.port }}-${{ matrix.board }}

      - name: Run Membrowse Onboard Action
        uses: membrowse/membrowse-action/onboard-action@v1
        with:
          target_name: ${{ matrix.port }}-${{ matrix.board }}-${{ matrix.example }}
          num_commits: ${{ github.event.inputs.num_commits }}
          build_script: python3 tools/build.py -s cmake -b ${{ matrix.board }}
          elf: cmake-build/cmake-build-${{ matrix.board }}/device/${{ matrix.example }}/${{ matrix.example }}.elf
          ld: ${{ matrix.ld }}
          linker_vars: ${{ matrix.linker_vars || '' }}
          api_key: ${{ secrets.MEMBROWSE_API_KEY }}
          api_url: ${{ vars.MEMBROWSE_API_URL }}


================================================
FILE: .github/workflows/metrics_comment.yml
================================================
name: Metrics Comment

on:
  workflow_run:
    workflows: ["Build"]
    types:
      - completed

jobs:
  post-comment:
    runs-on: ubuntu-latest
    if: >
      github.event.workflow_run.event == 'pull_request' &&
      github.event.workflow_run.conclusion == 'success'
    permissions:
      actions: read
      pull-requests: write
    steps:
      - name: Download Artifacts
        uses: actions/download-artifact@v5
        with:
          run-id: ${{ github.event.workflow_run.id }}
          github-token: ${{ secrets.GITHUB_TOKEN }}
          name: metrics-comment

      - name: Read PR Number
        id: pr_number
        run: |
          if [ -f pr_number.txt ]; then
            echo "number=$(cat pr_number.txt)" >> $GITHUB_OUTPUT
          fi

      - name: Post Code Metrics as PR Comment
        if: steps.pr_number.outputs.number != ''
        uses: marocchino/sticky-pull-request-comment@v2
        with:
          header: code-metrics
          path: metrics_compare.md
          number: ${{ steps.pr_number.outputs.number }}


================================================
FILE: .github/workflows/pre-commit.yml
================================================
name: pre-commit

on:
  workflow_dispatch:
  push:
  pull_request:
    branches: [ master ]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  pre-commit:
    runs-on: ubuntu-latest
    steps:
    - name: Setup Ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: '3.0'

    - name: Checkout TinyUSB
      uses: actions/checkout@v6

    - name: Get Dependencies
      run: |
        gem install ceedling
        #cd test/unit-test
        #ceedling test:all

    - name: Run pre-commit
      uses: pre-commit/action@v3.0.1

    - name: Build Fuzzer
      run: |
        sudo apt install libc++-dev libc++abi-dev
        clang --version
        export CC=clang
        export CXX=clang++
        fuzz_harness=$(ls -d test/fuzz/device/*/)
        for h in $fuzz_harness
        do
          make -C $h get-deps
          make -C $h all
        done


================================================
FILE: .github/workflows/static_analysis.yml
================================================
name: Static Analysis
on:
  workflow_dispatch:
  push:
    branches: [ master ]
    paths:
      - 'src/**'
      - 'examples/**'
      - 'hw/bsp/**'
      - '.github/workflows/static_analysis.yml'
  pull_request:
    branches: [ master ]
    paths:
      - 'src/**'
      - 'examples/**'
      - 'hw/bsp/**'
      - '.github/workflows/static_analysis.yml'

permissions:
  actions: read
  contents: read
  security-events: write
#  pull-requests: write
#  checks: write

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  CodeQL:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        board:
          - 'metro_m4_express'
    steps:
      - name: Checkout TinyUSB
        uses: actions/checkout@v6

      - name: Get Dependencies
        uses: ./.github/actions/get_deps
        with:
          arg: -b${{ matrix.board }}

      - name: Setup Toolchain
        uses: ./.github/actions/setup_toolchain
        with:
          toolchain: 'arm-gcc'

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v4
        with:
          languages: 'c-cpp'
          queries: security-and-quality

      - name: Build
        run: |
          mkdir -p build
          cmake examples -B build -G Ninja -DBOARD=${{ matrix.board }} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=MinSizeRel
          cmake --build build

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v4
        with:
          category: CodeQL
          upload: false
        id: analyze

      - name: Filter SARIF report
        uses: advanced-security/filter-sarif@v1
        with:
          patterns: |
            -hw/mcu/**
            -lib/**
          input: ${{ steps.analyze.outputs.sarif-output }}/cpp.sarif
          output: ${{ steps.analyze.outputs.sarif-output }}/cpp.sarif

      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: ${{ steps.analyze.outputs.sarif-output }}
          category: CodeQL

      - name: Upload artifact
        uses: actions/upload-artifact@v7
        with:
          name: codeql-${{ matrix.board }}
          path: ${{ steps.analyze.outputs.sarif-output }}

  PVS-Studio:
    # Only run on non-forked PR since secrets token is required
    if: github.repository_owner == 'hathach' && github.event.pull_request.head.repo.fork == false
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        board:
          - 'raspberry_pi_pico'
    steps:
      - name: Checkout TinyUSB
        uses: actions/checkout@v6

      - name: Get Dependencies
        uses: ./.github/actions/get_deps
        with:
          arg: -b${{ matrix.board }}

      - name: Setup Toolchain
        uses: ./.github/actions/setup_toolchain
        with:
          toolchain: 'arm-gcc'

      - name: Install Tools
        run: |
          wget -q -O - https://files.pvs-studio.com/etc/pubkey.txt | sudo apt-key add -
          sudo wget -O /etc/apt/sources.list.d/viva64.list https://files.pvs-studio.com/etc/viva64.list
          sudo apt update
          sudo apt install pvs-studio
          pvs-studio-analyzer credentials ${{ secrets.PVS_STUDIO_CREDENTIALS }}
          pvs-studio-analyzer --version

      - name: Analyze
        run: |
          mkdir -p build
          cmake examples -B build -G Ninja -DBOARD=${{ matrix.board }} -DCMAKE_BUILD_TYPE=MinSizeRel
          cmake --build build
          pvs-studio-analyzer analyze -f build/compile_commands.json -R .PVS-Studio/.pvsconfig -j4 --security-related-issues --misra-cpp-version 2008 --misra-c-version 2023 --use-old-parser -e lib/ -e hw/mcu/ -e */iar/cxarm/ -e pico-sdk/
          plog-converter -t sarif -o pvs-studio-${{ matrix.board }}.sarif PVS-Studio.log

      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: pvs-studio-${{ matrix.board }}.sarif
          category: PVS-Studio

      - name: Upload artifact
        uses: actions/upload-artifact@v7
        with:
          name: pvs-studio-${{ matrix.board }}
          path: pvs-studio-${{ matrix.board }}.sarif

  SonarQube:
    # Only run on non-forked PR since secrets token is required
    if: github.repository_owner == 'hathach' && github.event.pull_request.head.repo.fork == false
    runs-on: ubuntu-latest
    env:
      BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory
    strategy:
      fail-fast: false
      matrix:
        board:
          - 'stm32h743eval'
    steps:
      - name: Checkout TinyUSB
        uses: actions/checkout@v6
        with:
          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis

      - name: Get Dependencies
        uses: ./.github/actions/get_deps
        with:
          arg: -b${{ matrix.board }}

      - name: Setup Toolchain
        uses: ./.github/actions/setup_toolchain
        with:
          toolchain: 'arm-gcc'

      - name: Install Build Wrapper
        uses: SonarSource/sonarqube-scan-action/install-build-wrapper@v6

      - name: Run Build Wrapper
        run: |
          cmake examples -B build -G Ninja -DBOARD=${{ matrix.board }} -DCMAKE_BUILD_TYPE=MinSizeRel
          build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build build/

      - name: SonarQube Scan
        uses: SonarSource/sonarqube-scan-action@v6
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        with:
          # Consult https://docs.sonarsource.com/sonarqube-server/latest/analyzing-source-code/scanners/sonarscanner/ for more information and options
          args: >
            --define sonar.cfamily.compile-commands=${{ env.BUILD_WRAPPER_OUT_DIR }}/compile_commands.json

  IAR-CStat:
    # Only run on non-forked PR since secrets token is required
    #if: github.repository_owner == 'hathach' && github.event.pull_request.head.repo.fork == false
    if: false
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        board:
          - 'b_g474e_dpow1'
    steps:
      - name: Checkout TinyUSB
        uses: actions/checkout@v6

      - name: Get Dependencies
        uses: ./.github/actions/get_deps
        with:
          arg: -b${{ matrix.board }}

      - name: Setup Toolchain
        uses: ./.github/actions/setup_toolchain
        with:
          toolchain: 'arm-iar'

      - name: Install CMake 4.2
        run: |
          # IAR CSTAT requires CMake >= 4.1
          wget -q https://github.com/Kitware/CMake/releases/download/v4.2.0-rc1/cmake-4.2.0-rc1-linux-x86_64.tar.gz
          tar -xzf cmake-4.2.0-rc1-linux-x86_64.tar.gz
          echo "${{ github.workspace }}/cmake-4.2.0-rc1-linux-x86_64/bin" >> $GITHUB_PATH

      - name: Build and run IAR C-STAT Analysis
        env:
          IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
        run: |
          # CMake run post build to generate C-STAT SARIF report
          cmake --version
          mkdir -p build
          cmake examples/device/cdc_msc -B build -G Ninja -DBOARD=${{ matrix.board }} -DTOOLCHAIN=iar -DIAR_CSTAT=1 -DCMAKE_BUILD_TYPE=MinSizeRel
          cmake --build build
          # Merge sarif files for codeql upload
          npm i -g @microsoft/sarif-multitool
          npx @microsoft/sarif-multitool merge --merge-runs --output-file iar-cstat-${{ matrix.board }}.sarif build/cstat_sarif/*.sarif

      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v4
        with:
          sarif_file: iar-cstat-${{ matrix.board }}.sarif
          category: IAR-CStat

      - name: Upload artifact
        uses: actions/upload-artifact@v7
        with:
          name: iar-cstat-${{ matrix.board }}
          path: iar-cstat-${{ matrix.board }}.sarif


================================================
FILE: .github/workflows/trigger.yml
================================================
name: Trigger Repos

on:
  workflow_dispatch:
  push:
    branches: master
  release:
    types:
      - created

jobs:
  trigger-mynewt:
    if: github.repository == 'hathach/tinyusb'
    runs-on: ubuntu-latest
    steps:
    - name: Trigger mynewt-tinyusb-example
      shell: bash
      run: |
        curl -X POST -H "Authorization: token ${{ secrets.API_TOKEN_GITHUB }}" -H "Accept: application/vnd.github.everest-preview+json" -H "Content-Type: application/json" --data '{"event_type": "rebuild"}' https://api.github.com/repos/hathach/mynewt-tinyusb-example/dispatches

  mirror-tinyusb-src:
    if: github.repository == 'hathach/tinyusb'
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v6

    - name: Push to tinyusb_src
      run: |
        # clone tinyusb_src with PAT
        git config --global user.email "thach@tinyusb.org"
        git config --global user.name "hathach"
        git clone --depth 1 --single-branch --branch main "https://${{ secrets.API_TOKEN_GITHUB }}@github.com/hathach/tinyusb_src.git" tinyusb_src

        # Remove all files
        rm -rf tinyusb_src/*

        # Copy src and other files
        cp -r src tinyusb_src/
        cp LICENSE tinyusb_src/
        cd tinyusb_src

        # Commit if there is changes
        if [ -n "$(git status --porcelain)" ]; then
          git add .
          git commit --message "Update from https://github.com/$GITHUB_REPOSITORY/commit/$GITHUB_SHA"
          git push
        fi

    - name: Create tinyusb_src Release
      if: ${{ github.event_name == 'release' }}
      run: |
        # Push tag
        cd tinyusb_src
        git tag ${{ github.event.release.tag_name }}
        git push origin ${{ github.event.release.tag_name }}

        # Send POST reqwuest to release https://docs.github.com/en/rest/reference/repos#create-a-release
        bb="For release note, please checkout https://github.com/hathach/tinyusb/releases/tag/${{ github.event.release.tag_name }}"
        curl -X POST -H "Authorization: token ${{ secrets.API_TOKEN_GITHUB }}" -H "Accept: application/vnd.github.v3+json" --data '{"tag_name": "${{ github.event.release.tag_name }}", "name": "${{ github.event.release.name }}", "body": "$bb", "draft": ${{ github.event.release.draft }}, "prerelease": ${{ github.event.release.prerelease }}}' https://api.github.com/repos/hathach/tinyusb_src/releases


================================================
FILE: .gitignore
================================================
html
latex
*.a
*.d
*.o
*.P
*.axf
*.bin
*.elf
*.env
*.ind
*.log
*.map
*.obj
*.jlink
*.emSession
*.ninja*
*.eww
*.ewp
*.ewt
*.ewd
*.hex
.venv/
cmake_install.cmake
CMakeCache.txt
settings/
.settings/
.vscode/
.gdb_history
/examples/*/*/build*
test_old/
tests_obsolete/
_build/
build/
/examples/*/*/ses
/examples/*/*/ozone
/examples/obsolete
hw/bsp/**/cubemx/*/
.mxproject
# coverity intermediate files
cov-int
# cppcheck build directories
*-build-dir
/_bin/
__pycache__
cmake-build/
cmake-build-*
sdkconfig
.PVS-Studio
.vscode/
CMakeFiles
Debug
RelWithDebInfo
Release
BrowseInfo
.cmake_build
README_processed.rst


================================================
FILE: .idea/.gitignore
================================================
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/
# GitHub Copilot persisted chat sessions
/copilot/chatSessions


================================================
FILE: .idea/cmake.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CMakeSharedSettings">
    <configurations>
      <configuration PROFILE_NAME="raspberrypi_zero" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=raspberrypi_zero -DLOG=1" />
      <configuration PROFILE_NAME="raspberrypi_zero2" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=raspberrypi_zero2 -DLOG=1" />
      <configuration PROFILE_NAME="raspberrypi_cm4" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=raspberrypi_cm4 -DLOG=1" />
      <configuration PROFILE_NAME="raspberry_pi_pico" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=raspberry_pi_pico -DLOG=1" />
      <configuration PROFILE_NAME="raspberry_pi_pico-pio_host" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=raspberry_pi_pico -DLOG=1 -DCFLAGS_CLI=&quot;-DCFG_TUH_RPI_PIO_USB=1&quot;" />
      <configuration PROFILE_NAME="raspberry_pi_pico2" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=raspberry_pi_pico2 -DLOG=1" />
      <configuration PROFILE_NAME="raspberry_pi_pico2-pio_host" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=raspberry_pi_pico2 -DLOG=1 -DCFLAGS_CLI=&quot;-DCFG_TUH_RPI_PIO_USB=1&quot;" />
      <configuration PROFILE_NAME="feather_rp2040" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=pico_sdk -DPICO_BOARD=adafruit_feather_rp2040 -DLOG=1" />
      <configuration PROFILE_NAME="feather_rp2040_max3421" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=feather_rp2040_max3421 -DLOG=1" />
      <configuration PROFILE_NAME="metro_rp2040" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=pico_sdk -DPICO_BOARD=adafruit_metro_rp2040 -DLOG=1 -DMAX3421_HOST=1" />
      <configuration PROFILE_NAME="adafruit_metro_rp2350" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=adafruit_metro_rp2350 -DLOG=1 -DCFLAGS_CLI=&quot;-DCFG_TUH_RPI_PIO_USB=1&quot;" />
      <configuration PROFILE_NAME="adafruit_fruit_jam" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=adafruit_fruit_jam -DLOG=1 -DCFLAGS_CLI=&quot;-DCFG_TUH_RPI_PIO_USB=1&quot;" />
      <configuration PROFILE_NAME="adafruit_feather_esp32_v2" ENABLED="false" TOOLCHAIN_NAME="ESP-IDF" GENERATION_OPTIONS="-DBOARD=adafruit_feather_esp32_v2 -DMAX3421_HOST=1 -DLOG=1">
        <ADDITIONAL_GENERATION_ENVIRONMENT>
          <envs>
            <env name="ESPBAUD" value="1500000" />
          </envs>
        </ADDITIONAL_GENERATION_ENVIRONMENT>
      </configuration>
      <configuration PROFILE_NAME="adafruit_feather_esp32s2" ENABLED="false" TOOLCHAIN_NAME="ESP-IDF" GENERATION_OPTIONS="-DBOARD=adafruit_feather_esp32s2 -DMAX3421_HOST=1 -DLOG=1">
        <ADDITIONAL_GENERATION_ENVIRONMENT>
          <envs>
            <env name="ESPBAUD" value="1500000" />
          </envs>
        </ADDITIONAL_GENERATION_ENVIRONMENT>
      </configuration>
      <configuration PROFILE_NAME="adafruit_feather_esp32s3" ENABLED="false" TOOLCHAIN_NAME="ESP-IDF" GENERATION_OPTIONS="-DBOARD=adafruit_feather_esp32s3 -DMAX3421_HOST=1 -DLOG=1">
        <ADDITIONAL_GENERATION_ENVIRONMENT>
          <envs>
            <env name="ESPBAUD" value="1500000" />
          </envs>
        </ADDITIONAL_GENERATION_ENVIRONMENT>
      </configuration>
      <configuration PROFILE_NAME="adafruit_metro_esp32s2" ENABLED="false" TOOLCHAIN_NAME="ESP-IDF" GENERATION_OPTIONS="-DBOARD=adafruit_metro_esp32s2 -DMAX3421_HOST=1 -DLOG=1">
        <ADDITIONAL_GENERATION_ENVIRONMENT>
          <envs>
            <env name="ESPBAUD" value="1500000" />
          </envs>
        </ADDITIONAL_GENERATION_ENVIRONMENT>
      </configuration>
      <configuration PROFILE_NAME="espressif_kaluga_1" ENABLED="false" TOOLCHAIN_NAME="ESP-IDF" GENERATION_OPTIONS="-DBOARD=espressif_kaluga_1 -DMAX3421_HOST=1 -DLOG=1">
        <ADDITIONAL_GENERATION_ENVIRONMENT>
          <envs>
            <env name="ESPBAUD" value="1500000" />
          </envs>
        </ADDITIONAL_GENERATION_ENVIRONMENT>
      </configuration>
      <configuration PROFILE_NAME="espressif_s3_devkitc" ENABLED="false" TOOLCHAIN_NAME="ESP-IDF" GENERATION_OPTIONS="-DBOARD=espressif_s3_devkitc -DLOG=1">
        <ADDITIONAL_GENERATION_ENVIRONMENT>
          <envs>
            <env name="ESPBAUD" value="1500000" />
          </envs>
        </ADDITIONAL_GENERATION_ENVIRONMENT>
      </configuration>
      <configuration PROFILE_NAME="espressif_s3_devkitc-DMA" ENABLED="false" TOOLCHAIN_NAME="ESP-IDF" GENERATION_OPTIONS="-DBOARD=espressif_s3_devkitc -DLOG=1 -DCFLAGS_CLI=&quot;-DCFG_TUD_DWC2_DMA_ENABLE=1 -DCFG_TUH_DWC2_DMA_ENABLE=1&quot;">
        <ADDITIONAL_GENERATION_ENVIRONMENT>
          <envs>
            <env name="ESPBAUD" value="1500000" />
          </envs>
        </ADDITIONAL_GENERATION_ENVIRONMENT>
      </configuration>
      <configuration PROFILE_NAME="espressif_p4_function_ev" ENABLED="false" TOOLCHAIN_NAME="ESP-IDF" GENERATION_OPTIONS="-DBOARD=espressif_p4_function_ev -DLOG=1">
        <ADDITIONAL_GENERATION_ENVIRONMENT>
          <envs>
            <env name="ESPBAUD" value="1500000" />
          </envs>
        </ADDITIONAL_GENERATION_ENVIRONMENT>
      </configuration>
      <configuration PROFILE_NAME="espressif_p4_function_ev-DMA" ENABLED="false" TOOLCHAIN_NAME="ESP-IDF" GENERATION_OPTIONS="-DBOARD=espressif_p4_function_ev -DLOG=1 -DCFLAGS_CLI=&quot;-DCFG_TUD_DWC2_DMA_ENABLE=1 -DCFG_TUH_DWC2_DMA_ENABLE=1&quot;">
        <ADDITIONAL_GENERATION_ENVIRONMENT>
          <envs>
            <env name="ESPBAUD" value="1500000" />
          </envs>
        </ADDITIONAL_GENERATION_ENVIRONMENT>
      </configuration>
      <configuration PROFILE_NAME="espressif_c3_devkitc" ENABLED="false" TOOLCHAIN_NAME="ESP-IDF" GENERATION_OPTIONS="-DBOARD=espressif_c3_devkitc -DMAX3421_HOST=1 -DLOG=1">
        <ADDITIONAL_GENERATION_ENVIRONMENT>
          <envs>
            <env name="ESPBAUD" value="1500000" />
          </envs>
        </ADDITIONAL_GENERATION_ENVIRONMENT>
      </configuration>
      <configuration PROFILE_NAME="feather_m0_express" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=feather_m0_express -DLOG=1 -DLOGGER=RTT -DMAX3421_HOST=1" />
      <configuration PROFILE_NAME="metro_m0_express" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m0_express -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="metro_m0_express-max3421" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m0_express -DLOG=1 -DLOGGER=RTT -DMAX3421_HOST=1" />
      <configuration PROFILE_NAME="samd11_xplained" ENABLED="false" CONFIG_NAME="MinSizeRel" GENERATION_OPTIONS="-DBOARD=samd11_xplained" />
      <configuration PROFILE_NAME="atsaml21_xpro" ENABLED="false" GENERATION_OPTIONS="-DBOARD=atsaml21_xpro" />
      <configuration PROFILE_NAME="feather_m4_express" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=feather_m4_express -DLOG=1 -DLOGGER=RTT -DMAX3421_HOST=1" />
      <configuration PROFILE_NAME="metro_m4_express" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m4_express -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="metro_m4_express-max3421" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m4_express -DLOG=1 -DLOGGER=RTT -DMAX3421_HOST=1" />
      <configuration PROFILE_NAME="feather_m4_express-zephyr" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=feather_m4_express -DLOG=1 -DMAX3421_HOST=1 -DRTOS=zephyr" />
      <configuration PROFILE_NAME="itsybitsy_m4" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=itsybitsy_m4" />
      <configuration PROFILE_NAME="same54_xplained" ENABLED="false" GENERATION_OPTIONS="-DBOARD=same54_xplained -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="samg55_xplained" ENABLED="false" GENERATION_OPTIONS="-DBOARD=samg55_xplained" />
      <configuration PROFILE_NAME="same70_xplained" ENABLED="false" GENERATION_OPTIONS="-DBOARD=same70_xplained -DLOG=1" />
      <configuration PROFILE_NAME="feather_nrf52840_express" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=feather_nrf52840_express -DLOG=1 -DLOGGER=RTT -DMAX3421_HOST=1" />
      <configuration PROFILE_NAME="nrf52840dk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=nrf52840dk -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="nrf52840dk-zephyr" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=nrf52840dk -DLOG=1 -DTRACE_ETM=1 -DRTOS=zephyr" BUILD_OPTIONS="-v" />
      <configuration PROFILE_NAME="nrf5340dk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=nrf5340dk -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="metro m7 1011 sd" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m7_1011_sd -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="metro_m7_1011" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m7_1011 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="rt1010 evk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mimxrt1010_evk -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="rt1024 evk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mimxrt1024_evk -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="rt1050 evk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mimxrt1050_evkb -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="mimxrt1060_evk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mimxrt1060_evk -DLOG=1" />
      <configuration PROFILE_NAME="mimxrt1064_evk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mimxrt1064_evk" />
      <configuration PROFILE_NAME="rt1170 evkb" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mimxrt1170_evkb -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="stm32f072disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f072disco -DLOG=0 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32f103_mini_2" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f103_mini_2 -DLOG=1 -DLOGGGER=RTT" />
      <configuration PROFILE_NAME="stm32f103ze_iar" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f103ze_iar -DLOG=1 -DLOGGGER=RTT" />
      <configuration PROFILE_NAME="stm32f207nucleo" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f207nucleo -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32f303disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f303disco -DLOG=0 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32f411disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f411disco -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32f412disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f412disco -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32f723disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f723disco -DLOG=0" />
      <configuration PROFILE_NAME="stm32f723disco-DMA" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f723disco -DLOG=1 -DLOGGER=RTT -DCFLAGS_CLI=&quot;-DCFG_TUD_DWC2_DMA_ENABLE=1 -DCFG_TUH_DWC2_DMA_ENABLE=1&quot;" />
      <configuration PROFILE_NAME="stm32f723disco_device1" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f723disco -DLOG=0 -DRHPORT_DEVICE=1" />
      <configuration PROFILE_NAME="stm32f769disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f769disco -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32g0b1nucleo" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32g0b1nucleo" />
      <configuration PROFILE_NAME="stm32g474nucleo" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32g474nucleo" />
      <configuration PROFILE_NAME="b_g474e_dpow1" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=b_g474e_dpow1 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32h563nucleo" ENABLED="false" GENERATION_OPTIONS="-DBOARD=stm32h563nucleo -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="stm32h743eval" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32h743eval -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="stm32h743eval-DMA" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32h743eval -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1 -DCFLAGS_CLI=&quot;-DCFG_TUD_DWC2_DMA_ENABLE=1&quot;" />
      <configuration PROFILE_NAME="stm32h743eval_host1" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32h743eval -DRHPORT_HOST=1 -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="stm32h743eval IAR" ENABLED="false" CONFIG_NAME="Debug" TOOLCHAIN_NAME="iccarm" GENERATION_OPTIONS="-DBOARD=stm32h743eval -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1 -DIAR_CSTAT=1" />
      <configuration PROFILE_NAME="stm32h743nucleo" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32h743nucleo -DLOG=1" />
      <configuration PROFILE_NAME="stm32h7s3nucleo" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32h7s3nucleo -DLOG=1" />
      <configuration PROFILE_NAME="stm32l0538disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32l0538disco -DLOG=0 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32l476disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32l476disco -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32u083cdk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32u083cdk -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32u575nucleo" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32u575nucleo -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32u5a5nucleo" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32u5a5nucleo -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="stm32wb55nucleo" ENABLED="false" GENERATION_OPTIONS="-DBOARD=stm32wb55nucleo" />
      <configuration PROFILE_NAME="ra2a1_ek" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ra2a1_ek -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="ra4m1_ek" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ra4m1_ek -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="ra4m3_ek" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ra4m3_ek -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="ra6m1_ek" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ra6m1_ek -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="ra6m5_ek" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ra6m5_ek -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="ra6m5_ek PORT0" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ra6m5_ek -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1 -DRHPORT_DEVICE=0" />
      <configuration PROFILE_NAME="ra8m1_ek" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ra8m1_ek -DLOG=2 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="ra8m1_ek PORT0" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ra8m1_ek -DLOG=2 -DLOGGER=RTT -DTRACE_ETM=1 -DRHPORT_DEVICE=0" />
      <configuration PROFILE_NAME="uno_r4" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=uno_r4 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="portenta_c33" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=portenta_c33 -DLOG=1" />
      <configuration PROFILE_NAME="lpcxpresso11u37" ENABLED="false" GENERATION_OPTIONS="-DBOARD=lpcxpresso11u37" />
      <configuration PROFILE_NAME="lpcxpresso11u68" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=lpcxpresso11u68 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="lpcxpresso1347" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=lpcxpresso1347 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="lpcxpresso1549" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=lpcxpresso1549 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="lpcxpresso1769" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=lpcxpresso1769 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="mcb1800" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mcb1800 -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="ea4088 quickstart" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ea4088_quickstart -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="ea4357" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ea4357 -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
      <configuration PROFILE_NAME="lpcxpresso51u68" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=lpcxpresso51u68 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="lpc5414" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=lpcxpresso54114 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="lpc54628" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=lpcxpresso54628 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="lpc55s69" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=lpcxpresso55s69 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="mcxn947brk" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=mcxn947brk -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="frdm_mcxa153" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=frdm_mcxa153 -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="frdm_kl25z" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=frdm_kl25z -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="frdm_k32l2a4s" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=frdm_k32l2a4s" />
      <configuration PROFILE_NAME="frdm_k64f" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=frdm_k64f -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="msp430f5529" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=msp_exp430f5529lp" />
      <configuration PROFILE_NAME="msp_exp432e401y" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=msp_exp432e401y -DLOG=1" />
      <configuration PROFILE_NAME="ek_tm4c123gxl" ENABLED="false" CONFIG_NAME="MinSizeRel" GENERATION_OPTIONS="-DBOARD=ek_tm4c123gxl -DLOG=1" />
      <configuration PROFILE_NAME="xmc4500_relax" ENABLED="false" GENERATION_OPTIONS="-DBOARD=xmc4500_relax -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="xmc4500_relax_dma" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=xmc4500_relax -DLOG=1 -DLOGGER=RTT -DCFLAGS_CLI=&quot;-DCFG_TUD_DWC2_DMA=1&quot;" />
      <configuration PROFILE_NAME="f1c100s" ENABLED="false" GENERATION_OPTIONS="-DBOARD=f1c100s" />
      <configuration PROFILE_NAME="mm32f327x_mb39" ENABLED="false" GENERATION_OPTIONS="-DBOARD=mm32f327x_mb39" />
      <configuration PROFILE_NAME="fomu" ENABLED="false" GENERATION_OPTIONS="-DBOARD=fomu" />
      <configuration PROFILE_NAME="sipeed_longan_nano" ENABLED="false" GENERATION_OPTIONS="-DBOARD=sipeed_longan_nano" />
      <configuration PROFILE_NAME="ch32v103r_r1_1v0" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ch32v103r_r1_1v0" />
      <configuration PROFILE_NAME="nanoch32v203" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=nanoch32v203" />
      <configuration PROFILE_NAME="ch32v203c_r0_1v0" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ch32v203c_r0_1v0 -DLOG=0" />
      <configuration PROFILE_NAME="ch32v203c_r0_1v0 USBFS" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ch32v203c_r0_1v0 -DPORT=1" />
      <configuration PROFILE_NAME="ch32v203g_r0_1v0" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=ch32v203g_r0_1v0" />
      <configuration PROFILE_NAME="nanoch32v305" ENABLED="false" GENERATION_OPTIONS="-DBOARD=nanoch32v305 -DLOG=1" />
      <configuration PROFILE_NAME="ch32v307v_r1_1v0" ENABLED="false" GENERATION_OPTIONS="-DBOARD=ch32v307v_r1_1v0 -DLOG=1" />
      <configuration PROFILE_NAME="ch32v307v_r1_1v0 USBFS" ENABLED="false" GENERATION_OPTIONS="-DBOARD=ch32v307v_r1_1v0 -DSPEED=full" />
      <configuration PROFILE_NAME="da14695_dk_usb" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=da14695_dk_usb" />
      <configuration PROFILE_NAME="max32650fthr" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=max32650fthr -DLOG=0 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="max32666fthr" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=max32666fthr -DLOG=0 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="max32690evkit" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=max32690evkit -DLOG=1 -DLOGGER=RTT" />
      <configuration PROFILE_NAME="at_start_f403a" ENABLED="false" GENERATION_OPTIONS="-DBOARD=at_start_f403a -DLOG=1" />
      <configuration PROFILE_NAME="at_start_f423" ENABLED="false" GENERATION_OPTIONS="-DBOARD=at_start_f423 -DLOG=1" />
    </configurations>
  </component>
</project>

================================================
FILE: .idea/debugServers/AT32F423VCT7.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="AT32F423VCT7" uniqueID="de4ea1de-6dcf-413e-a21f-aaeaeb0f3dbc">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="AT32F423VCT7" reset-before="false" frequency="16000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/ST_LINK.xml
================================================
<component name="DebugServers">
  <stlink-debug-target name="ST-LINK" uniqueID="cf98f5f4-9c5b-4340-ab06-16ddd7f07062">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/opt/st/stm32cubeclt_1.20.0/STLink-gdb-server/bin/ST-LINK_gdbserver" programmer="/opt/st/stm32cubeclt_1.20.0/STM32CubeProgrammer/bin" />
    <st-link />
    <device interface="SWD" />
    <connection port="61234" warmup-ms="500" />
    <swo enabled="false" port="61235" />
  </stlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/at32f403acgu7.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="at32f403acgu7" uniqueID="13a1c815-97d7-4b16-8fcc-564bddfe2270">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="AT32F403ACGU7" reset-before="false" frequency="16000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/esp32s2.xml
================================================
<component name="DebugServers">
  <generic-debug-target name="esp32s2" uniqueID="254eff00-2acf-48fe-b255-1d0c0c9c4a7a">
    <debugger version="1">
      <debugger kind="GDB">$USER_HOME$/.espressif/tools/xtensa-esp-elf-gdb/14.2_20240403/xtensa-esp-elf-gdb/bin/xtensa-esp32s2-elf-gdb</debugger>
      <env />
    </debugger>
    <gdbserver exe="$USER_HOME$/.espressif/tools/openocd-esp32/v0.12.0-esp32-20241016/openocd-esp32/bin/openocd" args="-f board/esp32s2-kaluga-1.cfg">
      <env />
    </gdbserver>
    <console port="4444" />
    <target download-type="NONE" reset-command="monitor reset halt" reset-before="false" />
    <connection extended-remote="false" remote-string="tcp::3333" warmup-ms="500" />
  </generic-debug-target>
</component>

================================================
FILE: .idea/debugServers/lpc1769.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="lpc1769" uniqueID="8f746157-a0c3-435f-b417-10f26c3b2699">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="LPC1769" reset-before="false" frequency="12000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/lpc55s69.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="lpc55s69" uniqueID="7de47452-94f1-4f1d-b03c-0f4ad3556d01">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="LPC55S69_M33_0" reset-before="false" frequency="12000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/max32690.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="max32690" uniqueID="cb5e7c25-cbda-4c6d-94e9-28a85a81ba66">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="MAX32690" reset-before="false" frequency="16000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/mcxa153.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="mcxa153" uniqueID="6a023429-69e6-4f8c-a592-4995cdf255db">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="MCXA153" reset-before="false" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/nrf52833.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="nrf52833" uniqueID="19eede9f-2096-4b30-9390-14d415964264">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="nRF52833_xxAA" reset-before="false" frequency="12000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/nrf5340.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="nrf5340" uniqueID="d82e668b-1307-4266-8a5c-3752be6795c9" selected="true">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="nRF5340_xxAA_APP" reset-before="false" frequency="12000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/ra6m1.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="ra6m1" uniqueID="c8cdc79a-939b-4342-92b1-d24da72d12fe">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="R7FA6M1AD" reset-before="false" frequency="16000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/ra6m5.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="ra6m5" uniqueID="19100d9f-7329-47da-b566-f9faf297f47c">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="R7FA6M5BH" reset-before="false" frequency="16000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/rp2040.xml
================================================
<component name="DebugServers">
  <generic-debug-target name="rp2040" uniqueID="006ce655-8571-401e-a94b-6a4f6d519724">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/local/bin/openocd" args="-f interface/cmsis-dap.cfg -f target/rp2040.cfg -c &quot;adapter speed 5000&quot;">
      <env />
    </gdbserver>
    <console enabled="true" port="4444" />
    <target download-type="UPDATED_ONLY" reset-before="false" />
    <connection extended-remote="false" remote-string="tcp::3333" warmup-ms="500" />
  </generic-debug-target>
</component>

================================================
FILE: .idea/debugServers/rp2350.xml
================================================
<component name="DebugServers">
  <generic-debug-target name="rp2350" uniqueID="939fdf16-9c30-4261-8435-3e8df7fd5800">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/local/bin/openocd" args="-f interface/cmsis-dap.cfg -f target/rp2350.cfg -c &quot;adapter speed 5000&quot;">
      <env />
    </gdbserver>
    <console enabled="true" port="4444" />
    <target download-type="UPDATED_ONLY" reset-before="false" />
    <connection extended-remote="false" remote-string="tcp::3333" warmup-ms="500" />
  </generic-debug-target>
</component>

================================================
FILE: .idea/debugServers/rt1011.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="rt1011" uniqueID="e10c53c4-acf5-4a6f-a05d-32b7b042d70a">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="MIMXRT1011xxx5A" reset-before="false" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/rt1060.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="rt1060" uniqueID="851396c6-2030-4694-b86d-21ba9547ddcb">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="MIMXRT1062xxx6A" reset-before="false" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/rt1064.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="rt1064" uniqueID="9602472b-6ce8-4a2d-9636-1c03b5fcd6da">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="MIMXRT1064xxx6A" reset-before="false" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/rt1170.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="rt1170" uniqueID="cfc772e4-782e-49a3-99fb-b6f726e14f9d">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="MIMXRT1176xxxA_M7" reset-before="false" frequency="16000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/s3.xml
================================================
<component name="DebugServers">
  <esp-idf-debug-target name="s3" uniqueID="e096f0d4-5923-482d-bcc3-169a2cfd7cdc">
    <console enabled="false" />
    <target />
  </esp-idf-debug-target>
</component>

================================================
FILE: .idea/debugServers/sam21.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="sam21" uniqueID="b22537b6-0924-4a2b-8721-48a8952239de">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="ATSAMD21G18A" reset-before="false" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/sam51.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="sam51" uniqueID="481ff0d4-6501-4394-8b6b-f7a2ca4c2675">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="ATSAMD51J19A" reset-before="false" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/stm32f072.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="stm32f072" uniqueID="f5c65701-0f8d-4923-a7ea-3ee2547147ae">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="STM32F072RB" reset-before="false" frequency="12000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/stm32f303.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="stm32f303" uniqueID="1cdd63e5-1736-42be-bff3-4c48e1f169fa">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="STM32F303VC" reset-before="false" frequency="12000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/stm32f411.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="stm32f411" uniqueID="c48950a7-634c-49b6-b136-204ed0b71718">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="STM32F411VE" reset-before="false" frequency="12000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/stm32f769.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="stm32f769" uniqueID="7a47302f-f7e5-434b-b20b-78e95318dd0c">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="STM32F769NI" reset-before="false" frequency="16000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/stm32h563.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="stm32h563" uniqueID="a3e9293d-113b-48b3-b83d-dd4249984abe">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="STM32H562ZI" reset-before="false" frequency="16000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/stm32h743.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="stm32h743" uniqueID="6d6a3ed6-f66d-4f6a-9e70-6aafe5c971d0">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="STM32H743XI" reset-before="false" frequency="16000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/stm32l053.xml
================================================
<component name="DebugServers">
  <jlink-debug-target name="stm32l053" uniqueID="51d156d7-86a6-4006-814a-ed14981d7b49">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver exe="/usr/bin/JLinkGDBServerCLExe" />
    <console port="19021" />
    <target device="STM32L053R8" reset-before="false" frequency="12000" />
    <connection extended-remote="false" port="4444" warmup-ms="500" />
    <swo />
  </jlink-debug-target>
</component>

================================================
FILE: .idea/debugServers/wch_riscv.xml
================================================
<component name="DebugServers">
  <generic-debug-target name="wch-riscv" uniqueID="c471e2d0-3cb4-4e7e-aeb7-a33d0c8fdc08">
    <debugger version="1">
      <debugger kind="GDB" isBundled="true" />
      <env />
    </debugger>
    <gdbserver dir="$CMakeProjectDir$" exe="$USER_HOME$/app/riscv-openocd-wch/src/openocd" args="-f hw/bsp/ch32v20x/wch-riscv.cfg">
      <env />
    </gdbserver>
    <console enabled="true" port="4444" />
    <target download-type="UPDATED_ONLY" reset-command="monitor reset init; resume 0x08000000" reset-before="false" />
    <connection extended-remote="false" remote-string="tcp::3333" warmup-ms="500" />
  </generic-debug-target>
</component>

================================================
FILE: .idea/runConfigurations/k64f.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="k64f" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="nxp" PROGRAM_PARAMS="-device &quot;MK64FN1M0xxx12&quot; -if swd -speed 10000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/kl25.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="kl25" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="nxp" PROGRAM_PARAMS="-device &quot;MKL25Z128xxx4&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/lpc1857.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="lpc1857" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="nxp" PROGRAM_PARAMS="-device &quot;lpc1857&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="device_info" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="device_info">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/lpc4088.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="lpc4088" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="nxp" PROGRAM_PARAMS="-device &quot;lpc4088&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/lpc54628.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="lpc54628" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="nxp" PROGRAM_PARAMS="-device &quot;LPC54628J512&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/lpc55s69.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="lpc55s69" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="nxp" PROGRAM_PARAMS="-device &quot;lpc55s69&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/mcx947.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="mcx947" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="nxp" PROGRAM_PARAMS="-device &quot;MCXN947_M33_0&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun -jlinkscriptfile $ProjectFileDir$/hw/bsp/mcx/debug.jlinkscript" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/nrf52840.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="nrf52840" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="nrf" PROGRAM_PARAMS="-select usb=752001685 -device &quot;nrf52840_xxaa&quot; -if swd -speed 8000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/nrf5340.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="nrf5340" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="nrf" PROGRAM_PARAMS="-select usb=752001685 -device &quot;nrf5340_xxaa_app&quot; -if swd -speed 16000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/ra2a1.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="ra2a1" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="renesas" PROGRAM_PARAMS="-device &quot;R7FA2A1AB&quot; -if swd -speed 20000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/ra4m1.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="ra4m1" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="renesas" PROGRAM_PARAMS="-device &quot;R7FA4M1AB&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun -jlinkscriptfile $PROJECT_DIR$/hw/bsp/ra/debug.jlinkscript" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/ra6m1.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="ra6m1" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="renesas" PROGRAM_PARAMS="-device &quot;R7FA6M1AD&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun -jlinkscriptfile $PROJECT_DIR$/hw/bsp/ra/debug.jlinkscript" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/ra6m5.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="ra6m5" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="renesas" PROGRAM_PARAMS="-device &quot;R7FA6M5BH&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun -jlinkscriptfile $PROJECT_DIR$/hw/bsp/ra/debug.jlinkscript" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/rp2040.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="rp2040" type="com.jetbrains.cidr.embedded.openocd.conf.type" factoryName="com.jetbrains.cidr.embedded.openocd.conf.factory" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <openocd version="1" gdb-port="3333" telnet-port="4444" board-config="$PROJECT_DIR$/hw/bsp/rp2040/rp2040-openocd.cfg" reset-type="INIT" download-type="UPDATED_ONLY">
      <debugger kind="GDB" isBundled="true" />
    </openocd>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/rt1010.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="rt1010" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="nxp" PROGRAM_PARAMS="-device &quot;MIMXRT1011xxx5A&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun -jlinkscriptfile $ProjectFileDir$/hw/bsp/imxrt/debug.jlinkscript" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/rt1060.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="rt1060" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="nxp" PROGRAM_PARAMS="-device &quot;MIMXRT1062xxx5A&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="device_info" TARGET_NAME="device_info" version="1" RUN_TARGET_PROJECT_NAME="device_info" RUN_TARGET_NAME="device_info">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/samd21g18.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="samd21g18" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="microchip" PROGRAM_PARAMS="-device &quot;ATSAMD21G18&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/samd51j19.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="samd51j19" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="microchip" PROGRAM_PARAMS="-device &quot;ATSAMD51J19A&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/stlink.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="stlink" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" PROGRAM_PARAMS="-p 49578 -cp &quot;$USER_HOME$/st/stm32cubeide_1.16.1/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.1.400.202404281720/tools/bin&quot; --frequency 8000 --swd" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" CONFIG_NAME="raspberry_pi_pico" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::49578" executable="$USER_HOME$/st/stm32cubeide_1.16.1/plugins/com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.linux64_2.1.400.202404281720/tools/bin/ST-LINK_gdbserver" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD">
      <debugger kind="GDB" isBundled="true" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/stm32g474.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="stm32g474" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="stm32" PROGRAM_PARAMS="-device &quot;stm32g474re&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/stm32h563.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="stm32h563" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="stm32" PROGRAM_PARAMS="-device &quot;stm32h563zi&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/stm32h743.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="stm32h743" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="stm32" PROGRAM_PARAMS="-device &quot;stm32h743xi&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc_hid" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc_hid">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/stm32u5a5.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="stm32u5a5" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="stm32" PROGRAM_PARAMS="-device &quot;stm32u5a5zj&quot; -if swd -speed 50000 -port 25321 -nogui -singlerun" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/runConfigurations/uno_r4.xml
================================================
<component name="ProjectRunConfigurationManager">
  <configuration default="false" name="uno_r4" type="com.jetbrains.cidr.embedded.customgdbserver.type" factoryName="com.jetbrains.cidr.embedded.customgdbserver.factory" folderName="renesas" PROGRAM_PARAMS="-device &quot;R7FA4M1AB&quot; -if swd -speed 20000 -port 25321 -nogui -singlerun -jlinkscriptfile $PROJECT_DIR$/hw/bsp/ra/debug.jlinkscript" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="tinyusb_examples" TARGET_NAME="cdc_msc" version="1" RUN_TARGET_PROJECT_NAME="tinyusb_examples" RUN_TARGET_NAME="cdc_msc">
    <custom-gdb-server version="1" gdb-connect="tcp::25321" executable="/usr/bin/JLinkGDBServer" warmup-ms="0" download-type="ALWAYS" reset-cmd="monitor reset" reset-type="AFTER_DOWNLOAD" connection-mode="REMOTE" gdbserver-enable="false" console-enabled="false" console-port="0">
      <debugger kind="GDB" isBundled="true" />
      <extra-debugger-params debugger-working-dir="" debugger-env-pass-parent="true" custom-script="" />
    </custom-gdb-server>
    <method v="2">
      <option name="CLION.COMPOUND.BUILD" enabled="true" />
    </method>
  </configuration>
</component>

================================================
FILE: .idea/vcs.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="$PROJECT_DIR$" vcs="Git" />
    <mapping directory="$PROJECT_DIR$/hw/mcu/raspberry_pi/Pico-PIO-USB" vcs="Git" />
  </component>
</project>

================================================
FILE: .pre-commit-config.yaml
================================================
# SPDX-FileCopyrightText: 2020 Diego Elio Pettenò
#
# SPDX-License-Identifier: Unlicense

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v4.4.0
  hooks:
  - id: check-yaml
  - id: trailing-whitespace
    exclude: |
      (?x)^(
        hw/bsp/mcx/sdk/
      )
  - id: end-of-file-fixer
    exclude: |
      (?x)^(
        .idea/|
        hw/bsp/mcx/sdk/|
        docs/contributing/code_of_conduct.rst|
        docs/info/contributors.rst
      )
  - id: forbid-submodules

- repo: https://github.com/codespell-project/codespell
  rev: v2.2.4
  hooks:
  - id: codespell
    args: [-w]
    exclude: |
      (?x)^(
        lib/|
        hw/bsp/mcx/sdk/
      )

- repo: local
  hooks:
  - id: unit-test
    name: unit-test
    files: ^(src/|test/unit-test/)
    entry: sh -c "cd test/unit-test && ceedling test:all"
    pass_filenames: false
    types_or: [c, header]
    language: system

#  - id: build-fuzzer
#    name: build-fuzzer
#    files: ^(src/|test/fuzz/)
#    language: system
#    types_or: [c, header]
#    entry: |
#      bash -c 'export CC=clang
#      export CXX=clang++
#      fuzz_harness=$(ls -d test/fuzz/device/*/)
#      for h in $fuzz_harness
#      do
#        make -C $h get-deps
#        make -C $h all
#      done'


================================================
FILE: .readthedocs.yaml
================================================
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

version: 2

# Set the version of Python and other tools you might need
build:
  os: ubuntu-22.04
  tools:
    python: "3.11"

# Build documentation in the docs/ directory with Sphinx
sphinx:
   configuration: docs/conf.py

# Optionally declare the Python requirements required to build your docs
python:
  install:
    - requirements: docs/requirements.txt

submodules:
  include: []
  recursive: false


================================================
FILE: AGENTS.md
================================================
# TinyUSB Agent Instructions

TinyUSB is an open-source cross-platform USB Host/Device stack for embedded systems, designed to be memory-safe with no
dynamic allocation and thread-safe with all interrupt events deferred to non-ISR task functions.

Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected
information that does not match the info here.

## Shared Ground Rules
- Keep TinyUSB memory-safe: avoid dynamic allocation, defer ISR work to task context, and follow C99 with two-space indentation/no tabs.
- Match file organization: core stack under `src`, MCU/BSP support in `hw/{mcu,bsp}`, examples under `examples/{device,host,dual}`, docs in `docs`, tests under `test/{unit-test,fuzz,hil}`.
- Use descriptive snake_case for helpers, reserve `tud_`/`tuh_` for public APIs, `TU_` for macros, and keep headers self-contained with `#if CFG_TUSB_MCU` guards where needed.
- Prefer `.clang-format` for C/C++ formatting, run `pre-commit run --all-files` before submitting, and document board/HIL coverage when applicable.
- Commit in imperative mood, keep changes scoped, and supply PRs with linked issues plus test/build evidence.


## Bootstrap and Build Setup

- Install ARM GCC toolchain: `sudo apt-get update && sudo apt-get install -y gcc-arm-none-eabi`
- Fetch core dependencies: `python3 tools/get_deps.py` -- takes <1 second. NEVER CANCEL.
- For specific board families: `python3 tools/get_deps.py FAMILY_NAME` (e.g., rp2040, stm32f4), or
  `python3 tools/get_deps.py -b BOARD_NAME`
- Dependencies are cached in `lib/` and `hw/mcu/` directories
- For **Espressif** boards, initialize the ESP-IDF environment before any build/flash/monitor command:
  `. $HOME/code/esp-idf/export.sh`

## Build Examples

Choose ONE of these approaches:
**Option 1: Individual Example with CMake and Ninja (RECOMMENDED)**

```bash
cd examples/device/cdc_msc
mkdir -p build && cd build
cmake -DBOARD=raspberry_pi_pico -G Ninja -DCMAKE_BUILD_TYPE=MinSizeRel ..
cmake --build .
```

-- takes 1-2 seconds. NEVER CANCEL. Set timeout to 5+ minutes.

**Option 2: All Examples for a Board**

different folder than Option 1

```bash
cd examples/
mkdir -p build && cd build
cmake -DBOARD=raspberry_pi_pico -G Ninja -DCMAKE_BUILD_TYPE=MinSizeRel ..
cmake --build .
```

-- takes 15-20 seconds, may have some objcopy failures that are non-critical. NEVER CANCEL. Set timeout to 30+ minutes.

**Option 3: Individual Example with Make**

```bash
cd examples/device/cdc_msc
make BOARD=raspberry_pi_pico all
```

-- takes 2-3 seconds. NEVER CANCEL. Set timeout to 5+ minutes.

**Option 4: Espressif Example with ESP-IDF**

Only ESP-IDF-enabled examples are supported for Espressif boards. Use FreeRTOS examples such as `examples/device/cdc_msc_freertos`
that contain `idf_component_register()` support.

```bash
. $HOME/code/esp-idf/export.sh
cd examples/device/cdc_msc_freertos
idf.py -DBOARD=espressif_s3_devkitc build
```

Use `-DBOARD=...` with any supported board under `hw/bsp/espressif/boards/`. NEVER CANCEL. Set timeout to 10+ minutes.


## Build Options

- **Debug build**:
    - CMake: `-DCMAKE_BUILD_TYPE=Debug`
    - Make: `DEBUG=1`
- **With logging**:
    - CMake: `-DLOG=2`
    - Make: `LOG=2`
- **With RTT logger**:
    - CMake: `-DLOG=2 -DLOGGER=rtt`
    - Make: `LOG=2 LOGGER=rtt`
- **RootHub port selection**:
    - CMake: `-DRHPORT_DEVICE=1`
    - Make: `RHPORT_DEVICE=1`
- **Port speed**:
    - CMake: `-DRHPORT_DEVICE_SPEED=OPT_MODE_FULL_SPEED`
    - Make: `RHPORT_DEVICE_SPEED=OPT_MODE_FULL_SPEED`

## Flashing and Deployment

- **Flash with JLink**:
    - CMake: `ninja cdc_msc-jlink`
    - Make: `make BOARD=raspberry_pi_pico flash-jlink`
- **Flash with OpenOCD**:
    - CMake: `ninja cdc_msc-openocd`
    - Make: `make BOARD=raspberry_pi_pico flash-openocd`
- **Generate UF2**:
    - CMake: `ninja cdc_msc-uf2`
    - Make: `make BOARD=raspberry_pi_pico all uf2`
- **List all targets** (CMake/Ninja): `ninja -t targets`
- **Espressif flash**:
    - Run `. $HOME/code/esp-idf/export.sh`
    - `cd examples/device/cdc_msc_freertos`
    - `idf.py -DBOARD=espressif_s3_devkitc flash`
- **Espressif serial monitor / chip log output**:
    - Run `. $HOME/code/esp-idf/export.sh`
    - `cd examples/device/cdc_msc_freertos`
    - `idf.py -DBOARD=espressif_s3_devkitc monitor`

## GDB Debugging

Look up the board's `JLINK_DEVICE` and `OPENOCD_OPTION` from `hw/bsp/*/boards/*/board.cmake` (or `board.mk`).

### JLinkGDBServer

**Terminal 1 – start the GDB server:**
```bash
JLinkGDBServer -device stm32h743xi -if SWD -speed 4000 \
  -port 2331 -swoport 2332 -telnetport 2333 -nogui
```

**Terminal 2 – connect GDB:**
```bash
arm-none-eabi-gdb /tmp/build/firmware.elf
(gdb) target remote :2331
(gdb) monitor reset halt
(gdb) load
(gdb) continue
```

To break on entry instead of running immediately:
```bash
(gdb) monitor reset halt
(gdb) load
(gdb) break main
(gdb) continue
```

### OpenOCD

**Terminal 1 – start the GDB server:**
```bash
openocd -f interface/stlink.cfg -f target/stm32h7x.cfg
# or with J-Link probe:
openocd -f interface/jlink.cfg -f target/stm32h7x.cfg
```

For **rp2040/rp2350** with a CMSIS-DAP probe (e.g. Picoprobe, debugprobe):
```bash
openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000"
# or for rp2350:
openocd -f interface/cmsis-dap.cfg -f target/rp2350.cfg -c "adapter speed 5000"
```

For boards that define `OPENOCD_OPTION` in `board.cmake`, use those options directly:
```bash
openocd $(cat hw/bsp/FAMILY/boards/BOARD/board.cmake | grep OPENOCD_OPTION | ...)
```

**Terminal 2 – connect GDB (OpenOCD default port is 3333):**
```bash
arm-none-eabi-gdb /tmp/build/firmware.elf
(gdb) target remote :3333
(gdb) monitor reset halt
(gdb) load
(gdb) continue
```

### RTT Logging with JLinkGDBServer

- Build with RTT logging enabled (example):
  `cd examples/device/cdc_msc && make BOARD=stm32h743eval LOG=2 LOGGER=rtt all`
- Flash with J-Link:
  `cd examples/device/cdc_msc && make BOARD=stm32h743eval LOG=2 LOGGER=rtt flash-jlink`
- Launch GDB server with RTT port (keep this running in terminal 1):
  `JLinkGDBServer -device stm32h743xi -if SWD -speed 4000 -port 2331 -swoport 2332 -telnetport 2333 -RTTTelnetPort 19021 -nogui`
- Read RTT output (terminal 2):
  `JLinkRTTClient`
- Capture RTT to file (optional):
  `JLinkRTTClient | tee rtt.log`
- For non-interactive capture:
  `timeout 20s JLinkRTTClient > rtt.log`

## Unit Testing

- Install Ceedling: `sudo gem install ceedling`
- Run all unit tests: `cd test/unit-test && ceedling` or `cd test/unit-test && ceedling test:all` -- takes 4 seconds.
  NEVER CANCEL. Set timeout to 10+ minutes.
- Run specific test: `cd test/unit-test && ceedling test:test_fifo`
- Tests use Unity framework with CMock for mocking

## Hardware-in-the-Loop (HIL) Testing

- `-B examples` means `examples` is the parent folder that contains multi-board build outputs such as `examples/cmake-build-BOARD_NAME/...`
- Select config file before running HIL tests:
    - if GitHub Actions self-hosted runner service is running, use `tinyusb.json`
    - otherwise use `local.json`
    - example:
      `HIL_CONFIG=$( (systemctl list-units --type=service --state=running 2>/dev/null; systemctl --user list-units --type=service --state=running 2>/dev/null) | grep -q 'actions\.runner' && echo tinyusb.json || echo local.json )`
- Run tests on actual hardware, one of following ways:
    - test a specific board `python test/hil/hil_test.py -b BOARD_NAME -B examples $HIL_CONFIG`
    - test all boards in config `python test/hil/hil_test.py -B examples $HIL_CONFIG`
- In case of error, enabled verbose mode with `-v` flag for detailed logs. Also try to observe script output, and try to
  modify hil_test.py (temporarily) to add more debug prints to pinpoint the issue.
- Requires pre-built (all) examples for target boards (see Build Examples section 2)

take 2-5 minutes. NEVER CANCEL. Set timeout to 20+ minutes.

## Documentation

- Install requirements: `pip install -r docs/requirements.txt`
- Build docs: `cd docs && sphinx-build -b html . _build` -- takes 2-3 seconds. NEVER CANCEL. Set timeout to 10+ minutes.

## Code Size Metrics

Generate and compare code size metrics to evaluate the impact of changes. This is the most common workflow
when making code changes — use it to verify size impact before committing.

**Quick single-board metrics (preferred for iterative development):**

```bash
rm -rf cmake-build
python3 tools/build.py -b raspberry_pi_pico --target all --target tinyusb_metrics
python3 tools/metrics.py combine -j -m -f tinyusb/src cmake-build/cmake-build-*/metrics.json
```

This builds all examples for one board and produces `metrics.json` + `metrics.md`. Takes ~30 seconds.
NEVER CANCEL. Set timeout to 10+ minutes.

**Comparing with master (before/after workflow):**

1. On master: build and save baseline
   ```bash
   rm -rf cmake-build
   python3 tools/build.py -b raspberry_pi_pico --target all --target tinyusb_metrics
   python3 tools/metrics.py combine -j -m -f tinyusb/src cmake-build/cmake-build-*/metrics.json
   mv metrics.json metrics_master.json
   ```
2. Switch to your branch: rebuild
   ```bash
   rm -rf cmake-build
   python3 tools/build.py -b raspberry_pi_pico --target all --target tinyusb_metrics
   python3 tools/metrics.py combine -j -m -f tinyusb/src cmake-build/cmake-build-*/metrics.json
   ```
3. Compare: `python3 tools/metrics.py compare -m -f tinyusb/src metrics_master.json metrics.json`
   Produces `metrics_compare.md` showing size differences.

**Full CI metrics (all arm-gcc families, for thorough validation):**

```bash
rm -rf cmake-build
FAMILIES=$(python3 .github/workflows/ci_set_matrix.py | python3 -c "import sys,json; d=json.load(sys.stdin); print(' '.join(d.get('arm-gcc',[])))")
python3 tools/build.py --one-first --target all --target tinyusb_metrics $FAMILIES
python3 tools/metrics.py combine -j -m -f tinyusb/src cmake-build/cmake-build-*/metrics.json
```

Builds the first board of each family. Takes 2-4 minutes. NEVER CANCEL. Set timeout to 10+ minutes.

## Code Quality and Validation

- Format code: `clang-format -i path/to/file.c` (uses `.clang-format` config)
- Check spelling: `pip install codespell && codespell` (uses `.codespellrc` config)
- Pre-commit hooks validate unit tests and code quality automatically

## Static Analysis with PVS-Studio

- **Analyze whole project**:
  ```bash
  pvs-studio-analyzer analyze -f examples/cmake-build-raspberry_pi_pico/compile_commands.json -R .PVS-Studio/.pvsconfig -o pvs-report.log -j12 --dump-files --misra-cpp-version 2008 --misra-c-version 2023 --use-old-parser
  ```
- **Analyze specific source files**:
  ```bash
  pvs-studio-analyzer analyze -f examples/cmake-build-raspberry_pi_pico/compile_commands.json -R .PVS-Studio/.pvsconfig -S path/to/file.c -o pvs-report.log -j12 --dump-files --misra-cpp-version 2008 --misra-c-version 2023 --use-old-parser
  ```
- **Multiple specific files**:
  ```bash
  pvs-studio-analyzer analyze -f examples/cmake-build-raspberry_pi_pico/compile_commands.json -R .PVS-Studio/.pvsconfig -S src/file1.c -S src/file2.c -o pvs-report.log -j12 --dump-files --misra-cpp-version 2008 --misra-c-version 2023 --use-old-parser
  ```
- Requires `compile_commands.json` in the build directory (generated by CMake with `-DCMAKE_EXPORT_COMPILE_COMMANDS=ON`)
- Use `-f` option to specify path to `compile_commands.json`
- Use `-R .PVS-Studio/.pvsconfig` to specify rule configuration file
- Use `-j12` for parallel analysis with 12 threads
- `--dump-files` saves preprocessed files for debugging
- `--misra-c-version 2023` enables MISRA C:2023 checks
- `--misra-cpp-version 2008` enables MISRA C++:2008 checks
- `--use-old-parser` uses legacy parser for compatibility
- Analysis takes ~10-30 seconds depending on project size. Set timeout to 5+ minutes.
- View results: `plog-converter -a GA:1,2 -t errorfile pvs-report.log` or open in PVS-Studio GUI

## Validation Checklist

### ALWAYS Run These After Making Changes

1. **Pre-commit validation** (RECOMMENDED): `pre-commit run --all-files`
    - Install pre-commit: `pip install pre-commit && pre-commit install`
    - Runs all quality checks, unit tests, spell checking, and formatting
    - Takes 10-15 seconds. NEVER CANCEL. Set timeout to 15+ minutes.
2. **Build validation**: Build at least one board with all example that exercises your changes, see Build Examples
   section (option 2)
3. Run unit tests relevant to touched modules; add fuzz/HIL coverage when modifying parsers or protocol state machines.

### Manual Testing Scenarios
- **Device examples**: Cannot be fully tested without real hardware, but must build successfully
- **Unit tests**: Exercise core stack functionality - ALL tests must pass
- **Build system**: Must be able to build examples for multiple board families

### Board Selection for Testing
- **STM32F4**: `stm32f407disco` - no external SDK required, good for testing
- **RP2040**: `raspberry_pi_pico` - requires Pico SDK, commonly used
- **Other families**: Check `hw/bsp/FAMILY/boards/` for available boards

## Release Instructions

**DO NOT commit files automatically - only modify files and let the maintainer review before committing.**

1. Bump the release version variable at the top of `tools/make_release.py`.
2. Execute `python3 tools/make_release.py` to refresh:
   - `src/tusb_option.h` (version defines)
   - `repository.yml` (version mapping)
   - `library.json` (PlatformIO version)
   - `sonar-project.properties` (SonarQube version)
   - `docs/reference/boards.rst` (generated board documentation)
   - `hw/bsp/BoardPresets.json` (CMake presets)
3. Generate release notes for `docs/info/changelog.rst`:
   - Get commit list: `git log <last-release-tag>..HEAD --oneline`
   - **Visit GitHub PRs** for merged pull requests to understand context and gather details
   - Use GitHub tools to search/read PRs: `github-mcp-server-list_pull_requests`, `github-mcp-server-pull_request_read`
   - Extract key changes, API modifications, bug fixes, and new features from PR descriptions
   - Add new changelog entry following the existing format:
     - Version heading with equals underline (e.g., `0.20.0` followed by `======`)
     - Release date in italics (e.g., `*November 19, 2024*`)
     - Major sections: General, API Changes, Controller Driver (DCD & HCD), Device Stack, Host Stack, Testing
     - Use bullet lists with descriptive categorization
     - Reference function names, config macros, and file paths using RST inline code (double backticks)
     - Include meaningful descriptions, not just commit messages
4. **Validation before commit**:
   - Run unit tests: `cd test/unit-test && ceedling test:all`
   - Build at least one example: `cd examples/device/cdc_msc && make BOARD=stm32f407disco all`
   - Verify changed files look correct: `git diff --stat`
5. **Leave files unstaged** for maintainer to review, modify if needed, and commit with message: `Bump version to X.Y.Z`
6. **After maintainer commits**: Create annotated tag with `git tag -a vX.Y.Z -m "Release X.Y.Z"`
7. Push commit and tag: `git push origin <branch> && git push origin vX.Y.Z`
8. Create GitHub release from the tag with changelog content

## Repository Structure Quick Reference
```
├── src/                  # Core TinyUSB stack
│   ├── class/            # USB device classes (CDC, HID, MSC, Audio, etc.)
│   ├── portable/         # MCU-specific drivers (organized by vendor)
│   ├── device/           # USB device stack core
│   ├── host/             # USB host stack core
│   └── common/           # Shared utilities (FIFO, etc.)
├── examples/             # Example applications
│   ├── device/           # Device examples (cdc_msc, hid_generic, etc.)
│   ├── host/             # Host examples
│   └── dual/             # Dual-role examples
├── hw/bsp/               # Board Support Packages
│   └── FAMILY/boards/    # Board-specific configurations
├── test/unit-test/       # Unit tests using Ceedling
├── tools/                # Build and utility scripts
└── docs/                 # Sphinx documentation
```

#### Build Time Reference
- **Dependency fetch**: <1 second
- **Single example build**: 1-3 seconds
- **Unit tests**: ~4 seconds
- **Documentation build**: ~2.5 seconds
- **Full board examples**: 15-20 seconds
- **Toolchain installation**: 2-5 minutes (one-time)

#### Key Files to Know
- `tools/get_deps.py`: Manages dependencies for MCU families
- `tools/build.py`: Builds multiple examples, supports make/cmake
- `src/tusb.h`: Main TinyUSB header file
- `src/tusb_config.h`: Configuration template
- `examples/device/cdc_msc/`: Most commonly used example for testing
- `test/unit-test/project.yml`: Ceedling test configuration

#### MCU Reference Manuals and Datasheets
- Look in `$HOME/Documents/Calibre Library` for all MCU reference manuals, datasheets and board schematics.

#### Debugging Build Issues
- **Missing compiler**: Install `gcc-arm-none-eabi` package
- **Missing dependencies**: Run `python3 tools/get_deps.py FAMILY`
- **Board not found**: Check `hw/bsp/FAMILY/boards/` for valid board names
- **objcopy errors**: Often non-critical in full builds, try individual example builds

#### Working with USB Device Classes
- **CDC (Serial)**: `src/class/cdc/` - Virtual serial port
- **HID**: `src/class/hid/` - Human Interface Device (keyboard, mouse, etc.)
- **MSC**: `src/class/msc/` - Mass Storage Class (USB drive)
- **Audio**: `src/class/audio/` - USB Audio Class
- Each class has device (`*_device.c`) and host (`*_host.c`) implementations

#### MCU Family Support
- **STM32**: Largest support (F0, F1, F2, F3, F4, F7, G0, G4, H7, L4, U5, etc.)
- **Raspberry Pi**: RP2040, RP2350 with PIO-USB host support
- **NXP**: iMXRT, Kinetis, LPC families
- **Microchip**: SAM D/E/G/L families
- Check `hw/bsp/` for complete list and `docs/reference/boards.rst` for details

### Code Style Guidelines

#### General Coding Standards
- Use C99 standard
- Memory-safe: no dynamic allocation
- Thread-safe: defer all interrupt events to non-ISR task functions
- 2-space indentation, no tabs
- Use snake_case for variables/functions
- Use UPPER_CASE for macros and constants
- Follow existing variable naming patterns in files you're modifying
- Include proper header comments with MIT license
- Add descriptive comments for non-obvious functions

#### Best Practices
- When including headers, group in order: C stdlib, tusb common, drivers, classes
- Always check return values from functions that can fail
- Use TU_ASSERT() for error checking with return statements
- Follow the existing code patterns in the files you're modifying

Remember: TinyUSB is designed for embedded systems - builds are fast, tests are focused, and the codebase is optimized for resource-constrained environments.


================================================
FILE: CODE_OF_CONDUCT.rst
================================================
***************
Code of Conduct
***************

Our Pledge
----------

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our
project and our community a harassment-free experience for everyone,
regardless of age, body size, disability, ethnicity, sex
characteristics, gender identity and expression, level of experience,
education, socio-economic status, nationality, personal appearance,
race, religion, or sexual identity and orientation.

Our Standards
-------------

Examples of behavior that contributes to creating a positive environment
include:

-  Using welcoming and inclusive language
-  Being respectful of differing viewpoints and experiences
-  Gracefully accepting constructive criticism
-  Focusing on what is best for the community
-  Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

-  The use of sexualized language or imagery and unwelcome sexual
   attention or advances
-  Trolling, insulting/derogatory comments, and personal or political
   attacks
-  Public or private harassment
-  Publishing others' private information, such as a physical or
   electronic address, without explicit permission
-  Other conduct which could reasonably be considered inappropriate in a
   professional setting

Our Responsibilities
--------------------

Project maintainers are responsible for clarifying the standards of
acceptable behavior and are expected to take appropriate and fair
corrective action in response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit,
or reject comments, commits, code, wiki edits, issues, and other
contributions that are not aligned to this Code of Conduct, or to ban
temporarily or permanently any contributor for other behaviors that they
deem inappropriate, threatening, offensive, or harmful.

Scope
-----

This Code of Conduct applies both within project spaces and in public
spaces when an individual is representing the project or its community.
Examples of representing a project or community include using an
official project e-mail address, posting via an official social media
account, or acting as an appointed representative at an online or
offline event. Representation of a project may be further defined and
clarified by project maintainers.

Enforcement
-----------

Instances of abusive, harassing, or otherwise unacceptable behavior may
be reported by contacting the project team at thach@tinyusb.org. All
complaints will be reviewed and investigated and will result in a
response that is deemed necessary and appropriate to the circumstances.
The project team is obligated to maintain confidentiality with regard to
the reporter of an incident. Further details of specific enforcement
policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in
good faith may face temporary or permanent repercussions as determined
by other members of the project's leadership.

Attribution
-----------

This Code of Conduct is adapted from the `Contributor
Covenant <https://www.contributor-covenant.org>`__, version 1.4,
available at
https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq


================================================
FILE: CONTRIBUTORS.rst
================================================
************
Contributors
************

Special thanks to all the people who spent their precious time and effort to help this project so far.
list contributors and their awesome work for the stack:

Notable contributors
====================

(sorted alphabetically)

`Adafruit Team <https://github.com/adafruit>`__
-----------------------------------------------

-  Main supporter and sponsor for hardware boards and kits
-  Discussion and suggestion for feature and improvement
-  Design the project logo


`Gordon McNab <https://github.com/ftdigdm>`__
---------------------------------------------

-  Add new DCD port for Bridgetek FT90x and FT93x


`Ha Thach <https://github.com/hathach>`__
-----------------------------------------

-  *Author and maintainer*
-  Most features development


`Heiko Kuester <https://github.com/IngHK>`__
--------------------------------------------

-  Add CH34x and PL2303 support (CDC host)
-  Improve FTDI and CP210x support (CDC host)


`Hristo Gochkov <https://github.com/me-no-dev>`__
-------------------------------------------------

-  Improve ESP32s2 DCD


`Jacob Berg Potter <https://github.com/j4cbo>`__
------------------------------------------------

-  Add new class driver for network CDC-NCM


`Jan Dümpelmann <https://github.com/duempel>`__
-----------------------------------------------

-  Improve transfer performance for Synopsys DCD for STM32 MCUs


`Jeff Epler <https://github.com/jepler>`__
------------------------------------------

-  Improve MIDI class driver


`Jerzy Kasenberg <https://github.com/kasjer>`__
-----------------------------------------------

-  Add new DCD port for Dialog DA1469x
-  Add new DCD port for PIC32MZ
-  Add new class driver for Bluetooth HCI
-  Add ISO transfer for STM32 Synopsys, Nordic nRF, Dialog DA1469x
-  Improve Audio driver and add uac2\_headset example
-  Improve STM32 Synopsys DCD with various PRs


`J McCarthy <https://github.com/xmos-jmccarthy>`__
--------------------------------------------------

-  Add new DFU 1.1 class driver
-  Add new example for dfu


`Kamil Tomaszewski <https://github.com/kamtom480>`__
----------------------------------------------------

-  Add new DCD port for Sony CXD56 (spresnese board)


`Kay Sievers <https://github.com/kaysievers>`__
-----------------------------------------------

-  Improve MIDI driver with packet API


`Koji KITAYAMA <https://github.com/kkitayam>`__
-----------------------------------------------

-  Add new DCD and HCD port for NXP Kinetis KL25
-  Add new DCD and HCD port for Renesas RX family (RX600, RX700 ..) with GR-CITRUS, RX65n target board
-  Add new DCD and HCD port for Mentor musb with MSP432E4
-  Add new class driver for USB Video Class (UVC 1.5)

`Nathan Conrad <https://github.com/pigrew>`__
---------------------------------------------

-  Add new DCD port for STM32 fsdev Fullspeed device for STM32 L0,
   F0, F1, F3 etc ...
-  Add new class driver for USB Test and Measurement Class (USBTMC)
-  Various improvement e.g Zero-length packet, Lint setup
-  Board support for STM32F070RB Nucleo, STM32F303 Discovery


`Peter Lawrence <https://github.com/majbthrd>`__
------------------------------------------------

-  Add new DCD port for Nuvoton NUC 120, 121, 125, 126, 505
-  Add new class driver for network RNDIS, CDC-ECM
-  Enhance CDC-NCM network driver to compatible with RNDIS/ECM
-  Add *net\_lwip\_webserver* example for demonstration of usbnet with lwip
-  Board support for NuTiny NUC120, NUC121s, NUC125s, NUC126V, NUC505
-  Improve multiple cdc interfaces API & add cdc\_dual\_ports example


`Rafael Silva <https://github.com/perigoso>`__
----------------------------------------------

-  Port DCD Synopsys to support Silabs EFM32GG12 with SLTB009A board
-  Rewrite documentation in rst and setup for readthedocs
-  Generalize Renesas driver and support RA family with EK-RA4M3 board


`Raspberry Pi Team <https://github.com/raspberrypi>`__
------------------------------------------------------

-  Add new DCD port for Raspberry Pi RP2040
-  Add new HCD port for Raspberry Pi RP2040


`Reinhard Panhuber <https://github.com/PanRe>`__
------------------------------------------------

-  Add new class driver for USB Audio Class 2.0 (UAC2)
-  Rework tu\_fifo with unmasked pointer, add DMA support, and constant address support
-  Add new DCD/USBD edpt\_xfer\_fifo() API for optimizing endpoint transfer
-  Add and greatly improve Isochronous transfer
-  Add new audio examples: audio\_test and audio\_4\_channel\_mic


`Scott Shawcroft <https://github.com/tannewt>`__
------------------------------------------------

-  Add new DCD port for SAMD21 and SAMD51
-  Add new class driver for Musical Instrument Digital Interface (MIDI)
-  Improve USBD control transfer, MSC, CDC class driver
-  Board support for Metro M0 & M4 express
-  Write the excellent porting.md documentation
-  Add initial Makefile

`Sean Cross <https://github.com/xobs>`__
----------------------------------------

-  Add new DCD port for ValentyUSB eptri (fomu board)


`Sylvain "tnt" Munaut <https://github.com/smunaut>`__
-----------------------------------------------------

-  Add new class driver for DFU Runtime


`Tian Yunhao <https://github.com/t123yh>`__
-------------------------------------------

-  Add new DCD port for Allwinner F1C100S/F1C200S
-  Add support for osal_rtx4

`Timon Skerutsch <https://github.com/PTS93>`__
----------------------------------------------

-  Add hid\_test.js script and extensive test for bi-directional raw HID


`Tod E. Kurt <https://github.com/todbot>`__
-------------------------------------------

-  Add hid\_test.js script and extensive test for bi-directional raw HID


`Uwe Bonnes <https://github.com/UweBonnes>`__
---------------------------------------------

-  Improve STM32 Synopsys highspeed DCD


`William D. Jones <https://github.com/cr1901>`__
------------------------------------------------

-  Add new DCD port for Synopsys DesignWare for STM32 L4, F2, F4,
   F7, H7 etc ...
-  Add new DCD port for TI MSP430
-  Board support for STM32F407 Discovery, STM32H743 Nucleo, pyboard v1.1, msp\_exp430f5529lp etc ...


`Zixun Li <https://github.com/HiFiPhile>`__
-------------------------------------------

-  Add new DCD port for Microchip SAMx7x
-  Add IAR compiler support
-  Improve UAC2, CDC, DFU class driver
-  Improve stm32_fsdev, chipidea_ci_hs, lpc_ip3511 DCD
-  Host IAR Build CI & hardware in the loop (HITL) test


`Full contributors list <https://github.com/hathach/tinyusb/contributors>`__
============================================================================


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2012-2026, hathach (tinyusb.org)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


================================================
FILE: README.rst
================================================
TinyUSB
=======

|Build Status| |CircleCI Status| |Documentation Status| |Static Analysis| |Fuzzing Status| |Membrowse| |License|

Sponsors
--------

TinyUSB is funded by: Adafruit. Purchasing products from them helps to support this project.

.. figure:: docs/assets/adafruit_logo.svg
   :alt: Adafruit Logo
   :align: left
   :target: https://www.adafruit.com

.. raw:: html

   <div class="clear-both"></div>

Overview
--------

.. figure:: docs/assets/logo.svg
   :alt: TinyUSB
   :align: left

.. raw:: html

   <div class="clear-both"></div>

TinyUSB is an open-source cross-platform USB Host/Device stack for embedded systems. It’s designed for memory safety
(no dynamic allocation) and thread safety (all interrupts deferred to non-ISR task functions). The stack emphasizes portability,
small footprint, and real-time performance across 50+ MCU families.

Key Features
------------

* **Thread-safe:** USB interrupts deferred to task context
* **Memory-safe:** No dynamic allocation, all buffers static
* **Portable:** Supports 50+ MCU families
* **Comprehensive:** Includes CDC, HID, MSC, Audio, and Host support
* **RTOS-friendly:** Works with bare metal, FreeRTOS, RT-Thread, and Mynewt

.. figure:: docs/assets/stack.svg
   :width: 500px
   :align: left
   :alt: stackup

.. raw:: html

   <div class="clear-both"></div>

::

    .
    ├── docs            # Documentation
    ├── examples        # Examples with make and cmake build system
    ├── hw
    │   ├── bsp         # Supported boards source files
    │   └── mcu         # Low level mcu core & peripheral drivers
    ├── lib             # Sources from 3rd party such as FreeRTOS, FatFs ...
    ├── src             # All sources files for TinyUSB stack itself.
    ├── test            # Tests: unit test, fuzzing, hardware test
    └── tools           # Files used internally


Getting started
---------------

See the `online documentation <https://docs.tinyusb.org>`_ for information about using TinyUSB and how it is implemented.

Check out `Getting Started`_ guide for adding TinyUSB to your project or building the examples. If you are new to TinyUSB, we recommend starting with the ``cdc_msc`` example. There is a handful of `Supported Boards`_ that should work out of the box.

We use `GitHub Discussions <https://github.com/hathach/tinyusb/discussions>`_ as our forum. It is a great place to ask questions and advice from the community or to discuss your TinyUSB-based projects.

For bugs and feature requests, please `raise an issue <https://github.com/hathach/tinyusb/issues>`_ and follow the templates there.

See `Porting`_ guide for adding support for new MCUs and boards.

Device Stack
------------

Supports multiple device configurations by dynamically changing USB descriptors, low power functions such like suspend, resume, and remote wakeup. The following device classes are supported:

-  Audio Class 1.0/2.0 (UAC1/UAC2)
-  Bluetooth Host Controller Interface (BTH HCI)
-  Communication Device Class (CDC)
-  Device Firmware Update (DFU): DFU mode (WIP) and Runtime
-  Human Interface Device (HID): Generic (In & Out), Keyboard, Mouse, Gamepad etc ...
-  Printer class
-  Mass Storage Class (MSC): with multiple LUNs
-  Musical Instrument Digital Interface (MIDI)
-  Media Transfer Protocol (MTP/PTP)
-  Network with RNDIS, Ethernet Control Model (ECM), Network Control Model (NCM)
-  Test and Measurement Class (USBTMC)
-  Video class 1.5 (UVC): work in progress
-  Vendor-specific class support with generic In & Out endpoints. Can be used with MS OS 2.0 compatible descriptor to load winUSB driver without INF file.
-  `WebUSB <https://github.com/WICG/webusb>`__ with vendor-specific class

If you have a special requirement, ``usbd_app_driver_get_cb()`` can be used to write your own class driver without modifying the stack. Here is how the RPi team added their reset interface `raspberrypi/pico-sdk#197 <https://github.com/raspberrypi/pico-sdk/pull/197>`_

Host Stack
----------

- Communication Device Class: CDC-ACM
- Vendor serial over USB: FTDI, CP210x, CH34x, PL2303
- Human Interface Device (HID): Keyboard, Mouse, Generic
- Mass Storage Class (MSC)
- Musical Instrument Digital Interface (MIDI)
- Hub with multiple-level support

Similar to the Device Stack, if you have a special requirement, ``usbh_app_driver_get_cb()`` can be used to write your own class driver without modifying the stack.

Power Delivery Stack
--------------------

- Power Delivery 3.0 (PD3.0) with USB Type-C support (WIP)
- Super early stage, only for testing purpose
- Only support STM32 G4

OS Abstraction layer
--------------------

TinyUSB is completely thread-safe by pushing all Interrupt Service Request (ISR) events into a central queue, then processing them later in the non-ISR context task function. It also uses semaphore/mutex to access shared resources such as Communication Device Class (CDC) FIFO. Therefore the stack needs to use some of the OS's basic APIs. Following OSes are already supported out of the box.

- **No OS**
- **FreeRTOS**
- `RT-Thread <https://github.com/RT-Thread/rt-thread>`_: `repo <https://github.com/RT-Thread-packages/tinyusb>`_
- **Mynewt** Due to the newt package build system, Mynewt examples are better to be on its `own repo <https://github.com/hathach/mynewt-tinyusb-example>`_

Supported CPUs
--------------

+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| Manufacturer | Family                      | Device | Host | Highspeed | Driver                 | Note               |
+==============+=============================+========+======+===========+========================+====================+
| Allwinner    | F1C100s/F1C200s             | ✔      |      | ✔         | sunxi                  | musb variant       |
+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| Analog       | MAX3421E                    |        | ✔    | ✖         | max3421                | via SPI            |
|              +-----------------------------+--------+------+-----------+------------------------+--------------------+
|              | MAX32 650, 666, 690,        | ✔      |      | ✔         | musb                   | 1-dir ep           |
|              | MAX78002                    |        |      |           |                        |                    |
+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| Artery AT32  | F403a_407, F413             | ✔      |      |           | fsdev                  | 512 USB RAM        |
|              +-----------------------------+--------+------+-----------+------------------------+--------------------+
|              | F415, F435_437, F423,       | ✔      | ✔    |           | dwc2                   |                    |
|              | F425, F45x                  |        |      |           |                        |                    |
|              +-----------------------------+--------+------+-----------+------------------------+--------------------+
|              | F402_F405                   | ✔      | ✔    | ✔         | dwc2                   | F405 is HS         |
+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| Bridgetek    | FT90x                       | ✔      |      | ✔         | ft9xx                  | 1-dir ep           |
+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| Broadcom     | BCM2711, BCM2837            | ✔      |      | ✔         | dwc2                   |                    |
+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| Dialog       | DA1469x                     | ✔      | ✖    | ✖         | da146xx                |                    |
+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| Espressif    | S2, S3, H4                  | ✔      | ✔    | ✖         | dwc2                   |                    |
| ESP32        +-----------------------------+--------+------+-----------+------------------------+--------------------+
|              | P4                          | ✔      | ✔    | ✔         | dwc2                   |                    |
+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| GigaDevice   | GD32VF103                   | ✔      |      | ✖         | dwc2                   |                    |
+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| HPMicro      | HPM6750                     | ✔      | ✔    | ✔         | ci_hs, ehci            |                    |
+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| Infineon     | XMC4500                     | ✔      | ✔    | ✖         | dwc2                   |                    |
+--------------+-----+-----------------------+--------+------+-----------+------------------------+--------------------+
| MicroChip    | SAM | D11, D21, L21, L22    | ✔      |      | ✖         | samd                   |                    |
|              |     +-----------------------+--------+------+-----------+------------------------+--------------------+
|              |     | D51, E5x              | ✔      |      | ✖         | samd                   |                    |
|              |     +-----------------------+--------+------+-----------+------------------------+--------------------+
|              |     | G55                   | ✔      |      | ✖         | samg                   | 1-dir ep           |
|              |     +-----------------------+--------+------+-----------+------------------------+--------------------+
|              |     | E70,S70,V70,V71       | ✔      |      | ✔         | samx7x                 | 1-dir ep           |
|              +-----+-----------------------+--------+------+-----------+------------------------+--------------------+
|              | PIC | 24                    | ✔      |      |           | pic                    | ci_fs variant      |
|              |     +-----------------------+--------+------+-----------+------------------------+--------------------+
|              |     | 32 mm, mk, mx         | ✔      |      |           | pic                    | ci_fs variant      |
|              |     +-----------------------+--------+------+-----------+------------------------+--------------------+
|              |     | dsPIC33               | ✔      |      |           | pic                    | ci_fs variant      |
|              |     +-----------------------+--------+------+-----------+------------------------+--------------------+
|              |     | 32mz                  | ✔      |      |           | pic32mz                | musb variant       |
+--------------+-----+-----------------------+--------+------+-----------+------------------------+--------------------+
| MindMotion   | mm32                        | ✔      |      | ✖         | mm32f327x_otg          | ci_fs variant      |
+--------------+-----+-----------------------+--------+------+-----------+------------------------+--------------------+
| NordicSemi   | nRF 52833, 52840, 5340      | ✔      | ✖    | ✖         | nrf5x                  | only ep8 is ISO    |
+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| Nuvoton      | NUC120                      | ✔      | ✖    | ✖         | nuc120                 |                    |
|              +-----------------------------+--------+------+-----------+------------------------+--------------------+
|              | NUC121/NUC125, NUC126       | ✔      | ✖    | ✖         | nuc121                 |                    |
|              +-----------------------------+--------+------+-----------+------------------------+--------------------+
|              | NUC505                      | ✔      |      | ✔         | nuc505                 |                    |
+--------------+---------+-------------------+--------+------+-----------+------------------------+--------------------+
| NXP          | iMXRT   | RT 10xx, 11xx     | ✔      | ✔    | ✔         | ci_hs, ehci            |                    |
|              +---------+-------------------+--------+------+-----------+------------------------+--------------------+
|              | Kinetis | KL                | ✔      | ⚠    | ✖         | ci_fs, khci            |                    |
|              |         +-------------------+--------+------+-----------+------------------------+--------------------+
|              |         | K32L2             | ✔      |      | ✖         | khci                   | ci_fs variant      |
|              +---------+-------------------+--------+------+-----------+------------------------+--------------------+
|              | LPC     | 11u, 13, 15       | ✔      | ✖    | ✖         | lpc_ip3511             |                    |
|              |         +-------------------+--------+------+-----------+------------------------+--------------------+
|              |         | 17, 40            | ✔      | ⚠    | ✖         | lpc17_40, ohci         |                    |
|              |         +-------------------+--------+------+-----------+------------------------+--------------------+
|              |         | 18, 43            | ✔      | ✔    | ✔         | ci_hs, ehci            |                    |
|              |         +-------------------+--------+------+-----------+------------------------+--------------------+
|              |         | 51u               | ✔      | ✖    | ✖         | lpc_ip3511             |                    |
|              |         +-------------------+--------+------+-----------+------------------------+--------------------+
|              |         | 54                | ⚠      | ⚠    | ✔         | lpc_ip3511, lpc_ip3516 | NRND, read errata  |
|              |         +-------------------+--------+------+-----------+------------------------+--------------------+
|              |         | 55                | ✔      | ✔    | ✔         | lpc_ip3511, lpc_ip3516 |                    |
|              +---------+-------------------+--------+------+-----------+------------------------+--------------------+
|              | MCX     | N9                | ✔      |      | ✔         | ci_fs, ci_hs, ehci     |                    |
|              |         +-------------------+--------+------+-----------+------------------------+--------------------+
|              |         | A15               | ✔      |      |           | ci_fs                  |                    |
|              +---------+-------------------+--------+------+-----------+------------------------+--------------------+
|              | RW61x                       | ✔      | ✔    | ✔         | ci_hs, ehci            |                    |
+--------------+-----------------------------+--------+------+-----------+------------------------+--------------------+
| Raspberry Pi | RP2040, RP2350              | ✔      | ✔    | ✖         | rp2040, pio_usb        |                    |
+--------------+-----+-----------------------+--------+------+-----------+------------------------+--------------------+
| Renesas   
Download .txt
gitextract_0tofuoxf/

├── .circleci/
│   ├── config.yml
│   └── config2.yml
├── .clang-format
├── .codespellrc
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   └── feature_request.yml
│   ├── actions/
│   │   ├── get_deps/
│   │   │   └── action.yml
│   │   └── setup_toolchain/
│   │       ├── action.yml
│   │       ├── download/
│   │       │   └── action.yml
│   │       ├── espressif/
│   │       │   └── action.yml
│   │       └── toolchain.json
│   ├── membrowse_pr_message.j2
│   └── workflows/
│       ├── build.yml
│       ├── build_util.yml
│       ├── ci_set_matrix.py
│       ├── cifuzz.yml
│       ├── claude-code-review.yml
│       ├── claude.yml
│       ├── labeler.yml
│       ├── membrowse-comment.yml
│       ├── membrowse-onboard.yml
│       ├── metrics_comment.yml
│       ├── pre-commit.yml
│       ├── static_analysis.yml
│       └── trigger.yml
├── .gitignore
├── .idea/
│   ├── .gitignore
│   ├── cmake.xml
│   ├── debugServers/
│   │   ├── AT32F423VCT7.xml
│   │   ├── ST_LINK.xml
│   │   ├── at32f403acgu7.xml
│   │   ├── esp32s2.xml
│   │   ├── lpc1769.xml
│   │   ├── lpc55s69.xml
│   │   ├── max32690.xml
│   │   ├── mcxa153.xml
│   │   ├── nrf52833.xml
│   │   ├── nrf5340.xml
│   │   ├── ra6m1.xml
│   │   ├── ra6m5.xml
│   │   ├── rp2040.xml
│   │   ├── rp2350.xml
│   │   ├── rt1011.xml
│   │   ├── rt1060.xml
│   │   ├── rt1064.xml
│   │   ├── rt1170.xml
│   │   ├── s3.xml
│   │   ├── sam21.xml
│   │   ├── sam51.xml
│   │   ├── stm32f072.xml
│   │   ├── stm32f303.xml
│   │   ├── stm32f411.xml
│   │   ├── stm32f769.xml
│   │   ├── stm32h563.xml
│   │   ├── stm32h743.xml
│   │   ├── stm32l053.xml
│   │   └── wch_riscv.xml
│   ├── runConfigurations/
│   │   ├── k64f.xml
│   │   ├── kl25.xml
│   │   ├── lpc1857.xml
│   │   ├── lpc4088.xml
│   │   ├── lpc54628.xml
│   │   ├── lpc55s69.xml
│   │   ├── mcx947.xml
│   │   ├── nrf52840.xml
│   │   ├── nrf5340.xml
│   │   ├── ra2a1.xml
│   │   ├── ra4m1.xml
│   │   ├── ra6m1.xml
│   │   ├── ra6m5.xml
│   │   ├── rp2040.xml
│   │   ├── rt1010.xml
│   │   ├── rt1060.xml
│   │   ├── samd21g18.xml
│   │   ├── samd51j19.xml
│   │   ├── stlink.xml
│   │   ├── stm32g474.xml
│   │   ├── stm32h563.xml
│   │   ├── stm32h743.xml
│   │   ├── stm32u5a5.xml
│   │   └── uno_r4.xml
│   └── vcs.xml
├── .pre-commit-config.yaml
├── .readthedocs.yaml
├── AGENTS.md
├── CODE_OF_CONDUCT.rst
├── CONTRIBUTORS.rst
├── LICENSE
├── README.rst
├── SConscript
├── docs/
│   ├── _static/
│   │   └── custom.css
│   ├── conf.py
│   ├── faq.rst
│   ├── getting_started.rst
│   ├── index.rst
│   ├── info/
│   │   ├── changelog.rst
│   │   ├── code_of_conduct.rst
│   │   ├── contributors.rst
│   │   └── index.rst
│   ├── integration.rst
│   ├── porting.rst
│   ├── reference/
│   │   ├── architecture.rst
│   │   ├── boards.rst
│   │   ├── concurrency.rst
│   │   ├── dependencies.rst
│   │   ├── glossary.rst
│   │   ├── index.rst
│   │   └── usb_concepts.rst
│   ├── requirements.txt
│   └── troubleshooting.rst
├── examples/
│   ├── CMakeLists.txt
│   ├── CMakePresets.json
│   ├── build_system/
│   │   ├── cmake/
│   │   │   ├── cpu/
│   │   │   │   ├── arm1176jzf-s.cmake
│   │   │   │   ├── arm926ej-s.cmake
│   │   │   │   ├── cortex-a53.cmake
│   │   │   │   ├── cortex-a72.cmake
│   │   │   │   ├── cortex-m0.cmake
│   │   │   │   ├── cortex-m0plus.cmake
│   │   │   │   ├── cortex-m23.cmake
│   │   │   │   ├── cortex-m3.cmake
│   │   │   │   ├── cortex-m33-nodsp-nofp.cmake
│   │   │   │   ├── cortex-m33-nodsp.cmake
│   │   │   │   ├── cortex-m33.cmake
│   │   │   │   ├── cortex-m4-nofpu.cmake
│   │   │   │   ├── cortex-m4.cmake
│   │   │   │   ├── cortex-m55.cmake
│   │   │   │   ├── cortex-m7-fpsp.cmake
│   │   │   │   ├── cortex-m7.cmake
│   │   │   │   ├── cortex-m85.cmake
│   │   │   │   ├── ft32.cmake
│   │   │   │   ├── msp430.cmake
│   │   │   │   ├── rv32i-ilp32.cmake
│   │   │   │   ├── rv32imac-ilp32.cmake
│   │   │   │   ├── rx610.cmake
│   │   │   │   └── rx64m.cmake
│   │   │   └── toolchain/
│   │   │       ├── aarch64_gcc.cmake
│   │   │       ├── arm_clang.cmake
│   │   │       ├── arm_gcc.cmake
│   │   │       ├── arm_iar.cmake
│   │   │       ├── common.cmake
│   │   │       ├── cstat_sel_checks.txt
│   │   │       ├── ft32_gcc.cmake
│   │   │       ├── msp430_gcc.cmake
│   │   │       ├── riscv_gcc.cmake
│   │   │       └── rx_gcc.cmake
│   │   └── make/
│   │       ├── cpu/
│   │       │   ├── arm1176jzf-s.mk
│   │       │   ├── arm926ej-s.mk
│   │       │   ├── cortex-a53.mk
│   │       │   ├── cortex-a72.mk
│   │       │   ├── cortex-m0.mk
│   │       │   ├── cortex-m0plus.mk
│   │       │   ├── cortex-m23.mk
│   │       │   ├── cortex-m3.mk
│   │       │   ├── cortex-m33-nodsp-nofp.mk
│   │       │   ├── cortex-m33.mk
│   │       │   ├── cortex-m4-nofpu.mk
│   │       │   ├── cortex-m4.mk
│   │       │   ├── cortex-m55.mk
│   │       │   ├── cortex-m7-fpsp.mk
│   │       │   ├── cortex-m7.mk
│   │       │   ├── cortex-m85.mk
│   │       │   ├── msp430.mk
│   │       │   ├── rv32i-ilp32.mk
│   │       │   └── rv32imac-ilp32.mk
│   │       └── toolchain/
│   │           ├── arm_clang.mk
│   │           ├── arm_gcc.mk
│   │           ├── arm_iar.mk
│   │           ├── clang_rules.mk
│   │           ├── gcc_common.mk
│   │           ├── gcc_rules.mk
│   │           ├── iar_rules.mk
│   │           └── riscv_gcc.mk
│   ├── device/
│   │   ├── 99-tinyusb.rules
│   │   ├── CMakeLists.txt
│   │   ├── CMakePresets.json
│   │   ├── audio_4_channel_mic/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── plot_audio_samples.py
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── audio_4_channel_mic_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── sdkconfig.defaults
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── plot_audio_samples.py
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── audio_test/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── plot_audio_samples.py
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── audio_test_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── sdkconfig.defaults
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── plot_audio_samples.py
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── audio_test_multi_rate/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── plot_audio_samples.py
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── board_test/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── sdkconfig.defaults
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       └── tusb_config.h
│   │   ├── cdc_dual_ports/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── cdc_msc/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── prj.conf
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── msc_disk.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── cdc_msc_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── sdkconfig.defaults
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── msc_disk.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── cdc_uac2/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── cdc_app.c
│   │   │       ├── common.h
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── uac2_app.c
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── dfu/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── dfu_runtime/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── dynamic_configuration/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── msc_disk.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── hid_boot_interface/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── hid_composite/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── hid_composite_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── sdkconfig.defaults
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── hid_generic_inout/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── boards.js
│   │   │   ├── hid_test.js
│   │   │   ├── hid_test.py
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── hid_multiple_interface/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── midi_test/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── midi_test_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── msc_dual_lun/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── prj.conf
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── msc_disk_dual.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── mtp/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── prj.conf
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── mtp_fs_example.c
│   │   │       ├── tinyusb_logo_png.h
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── net_lwip_webserver/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── arch/
│   │   │       │   ├── bpstruct.h
│   │   │       │   ├── cc.h
│   │   │       │   └── epstruct.h
│   │   │       ├── lwipopts.h
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── printer_to_cdc/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── uac2_headset/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── uac2_speaker_fb/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── audio_debug.py
│   │   │       ├── common_types.h
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── usbtmc/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   ├── src/
│   │   │   │   ├── main.c
│   │   │   │   ├── main.h
│   │   │   │   ├── tusb_config.h
│   │   │   │   ├── usb_descriptors.c
│   │   │   │   ├── usbtmc_app.c
│   │   │   │   └── usbtmc_app.h
│   │   │   └── visaQuery.py
│   │   ├── video_capture/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── images.h
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   ├── video_capture_2ch/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── images.h
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       ├── usb_descriptors.c
│   │   │       └── usb_descriptors.h
│   │   └── webusb_serial/
│   │       ├── CMakeLists.txt
│   │       ├── CMakePresets.json
│   │       ├── Makefile
│   │       ├── src/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── main.c
│   │       │   ├── tusb_config.h
│   │       │   ├── usb_descriptors.c
│   │       │   └── usb_descriptors.h
│   │       └── website/
│   │           ├── application.js
│   │           ├── divider.js
│   │           ├── index.html
│   │           ├── serial.js
│   │           └── style.css
│   ├── dual/
│   │   ├── CMakeLists.txt
│   │   ├── CMakePresets.json
│   │   ├── dynamic_switch/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── only.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   ├── host_hid_to_device_cdc/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       ├── tusb_config.h
│   │   │       └── usb_descriptors.c
│   │   └── host_info_to_device_cdc/
│   │       ├── CMakeLists.txt
│   │       ├── CMakePresets.json
│   │       ├── Makefile
│   │       ├── only.txt
│   │       └── src/
│   │           ├── CMakeLists.txt
│   │           ├── main.c
│   │           ├── tusb_config.h
│   │           └── usb_descriptors.c
│   ├── host/
│   │   ├── CMakeLists.txt
│   │   ├── CMakePresets.json
│   │   ├── bare_api/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       └── tusb_config.h
│   │   ├── cdc_msc_hid/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── app.h
│   │   │       ├── cdc_app.c
│   │   │       ├── hid_app.c
│   │   │       ├── main.c
│   │   │       ├── msc_app.c
│   │   │       └── tusb_config.h
│   │   ├── cdc_msc_hid_freertos/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── app.h
│   │   │       ├── cdc_app.c
│   │   │       ├── hid_app.c
│   │   │       ├── main.c
│   │   │       ├── msc_app.c
│   │   │       └── tusb_config.h
│   │   ├── device_info/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── main.c
│   │   │       └── tusb_config.h
│   │   ├── hid_controller/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── app.h
│   │   │       ├── hid_app.c
│   │   │       ├── main.c
│   │   │       └── tusb_config.h
│   │   ├── midi_rx/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── CMakePresets.json
│   │   │   ├── Makefile
│   │   │   ├── only.txt
│   │   │   ├── skip.txt
│   │   │   └── src/
│   │   │       ├── main.c
│   │   │       └── tusb_config.h
│   │   └── msc_file_explorer/
│   │       ├── CMakeLists.txt
│   │       ├── CMakePresets.json
│   │       ├── Makefile
│   │       ├── only.txt
│   │       ├── skip.txt
│   │       └── src/
│   │           ├── main.c
│   │           ├── msc_app.c
│   │           ├── msc_app.h
│   │           └── tusb_config.h
│   ├── typec/
│   │   ├── CMakeLists.txt
│   │   ├── CMakePresets.json
│   │   └── power_delivery/
│   │       ├── CMakeLists.txt
│   │       ├── CMakePresets.json
│   │       ├── Makefile
│   │       ├── only.txt
│   │       └── src/
│   │           ├── main.c
│   │           └── tusb_config.h
│   └── west.yml
├── hw/
│   ├── bsp/
│   │   ├── BoardPresets.json
│   │   ├── ansi_escape.h
│   │   ├── at32f402_405/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f402_405_clock.c
│   │   │   ├── at32f402_405_clock.h
│   │   │   ├── at32f402_405_conf.h
│   │   │   ├── at32f402_405_int.c
│   │   │   ├── at32f402_405_int.h
│   │   │   ├── boards/
│   │   │   │   ├── at_start_f402/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── at_start_f405/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f403a_407/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f403a_407_clock.c
│   │   │   ├── at32f403a_407_clock.h
│   │   │   ├── at32f403a_407_conf.h
│   │   │   ├── at32f403a_407_int.c
│   │   │   ├── at32f403a_407_int.h
│   │   │   ├── boards/
│   │   │   │   ├── at32f403a_weact_blackpill/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── at_start_f403a/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── at_start_f407/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f413/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f413_clock.c
│   │   │   ├── at32f413_clock.h
│   │   │   ├── at32f413_conf.h
│   │   │   ├── at32f413_int.c
│   │   │   ├── at32f413_int.h
│   │   │   ├── boards/
│   │   │   │   └── at_start_f413/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f415/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f415_clock.c
│   │   │   ├── at32f415_clock.h
│   │   │   ├── at32f415_conf.h
│   │   │   ├── at32f415_int.c
│   │   │   ├── at32f415_int.h
│   │   │   ├── boards/
│   │   │   │   └── at_start_f415/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f423/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f423_clock.c
│   │   │   ├── at32f423_clock.h
│   │   │   ├── at32f423_conf.h
│   │   │   ├── at32f423_int.c
│   │   │   ├── at32f423_int.h
│   │   │   ├── boards/
│   │   │   │   └── at_start_f423/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f425/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f425_clock.c
│   │   │   ├── at32f425_clock.h
│   │   │   ├── at32f425_conf.h
│   │   │   ├── at32f425_int.c
│   │   │   ├── at32f425_int.h
│   │   │   ├── boards/
│   │   │   │   └── at_start_f425/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f435_437/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f435_437_clock.c
│   │   │   ├── at32f435_437_clock.h
│   │   │   ├── at32f435_437_conf.h
│   │   │   ├── at32f435_437_int.c
│   │   │   ├── at32f435_437_int.h
│   │   │   ├── boards/
│   │   │   │   ├── at_start_f435/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── at_start_f437/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── at32f45x/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── at32f45x_clock.c
│   │   │   ├── at32f45x_clock.h
│   │   │   ├── at32f45x_conf.h
│   │   │   ├── at32f45x_int.c
│   │   │   ├── at32f45x_int.h
│   │   │   ├── boards/
│   │   │   │   ├── at_start_f455/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── at_start_f456/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── at_start_f457/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── board.c
│   │   ├── board_api.h
│   │   ├── broadcom_32bit/
│   │   │   ├── boards/
│   │   │   │   └── raspberrypi_zero/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── broadcom_64bit/
│   │   │   ├── boards/
│   │   │   │   ├── raspberrypi_cm4/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── raspberrypi_zero2/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── ch32f20x/
│   │   │   ├── boards/
│   │   │   │   └── ch32f205r-r0/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── ch32f205.ld
│   │   │   ├── ch32f20x_conf.h
│   │   │   ├── ch32f20x_it.c
│   │   │   ├── ch32f20x_it.h
│   │   │   ├── core_cm3.h
│   │   │   ├── debug_uart.c
│   │   │   ├── debug_uart.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── startup_gcc_ch32f20x_d8c.s
│   │   │   ├── system_ch32f20x.c
│   │   │   └── system_ch32f20x.h
│   │   ├── ch32v10x/
│   │   │   ├── boards/
│   │   │   │   └── ch32v103r_r1_1v0/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── ch32v10x_conf.h
│   │   │   ├── ch32v10x_it.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   └── ch32v10x.ld
│   │   │   ├── system_ch32v10x.c
│   │   │   ├── system_ch32v10x.h
│   │   │   └── wch-riscv.cfg
│   │   ├── ch32v20x/
│   │   │   ├── boards/
│   │   │   │   ├── ch32v203c_r0_1v0/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── ch32v203g_r0_1v0/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── nanoch32v203/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── ch32v20x_conf.h
│   │   │   ├── ch32v20x_it.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   └── ch32v20x.ld
│   │   │   ├── system_ch32v20x.c
│   │   │   ├── system_ch32v20x.h
│   │   │   └── wch-riscv.cfg
│   │   ├── ch32v30x/
│   │   │   ├── boards/
│   │   │   │   ├── ch32v307v_r1_1v0/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── nanoch32v305/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── ch32v30x_conf.h
│   │   │   ├── ch32v30x_it.c
│   │   │   ├── ch32v30x_it.h
│   │   │   ├── debug_uart.c
│   │   │   ├── debug_uart.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   └── ch32v30x.ld
│   │   │   ├── system_ch32v30x.c
│   │   │   ├── system_ch32v30x.h
│   │   │   └── wch-riscv.cfg
│   │   ├── cxd56/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── spresense/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── da1469x/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── da14695_dk_usb/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── syscfg/
│   │   │   │   │       └── syscfg.h
│   │   │   │   └── da1469x_dk_pro/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── syscfg/
│   │   │   │           └── syscfg.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── gcc_startup_da1469x.S
│   │   │   ├── linker/
│   │   │   │   └── da1469x.ld
│   │   │   └── product_header.dump
│   │   ├── efm32/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── sltb009a/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── espressif/
│   │   │   ├── boards/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── adafruit_feather_esp32_v2/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_feather_esp32c6/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_feather_esp32s2/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_feather_esp32s3/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_magtag_29gray/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_metro_esp32s2/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_addax_1/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_c3_devkitc/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_c6_devkitc/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_kaluga_1/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_p4_function_ev/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── sdkconfig.defaults
│   │   │   │   ├── espressif_s2_devkitc/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_s3_devkitc/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_s3_devkitm/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── espressif_saola_1/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   └── family.c
│   │   │   ├── components/
│   │   │   │   ├── led_strip/
│   │   │   │   │   ├── CHANGELOG.md
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── api.md
│   │   │   │   │   ├── examples/
│   │   │   │   │   │   └── led_strip_rmt_ws2812/
│   │   │   │   │   │       ├── CMakeLists.txt
│   │   │   │   │   │       ├── README.md
│   │   │   │   │   │       └── main/
│   │   │   │   │   │           ├── CMakeLists.txt
│   │   │   │   │   │           ├── idf_component.yml
│   │   │   │   │   │           └── led_strip_rmt_ws2812_main.c
│   │   │   │   │   ├── idf_component.yml
│   │   │   │   │   ├── include/
│   │   │   │   │   │   ├── led_strip.h
│   │   │   │   │   │   ├── led_strip_rmt.h
│   │   │   │   │   │   ├── led_strip_spi.h
│   │   │   │   │   │   └── led_strip_types.h
│   │   │   │   │   ├── interface/
│   │   │   │   │   │   └── led_strip_interface.h
│   │   │   │   │   └── src/
│   │   │   │   │       ├── led_strip_api.c
│   │   │   │   │       ├── led_strip_rmt_dev.c
│   │   │   │   │       ├── led_strip_rmt_dev_idf4.c
│   │   │   │   │       ├── led_strip_rmt_encoder.c
│   │   │   │   │       ├── led_strip_rmt_encoder.h
│   │   │   │   │       └── led_strip_spi_dev.c
│   │   │   │   └── tinyusb_src/
│   │   │   │       └── CMakeLists.txt
│   │   │   └── family.cmake
│   │   ├── f1c100s/
│   │   │   ├── README.md
│   │   │   ├── boards/
│   │   │   │   └── f1c100s/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── family_rules.mk
│   │   ├── family_support.cmake
│   │   ├── family_support.mk
│   │   ├── fomu/
│   │   │   ├── boards/
│   │   │   │   └── fomu/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── crt0-vexriscv.S
│   │   │   ├── dfu.py
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── fomu.ld
│   │   │   ├── include/
│   │   │   │   ├── csr.h
│   │   │   │   ├── hw/
│   │   │   │   │   └── common.h
│   │   │   │   └── irq.h
│   │   │   ├── output_format.ld
│   │   │   └── regions.ld
│   │   ├── ft9xx/
│   │   │   ├── boards/
│   │   │   │   └── mm900evxb/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── gd32vf103/
│   │   │   ├── boards/
│   │   │   │   └── sipeed_longan_nano/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── system_gd32vf103.c
│   │   ├── hpmicro/
│   │   │   ├── boards/
│   │   │   │   └── hpm6750evk2/
│   │   │   │       ├── board.c
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── pinmux.c
│   │   │   │       └── pinmux.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── imxrt/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── metro_m7_1011/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1010_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1010_flexspi_nor_config.h
│   │   │   │   │   ├── metro_m7_1011.ld
│   │   │   │   │   ├── metro_m7_1011.mex
│   │   │   │   │   └── ozone/
│   │   │   │   │       └── metro_m7_1011.jdebug
│   │   │   │   ├── mimxrt1010_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1010_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1010_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1010_evk.mex
│   │   │   │   ├── mimxrt1015_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1015_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1015_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1015_evk.mex
│   │   │   │   ├── mimxrt1020_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1020_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1020_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1020_evk.mex
│   │   │   │   ├── mimxrt1024_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1024_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1024_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1024_evk.mex
│   │   │   │   ├── mimxrt1050_evkb/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkbimxrt1050_flexspi_nor_config.c
│   │   │   │   │   ├── evkbimxrt1050_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1050_evkb.mex
│   │   │   │   ├── mimxrt1060_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1060_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1060_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1060_evk.mex
│   │   │   │   ├── mimxrt1064_evk/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkmimxrt1064_flexspi_nor_config.c
│   │   │   │   │   ├── evkmimxrt1064_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1064_evk.mex
│   │   │   │   ├── mimxrt1170_evkb/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── evkbmimxrt1170_flexspi_nor_config.c
│   │   │   │   │   ├── evkbmimxrt1170_flexspi_nor_config.h
│   │   │   │   │   └── mimxrt1170_evkb.mex
│   │   │   │   ├── teensy_40/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── teensy40.mex
│   │   │   │   │   ├── teensy40_flexspi_nor_config.c
│   │   │   │   │   └── teensy40_flexspi_nor_config.h
│   │   │   │   └── teensy_41/
│   │   │   │       ├── board/
│   │   │   │       │   ├── clock_config.c
│   │   │   │       │   ├── clock_config.h
│   │   │   │       │   ├── pin_mux.c
│   │   │   │       │   └── pin_mux.h
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── teensy41.mex
│   │   │   │       ├── teensy41_flexspi_nor_config.c
│   │   │   │       └── teensy41_flexspi_nor_config.h
│   │   │   ├── debug.jlinkscript
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── kinetis_k/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── frdm_k64f/
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── frdm_k64f.mex
│   │   │   │   └── teensy_35/
│   │   │   │       ├── board/
│   │   │   │       │   ├── clock_config.c
│   │   │   │       │   ├── clock_config.h
│   │   │   │       │   ├── pin_mux.c
│   │   │   │       │   └── pin_mux.h
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── teensy_35.mex
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── kinetis_k32l/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── frdm_k32l2a4s/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── clock_config.c
│   │   │   │   │   └── clock_config.h
│   │   │   │   ├── frdm_k32l2b/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── clock_config.c
│   │   │   │   │   └── clock_config.h
│   │   │   │   └── kuiic/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── clock_config.c
│   │   │   │       ├── clock_config.h
│   │   │   │       └── kuiic.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── kinetis_kl/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── frdm_kl25z/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── clock_config.c
│   │   │   │       └── clock_config.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── gcc/
│   │   │       ├── MKL25Z128xxx4_flash.ld
│   │   │       └── startup_MKL25Z4.S
│   │   ├── lpc11/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── lpcxpresso11u37/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── lpc11u37.ld
│   │   │   │   └── lpcxpresso11u68/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── lpc11u68.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc13/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── lpcxpresso1347/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── lpc1347.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc15/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── lpcxpresso1549/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── lpc1549.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc17/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── lpcxpresso1769/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── lpc1769.ld
│   │   │   │   └── mbed1768/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── lpc1768.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc18/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── lpcxpresso18s37/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── lpc1837.ld
│   │   │   │   └── mcb1800/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── lpc1857.ld
│   │   │   │       └── ozone/
│   │   │   │           └── lpc1857.jdebug
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc40/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── ea4088_quickstart/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── lpc4088.ld
│   │   │   │       └── ozone/
│   │   │   │           └── ea4088_quickstart.jdebug
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc43/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── ea4357/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── lpc4357.ld
│   │   │   │   │   ├── pca9532.c
│   │   │   │   │   └── pca9532.h
│   │   │   │   └── lpcxpresso43s67/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── lpc4367.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc51/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── lpcxpresso51u68/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── lpc54/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── lpcxpresso54114/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── lpcxpresso54608/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── lpcxpresso54628/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── iar/
│   │   │       ├── LPC54608_flash.icf
│   │   │       ├── LPC54628_flash.icf
│   │   │       ├── startup_LPC54608.s
│   │   │       └── startup_LPC54628.s
│   │   ├── lpc55/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── double_m33_express/
│   │   │   │   │   ├── LPC55S69_cm33_core0_uf2.ld
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── peripherals.c
│   │   │   │   │   │   ├── peripherals.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── double_m33_express.mex
│   │   │   │   ├── lpcxpresso55s28/
│   │   │   │   │   ├── LPCXpresso55S28.mex
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── peripherals.c
│   │   │   │   │   │   ├── peripherals.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── lpcxpresso55s69/
│   │   │   │   │   ├── LPCXpresso55S69.mex
│   │   │   │   │   ├── board/
│   │   │   │   │   │   ├── clock_config.c
│   │   │   │   │   │   ├── clock_config.h
│   │   │   │   │   │   ├── peripherals.c
│   │   │   │   │   │   ├── peripherals.h
│   │   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   │   └── pin_mux.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── mcu_link/
│   │   │   │       ├── board/
│   │   │   │       │   ├── clock_config.c
│   │   │   │       │   ├── clock_config.h
│   │   │   │       │   ├── peripherals.c
│   │   │   │       │   ├── peripherals.h
│   │   │   │       │   ├── pin_mux.c
│   │   │   │       │   └── pin_mux.h
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── mcu_link.mex
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── maxim/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── README.md
│   │   │   ├── boards/
│   │   │   │   ├── apard32690/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32650evkit/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32650fthr/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32651evkit/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32666evkit/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32666fthr/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── max32690evkit/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── max78002evkit/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── linker/
│   │   │       ├── max32650.ld
│   │   │       ├── max32651.ld
│   │   │       ├── max32665.ld
│   │   │       ├── max32690.ld
│   │   │       └── max78002.ld
│   │   ├── mcx/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── frdm_mcxa153/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── clock_config.c
│   │   │   │   │   ├── clock_config.h
│   │   │   │   │   ├── frdm_mcxa153.mex
│   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   └── pin_mux.h
│   │   │   │   ├── frdm_mcxa156/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── clock_config.c
│   │   │   │   │   ├── clock_config.h
│   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   └── pin_mux.h
│   │   │   │   ├── frdm_mcxn947/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── clock_config.c
│   │   │   │   │   ├── clock_config.h
│   │   │   │   │   ├── pin_mux.c
│   │   │   │   │   └── pin_mux.h
│   │   │   │   └── mcxn947brk/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── clock_config.c
│   │   │   │       ├── clock_config.h
│   │   │   │       ├── pin_mux.c
│   │   │   │       └── pin_mux.h
│   │   │   ├── debug.jlinkscript
│   │   │   ├── drivers/
│   │   │   │   └── spc/
│   │   │   │       ├── fsl_spc.c
│   │   │   │       └── fsl_spc.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── mm32/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── mm32f327x_mb39/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── flash.ld
│   │   │   │   └── mm32f327x_pitaya_lite/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── msp430/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── msp_exp430f5529lp/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── msp432e4/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── msp_exp432e401y/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── nrf/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── adafruit_clue/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── arduino_nano33_ble/
│   │   │   │   │   ├── arduino_nano33_ble.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── circuitplayground_bluefruit/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── feather_nrf52840_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── feather_nrf52840_sense/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── itsybitsy_nrf52840/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── nrf52833dk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── nrf52840dk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── ozone/
│   │   │   │   │       └── nrf52840.jdebug
│   │   │   │   ├── nrf52840dongle/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── nrf52840dongle.ld
│   │   │   │   ├── nrf5340dk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── ozone/
│   │   │   │   │       └── nrf5340.jdebug
│   │   │   │   └── nrf54h20dk/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   ├── nrf52833_xxaa.ld
│   │   │   │   ├── nrf52840_s140_v6.ld
│   │   │   │   ├── nrf52840_xxaa.ld
│   │   │   │   ├── nrf5340_xxaa_application.ld
│   │   │   │   └── nrf54h20_xxaa_application.ld
│   │   │   └── nrfx_config/
│   │   │       ├── nrfx_config.h
│   │   │       ├── nrfx_config_common.h
│   │   │       ├── nrfx_config_ext.h
│   │   │       ├── nrfx_glue.h
│   │   │       └── nrfx_log.h
│   │   ├── nuc100_120/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── nutiny_sdk_nuc120/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── nuc120_flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── nuc121_125/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── nutiny_sdk_nuc121/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── nuc121_flash.ld
│   │   │   │   └── nutiny_sdk_nuc125/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── nuc125_flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── nuc126/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── nutiny_nuc126v/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── nuc126_flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── nuc505/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── nutiny_sdk_nuc505/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── nuc505_flashtoram.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── pic32mz/
│   │   │   ├── boards/
│   │   │   │   ├── olimex_emz64/
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── olimex_emz64.c
│   │   │   │   └── olimex_hmz144/
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── olimex_hmz144.c
│   │   │   ├── family.c
│   │   │   └── family.mk
│   │   ├── ra/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── board_cfg.h
│   │   │   ├── boards/
│   │   │   │   ├── portenta_c33/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra2a1_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra4m1_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra4m3_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra6m1_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra6m5_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ozone/
│   │   │   │   │   │   └── ra6m5.jdebug
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   ├── ra8m1_ek/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ozone/
│   │   │   │   │   │   ├── Renesas_RA8_TracePins.pex
│   │   │   │   │   │   └── ra8m1.jdebug
│   │   │   │   │   ├── ra_cfg/
│   │   │   │   │   │   └── fsp_cfg/
│   │   │   │   │   │       ├── bsp/
│   │   │   │   │   │       │   ├── bsp_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │   │   │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │   │   │       │   └── bsp_pin_cfg.h
│   │   │   │   │   │       └── r_ioport_cfg.h
│   │   │   │   │   ├── ra_gen/
│   │   │   │   │   │   ├── bsp_clock_cfg.h
│   │   │   │   │   │   ├── common_data.c
│   │   │   │   │   │   ├── common_data.h
│   │   │   │   │   │   └── pin_data.c
│   │   │   │   │   ├── script/
│   │   │   │   │   │   ├── fsp.ld
│   │   │   │   │   │   └── memory_regions.ld
│   │   │   │   │   └── smart_configurator/
│   │   │   │   │       └── configuration.xml
│   │   │   │   └── uno_r4/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── ra_cfg/
│   │   │   │       │   └── fsp_cfg/
│   │   │   │       │       ├── bsp/
│   │   │   │       │       │   ├── bsp_cfg.h
│   │   │   │       │       │   ├── bsp_mcu_device_cfg.h
│   │   │   │       │       │   ├── bsp_mcu_device_pn_cfg.h
│   │   │   │       │       │   ├── bsp_mcu_family_cfg.h
│   │   │   │       │       │   └── bsp_pin_cfg.h
│   │   │   │       │       └── r_ioport_cfg.h
│   │   │   │       ├── ra_gen/
│   │   │   │       │   ├── bsp_clock_cfg.h
│   │   │   │       │   ├── common_data.c
│   │   │   │       │   ├── common_data.h
│   │   │   │       │   └── pin_data.c
│   │   │   │       ├── script/
│   │   │   │       │   ├── fsp.ld
│   │   │   │       │   └── memory_regions.ld
│   │   │   │       └── smart_configurator/
│   │   │   │           └── configuration.xml
│   │   │   ├── debug.jlinkscript
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── vector_data.h
│   │   ├── rp2040/
│   │   │   ├── boards/
│   │   │   │   ├── adafruit_feather_rp2040_usb_host/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_fruit_jam/
│   │   │   │   │   ├── adafruit_fruit_jam.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── adafruit_metro_rp2350/
│   │   │   │   │   ├── adafruit_metro_rp2350.h
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── feather_rp2040_max3421/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── pico_sdk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── raspberry_pi_pico/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   ├── raspberry_pi_pico2/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   └── board.h
│   │   │   │   └── raspberry_pi_pico_w/
│   │   │   │       ├── board.cmake
│   │   │   │       └── board.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── pico_sdk_import.cmake
│   │   │   ├── rp2040-openocd.cfg
│   │   │   └── rp2350-openocd.cfg
│   │   ├── rw61x/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── frdm_rw612/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── clock_config.c
│   │   │   │       ├── clock_config.h
│   │   │   │       ├── pin_mux.c
│   │   │   │       └── pin_mux.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── rx/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── gr_citrus/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── gr_citrus.c
│   │   │   │   │   └── r5f5631fd.ld
│   │   │   │   └── rx65n_target/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── r5f565ne.ld
│   │   │   │       └── rx65n_target.c
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── samd11/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── cynthion_d11/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── cynthion_d11.ld
│   │   │   │   └── samd11_xplained/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── samd11d14am_flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── samd2x_l2x/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── atsamd21_xpro/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── samd21j18a_flash.ld
│   │   │   │   ├── atsaml21_xpro/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── saml21j18b_flash.ld
│   │   │   │   ├── circuitplayground_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── circuitplayground_express.ld
│   │   │   │   ├── curiosity_nano/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── samd21g17a_flash.ld
│   │   │   │   ├── cynthion_d21/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── samd21g18a_flash.ld
│   │   │   │   ├── feather_m0_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── feather_m0_express.ld
│   │   │   │   ├── itsybitsy_m0/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── itsybitsy_m0.ld
│   │   │   │   ├── metro_m0_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── metro_m0_express.ld
│   │   │   │   ├── qtpy/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── qtpy.ld
│   │   │   │   ├── saml22_feather/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── saml22_feather.ld
│   │   │   │   ├── seeeduino_xiao/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── seeeduino_xiao.ld
│   │   │   │   ├── sensorwatch_m0/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── sensorwatch_m0.ld
│   │   │   │   ├── sparkfun_samd21_mini_usb/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── sparkfun_samd21_mini_usb.ld
│   │   │   │   └── trinket_m0/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── trinket_m0.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── samd5x_e5x/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── d5035_01/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── same51j19a_flash.ld
│   │   │   │   ├── feather_m4_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── feather_m4_express.ld
│   │   │   │   ├── itsybitsy_m4/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── itsybitsy_m4.ld
│   │   │   │   ├── metro_m4_express/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── metro_m4_express.ld
│   │   │   │   ├── pybadge/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── pybadge.ld
│   │   │   │   ├── pyportal/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── pyportal.ld
│   │   │   │   └── same54_xplained/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── same54p20a_flash.ld
│   │   │   │       └── same54p20a_sram.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── same7x/
│   │   │   ├── boards/
│   │   │   │   ├── same70_qmtech/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── hpl_pmc_config.h
│   │   │   │   │   ├── hpl_usart_config.h
│   │   │   │   │   ├── hpl_xdmac_config.h
│   │   │   │   │   └── peripheral_clk_config.h
│   │   │   │   └── same70_xplained/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       ├── hpl_pmc_config.h
│   │   │   │       ├── hpl_usart_config.h
│   │   │   │       ├── hpl_xdmac_config.h
│   │   │   │       └── peripheral_clk_config.h
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── samg/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── samg55_xplained/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── samg55j19_flash.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── hpl_usart_config.h
│   │   │   └── peripheral_clk_config.h
│   │   ├── stm32c0/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32c071nucleo/
│   │   │   │       ├── STM32C071RBTx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── stm32c071xx_flash.icf
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32c0xx_hal_conf.h
│   │   ├── stm32f0/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32f070rbnucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── stm32F070rbtx_flash.ld
│   │   │   │   ├── stm32f072disco/
│   │   │   │   │   ├── STM32F072RBTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32f072eval/
│   │   │   │       ├── STM32F072VBTx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f0xx_hal_conf.h
│   │   ├── stm32f1/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32f103_bluepill/
│   │   │   │   │   ├── STM32F103X8_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── stm32f103x8_flash.icf
│   │   │   │   ├── stm32f103_mini_2/
│   │   │   │   │   ├── STM32F103XC_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── stm32f103xc_flash.icf
│   │   │   │   └── stm32f103ze_iar/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f1xx_hal_conf.h
│   │   ├── stm32f2/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32f207nucleo/
│   │   │   │       ├── STM32F207ZGTx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f2xx_hal_conf.h
│   │   ├── stm32f3/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32f303disco/
│   │   │   │       ├── STM32F303VCTx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f3xx_hal_conf.h
│   │   ├── stm32f4/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── feather_stm32f405/
│   │   │   │   │   ├── STM32F405RGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── pyboardv11/
│   │   │   │   │   ├── STM32F405RGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f401blackpill/
│   │   │   │   │   ├── STM32F401VCTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f407blackvet/
│   │   │   │   │   ├── STM32F407VETx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f407disco/
│   │   │   │   │   ├── STM32F407VGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f411blackpill/
│   │   │   │   │   ├── STM32F411CEUx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f411disco/
│   │   │   │   │   ├── STM32F411VETx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f412disco/
│   │   │   │   │   ├── STM32F412ZGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f412nucleo/
│   │   │   │   │   ├── STM32F412ZGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32f439nucleo/
│   │   │   │       ├── STM32F439ZITX_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f4xx_hal_conf.h
│   │   ├── stm32f7/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stlinkv3mini/
│   │   │   │   │   ├── STM32F723xE_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f723disco/
│   │   │   │   │   ├── STM32F723xE_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f746disco/
│   │   │   │   │   ├── STM32F746ZGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f746nucleo/
│   │   │   │   │   ├── STM32F746ZGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32f767nucleo/
│   │   │   │   │   ├── STM32F767ZITx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32f769disco/
│   │   │   │       ├── STM32F769ZITx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32f7xx_hal_conf.h
│   │   ├── stm32g0/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32g0b1nucleo/
│   │   │   │       ├── STM32G0B1RETx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32g0xx_hal_conf.h
│   │   ├── stm32g4/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── b_g474e_dpow1/
│   │   │   │   │   ├── STM32G474RETx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── cubemx/
│   │   │   │   │       └── b_g474e_dpow1.ioc
│   │   │   │   ├── stm32g474nucleo/
│   │   │   │   │   ├── STM32G474RETx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32g491nucleo/
│   │   │   │       ├── STM32G491RETX_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32g4xx_hal_conf.h
│   │   ├── stm32h5/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32h503nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32h563nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── cubemx/
│   │   │   │   │       └── stm32h563nucleo.ioc
│   │   │   │   └── stm32h573i_dk/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   ├── STM32H503xx_FLASH.ld
│   │   │   │   ├── STM32H523xx_FLASH.ld
│   │   │   │   ├── STM32H533xx_FLASH.ld
│   │   │   │   ├── STM32H562xx_FLASH.ld
│   │   │   │   ├── STM32H563xx_FLASH.ld
│   │   │   │   ├── STM32H573xx_FLASH.ld
│   │   │   │   ├── stm32h503xx_flash.icf
│   │   │   │   ├── stm32h523xx_flash.icf
│   │   │   │   ├── stm32h562xx_flash.icf
│   │   │   │   ├── stm32h563xx_flash.icf
│   │   │   │   └── stm32h573xx_flash.icf
│   │   │   └── stm32h5xx_hal_conf.h
│   │   ├── stm32h7/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── daisyseed/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── stm32h750ibkx_flash.ld
│   │   │   │   │   └── stm32h750ibkx_ram.ld
│   │   │   │   ├── stm32h723nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32h743eval/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── cubemx/
│   │   │   │   │   │   └── stm32h743eval.ioc
│   │   │   │   │   └── ozone/
│   │   │   │   │       └── stm32h743.jdebug
│   │   │   │   ├── stm32h743nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── cubemx/
│   │   │   │   │       └── stm32h743nucleo.ioc
│   │   │   │   ├── stm32h745disco/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32h747disco/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32h750_weact/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── stm32h750xx_flash_CM7.ld
│   │   │   │   ├── stm32h750bdk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   └── stm32h750xx_flash_CM7.ld
│   │   │   │   └── waveshare_openh743i/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   ├── stm32h723xx_flash.ld
│   │   │   │   ├── stm32h743xx_flash.ld
│   │   │   │   ├── stm32h745xx_flash_CM7.ld
│   │   │   │   └── stm32h747xx_flash_CM7.ld
│   │   │   └── stm32h7xx_hal_conf.h
│   │   ├── stm32h7rs/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32h7s3nucleo/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   └── stm32h7s3xx_flash.ld
│   │   │   └── stm32h7rsxx_hal_conf.h
│   │   ├── stm32l0/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32l052dap52/
│   │   │   │   │   ├── STM32L052K8Ux_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32l0538disco/
│   │   │   │       ├── STM32L053C8Tx_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32l0xx_hal_conf.h
│   │   ├── stm32l4/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32l412nucleo/
│   │   │   │   │   ├── STM32L412KBUx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32l476disco/
│   │   │   │   │   ├── STM32L476VGTx_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32l496nucleo/
│   │   │   │   │   ├── STM32L496ZGTX_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32l4p5nucleo/
│   │   │   │   │   ├── STM32L4P5ZGTX_FLASH.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32l4r5nucleo/
│   │   │   │       ├── STM32L4RXxI_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32l4xx_hal_conf.h
│   │   ├── stm32n6/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32n6570dk/
│   │   │   │   │   ├── STM32N657XX_AXISRAM2_fsbl.ld
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32n657nucleo/
│   │   │   │       ├── STM32N657XX_AXISRAM2_fsbl.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── partition_stm32n657xx.h
│   │   │   ├── setup_iar.mac
│   │   │   ├── stm32n6.jdebug
│   │   │   └── stm32n6xx_hal_conf.h
│   │   ├── stm32u0/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── stm32u083cdk/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32u083nucleo/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── cubemx/
│   │   │   │           └── cubemx.ioc
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   ├── STM32U083xx_FLASH.ld
│   │   │   │   └── stm32u083xx_flash.icf
│   │   │   └── stm32u0xx_hal_conf.h
│   │   ├── stm32u5/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── b_u585i_iot2a/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32u545nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32u575eval/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   ├── stm32u575nucleo/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── stm32u5a5nucleo/
│   │   │   │       ├── STM32U5A5ZJTXQ_FLASH.ld
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── cubemx/
│   │   │   │           └── stm32u5a5nucleo.ioc
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   ├── STM32U535xx_FLASH.ld
│   │   │   │   ├── STM32U545xx_FLASH.ld
│   │   │   │   ├── STM32U575xx_FLASH.ld
│   │   │   │   ├── STM32U585xx_FLASH.ld
│   │   │   │   ├── STM32U595xx_FLASH.ld
│   │   │   │   ├── STM32U599xx_FLASH.ld
│   │   │   │   ├── STM32U5A9xx_FLASH.ld
│   │   │   │   ├── STM32U5F7xx_FLASH.ld
│   │   │   │   ├── STM32U5F9xx_FLASH.ld
│   │   │   │   ├── STM32U5G7xx_FLASH.ld
│   │   │   │   └── STM32U5G9xx_FLASH.ld
│   │   │   └── stm32u5xx_hal_conf.h
│   │   ├── stm32wb/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32wb55nucleo/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── stm32wb55xx_flash_cm4.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   └── stm32wbxx_hal_conf.h
│   │   ├── stm32wba/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   └── stm32wba_nucleo/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   ├── family.mk
│   │   │   ├── linker/
│   │   │   │   └── STM32WBA65xx_FLASH_ns.ld
│   │   │   └── stm32wbaxx_hal_conf.h
│   │   ├── tm4c/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── ek_tm4c123gxl/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   ├── board.mk
│   │   │   │   │   ├── ek_tm4c123gxl.ccxml
│   │   │   │   │   └── tm4c123.ld
│   │   │   │   └── ek_tm4c1294xl/
│   │   │   │       ├── TM4C1294NC.icf
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       ├── board.mk
│   │   │   │       └── tm4c1294nc.ld
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   ├── xmc4000/
│   │   │   ├── FreeRTOSConfig/
│   │   │   │   └── FreeRTOSConfig.h
│   │   │   ├── boards/
│   │   │   │   ├── xmc4500_relax/
│   │   │   │   │   ├── board.cmake
│   │   │   │   │   ├── board.h
│   │   │   │   │   └── board.mk
│   │   │   │   └── xmc4700_relax/
│   │   │   │       ├── board.cmake
│   │   │   │       ├── board.h
│   │   │   │       └── board.mk
│   │   │   ├── family.c
│   │   │   ├── family.cmake
│   │   │   └── family.mk
│   │   └── zephyr_board_aliases.cmake
│   └── mcu/
│       ├── bridgetek/
│       │   └── ft9xx/
│       │       ├── Readme.md
│       │       └── scripts/
│       │           ├── crt0.S
│       │           └── ldscript.ld
│       ├── dialog/
│       │   ├── README.md
│       │   └── da1469x/
│       │       ├── SDK_10.0.8.105/
│       │       │   └── sdk/
│       │       │       └── bsp/
│       │       │           ├── arm_license.txt
│       │       │           └── include/
│       │       │               ├── DA1469xAB.h
│       │       │               ├── cmsis_compiler.h
│       │       │               ├── cmsis_gcc.h
│       │       │               ├── cmsis_version.h
│       │       │               ├── core_cm0.h
│       │       │               ├── core_cm33.h
│       │       │               ├── mpu_armv8.h
│       │       │               ├── system_ARMCM0.h
│       │       │               └── system_DA1469x.h
│       │       ├── da1469x.ld
│       │       ├── include/
│       │       │   ├── hal/
│       │       │   │   └── hal_gpio.h
│       │       │   └── mcu/
│       │       │       ├── da1469x_clock.h
│       │       │       ├── da1469x_hal.h
│       │       │       └── mcu.h
│       │       └── src/
│       │           ├── da1469x_clock.c
│       │           ├── hal_gpio.c
│       │           ├── hal_system.c
│       │           ├── hal_system_start.c
│       │           └── system_da1469x.c
│       ├── nordic/
│       │   └── nrf5x/
│       │       └── s140_nrf52_6.1.1_API/
│       │           └── include/
│       │               ├── ble.h
│       │               ├── ble_err.h
│       │               ├── ble_gap.h
│       │               ├── ble_gatt.h
│       │               ├── ble_gattc.h
│       │               ├── ble_gatts.h
│       │               ├── ble_hci.h
│       │               ├── ble_l2cap.h
│       │               ├── ble_ranges.h
│       │               ├── ble_types.h
│       │               ├── nrf52/
│       │               │   └── nrf_mbr.h
│       │               ├── nrf_error.h
│       │               ├── nrf_error_sdm.h
│       │               ├── nrf_error_soc.h
│       │               ├── nrf_nvic.h
│       │               ├── nrf_sdm.h
│       │               ├── nrf_soc.h
│       │               └── nrf_svc.h
│       └── sony/
│           └── cxd56/
│               ├── mkspk/
│               │   ├── .gitignore
│               │   ├── Makefile
│               │   ├── clefia.c
│               │   ├── clefia.h
│               │   ├── elf32.h
│               │   ├── mkspk.c
│               │   └── mkspk.h
│               └── tools/
│                   ├── flash_writer.py
│                   └── xmodem.py
├── lib/
│   ├── SEGGER_RTT/
│   │   ├── Config/
│   │   │   └── SEGGER_RTT_Conf.h
│   │   ├── LICENSE.md
│   │   ├── README.md
│   │   └── RTT/
│   │       ├── SEGGER_RTT.c
│   │       ├── SEGGER_RTT.h
│   │       ├── SEGGER_RTT_ASM_ARMv7M.S
│   │       └── SEGGER_RTT_printf.c
│   ├── embedded-cli/
│   │   └── embedded_cli.h
│   ├── fatfs/
│   │   ├── LICENSE.txt
│   │   └── source/
│   │       ├── 00history.txt
│   │       ├── 00readme.txt
│   │       ├── diskio.c
│   │       ├── diskio.h
│   │       ├── ff.c
│   │       ├── ff.h
│   │       ├── ffconf.h
│   │       ├── ffsystem.c
│   │       └── ffunicode.c
│   ├── networking/
│   │   ├── dhserver.c
│   │   ├── dhserver.h
│   │   ├── dnserver.c
│   │   ├── dnserver.h
│   │   ├── ndis.h
│   │   ├── rndis_protocol.h
│   │   └── rndis_reports.c
│   └── rt-thread/
│       ├── SConscript
│       ├── port/
│       │   └── msc_device_port.c
│       ├── tusb_config.h
│       └── tusb_rt_thread_port.c
├── library.json
├── pkg.yml
├── repository.yml
├── sonar-project.properties
├── src/
│   ├── CMakeLists.txt
│   ├── class/
│   │   ├── audio/
│   │   │   ├── audio.h
│   │   │   ├── audio_device.c
│   │   │   └── audio_device.h
│   │   ├── bth/
│   │   │   ├── bth_device.c
│   │   │   └── bth_device.h
│   │   ├── cdc/
│   │   │   ├── cdc.h
│   │   │   ├── cdc_device.c
│   │   │   ├── cdc_device.h
│   │   │   ├── cdc_host.c
│   │   │   ├── cdc_host.h
│   │   │   ├── cdc_rndis.h
│   │   │   └── serial/
│   │   │       ├── ch34x.h
│   │   │       ├── cp210x.h
│   │   │       ├── ftdi_sio.h
│   │   │       └── pl2303.h
│   │   ├── dfu/
│   │   │   ├── dfu.h
│   │   │   ├── dfu_device.c
│   │   │   ├── dfu_device.h
│   │   │   ├── dfu_rt_device.c
│   │   │   └── dfu_rt_device.h
│   │   ├── hid/
│   │   │   ├── hid.h
│   │   │   ├── hid_device.c
│   │   │   ├── hid_device.h
│   │   │   ├── hid_host.c
│   │   │   └── hid_host.h
│   │   ├── midi/
│   │   │   ├── README_midi_host.md
│   │   │   ├── midi.h
│   │   │   ├── midi_device.c
│   │   │   ├── midi_device.h
│   │   │   ├── midi_host.c
│   │   │   └── midi_host.h
│   │   ├── msc/
│   │   │   ├── msc.h
│   │   │   ├── msc_device.c
│   │   │   ├── msc_device.h
│   │   │   ├── msc_host.c
│   │   │   └── msc_host.h
│   │   ├── mtp/
│   │   │   ├── mtp.h
│   │   │   ├── mtp_device.c
│   │   │   └── mtp_device.h
│   │   ├── net/
│   │   │   ├── ecm_rndis_device.c
│   │   │   ├── ncm.h
│   │   │   ├── ncm_device.c
│   │   │   └── net_device.h
│   │   ├── printer/
│   │   │   ├── printer.h
│   │   │   ├── printer_device.c
│   │   │   └── printer_device.h
│   │   ├── usbtmc/
│   │   │   ├── usbtmc.h
│   │   │   ├── usbtmc_device.c
│   │   │   └── usbtmc_device.h
│   │   ├── vendor/
│   │   │   ├── vendor_device.c
│   │   │   ├── vendor_device.h
│   │   │   ├── vendor_host.c
│   │   │   └── vendor_host.h
│   │   └── video/
│   │       ├── video.h
│   │       ├── video_device.c
│   │       └── video_device.h
│   ├── common/
│   │   ├── tusb_common.h
│   │   ├── tusb_compiler.h
│   │   ├── tusb_debug.h
│   │   ├── tusb_fifo.c
│   │   ├── tusb_fifo.h
│   │   ├── tusb_mcu.h
│   │   ├── tusb_private.h
│   │   ├── tusb_types.h
│   │   └── tusb_verify.h
│   ├── device/
│   │   ├── dcd.h
│   │   ├── usbd.c
│   │   ├── usbd.h
│   │   ├── usbd_control.c
│   │   └── usbd_pvt.h
│   ├── host/
│   │   ├── hcd.h
│   │   ├── hub.c
│   │   ├── hub.h
│   │   ├── usbh.c
│   │   ├── usbh.h
│   │   └── usbh_pvt.h
│   ├── osal/
│   │   ├── osal.h
│   │   ├── osal_freertos.h
│   │   ├── osal_mynewt.h
│   │   ├── osal_none.h
│   │   ├── osal_pico.h
│   │   ├── osal_rtthread.h
│   │   ├── osal_rtx4.h
│   │   ├── osal_threadx.h
│   │   └── osal_zephyr.h
│   ├── portable/
│   │   ├── analog/
│   │   │   └── max3421/
│   │   │       ├── hcd_max3421.c
│   │   │       └── hcd_max3421.h
│   │   ├── bridgetek/
│   │   │   └── ft9xx/
│   │   │       └── dcd_ft9xx.c
│   │   ├── chipidea/
│   │   │   ├── ci_fs/
│   │   │   │   ├── ci_fs_kinetis.h
│   │   │   │   ├── ci_fs_mcx.h
│   │   │   │   ├── ci_fs_type.h
│   │   │   │   └── dcd_ci_fs.c
│   │   │   └── ci_hs/
│   │   │       ├── ci_hs_hpm.h
│   │   │       ├── ci_hs_imxrt.h
│   │   │       ├── ci_hs_lpc18_43.h
│   │   │       ├── ci_hs_mcx.h
│   │   │       ├── ci_hs_rw61x.h
│   │   │       ├── ci_hs_type.h
│   │   │       ├── dcd_ci_hs.c
│   │   │       └── hcd_ci_hs.c
│   │   ├── dialog/
│   │   │   └── da146xx/
│   │   │       └── dcd_da146xx.c
│   │   ├── ehci/
│   │   │   ├── ehci.c
│   │   │   ├── ehci.h
│   │   │   └── ehci_api.h
│   │   ├── mentor/
│   │   │   └── musb/
│   │   │       ├── dcd_musb.c
│   │   │       ├── hcd_musb.c
│   │   │       ├── musb_max32.h
│   │   │       ├── musb_ti.h
│   │   │       └── musb_type.h
│   │   ├── microchip/
│   │   │   ├── pic/
│   │   │   │   ├── README.md
│   │   │   │   └── dcd_pic.c
│   │   │   ├── pic32mz/
│   │   │   │   ├── dcd_pic32mz.c
│   │   │   │   └── usbhs_registers.h
│   │   │   ├── samd/
│   │   │   │   ├── dcd_samd.c
│   │   │   │   └── hcd_samd.c
│   │   │   ├── samg/
│   │   │   │   └── dcd_samg.c
│   │   │   └── samx7x/
│   │   │       ├── dcd_samx7x.c
│   │   │       └── samx7x_common.h
│   │   ├── mindmotion/
│   │   │   └── mm32/
│   │   │       └── dcd_mm32f327x_otg.c
│   │   ├── nordic/
│   │   │   └── nrf5x/
│   │   │       └── dcd_nrf5x.c
│   │   ├── nuvoton/
│   │   │   ├── nuc120/
│   │   │   │   └── dcd_nuc120.c
│   │   │   ├── nuc121/
│   │   │   │   └── dcd_nuc121.c
│   │   │   └── nuc505/
│   │   │       └── dcd_nuc505.c
│   │   ├── nxp/
│   │   │   ├── khci/
│   │   │   │   ├── dcd_khci.c
│   │   │   │   └── hcd_khci.c
│   │   │   ├── lpc17_40/
│   │   │   │   ├── dcd_lpc17_40.c
│   │   │   │   └── dcd_lpc17_40.h
│   │   │   ├── lpc_ip3511/
│   │   │   │   └── dcd_lpc_ip3511.c
│   │   │   └── lpc_ip3516/
│   │   │       ├── hcd_lpc_ip3516.c
│   │   │       └── hcd_lpc_ip3516.h
│   │   ├── ohci/
│   │   │   ├── ohci.c
│   │   │   ├── ohci.h
│   │   │   └── ohci_nxp.h
│   │   ├── raspberrypi/
│   │   │   ├── pio_usb/
│   │   │   │   ├── dcd_pio_usb.c
│   │   │   │   └── hcd_pio_usb.c
│   │   │   └── rp2040/
│   │   │       ├── dcd_rp2040.c
│   │   │       ├── hcd_rp2040.c
│   │   │       ├── rp2040_usb.c
│   │   │       └── rp2040_usb.h
│   │   ├── renesas/
│   │   │   └── rusb2/
│   │   │       ├── dcd_rusb2.c
│   │   │       ├── hcd_rusb2.c
│   │   │       ├── rusb2_common.c
│   │   │       ├── rusb2_common.h
│   │   │       ├── rusb2_ra.h
│   │   │       ├── rusb2_rx.h
│   │   │       └── rusb2_type.h
│   │   ├── sony/
│   │   │   └── cxd56/
│   │   │       └── dcd_cxd56.c
│   │   ├── st/
│   │   │   ├── stm32_fsdev/
│   │   │   │   ├── dcd_stm32_fsdev.c
│   │   │   │   ├── fsdev_at32.h
│   │   │   │   ├── fsdev_ch32.h
│   │   │   │   ├── fsdev_common.c
│   │   │   │   ├── fsdev_common.h
│   │   │   │   ├── fsdev_stm32.h
│   │   │   │   └── hcd_stm32_fsdev.c
│   │   │   └── typec/
│   │   │       └── typec_stm32.c
│   │   ├── sunxi/
│   │   │   ├── dcd_sunxi_musb.c
│   │   │   └── musb_def.h
│   │   ├── synopsys/
│   │   │   └── dwc2/
│   │   │       ├── dcd_dwc2.c
│   │   │       ├── dwc2_at32.h
│   │   │       ├── dwc2_bcm.h
│   │   │       ├── dwc2_common.c
│   │   │       ├── dwc2_common.h
│   │   │       ├── dwc2_efm32.h
│   │   │       ├── dwc2_esp32.h
│   │   │       ├── dwc2_gd32.h
│   │   │       ├── dwc2_info.md
│   │   │       ├── dwc2_info.py
│   │   │       ├── dwc2_nrf.h
│   │   │       ├── dwc2_stm32.h
│   │   │       ├── dwc2_type.h
│   │   │       ├── dwc2_xmc.h
│   │   │       └── hcd_dwc2.c
│   │   ├── template/
│   │   │   ├── dcd_template.c
│   │   │   └── hcd_template.c
│   │   ├── ti/
│   │   │   └── msp430x5xx/
│   │   │       └── dcd_msp430x5xx.c
│   │   ├── valentyusb/
│   │   │   └── eptri/
│   │   │       ├── dcd_eptri.c
│   │   │       └── dcd_eptri.h
│   │   └── wch/
│   │       ├── ch32_usbfs_reg.h
│   │       ├── ch32_usbhs_reg.h
│   │       ├── dcd_ch32_usbfs.c
│   │       ├── dcd_ch32_usbhs.c
│   │       └── hcd_ch32_usbfs.c
│   ├── tinyusb.mk
│   ├── tusb.c
│   ├── tusb.h
│   ├── tusb_option.h
│   └── typec/
│       ├── pd_types.h
│       ├── tcd.h
│       ├── usbc.c
│       └── usbc.h
├── test/
│   ├── fuzz/
│   │   ├── dcd_fuzz.cc
│   │   ├── device/
│   │   │   ├── cdc/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── Makefile
│   │   │   │   └── src/
│   │   │   │       ├── fuzz.cc
│   │   │   │       ├── tusb_config.h
│   │   │   │       └── usb_descriptors.cc
│   │   │   ├── msc/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── Makefile
│   │   │   │   └── src/
│   │   │   │       ├── fuzz.cc
│   │   │   │       ├── tusb_config.h
│   │   │   │       └── usb_descriptors.cc
│   │   │   └── net/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── Makefile
│   │   │       └── src/
│   │   │           ├── arch/
│   │   │           │   └── cc.h
│   │   │           ├── fuzz.cc
│   │   │           ├── lwipopts.h
│   │   │           ├── tusb_config.h
│   │   │           └── usb_descriptors.cc
│   │   ├── dicts/
│   │   │   └── cdc.dict
│   │   ├── fuzz.cc
│   │   ├── fuzz.h
│   │   ├── fuzz_private.h
│   │   ├── make.mk
│   │   ├── msc_fuzz.cc
│   │   ├── net_fuzz.cc
│   │   ├── rules.mk
│   │   └── usbd_fuzz.cc
│   ├── hil/
│   │   ├── hfp.json
│   │   ├── hil_ci_set_matrix.py
│   │   ├── hil_test.py
│   │   ├── pymtp.py
│   │   ├── requirements.txt
│   │   └── tinyusb.json
│   └── unit-test/
│       ├── CMakeLists.txt
│       ├── ceedling
│       ├── project.yml
│       └── test/
│           ├── device/
│           │   ├── msc/
│           │   │   └── test_msc_device.c
│           │   └── usbd/
│           │       └── test_usbd.c
│           ├── support/
│           │   └── tusb_config.h
│           ├── test_common_func.c
│           └── test_fifo.c
├── tools/
│   ├── build.py
│   ├── build_utils.py
│   ├── codespell/
│   │   ├── exclude-file.txt
│   │   └── ignore-words.txt
│   ├── file2carray.py
│   ├── gen_doc.py
│   ├── gen_presets.py
│   ├── get_deps.py
│   ├── iar_gen.py
│   ├── iar_template.ipcf
│   ├── make_release.py
│   ├── metrics.py
│   ├── mksunxi.py
│   ├── pcapng_to_corpus.py
│   └── usb_drivers/
│       └── tinyusb_win_usbser.inf
└── version.yml
Copy disabled (too large) Download .json
Condensed preview — 2411 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (19,038K chars).
[
  {
    "path": ".circleci/config.yml",
    "chars": 3645,
    "preview": "version: 2.1\n\nsetup: true\norbs:\n  continuation: circleci/continuation@1\n\njobs:\n  set-matrix:\n    executor: continuation/"
  },
  {
    "path": ".circleci/config2.yml",
    "chars": 10943,
    "preview": "version: 2.1\n\ncommands:\n  setup-toolchain:\n    parameters:\n        toolchain:\n            type: string\n\n    steps:\n     "
  },
  {
    "path": ".clang-format",
    "chars": 2641,
    "preview": "---\nLanguage: Cpp\nBasedOnStyle: LLVM\nAlignAfterOpenBracket: Align\nAlignConsecutiveAssignments:\n  Enabled: true\n  AcrossE"
  },
  {
    "path": ".codespellrc",
    "chars": 534,
    "preview": "# See: https://github.com/codespell-project/codespell#using-a-config-file\n[codespell]\n# In the event of a false positive"
  },
  {
    "path": ".gitattributes",
    "chars": 348,
    "preview": "# Set the default behavior, in case people don't have core.autocrlf set.\n* text=auto\n\n*.c text\n*.cpp text\n*.h text\n*.icf"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "chars": 3018,
    "preview": "name: Bug Report\ndescription: Report a problem with TinyUSB\nlabels: 'Bug 🐞'\nbody:\n  - type: markdown\n    attributes:\n   "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 285,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: TinyUSB Discussion\n    url: https://github.com/hathach/tinyusb/disc"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "chars": 1661,
    "preview": "name: Feature Request\ndescription: Suggest an idea for this project\nlabels: 'Feature 💡'\nbody:\n  - type: markdown\n    att"
  },
  {
    "path": ".github/actions/get_deps/action.yml",
    "chars": 1102,
    "preview": "name: Get dependencies\n\ninputs:\n  arg:\n    description: 'Arguments to get_deps.py'\n    required: true\n\nruns:\n  using: \"c"
  },
  {
    "path": ".github/actions/setup_toolchain/action.yml",
    "chars": 1625,
    "preview": "name: Setup Toolchain\n\ninputs:\n  toolchain:\n    description: 'Toolchain name'\n    required: true\n\noutputs:\n  build_optio"
  },
  {
    "path": ".github/actions/setup_toolchain/download/action.yml",
    "chars": 3116,
    "preview": "name: Download Toolchain\n\ninputs:\n  toolchain:\n    description: 'Toolchain name'\n    required: true\n  toolchain_url:\n   "
  },
  {
    "path": ".github/actions/setup_toolchain/espressif/action.yml",
    "chars": 1552,
    "preview": "name: Setup ESP-IDF Toolchain\n\ninputs:\n  toolchain:\n    description: 'Toolchain name'\n    required: true\n  toolchain_ver"
  },
  {
    "path": ".github/actions/setup_toolchain/toolchain.json",
    "chars": 1421,
    "preview": "{\n  \"aarch64-gcc\": \"https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86"
  },
  {
    "path": ".github/membrowse_pr_message.j2",
    "chars": 2583,
    "preview": "{#- Top 10 targets with biggest memory changes + project dashboard link -#}\n{% set section_columns = ['.text', '.rodata'"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 11659,
    "preview": "name: Build\n\non:\n  workflow_dispatch:\n  push:\n    branches: [master]\n  pull_request:\n  release:\n    types: [ published ]"
  },
  {
    "path": ".github/workflows/build_util.yml",
    "chars": 3723,
    "preview": "name: Reusable build util\n\non:\n  workflow_call:\n    inputs:\n      os:\n        required: false\n        type: string\n     "
  },
  {
    "path": ".github/workflows/ci_set_matrix.py",
    "chars": 3447,
    "preview": "#!/usr/bin/env python3\nimport json\n\n# toolchain, url\ntoolchain_list = [\n    \"aarch64-gcc\",\n    \"arm-clang\",\n    \"arm-iar"
  },
  {
    "path": ".github/workflows/cifuzz.yml",
    "chars": 776,
    "preview": "name: CIFuzz\non:\n  workflow_dispatch:\n  pull_request:\n    branches:\n      - master\n    paths:\n      - '**.c'\n      - '**"
  },
  {
    "path": ".github/workflows/claude-code-review.yml",
    "chars": 1022,
    "preview": "name: Claude Code Review\n\non:\n  pull_request_target:\n    types: [opened, synchronize, ready_for_review, reopened]\n\njobs:"
  },
  {
    "path": ".github/workflows/claude.yml",
    "chars": 1885,
    "preview": "name: Claude Code\n\non:\n  issue_comment:\n    types: [created]\n  pull_request_review_comment:\n    types: [created]\n  issue"
  },
  {
    "path": ".github/workflows/labeler.yml",
    "chars": 2236,
    "preview": "name: Labeler\n\non:\n  issues:\n    types: [opened]\n  pull_request_target:\n    types: [opened]\n\njobs:\n  label-priority:\n   "
  },
  {
    "path": ".github/workflows/membrowse-comment.yml",
    "chars": 954,
    "preview": "name: Membrowse Comment\n\non:\n  workflow_run:\n    workflows: [\"Build\"]\n    types:\n      - completed\n\njobs:\n  post-comment"
  },
  {
    "path": ".github/workflows/membrowse-onboard.yml",
    "chars": 2029,
    "preview": "name: Onboard to Membrowse\n\non:\n  workflow_dispatch:\n    inputs:\n      num_commits:\n        description: 'Number of comm"
  },
  {
    "path": ".github/workflows/metrics_comment.yml",
    "chars": 1048,
    "preview": "name: Metrics Comment\n\non:\n  workflow_run:\n    workflows: [\"Build\"]\n    types:\n      - completed\n\njobs:\n  post-comment:\n"
  },
  {
    "path": ".github/workflows/pre-commit.yml",
    "chars": 913,
    "preview": "name: pre-commit\n\non:\n  workflow_dispatch:\n  push:\n  pull_request:\n    branches: [ master ]\n\nconcurrency:\n  group: ${{ g"
  },
  {
    "path": ".github/workflows/static_analysis.yml",
    "chars": 7806,
    "preview": "name: Static Analysis\non:\n  workflow_dispatch:\n  push:\n    branches: [ master ]\n    paths:\n      - 'src/**'\n      - 'exa"
  },
  {
    "path": ".github/workflows/trigger.yml",
    "chars": 2394,
    "preview": "name: Trigger Repos\n\non:\n  workflow_dispatch:\n  push:\n    branches: master\n  release:\n    types:\n      - created\n\njobs:\n"
  },
  {
    "path": ".gitignore",
    "chars": 610,
    "preview": "html\nlatex\n*.a\n*.d\n*.o\n*.P\n*.axf\n*.bin\n*.elf\n*.env\n*.ind\n*.log\n*.map\n*.obj\n*.jlink\n*.emSession\n*.ninja*\n*.eww\n*.ewp\n*.ew"
  },
  {
    "path": ".idea/.gitignore",
    "chars": 239,
    "preview": "# Default ignored files\n/shelf/\n/workspace.xml\n# Datasource local storage ignored files\n/dataSources/\n/dataSources.local"
  },
  {
    "path": ".idea/cmake.xml",
    "chars": 21548,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"CMakeSharedSettings\">\n    <configuration"
  },
  {
    "path": ".idea/debugServers/AT32F423VCT7.xml",
    "chars": 504,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"AT32F423VCT7\" uniqueID=\"de4ea1de-6dcf-413e-a21f-aaeaeb0f3dbc"
  },
  {
    "path": ".idea/debugServers/ST_LINK.xml",
    "chars": 553,
    "preview": "<component name=\"DebugServers\">\n  <stlink-debug-target name=\"ST-LINK\" uniqueID=\"cf98f5f4-9c5b-4340-ab06-16ddd7f07062\">\n "
  },
  {
    "path": ".idea/debugServers/at32f403acgu7.xml",
    "chars": 506,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"at32f403acgu7\" uniqueID=\"13a1c815-97d7-4b16-8fcc-564bddfe227"
  },
  {
    "path": ".idea/debugServers/esp32s2.xml",
    "chars": 748,
    "preview": "<component name=\"DebugServers\">\n  <generic-debug-target name=\"esp32s2\" uniqueID=\"254eff00-2acf-48fe-b255-1d0c0c9c4a7a\">\n"
  },
  {
    "path": ".idea/debugServers/lpc1769.xml",
    "chars": 494,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"lpc1769\" uniqueID=\"8f746157-a0c3-435f-b417-10f26c3b2699\">\n  "
  },
  {
    "path": ".idea/debugServers/lpc55s69.xml",
    "chars": 502,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"lpc55s69\" uniqueID=\"7de47452-94f1-4f1d-b03c-0f4ad3556d01\">\n "
  },
  {
    "path": ".idea/debugServers/max32690.xml",
    "chars": 496,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"max32690\" uniqueID=\"cb5e7c25-cbda-4c6d-94e9-28a85a81ba66\">\n "
  },
  {
    "path": ".idea/debugServers/mcxa153.xml",
    "chars": 476,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"mcxa153\" uniqueID=\"6a023429-69e6-4f8c-a592-4995cdf255db\">\n  "
  },
  {
    "path": ".idea/debugServers/nrf52833.xml",
    "chars": 501,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"nrf52833\" uniqueID=\"19eede9f-2096-4b30-9390-14d415964264\">\n "
  },
  {
    "path": ".idea/debugServers/nrf5340.xml",
    "chars": 519,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"nrf5340\" uniqueID=\"d82e668b-1307-4266-8a5c-3752be6795c9\" sel"
  },
  {
    "path": ".idea/debugServers/ra6m1.xml",
    "chars": 494,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"ra6m1\" uniqueID=\"c8cdc79a-939b-4342-92b1-d24da72d12fe\">\n    "
  },
  {
    "path": ".idea/debugServers/ra6m5.xml",
    "chars": 494,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"ra6m5\" uniqueID=\"19100d9f-7329-47da-b566-f9faf297f47c\">\n    "
  },
  {
    "path": ".idea/debugServers/rp2040.xml",
    "chars": 619,
    "preview": "<component name=\"DebugServers\">\n  <generic-debug-target name=\"rp2040\" uniqueID=\"006ce655-8571-401e-a94b-6a4f6d519724\">\n "
  },
  {
    "path": ".idea/debugServers/rp2350.xml",
    "chars": 619,
    "preview": "<component name=\"DebugServers\">\n  <generic-debug-target name=\"rp2350\" uniqueID=\"939fdf16-9c30-4261-8435-3e8df7fd5800\">\n "
  },
  {
    "path": ".idea/debugServers/rt1011.xml",
    "chars": 483,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"rt1011\" uniqueID=\"e10c53c4-acf5-4a6f-a05d-32b7b042d70a\">\n   "
  },
  {
    "path": ".idea/debugServers/rt1060.xml",
    "chars": 483,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"rt1060\" uniqueID=\"851396c6-2030-4694-b86d-21ba9547ddcb\">\n   "
  },
  {
    "path": ".idea/debugServers/rt1064.xml",
    "chars": 483,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"rt1064\" uniqueID=\"9602472b-6ce8-4a2d-9636-1c03b5fcd6da\">\n   "
  },
  {
    "path": ".idea/debugServers/rt1170.xml",
    "chars": 503,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"rt1170\" uniqueID=\"cfc772e4-782e-49a3-99fb-b6f726e14f9d\">\n   "
  },
  {
    "path": ".idea/debugServers/s3.xml",
    "chars": 200,
    "preview": "<component name=\"DebugServers\">\n  <esp-idf-debug-target name=\"s3\" uniqueID=\"e096f0d4-5923-482d-bcc3-169a2cfd7cdc\">\n    <"
  },
  {
    "path": ".idea/debugServers/sam21.xml",
    "chars": 479,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"sam21\" uniqueID=\"b22537b6-0924-4a2b-8721-48a8952239de\">\n    "
  },
  {
    "path": ".idea/debugServers/sam51.xml",
    "chars": 479,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"sam51\" uniqueID=\"481ff0d4-6501-4394-8b6b-f7a2ca4c2675\">\n    "
  },
  {
    "path": ".idea/debugServers/stm32f072.xml",
    "chars": 500,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"stm32f072\" uniqueID=\"f5c65701-0f8d-4923-a7ea-3ee2547147ae\">\n"
  },
  {
    "path": ".idea/debugServers/stm32f303.xml",
    "chars": 500,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"stm32f303\" uniqueID=\"1cdd63e5-1736-42be-bff3-4c48e1f169fa\">\n"
  },
  {
    "path": ".idea/debugServers/stm32f411.xml",
    "chars": 500,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"stm32f411\" uniqueID=\"c48950a7-634c-49b6-b136-204ed0b71718\">\n"
  },
  {
    "path": ".idea/debugServers/stm32f769.xml",
    "chars": 500,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"stm32f769\" uniqueID=\"7a47302f-f7e5-434b-b20b-78e95318dd0c\">\n"
  },
  {
    "path": ".idea/debugServers/stm32h563.xml",
    "chars": 500,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"stm32h563\" uniqueID=\"a3e9293d-113b-48b3-b83d-dd4249984abe\">\n"
  },
  {
    "path": ".idea/debugServers/stm32h743.xml",
    "chars": 500,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"stm32h743\" uniqueID=\"6d6a3ed6-f66d-4f6a-9e70-6aafe5c971d0\">\n"
  },
  {
    "path": ".idea/debugServers/stm32l053.xml",
    "chars": 500,
    "preview": "<component name=\"DebugServers\">\n  <jlink-debug-target name=\"stm32l053\" uniqueID=\"51d156d7-86a6-4006-814a-ed14981d7b49\">\n"
  },
  {
    "path": ".idea/debugServers/wch_riscv.xml",
    "chars": 674,
    "preview": "<component name=\"DebugServers\">\n  <generic-debug-target name=\"wch-riscv\" uniqueID=\"c471e2d0-3cb4-4e7e-aeb7-a33d0c8fdc08\""
  },
  {
    "path": ".idea/runConfigurations/k64f.xml",
    "chars": 1173,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"k64f\" type=\"com.jetbrains.cidr."
  },
  {
    "path": ".idea/runConfigurations/kl25.xml",
    "chars": 1172,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"kl25\" type=\"com.jetbrains.cidr."
  },
  {
    "path": ".idea/runConfigurations/lpc1857.xml",
    "chars": 1177,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"lpc1857\" type=\"com.jetbrains.ci"
  },
  {
    "path": ".idea/runConfigurations/lpc4088.xml",
    "chars": 1169,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"lpc4088\" type=\"com.jetbrains.ci"
  },
  {
    "path": ".idea/runConfigurations/lpc54628.xml",
    "chars": 1175,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"lpc54628\" type=\"com.jetbrains.c"
  },
  {
    "path": ".idea/runConfigurations/lpc55s69.xml",
    "chars": 1171,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"lpc55s69\" type=\"com.jetbrains.c"
  },
  {
    "path": ".idea/runConfigurations/mcx947.xml",
    "chars": 1237,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"mcx947\" type=\"com.jetbrains.cid"
  },
  {
    "path": ".idea/runConfigurations/nrf52840.xml",
    "chars": 1197,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"nrf52840\" type=\"com.jetbrains.c"
  },
  {
    "path": ".idea/runConfigurations/nrf5340.xml",
    "chars": 1200,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"nrf5340\" type=\"com.jetbrains.ci"
  },
  {
    "path": ".idea/runConfigurations/ra2a1.xml",
    "chars": 1173,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"ra2a1\" type=\"com.jetbrains.cidr"
  },
  {
    "path": ".idea/runConfigurations/ra4m1.xml",
    "chars": 1232,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"ra4m1\" type=\"com.jetbrains.cidr"
  },
  {
    "path": ".idea/runConfigurations/ra6m1.xml",
    "chars": 1232,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"ra6m1\" type=\"com.jetbrains.cidr"
  },
  {
    "path": ".idea/runConfigurations/ra6m5.xml",
    "chars": 1232,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"ra6m5\" type=\"com.jetbrains.cidr"
  },
  {
    "path": ".idea/runConfigurations/rp2040.xml",
    "chars": 824,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"rp2040\" type=\"com.jetbrains.cid"
  },
  {
    "path": ".idea/runConfigurations/rt1010.xml",
    "chars": 1241,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"rt1010\" type=\"com.jetbrains.cid"
  },
  {
    "path": ".idea/runConfigurations/rt1060.xml",
    "chars": 1174,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"rt1060\" type=\"com.jetbrains.cid"
  },
  {
    "path": ".idea/runConfigurations/samd21g18.xml",
    "chars": 1181,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"samd21g18\" type=\"com.jetbrains."
  },
  {
    "path": ".idea/runConfigurations/samd51j19.xml",
    "chars": 1182,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"samd51j19\" type=\"com.jetbrains."
  },
  {
    "path": ".idea/runConfigurations/stlink.xml",
    "chars": 1225,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"stlink\" type=\"com.jetbrains.cid"
  },
  {
    "path": ".idea/runConfigurations/stm32g474.xml",
    "chars": 1177,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"stm32g474\" type=\"com.jetbrains."
  },
  {
    "path": ".idea/runConfigurations/stm32h563.xml",
    "chars": 1177,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"stm32h563\" type=\"com.jetbrains."
  },
  {
    "path": ".idea/runConfigurations/stm32h743.xml",
    "chars": 1185,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"stm32h743\" type=\"com.jetbrains."
  },
  {
    "path": ".idea/runConfigurations/stm32u5a5.xml",
    "chars": 1177,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"stm32u5a5\" type=\"com.jetbrains."
  },
  {
    "path": ".idea/runConfigurations/uno_r4.xml",
    "chars": 1233,
    "preview": "<component name=\"ProjectRunConfigurationManager\">\n  <configuration default=\"false\" name=\"uno_r4\" type=\"com.jetbrains.cid"
  },
  {
    "path": ".idea/vcs.xml",
    "chars": 265,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping dire"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 1261,
    "preview": "# SPDX-FileCopyrightText: 2020 Diego Elio Pettenò\n#\n# SPDX-License-Identifier: Unlicense\n\nrepos:\n- repo: https://github."
  },
  {
    "path": ".readthedocs.yaml",
    "chars": 535,
    "preview": "# .readthedocs.yaml\n# Read the Docs configuration file\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html f"
  },
  {
    "path": "AGENTS.md",
    "chars": 18794,
    "preview": "# TinyUSB Agent Instructions\n\nTinyUSB is an open-source cross-platform USB Host/Device stack for embedded systems, desig"
  },
  {
    "path": "CODE_OF_CONDUCT.rst",
    "chars": 3416,
    "preview": "***************\nCode of Conduct\n***************\n\nOur Pledge\n----------\n\nIn the interest of fostering an open and welcomi"
  },
  {
    "path": "CONTRIBUTORS.rst",
    "chars": 6627,
    "preview": "************\nContributors\n************\n\nSpecial thanks to all the people who spent their precious time and effort to hel"
  },
  {
    "path": "LICENSE",
    "chars": 1094,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2012-2026, hathach (tinyusb.org)\n\nPermission is hereby granted, free of charge, to "
  },
  {
    "path": "README.rst",
    "chars": 23691,
    "preview": "TinyUSB\n=======\n\n|Build Status| |CircleCI Status| |Documentation Status| |Static Analysis| |Fuzzing Status| |Membrowse| "
  },
  {
    "path": "SConscript",
    "chars": 184,
    "preview": "# RT-Thread building script for bridge\n\nimport os\nfrom building import *\n\nobjs = []\ncwd  = GetCurrentDir()\n\nobjs = objs "
  },
  {
    "path": "docs/_static/custom.css",
    "chars": 31,
    "preview": ".clear-both {\n  clear: both;\n}\n"
  },
  {
    "path": "docs/conf.py",
    "chars": 1684,
    "preview": "#!/usr/bin/env python3\n# Configuration file for the Sphinx documentation builder.\n#\n# This file only contains a selectio"
  },
  {
    "path": "docs/faq.rst",
    "chars": 7281,
    "preview": "**************************\nFrequently Asked Questions\n**************************\n\nGeneral Questions\n=================\n\n*"
  },
  {
    "path": "docs/getting_started.rst",
    "chars": 8241,
    "preview": "***************\nGetting Started\n***************\n\nThis guide will get you up and running with TinyUSB quickly with workin"
  },
  {
    "path": "docs/index.rst",
    "chars": 486,
    "preview": ".. include:: ../README_processed.rst\n\n.. toctree::\n   :maxdepth: 2\n   :caption: Information\n\n   getting_started\n   integ"
  },
  {
    "path": "docs/info/changelog.rst",
    "chars": 48716,
    "preview": "*********\nChangelog\n*********\n\n0.20.0\n======\n\n*November 19, 2025*\n\nGeneral\n-------\n\n- New MCUs and Boards:\n\n  - Add STM3"
  },
  {
    "path": "docs/info/code_of_conduct.rst",
    "chars": 39,
    "preview": ".. include:: ../../CODE_OF_CONDUCT.rst\n"
  },
  {
    "path": "docs/info/contributors.rst",
    "chars": 35,
    "preview": ".. include:: ../../CONTRIBUTORS.rst"
  },
  {
    "path": "docs/info/index.rst",
    "chars": 107,
    "preview": "****\nInfo\n****\n\nIndex\n=====\n\n.. toctree::\n   :maxdepth: 2\n\n   changelog\n   contributors\n   code_of_conduct\n"
  },
  {
    "path": "docs/integration.rst",
    "chars": 3692,
    "preview": "*******************\nIntegrating TinyUSB\n*******************\n\nOnce you've seen TinyUSB working in the examples, use this "
  },
  {
    "path": "docs/porting.rst",
    "chars": 15032,
    "preview": "\n*******\nPorting\n*******\n\nTinyUSB is designed to be a universal USB protocol stack for microcontrollers. It\nhandles most"
  },
  {
    "path": "docs/reference/architecture.rst",
    "chars": 8804,
    "preview": "************\nArchitecture\n************\n\nThis document explains TinyUSB's internal architecture, design principles, and h"
  },
  {
    "path": "docs/reference/boards.rst",
    "chars": 40754,
    "preview": "****************\nSupported Boards\n****************\n\nThe board support code is only used for self-contained examples and "
  },
  {
    "path": "docs/reference/concurrency.rst",
    "chars": 2155,
    "preview": "***********\nConcurrency\n***********\n\nThe TinyUSB library is designed to operate on single-core MCUs with multi-threaded "
  },
  {
    "path": "docs/reference/dependencies.rst",
    "chars": 16207,
    "preview": "************\nDependencies\n************\n\nMCU low-level peripheral drivers and external libraries for building TinyUSB exa"
  },
  {
    "path": "docs/reference/glossary.rst",
    "chars": 3559,
    "preview": "********\nGlossary\n********\n\n.. glossary::\n\n   BSP\n      Board Support Package. A collection of board-specific code that "
  },
  {
    "path": "docs/reference/index.rst",
    "chars": 237,
    "preview": "*********\nReference\n*********\n\nComplete reference documentation for TinyUSB APIs, configuration, and supported hardware."
  },
  {
    "path": "docs/reference/usb_concepts.rst",
    "chars": 20895,
    "preview": "************\nUSB Concepts\n************\n\nThis document provides a brief introduction to USB protocol fundamentals that ar"
  },
  {
    "path": "docs/requirements.txt",
    "chars": 78,
    "preview": "sphinx>=5.0\nfuro>=2020.12.30.b24\nsphinx-autodoc-typehints>=1.10\njinja2>=3.0.3\n"
  },
  {
    "path": "docs/troubleshooting.rst",
    "chars": 7119,
    "preview": "***************\nTroubleshooting\n***************\n\nThis guide helps you diagnose and fix common issues when developing wit"
  },
  {
    "path": "examples/CMakeLists.txt",
    "chars": 1043,
    "preview": "cmake_minimum_required(VERSION 3.20)\n\ninclude(${CMAKE_CURRENT_SOURCE_DIR}/../hw/bsp/family_support.cmake)\n\nproject(tinyu"
  },
  {
    "path": "examples/CMakePresets.json",
    "chars": 73,
    "preview": "{\n  \"version\": 6,\n  \"include\": [\n    \"../hw/bsp/BoardPresets.json\"\n  ]\n}\n"
  },
  {
    "path": "examples/build_system/cmake/cpu/arm1176jzf-s.cmake",
    "chars": 473,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mcpu=arm1176jzf-s\n    -ffreestanding\n  )\n  # set(FREERTO"
  },
  {
    "path": "examples/build_system/cmake/cpu/arm926ej-s.cmake",
    "chars": 473,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mcpu=arm926ej-s\n    -ffreestanding\n    )\n  # set(FREERTO"
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-a53.cmake",
    "chars": 384,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n\tset(TOOLCHAIN_COMMON_FLAGS\n\t\t-mcpu=cortex-a53\n\t\t)\n\t# set(FREERTOS_PORT GCC_ARM_CM0 CACHE "
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-a72.cmake",
    "chars": 384,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n\tset(TOOLCHAIN_COMMON_FLAGS\n\t\t-mcpu=cortex-a72\n\t\t)\n\t# set(FREERTOS_PORT GCC_ARM_CM0 CACHE "
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m0.cmake",
    "chars": 490,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m0\n    -mfloat-abi=soft\n    )\n  "
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m0plus.cmake",
    "chars": 498,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m0plus\n    -mfloat-abi=soft\n    "
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m23.cmake",
    "chars": 538,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m23\n    -mfloat-abi=soft\n    )\n "
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m3.cmake",
    "chars": 469,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m3\n    )\n  set(FREERTOS_PORT GCC"
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m33-nodsp-nofp.cmake",
    "chars": 465,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m33+nodsp\n    -mfloat-abi=soft\n "
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m33-nodsp.cmake",
    "chars": 619,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m33+nodsp\n    -mfloat-abi=hard\n "
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m33.cmake",
    "chars": 601,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m33\n    -mfloat-abi=hard\n    -mf"
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m4-nofpu.cmake",
    "chars": 644,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m4\n    -mfloat-abi=soft\n    )\n  "
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m4.cmake",
    "chars": 695,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m4\n    -mfloat-abi=hard\n    -mfp"
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m55.cmake",
    "chars": 629,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m55\n    -mfloat-abi=hard\n    -mf"
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m7-fpsp.cmake",
    "chars": 553,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m7\n    -mfloat-abi=hard\n    -mfp"
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m7.cmake",
    "chars": 548,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m7\n    -mfloat-abi=hard\n    -mfp"
  },
  {
    "path": "examples/build_system/cmake/cpu/cortex-m85.cmake",
    "chars": 596,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mthumb\n    -mcpu=cortex-m85\n    -mfloat-abi=hard\n    -mf"
  },
  {
    "path": "examples/build_system/cmake/cpu/ft32.cmake",
    "chars": 323,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -fvar-tracking\n    -fvar-tracking-assignments\n    )\n\nelse"
  },
  {
    "path": "examples/build_system/cmake/cpu/msp430.cmake",
    "chars": 280,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(FREERTOS_PORT GCC_MSP430F449 CACHE INTERNAL \"\")\n\nelseif (TOOLCHAIN STREQUAL \"clang\")"
  },
  {
    "path": "examples/build_system/cmake/cpu/rv32i-ilp32.cmake",
    "chars": 453,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -march=rv32i_zicsr\n    -mabi=ilp32\n    )\n  set(FREERTOS_P"
  },
  {
    "path": "examples/build_system/cmake/cpu/rv32imac-ilp32.cmake",
    "chars": 476,
    "preview": "if (TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -march=rv32imac_zicsr_zifencei\n    -mabi=ilp32\n    )\n  se"
  },
  {
    "path": "examples/build_system/cmake/cpu/rx610.cmake",
    "chars": 301,
    "preview": "if (NOT DEFINED TOOLCHAIN OR TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mcpu=rx610\n    -misa=v1\n    -ml"
  },
  {
    "path": "examples/build_system/cmake/cpu/rx64m.cmake",
    "chars": 301,
    "preview": "if (NOT DEFINED TOOLCHAIN OR TOOLCHAIN STREQUAL \"gcc\")\n  set(TOOLCHAIN_COMMON_FLAGS\n    -mcpu=rx64m\n    -misa=v2\n    -ml"
  },
  {
    "path": "examples/build_system/cmake/toolchain/aarch64_gcc.cmake",
    "chars": 696,
    "preview": "if (NOT DEFINED CMAKE_C_COMPILER)\n  set(CMAKE_C_COMPILER \"aarch64-none-elf-gcc\")\nendif ()\n\nif (NOT DEFINED CMAKE_CXX_COM"
  },
  {
    "path": "examples/build_system/cmake/toolchain/arm_clang.cmake",
    "chars": 633,
    "preview": "if (NOT DEFINED CMAKE_C_COMPILER)\n  set(CMAKE_C_COMPILER \"clang\")\nendif ()\n\nif (NOT DEFINED CMAKE_CXX_COMPILER)\n  set(CM"
  },
  {
    "path": "examples/build_system/cmake/toolchain/arm_gcc.cmake",
    "chars": 728,
    "preview": "if (RTOS STREQUAL zephyr)\n  return()\nendif ()\n\nif (NOT DEFINED CMAKE_C_COMPILER)\n  set(CMAKE_C_COMPILER \"arm-none-eabi-g"
  },
  {
    "path": "examples/build_system/cmake/toolchain/arm_iar.cmake",
    "chars": 800,
    "preview": "if (NOT DEFINED CMAKE_C_COMPILER)\n  set(CMAKE_C_COMPILER \"iccarm\")\nendif()\n\nif (NOT DEFINED CMAKE_CXX_COMPILER)\n  set(CM"
  },
  {
    "path": "examples/build_system/cmake/toolchain/common.cmake",
    "chars": 2002,
    "preview": "include(CMakePrintHelpers)\n\n# ----------------------------------------------------------------------------\n# Common\n# --"
  },
  {
    "path": "examples/build_system/cmake/toolchain/cstat_sel_checks.txt",
    "chars": 5422,
    "preview": "# IAR C-STAT Checks Manifest Handler V2.7.5.562\n#\nMISRAC2012-Dir-4.3\nMISRAC2012-Dir-4.7_c\nMISRAC2012-Dir-4.10\nMISRAC2012"
  },
  {
    "path": "examples/build_system/cmake/toolchain/ft32_gcc.cmake",
    "chars": 657,
    "preview": "if (NOT DEFINED CMAKE_C_COMPILER)\n  set(CMAKE_C_COMPILER \"ft32-elf-gcc\")\nendif ()\n\nif (NOT DEFINED CMAKE_CXX_COMPILER)\n "
  },
  {
    "path": "examples/build_system/cmake/toolchain/msp430_gcc.cmake",
    "chars": 403,
    "preview": "if (NOT DEFINED CMAKE_C_COMPILER)\n  set(CMAKE_C_COMPILER \"msp430-elf-gcc\")\nendif ()\n\nif (NOT DEFINED CMAKE_CXX_COMPILER)"
  },
  {
    "path": "examples/build_system/cmake/toolchain/riscv_gcc.cmake",
    "chars": 940,
    "preview": "# default Toolchain from https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack\nif (NOT DEFINED CROSS_COMPILE)\n  se"
  },
  {
    "path": "examples/build_system/cmake/toolchain/rx_gcc.cmake",
    "chars": 783,
    "preview": "# Cross Compiler for RX\nif (NOT DEFINED CROSS_COMPILE)\n  set(CROSS_COMPILE \"rx-elf-\")\nendif ()\n\nif (NOT DEFINED CMAKE_C_"
  },
  {
    "path": "examples/build_system/make/cpu/arm1176jzf-s.mk",
    "chars": 159,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mcpu=arm1176jzf-s \\\n\nelse ifeq ($(TOOLCHAIN),iar)\n\t#CFLAGS += --cpu cortex-a5"
  },
  {
    "path": "examples/build_system/make/cpu/arm926ej-s.mk",
    "chars": 157,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mcpu=arm926ej-s \\\n\nelse ifeq ($(TOOLCHAIN),iar)\n\t#CFLAGS += --cpu cortex-a53\n"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-a53.mk",
    "chars": 168,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mcpu=cortex-a53 \\\n\nelse ifeq ($(TOOLCHAIN),iar)\n\tCFLAGS += \\\n\t\t--cpu cortex-a"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-a72.mk",
    "chars": 168,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mcpu=cortex-a72 \\\n\nelse ifeq ($(TOOLCHAIN),iar)\n\tCFLAGS += \\\n\t\t--cpu cortex-a"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m0.mk",
    "chars": 432,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mthumb \\\n    -mcpu=cortex-m0 \\\n    -mfloat-abi=soft \\\n\nelse ifeq ($(TOOLCHAIN"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m0plus.mk",
    "chars": 442,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mthumb \\\n    -mcpu=cortex-m0plus \\\n    -mfloat-abi=soft \\\n\nelse ifeq ($(TOOLC"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m23.mk",
    "chars": 437,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mthumb \\\n    -mcpu=cortex-m23 \\\n    -mfloat-abi=soft \\\n\nelse ifeq ($(TOOLCHAI"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m3.mk",
    "chars": 432,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mthumb \\\n    -mcpu=cortex-m3 \\\n    -mfloat-abi=soft \\\n\nelse ifeq ($(TOOLCHAIN"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m33-nodsp-nofp.mk",
    "chars": 451,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n\t-mthumb \\\n\t-mcpu=cortex-m33+nodsp \\\n\t-mfloat-abi=soft \\\n\nelse ifeq ($(TOOLCHAIN),"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m33.mk",
    "chars": 509,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mthumb \\\n    -mcpu=cortex-m33 \\\n    -mfloat-abi=hard \\\n    -mfpu=fpv5-sp-d16 "
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m4-nofpu.mk",
    "chars": 409,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mthumb \\\n    -mcpu=cortex-m4 \\\n    -mfloat-abi=soft\n\nelse ifeq ($(TOOLCHAIN),"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m4.mk",
    "chars": 469,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mthumb \\\n    -mcpu=cortex-m4 \\\n    -mfloat-abi=hard \\\n    -mfpu=fpv4-sp-d16 \\"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m55.mk",
    "chars": 518,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mthumb \\\n    -mcpu=cortex-m55 \\\n    -mfloat-abi=hard \\\n    -mfpu=fpv5-d16 \\\n "
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m7-fpsp.mk",
    "chars": 496,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mthumb \\\n    -mcpu=cortex-m7 \\\n    -mfloat-abi=hard \\\n    -mfpu=fpv5-sp-d16 \\"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m7.mk",
    "chars": 492,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mthumb \\\n    -mcpu=cortex-m7 \\\n    -mfloat-abi=hard \\\n    -mfpu=fpv5-d16 \\\n\ne"
  },
  {
    "path": "examples/build_system/make/cpu/cortex-m85.mk",
    "chars": 507,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -mthumb \\\n    -mcpu=cortex-m85 \\\n    -mfloat-abi=hard \\\n    -mfpu=fpv5-d16 \\\n\n"
  },
  {
    "path": "examples/build_system/make/cpu/msp430.mk",
    "chars": 286,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  # nothing to add\nelse ifeq ($(TOOLCHAIN),clang)\n  # nothing to add\nelse ifeq ($(TOOLCHAIN),iar"
  },
  {
    "path": "examples/build_system/make/cpu/rv32i-ilp32.mk",
    "chars": 314,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -march=rv32i_zicsr \\\n    -mabi=ilp32 \\\n\nelse ifeq ($(TOOLCHAIN),clang)\n  CFLAG"
  },
  {
    "path": "examples/build_system/make/cpu/rv32imac-ilp32.mk",
    "chars": 339,
    "preview": "ifeq ($(TOOLCHAIN),gcc)\n  CFLAGS += \\\n    -march=rv32imac_zicsr_zifencei \\\n    -mabi=ilp32 \\\n\nelse ifeq ($(TOOLCHAIN),cl"
  },
  {
    "path": "examples/build_system/make/toolchain/arm_clang.mk",
    "chars": 203,
    "preview": "CC = clang\nCXX = clang++\nAS = $(CC) -x assembler-with-cpp\nLD = $(CC)\n\nGDB = $(CROSS_COMPILE)gdb\nOBJCOPY = llvm-objcopy\nS"
  },
  {
    "path": "examples/build_system/make/toolchain/arm_gcc.mk",
    "chars": 433,
    "preview": "# makefile for arm gcc toolchain\n\n# Can be set by family, default to ARM GCC\nCROSS_COMPILE ?= arm-none-eabi-\n\nCC = $(CRO"
  },
  {
    "path": "examples/build_system/make/toolchain/arm_iar.mk",
    "chars": 237,
    "preview": "# makefile for arm iar toolchain\n\nCC = iccarm\nAS = iasmarm\nLD = ilinkarm\nOBJCOPY = ielftool --silent\nSIZE = size\n\n# Enab"
  },
  {
    "path": "examples/build_system/make/toolchain/clang_rules.mk",
    "chars": 65,
    "preview": "include ${TOP}/examples/build_system/make/toolchain/gcc_rules.mk\n"
  },
  {
    "path": "examples/build_system/make/toolchain/gcc_common.mk",
    "chars": 1670,
    "preview": "# ---------------------------------------\n# Compiler Flags\n# ---------------------------------------\nCFLAGS += \\\n  -MD \\"
  },
  {
    "path": "examples/build_system/make/toolchain/gcc_rules.mk",
    "chars": 1832,
    "preview": "SRC_S += $(SRC_S_GCC)\n\n# Assembly files can be name with upper case .S, convert it to .s\nSRC_S := $(SRC_S:.S=.s)\n\n# Due "
  },
  {
    "path": "examples/build_system/make/toolchain/iar_rules.mk",
    "chars": 1129,
    "preview": "SRC_S += $(SRC_S_IAR)\n\n# Assembly files can be name with upper case .S, convert it to .s\nSRC_S := $(SRC_S:.S=.s)\n\n# Due "
  },
  {
    "path": "examples/build_system/make/toolchain/riscv_gcc.mk",
    "chars": 434,
    "preview": "# makefile for arm gcc toolchain\n\n# Can be set by family, default to ARM GCC\nCROSS_COMPILE ?= riscv-none-elf-\n\nCC = $(CR"
  },
  {
    "path": "examples/device/99-tinyusb.rules",
    "chars": 986,
    "preview": "# Copy this file to the location of your distribution's udev rules, for example on Ubuntu:\n#   sudo cp 99-tinyusb.rules "
  },
  {
    "path": "examples/device/CMakeLists.txt",
    "chars": 942,
    "preview": "cmake_minimum_required(VERSION 3.20)\n\ninclude(${CMAKE_CURRENT_SOURCE_DIR}/../../hw/bsp/family_support.cmake)\n\nproject(ti"
  },
  {
    "path": "examples/device/CMakePresets.json",
    "chars": 76,
    "preview": "{\n  \"version\": 6,\n  \"include\": [\n    \"../../hw/bsp/BoardPresets.json\"\n  ]\n}\n"
  },
  {
    "path": "examples/device/audio_4_channel_mic/CMakeLists.txt",
    "chars": 1007,
    "preview": "cmake_minimum_required(VERSION 3.20)\n\ninclude(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)\n\nproject"
  },
  {
    "path": "examples/device/audio_4_channel_mic/CMakePresets.json",
    "chars": 79,
    "preview": "{\n  \"version\": 6,\n  \"include\": [\n    \"../../../hw/bsp/BoardPresets.json\"\n  ]\n}\n"
  },
  {
    "path": "examples/device/audio_4_channel_mic/Makefile",
    "chars": 240,
    "preview": "include ../../../hw/bsp/family_support.mk\n\nINC += \\\n  src \\\n\n\n# Example source\nEXAMPLE_SOURCE += \\\n  src/main.c \\\n  src/"
  },
  {
    "path": "examples/device/audio_4_channel_mic/skip.txt",
    "chars": 70,
    "preview": "mcu:SAMD11\nmcu:SAME5X\nmcu:SAMG\nfamily:broadcom_64bit\nfamily:espressif\n"
  },
  {
    "path": "examples/device/audio_4_channel_mic/src/main.c",
    "chars": 13835,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2020 Reinhard Panhuber\n *\n * Permission is hereby granted, free of charg"
  },
  {
    "path": "examples/device/audio_4_channel_mic/src/plot_audio_samples.py",
    "chars": 1239,
    "preview": "#!/usr/bin/env python3\nimport sounddevice as sd\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport platform\n\nif _"
  },
  {
    "path": "examples/device/audio_4_channel_mic/src/tusb_config.h",
    "chars": 4734,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Ha Thach (tinyusb.org)\n *\n * Permission is hereby granted, free of "
  },
  {
    "path": "examples/device/audio_4_channel_mic/src/usb_descriptors.c",
    "chars": 6638,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Ha Thach (tinyusb.org)\n *\n * Permission is hereby granted, free of "
  },
  {
    "path": "examples/device/audio_4_channel_mic_freertos/CMakeLists.txt",
    "chars": 1021,
    "preview": "cmake_minimum_required(VERSION 3.20)\n\ninclude(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)\n\nproject"
  },
  {
    "path": "examples/device/audio_4_channel_mic_freertos/CMakePresets.json",
    "chars": 79,
    "preview": "{\n  \"version\": 6,\n  \"include\": [\n    \"../../../hw/bsp/BoardPresets.json\"\n  ]\n}\n"
  },
  {
    "path": "examples/device/audio_4_channel_mic_freertos/Makefile",
    "chars": 250,
    "preview": "RTOS = freertos\ninclude ../../../hw/bsp/family_support.mk\n\nINC += \\\n\tsrc \\\n\n\n# Example source\nEXAMPLE_SOURCE = \\\n\tsrc/ma"
  },
  {
    "path": "examples/device/audio_4_channel_mic_freertos/README.md",
    "chars": 999,
    "preview": "# How to build example for Esp32s3\n1. Load idf environment variables (eg. using the esp-idf alias `get_idf` if configure"
  },
  {
    "path": "examples/device/audio_4_channel_mic_freertos/sdkconfig.defaults",
    "chars": 129,
    "preview": "CONFIG_IDF_CMAKE=y\nCONFIG_FREERTOS_HZ=1000\nCONFIG_FREERTOS_WATCHPOINT_END_OF_STACK=y\nCONFIG_FREERTOS_SUPPORT_STATIC_ALLO"
  },
  {
    "path": "examples/device/audio_4_channel_mic_freertos/skip.txt",
    "chars": 322,
    "preview": "mcu:CH32F20X\nmcu:CH32V103\nmcu:CH32V20X\nmcu:CH32V307\nmcu:CXD56\nmcu:F1C100S\nmcu:GD32VF103\nmcu:MCXA15\nmcu:MKL25ZXX\nmcu:MSP4"
  },
  {
    "path": "examples/device/audio_4_channel_mic_freertos/src/CMakeLists.txt",
    "chars": 175,
    "preview": "# This file is for ESP-IDF only\nidf_component_register(SRCS \"main.c\" \"usb_descriptors.c\"\n                    INCLUDE_DIR"
  },
  {
    "path": "examples/device/audio_4_channel_mic_freertos/src/main.c",
    "chars": 15891,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2020 Reinhard Panhuber\n *\n * Permission is hereby granted, free of charg"
  },
  {
    "path": "examples/device/audio_4_channel_mic_freertos/src/plot_audio_samples.py",
    "chars": 1168,
    "preview": "#!/usr/bin/env python3\nimport sounddevice as sd\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport platform\n\nif _"
  },
  {
    "path": "examples/device/audio_4_channel_mic_freertos/src/tusb_config.h",
    "chars": 4893,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Ha Thach (tinyusb.org)\n *\n * Permission is hereby granted, free of "
  },
  {
    "path": "examples/device/audio_4_channel_mic_freertos/src/usb_descriptors.c",
    "chars": 6618,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Ha Thach (tinyusb.org)\n *\n * Permission is hereby granted, free of "
  },
  {
    "path": "examples/device/audio_test/CMakeLists.txt",
    "chars": 880,
    "preview": "cmake_minimum_required(VERSION 3.20)\n\ninclude(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)\n\nproject"
  },
  {
    "path": "examples/device/audio_test/CMakePresets.json",
    "chars": 79,
    "preview": "{\n  \"version\": 6,\n  \"include\": [\n    \"../../../hw/bsp/BoardPresets.json\"\n  ]\n}\n"
  },
  {
    "path": "examples/device/audio_test/Makefile",
    "chars": 216,
    "preview": "include ../../../hw/bsp/family_support.mk\n\nINC += \\\n  src \\\n\n\n# Example source\nEXAMPLE_SOURCE += $(wildcard src/*.c)\nSRC"
  },
  {
    "path": "examples/device/audio_test/skip.txt",
    "chars": 48,
    "preview": "mcu:SAMD11\nmcu:SAME5X\nmcu:SAMG\nfamily:espressif\n"
  }
]

// ... and 2211 more files (download for full content)

About this extraction

This page contains the full source code of the hathach/tinyusb GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2411 files (17.4 MB), approximately 4.7M tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!