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="-DCFG_TUH_RPI_PIO_USB=1"" />
<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="-DCFG_TUH_RPI_PIO_USB=1"" />
<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="-DCFG_TUH_RPI_PIO_USB=1"" />
<configuration PROFILE_NAME="adafruit_fruit_jam" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=adafruit_fruit_jam -DLOG=1 -DCFLAGS_CLI="-DCFG_TUH_RPI_PIO_USB=1"" />
<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="-DCFG_TUD_DWC2_DMA_ENABLE=1 -DCFG_TUH_DWC2_DMA_ENABLE=1"">
<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="-DCFG_TUD_DWC2_DMA_ENABLE=1 -DCFG_TUH_DWC2_DMA_ENABLE=1"">
<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="-DCFG_TUD_DWC2_DMA_ENABLE=1 -DCFG_TUH_DWC2_DMA_ENABLE=1"" />
<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="-DCFG_TUD_DWC2_DMA_ENABLE=1"" />
<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="-DCFG_TUD_DWC2_DMA=1"" />
<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 "adapter speed 5000"">
<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 "adapter speed 5000"">
<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 "MK64FN1M0xxx12" -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 "MKL25Z128xxx4" -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 "lpc1857" -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 "lpc4088" -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 "LPC54628J512" -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 "lpc55s69" -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 "MCXN947_M33_0" -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 "nrf52840_xxaa" -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 "nrf5340_xxaa_app" -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 "R7FA2A1AB" -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 "R7FA4M1AB" -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 "R7FA6M1AD" -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 "R7FA6M5BH" -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 "MIMXRT1011xxx5A" -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 "MIMXRT1062xxx5A" -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 "ATSAMD21G18" -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 "ATSAMD51J19A" -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 "$USER_HOME$/st/stm32cubeide_1.16.1/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.1.400.202404281720/tools/bin" --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 "stm32g474re" -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 "stm32h563zi" -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 "stm32h743xi" -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 "stm32u5a5zj" -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 "R7FA4M1AB" -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
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.