1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
Commit Graph

24 Commits

Author SHA1 Message Date
Gunar Schorcht
f30abc4200 pkg/tinyusb/tinyusb_board_reset: define feature as RIOT internal
Defining the feature as RIOT internal avoids that the board has to set USB_VID and USB_PID explicit to USB_VID_TESTInG/USB_PID_TESTING if tinyUSB board reset feature is used.
2023-03-10 12:42:47 +01:00
Gunar Schorcht
5da9b2951f pkg/tinyusb: support for network device class descriptors 2023-02-01 21:56:36 +01:00
Gunar Schorcht
014e090fbd pkg/tinyusb: support for network device configuration 2023-01-31 22:40:17 +01:00
bors[bot]
9ff9704fe5
Merge #19010 #19149
19010: bootloaders/riotboot: add tinyUSB DFU support r=benpicco a=gschorcht

### Contribution description

This PR provides
- the tinyUSB DFU and DFU Runtime support and
- the `riotboot_tinyusb_dfu` bootloader that uses the tinyUSB DFU mode to flash new application images.

~This PR includes PR #18983 for now to be compilable.~

### Testing procedure

1. Use any board that supports the `riotboot´ and `tinyusb_device` features and flash the bootloader first, for example
   ```
   BOARD=nucleo-f767zi make -C bootloaders/riotboot_tinyusb_dfu flash
   ```
   and check that the `riotboot_tinyusb_dfu` bootloader is in DFU mode:
   ```
   dfu-util --list
   ```
3. Flash a first application using the following command:
    ```
   FEATURES_REQUIRED=riotboot USEMODULE=tinyusb_dfu BOARD=nucleo-f767zi \
   make -C tests/saul PROGRAMMER=dfu-util riotboot/flash-slot0
   ```
   and check that the application starts and is seen as upgradable:
   ```
   dfu-util --list
   ```
4. Restart the node in bootloader DFU mode by:
   ```
   dfu-util -e
   ```
   Flash a second application, for example
   ```
   FEATURES_REQUIRED=riotboot USEMODULE=tinyusb_dfu BOARD=nucleo-f767zi \
   make -C tests/shell PROGRAMMER=dfu-util riotboot/flash-slot1
   ```
   and check that the second application starts and is seen as upgradable:
   ```
   dfu-util --list
   ```
   
### Issues/PRs references

~Depends on PR #18983~

19149: SECURITY: Describe that declassification is an option r=benpicco a=chrysn

### Contribution description

Our security policy does not contain provisions for the case when what is reported is not what we consider an actual security issue. As it is described now, everything reported through security@ would go through the full treatment, including a point release.

I'm not sure it belongs into the text itself (as it's more about how security reporters interact with the project than internals), but declassification should IMO be backed at least by 3 maintainers, and no strong NACK.

### Issues/PRs references

#19141 followed that procedure after some chat on it on the maintainers channel. (In the discussion, I proposed declassification, with 2.5 people supporting it and one "I was about to, but can we be sure nobody is using it?" voice).

Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
Co-authored-by: chrysn <chrysn@fsfe.org>
2023-01-15 23:31:00 +00:00
Gunar Schorcht
37b151111f pkg/tinyusb: add DFU and DFU_RT device class implementation 2023-01-15 18:09:55 +01:00
Gunar Schorcht
7fa58f74dd pkg/tinyusb: add DFU and DFU_RT to descriptors 2023-01-15 18:09:55 +01:00
Gunar Schorcht
c254dc35fd pkg/tinyusb: add DFU and DFU_RT to configuration 2023-01-15 18:09:55 +01:00
Gunar Schorcht
c0d027156a pkg/tinyusb: board reset feature moved
The board reset function can be used on any CDC ACM interface. It is not necessary that the tinyUSB CDC ACM STDIO is used. Therefore, the board reset function is now a feature of the CDC ACM interface that don't require any other functionality.
2023-01-03 10:05:54 +01:00
benpicco
0d64cc2fa5
Merge pull request #19006 from gschorcht/pkg/tinyusb_board_reset
pkg/tinyusb: add usb_board_reset support
2022-12-06 17:16:18 +01:00
Gunar Schorcht
d66716fa38 pkg/tinyusb: support second device configuration descriptor
An alternative device configuration descriptor is required if multiple protocols, e.g. CDC ECM and RNDIS, should be used with same device interface. This commit is a prerequisite for the support of tinyusb netdev driver.
2022-12-04 17:06:48 +01:00
Gunar Schorcht
91c171a990 pkg/tinyusb: some cleanup of configuration and descriptors
The commit includes the following changes:
- Remaining CONFIG_* symbols are moved to tinyusb_descriptors.h to be visible in all source files.
- Debug output is added to some descriptor callbacks.
- The conditional definitions of CFG_* symbols are changed to unconditional definitions to ensure that Kconfig CONFIG_* symbols are always used.
2022-12-04 17:06:48 +01:00
Gunar Schorcht
bd5ce7b398 pkg/tinyusb: parameterized descriptor macros 2022-12-04 17:06:48 +01:00
Gunar Schorcht
b97da1bfde pkg/tinyusb: use RIOT internal USB_VID/USB_PID 2022-12-03 12:05:32 +01:00
Gunar Schorcht
ed585cfc22 pkg/tinyusb: fix compilation with NDEBUG defined 2022-12-03 11:48:35 +01:00
Gunar Schorcht
fc1600252f pkg/tinyusb: fix reset for STM32 boards without internal D+ pullup
If the STM32 MCU does not have an internal D+ pullup and there is no dedicated GPIO on the board to simulate a USB disconnect, the D+ GPIO
has to be temporarily configured as an output and pushed down to simulate a disconnect/connect cycle to allow the host to recognize the device. This is done correctly in `cpu/stm32/periph/usbdev_fs.c` but not in tinyUSB STM32 hardware driver. That is, pressing the RESET button doesn't reset the USB connection.
fixup! pkg/tinyusb: fix reset for STM32 boards without internal D+ pullup
2022-11-30 15:17:51 +01:00
Gunar Schorcht
4b7578b2eb pkg/tinyusb: fix USB speed selection for STM32 2022-11-17 14:07:38 +01:00
Gunar Schorcht
37f6720da3 pkg/tinyusb: fix CFG_TUD_MAX_SPEED
The commit 98478e02fe removed the setting of the CFG_TUD_MAX_SPEED define to OPT_MODE_DEFAULT_SPEED. This setting is usually not required since CFG_TUD_MAX_SPEED is determined from CFG_TUSB_RHPORT{0,1}_MODE. However, this does not work for STM32F429I-DISC1 where the HS port is used via the internal FS-PHY. Therefore the default speed setting is added again.
2022-11-14 22:11:08 +01:00
Benjamin Valentin
5938bd815a pkg/tinyusb: provide common tusb_config.h 2022-11-09 12:06:36 +01:00
Gunar Schorcht
ef5c4deb55 pkg/tinyusb: common descriptors implementation 2022-11-09 06:57:55 +01:00
Gunar Schorcht
98478e02fe pkg/tinyusb: cleanup of tinyusb_config.h
`CFG_TUD_MAX_SPEED` definition isn't required since tinyUSB derives it from `TUD_RHPORT_MODE` if not defined or uses the maximum speed the MCU supports by default.
2022-10-19 18:19:50 +02:00
Gunar Schorcht
bb337cde8e pkg/tinyusb: use auto_init for tinyusb stack and thread setup 2022-10-04 07:40:18 +02:00
Gunar Schorcht
9cf0119233 pkg/tinyusb: add tinyusb_hw_defaults.h for platform specific defaults 2022-10-04 07:40:18 +02:00
Gunar Schorcht
3367b106bb tests: add tinyUSB CDC and MSC device test application 2022-09-30 19:05:51 +02:00
Gunar Schorcht
136827e6da pkg: add tinyUSB device/host stack as package 2022-09-30 19:05:51 +02:00