summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AGENTS.md33
-rw-r--r--docs/info/changelog.rst93
-rw-r--r--hw/bsp/BoardPresets.json342
-rw-r--r--library.json2
-rw-r--r--repository.yml3
-rw-r--r--sonar-project.properties2
-rw-r--r--src/tusb_option.h2
-rwxr-xr-xtools/make_release.py17
8 files changed, 452 insertions, 42 deletions
diff --git a/AGENTS.md b/AGENTS.md
index d00a4b114..a6163dd42 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -164,11 +164,36 @@ python3 tools/build.py -b BOARD_NAME
## 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 `python tools/make_release.py` to refresh `src/tusb_option.h`, `repository.yml`, and `library.json`.
-3. Generate release notes by running `git log <last-release-tag>..HEAD`, then add a new entry to
- `docs/info/changelog.rst` that follows the existing format (heading, date, highlights, categorized bullet lists).
-4. Proceed with tagging/publishing once builds and tests succeed.
+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
```
diff --git a/docs/info/changelog.rst b/docs/info/changelog.rst
index d6bf846ed..3addce27b 100644
--- a/docs/info/changelog.rst
+++ b/docs/info/changelog.rst
@@ -2,6 +2,99 @@
Changelog
*********
+0.20.0
+======
+
+*November 19, 2024*
+
+General
+-------
+
+- New MCUs and Boards:
+
+ - Add STM32U3 device support (adjusted from STM32U0)
+ - Add nRF54H20 support with initial board configuration
+ - Rename board names: pca10056→nrf52840dk, pca10059→nrf52840dongle, pca10095→nrf5340dk
+ - Improve CMake: Move startup and linker files from board target to executable. Enhance target warning flags and fix various build warnings
+
+- Code Quality and Static Analysis:
+
+ - Add PVS-Studio static analysis to CI
+ - Add SonarQube scan support
+ - Add IAR C-Stat analysis capability
+ - Add ``.clang-format`` for consistent code formatting
+ - Fix numerous alerts and warnings found by static analysis tools
+
+- Documentation:
+
+ - Improve Getting Started documentation structure and flow
+ - Add naming conventions and buffer handling documentation
+
+Controller Driver (DCD & HCD)
+-----------------------------
+
+- DWC2
+
+ - Fix incorrect handling of Zero-Length Packets (ZLP) in the DWC2 driver when receiving data (OUT transfers)
+ - Improve EP0 multi-packet logic
+ - Support EP0 with max packet size = 8
+ - For IN endpoint, write initial packet directly to FIFO and only use TXFE interrupt for subsequent packets
+ - Fix ISO with bInterval > 2 using incomplete IN interrupt handling.
+ - Fix compile issues when enabling both host and device
+ - Clear pending suspend interrupt after USB reset (enum end)
+ - Improve host closing endpoint and channel handling when device is unplugged
+
+- FSDEV (STM32)
+
+ - Fix AT32 USB interrupt remapping in ``dcd_int_enable()``
+
+- OHCI
+
+ - Add initial LPC55 OHCI support
+ - Improve data cache support
+
+Device Stack
+------------
+
+- USBD Core
+
+ - Support configurable EP0 buffer size CFG_TUD_ENDPOINT0_BUFSIZE
+ - Make dcd_edpt_iso_alloc/activate as default API for ISO endpoint
+
+- Audio
+
+ - Add UAC1 support
+ - Implement RX FIFO threshold adjustment with `tud_audio_get/set_ep_in_fifo_threshold()`
+
+- CDC
+
+ - Migrate to endpoint stream API
+
+- HID
+
+ - Fix HID stylus descriptor
+
+- MIDI
+
+ - Migrate to endpoint stream API
+ - Add ``tud_midi_n_packet_write_n()`` and ``tud_midi_n_packet_read_n()``
+
+- MTP
+
+ - Fix incorrect MTP xact_len calculation
+
+- Video
+
+ - Add bufferless operation callback for dynamic frame generation with tud_video_prepare_payload_cb()
+
+
+Host Stack
+----------
+
+- USBH Core
+
+ - Improve transfer closing and channel management
+
0.19.0
======
diff --git a/hw/bsp/BoardPresets.json b/hw/bsp/BoardPresets.json
index 044c74ee1..5df924138 100644
--- a/hw/bsp/BoardPresets.json
+++ b/hw/bsp/BoardPresets.json
@@ -363,6 +363,10 @@
"inherits": "default"
},
{
+ "name": "metro_nrf52840",
+ "inherits": "default"
+ },
+ {
"name": "mimxrt1010_evk",
"inherits": "default"
},
@@ -419,19 +423,43 @@
"inherits": "default"
},
{
- "name": "pca10056",
+ "name": "nrf52833dk",
"inherits": "default"
},
{
- "name": "pca10059",
+ "name": "nrf52840dk",
"inherits": "default"
},
{
- "name": "pca10095",
+ "name": "nrf52840dongle",
"inherits": "default"
},
{
- "name": "pca10100",
+ "name": "nrf5340dk",
+ "inherits": "default"
+ },
+ {
+ "name": "nrf54h20dk",
+ "inherits": "default"
+ },
+ {
+ "name": "nutiny_nuc126v",
+ "inherits": "default"
+ },
+ {
+ "name": "nutiny_sdk_nuc120",
+ "inherits": "default"
+ },
+ {
+ "name": "nutiny_sdk_nuc121",
+ "inherits": "default"
+ },
+ {
+ "name": "nutiny_sdk_nuc125",
+ "inherits": "default"
+ },
+ {
+ "name": "nutiny_sdk_nuc505",
"inherits": "default"
},
{
@@ -491,6 +519,10 @@
"inherits": "default"
},
{
+ "name": "raspberry_pi_pico2_riscv",
+ "inherits": "default"
+ },
+ {
"name": "raspberry_pi_pico_w",
"inherits": "default"
},
@@ -515,6 +547,14 @@
"inherits": "default"
},
{
+ "name": "same70_qmtech",
+ "inherits": "default"
+ },
+ {
+ "name": "same70_xplained",
+ "inherits": "default"
+ },
+ {
"name": "samg55_xplained",
"inherits": "default"
},
@@ -535,10 +575,18 @@
"inherits": "default"
},
{
+ "name": "sltb009a",
+ "inherits": "default"
+ },
+ {
"name": "sparkfun_samd21_mini_usb",
"inherits": "default"
},
{
+ "name": "spresense",
+ "inherits": "default"
+ },
+ {
"name": "stlinkv3mini",
"inherits": "default"
},
@@ -699,6 +747,10 @@
"inherits": "default"
},
{
+ "name": "stm32l496nucleo",
+ "inherits": "default"
+ },
+ {
"name": "stm32l4p5nucleo",
"inherits": "default"
},
@@ -1337,6 +1389,11 @@
"configurePreset": "metro_m7_1011_sd"
},
{
+ "name": "metro_nrf52840",
+ "description": "Build preset for the metro_nrf52840 board",
+ "configurePreset": "metro_nrf52840"
+ },
+ {
"name": "mimxrt1010_evk",
"description": "Build preset for the mimxrt1010_evk board",
"configurePreset": "mimxrt1010_evk"
@@ -1407,24 +1464,54 @@
"configurePreset": "nanoch32v305"
},
{
- "name": "pca10056",
- "description": "Build preset for the pca10056 board",
- "configurePreset": "pca10056"
+ "name": "nrf52833dk",
+ "description": "Build preset for the nrf52833dk board",
+ "configurePreset": "nrf52833dk"
+ },
+ {
+ "name": "nrf52840dk",
+ "description": "Build preset for the nrf52840dk board",
+ "configurePreset": "nrf52840dk"
+ },
+ {
+ "name": "nrf52840dongle",
+ "description": "Build preset for the nrf52840dongle board",
+ "configurePreset": "nrf52840dongle"
+ },
+ {
+ "name": "nrf5340dk",
+ "description": "Build preset for the nrf5340dk board",
+ "configurePreset": "nrf5340dk"
+ },
+ {
+ "name": "nrf54h20dk",
+ "description": "Build preset for the nrf54h20dk board",
+ "configurePreset": "nrf54h20dk"
},
{
- "name": "pca10059",
- "description": "Build preset for the pca10059 board",
- "configurePreset": "pca10059"
+ "name": "nutiny_nuc126v",
+ "description": "Build preset for the nutiny_nuc126v board",
+ "configurePreset": "nutiny_nuc126v"
},
{
- "name": "pca10095",
- "description": "Build preset for the pca10095 board",
- "configurePreset": "pca10095"
+ "name": "nutiny_sdk_nuc120",
+ "description": "Build preset for the nutiny_sdk_nuc120 board",
+ "configurePreset": "nutiny_sdk_nuc120"
},
{
- "name": "pca10100",
- "description": "Build preset for the pca10100 board",
- "configurePreset": "pca10100"
+ "name": "nutiny_sdk_nuc121",
+ "description": "Build preset for the nutiny_sdk_nuc121 board",
+ "configurePreset": "nutiny_sdk_nuc121"
+ },
+ {
+ "name": "nutiny_sdk_nuc125",
+ "description": "Build preset for the nutiny_sdk_nuc125 board",
+ "configurePreset": "nutiny_sdk_nuc125"
+ },
+ {
+ "name": "nutiny_sdk_nuc505",
+ "description": "Build preset for the nutiny_sdk_nuc505 board",
+ "configurePreset": "nutiny_sdk_nuc505"
},
{
"name": "pico_sdk",
@@ -1497,6 +1584,11 @@
"configurePreset": "raspberry_pi_pico2"
},
{
+ "name": "raspberry_pi_pico2_riscv",
+ "description": "Build preset for the raspberry_pi_pico2_riscv board",
+ "configurePreset": "raspberry_pi_pico2_riscv"
+ },
+ {
"name": "raspberry_pi_pico_w",
"description": "Build preset for the raspberry_pi_pico_w board",
"configurePreset": "raspberry_pi_pico_w"
@@ -1527,6 +1619,16 @@
"configurePreset": "same54_xplained"
},
{
+ "name": "same70_qmtech",
+ "description": "Build preset for the same70_qmtech board",
+ "configurePreset": "same70_qmtech"
+ },
+ {
+ "name": "same70_xplained",
+ "description": "Build preset for the same70_xplained board",
+ "configurePreset": "same70_xplained"
+ },
+ {
"name": "samg55_xplained",
"description": "Build preset for the samg55_xplained board",
"configurePreset": "samg55_xplained"
@@ -1552,11 +1654,21 @@
"configurePreset": "sipeed_longan_nano"
},
{
+ "name": "sltb009a",
+ "description": "Build preset for the sltb009a board",
+ "configurePreset": "sltb009a"
+ },
+ {
"name": "sparkfun_samd21_mini_usb",
"description": "Build preset for the sparkfun_samd21_mini_usb board",
"configurePreset": "sparkfun_samd21_mini_usb"
},
{
+ "name": "spresense",
+ "description": "Build preset for the spresense board",
+ "configurePreset": "spresense"
+ },
+ {
"name": "stlinkv3mini",
"description": "Build preset for the stlinkv3mini board",
"configurePreset": "stlinkv3mini"
@@ -1757,6 +1869,11 @@
"configurePreset": "stm32l476disco"
},
{
+ "name": "stm32l496nucleo",
+ "description": "Build preset for the stm32l496nucleo board",
+ "configurePreset": "stm32l496nucleo"
+ },
+ {
"name": "stm32l4p5nucleo",
"description": "Build preset for the stm32l4p5nucleo board",
"configurePreset": "stm32l4p5nucleo"
@@ -3154,6 +3271,19 @@
]
},
{
+ "name": "metro_nrf52840",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "metro_nrf52840"
+ },
+ {
+ "type": "build",
+ "name": "metro_nrf52840"
+ }
+ ]
+ },
+ {
"name": "mimxrt1010_evk",
"steps": [
{
@@ -3336,54 +3466,132 @@
]
},
{
- "name": "pca10056",
+ "name": "nrf52833dk",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "nrf52833dk"
+ },
+ {
+ "type": "build",
+ "name": "nrf52833dk"
+ }
+ ]
+ },
+ {
+ "name": "nrf52840dk",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "nrf52840dk"
+ },
+ {
+ "type": "build",
+ "name": "nrf52840dk"
+ }
+ ]
+ },
+ {
+ "name": "nrf52840dongle",
"steps": [
{
"type": "configure",
- "name": "pca10056"
+ "name": "nrf52840dongle"
},
{
"type": "build",
- "name": "pca10056"
+ "name": "nrf52840dongle"
}
]
},
{
- "name": "pca10059",
+ "name": "nrf5340dk",
"steps": [
{
"type": "configure",
- "name": "pca10059"
+ "name": "nrf5340dk"
},
{
"type": "build",
- "name": "pca10059"
+ "name": "nrf5340dk"
}
]
},
{
- "name": "pca10095",
+ "name": "nrf54h20dk",
"steps": [
{
"type": "configure",
- "name": "pca10095"
+ "name": "nrf54h20dk"
},
{
"type": "build",
- "name": "pca10095"
+ "name": "nrf54h20dk"
}
]
},
{
- "name": "pca10100",
+ "name": "nutiny_nuc126v",
"steps": [
{
"type": "configure",
- "name": "pca10100"
+ "name": "nutiny_nuc126v"
},
{
"type": "build",
- "name": "pca10100"
+ "name": "nutiny_nuc126v"
+ }
+ ]
+ },
+ {
+ "name": "nutiny_sdk_nuc120",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "nutiny_sdk_nuc120"
+ },
+ {
+ "type": "build",
+ "name": "nutiny_sdk_nuc120"
+ }
+ ]
+ },
+ {
+ "name": "nutiny_sdk_nuc121",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "nutiny_sdk_nuc121"
+ },
+ {
+ "type": "build",
+ "name": "nutiny_sdk_nuc121"
+ }
+ ]
+ },
+ {
+ "name": "nutiny_sdk_nuc125",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "nutiny_sdk_nuc125"
+ },
+ {
+ "type": "build",
+ "name": "nutiny_sdk_nuc125"
+ }
+ ]
+ },
+ {
+ "name": "nutiny_sdk_nuc505",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "nutiny_sdk_nuc505"
+ },
+ {
+ "type": "build",
+ "name": "nutiny_sdk_nuc505"
}
]
},
@@ -3570,6 +3778,19 @@
]
},
{
+ "name": "raspberry_pi_pico2_riscv",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "raspberry_pi_pico2_riscv"
+ },
+ {
+ "type": "build",
+ "name": "raspberry_pi_pico2_riscv"
+ }
+ ]
+ },
+ {
"name": "raspberry_pi_pico_w",
"steps": [
{
@@ -3648,6 +3869,32 @@
]
},
{
+ "name": "same70_qmtech",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "same70_qmtech"
+ },
+ {
+ "type": "build",
+ "name": "same70_qmtech"
+ }
+ ]
+ },
+ {
+ "name": "same70_xplained",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "same70_xplained"
+ },
+ {
+ "type": "build",
+ "name": "same70_xplained"
+ }
+ ]
+ },
+ {
"name": "samg55_xplained",
"steps": [
{
@@ -3713,6 +3960,19 @@
]
},
{
+ "name": "sltb009a",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "sltb009a"
+ },
+ {
+ "type": "build",
+ "name": "sltb009a"
+ }
+ ]
+ },
+ {
"name": "sparkfun_samd21_mini_usb",
"steps": [
{
@@ -3726,6 +3986,19 @@
]
},
{
+ "name": "spresense",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "spresense"
+ },
+ {
+ "type": "build",
+ "name": "spresense"
+ }
+ ]
+ },
+ {
"name": "stlinkv3mini",
"steps": [
{
@@ -4246,6 +4519,19 @@
]
},
{
+ "name": "stm32l496nucleo",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "stm32l496nucleo"
+ },
+ {
+ "type": "build",
+ "name": "stm32l496nucleo"
+ }
+ ]
+ },
+ {
"name": "stm32l4p5nucleo",
"steps": [
{
diff --git a/library.json b/library.json
index 718fd84d3..efad438a7 100644
--- a/library.json
+++ b/library.json
@@ -1,6 +1,6 @@
{
"name": "TinyUSB",
- "version": "0.19.0",
+ "version": "0.20.0",
"description": "TinyUSB is an open-source cross-platform USB Host/Device stack for embedded system, designed to be memory-safe with no dynamic allocation and thread-safe with all interrupt events are deferred then handled in the non-ISR task function.",
"keywords": "usb, host, device",
"repository":
diff --git a/repository.yml b/repository.yml
index 5c2aaa6fa..f4da056e3 100644
--- a/repository.yml
+++ b/repository.yml
@@ -17,5 +17,6 @@ repo.versions:
"0.17.0": "0.17.0"
"0.18.0": "0.18.0"
"0.19.0": "0.19.0"
- "0-latest": "0.19.0"
+ "0.20.0": "0.20.0"
+ "0-latest": "0.20.0"
"0-dev": "0.0.0"
diff --git a/sonar-project.properties b/sonar-project.properties
index 5a19a234d..c0032d6e4 100644
--- a/sonar-project.properties
+++ b/sonar-project.properties
@@ -4,7 +4,7 @@ sonar.organization=hathach
# This is the name and version displayed in the SonarCloud UI.
sonar.projectName=tinyusb
-sonar.projectVersion=0.19.0
+sonar.projectVersion=0.20.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
diff --git a/src/tusb_option.h b/src/tusb_option.h
index eed14214d..c8265f898 100644
--- a/src/tusb_option.h
+++ b/src/tusb_option.h
@@ -31,7 +31,7 @@
// Version is release as major.minor.revision eg 1.0.0
#define TUSB_VERSION_MAJOR 0
-#define TUSB_VERSION_MINOR 19
+#define TUSB_VERSION_MINOR 20
#define TUSB_VERSION_REVISION 0
#define TUSB_VERSION_NUMBER (TUSB_VERSION_MAJOR * 10000 + TUSB_VERSION_MINOR * 100 + TUSB_VERSION_REVISION)
diff --git a/tools/make_release.py b/tools/make_release.py
index 0e7919f46..71c1e6f64 100755
--- a/tools/make_release.py
+++ b/tools/make_release.py
@@ -1,8 +1,9 @@
#!/usr/bin/env python3
import re
import gen_doc
+import gen_presets
-version = '0.19.0'
+version = '0.20.0'
print('version {}'.format(version))
ver_id = version.split('.')
@@ -50,15 +51,19 @@ with open(f_library_json, 'w') as f:
f_sonar_properties = 'sonar-project.properties'
with open(f_sonar_properties) as f:
fdata = f.read()
- fdata = re.sub(r'(sonar\.projectVersion=)\d+\.\d+\.\d+', rf'\1{version}', fdata)
+fdata = re.sub(r'(sonar\.projectVersion=)\d+\.\d+\.\d+', r'\g<1>{}'.format(version), fdata)
with open(f_sonar_properties, 'w') as f:
f.write(fdata)
-###################
-# docs/info/changelog.rst
-###################
-
+# gen docs
gen_doc.gen_deps_doc()
+gen_doc.gen_boards_doc()
+# gen presets
+gen_presets.main()
+
+##################(ver#
+# docs/info/changelog.rst
+###################
print("Update docs/info/changelog.rst")