1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-18 12:52:44 +01:00
Commit Graph

5951 Commits

Author SHA1 Message Date
bors[bot]
e51d8285f3
Merge #19037
19037: sys/usb, pkg/tinyusb: move USB board reset from highlevel STDIO to CDC ACM r=dylad a=gschorcht

### Contribution description

The USB board reset function `usb_board_reset_coding_cb` can be used on any CDC-ACM interface, even if the CDC ACM interface is not used as high-level STDIO. Therefore, this PR provides the following changes:

- The call of the board reset function `usb_board_reset_coding_cb` from USBUS stack has been moved from the STDIO CDC ACM implementation to the CDC ACM implementation and is thus a feature of any USBUS CDC ACM interface which does not necessarily have to be used as highlevel STDIO.

- The call of the board reset function `usb_board_reset_coding_cb` from tinyUSB stack been moved from module `tinyusb_stdio_cdc_acm` to module `tinyusb_contrib` and is compiled in if the `tinyusb_class_cdc` module is used together the `tinyusb_device` module. Thus, it is now a feature of the tinyUSB CDC ACM interface, which does not necessarily have to be used as highlevel STDIO.
 
- The `usb_board_reset` module defines the `usb_board_reset_in_bootloader` function as a weak symbol to be used when reset in bootloader if no real implementation of this function is compiled in and the `riotboot_reset` module is not used. It only prints an error message that the reset in bootloader is not supported. This is necessary if the module `usb_board_reset` is used to be able to restart the board with an application via a USB CDC ACM interface, but the board's bootloader does not support the reset in bootloader feature.

- A test application has been added that either uses the highlevel STDIO `stdio_acm_cdc` or creates a CDC-ACM interface to enable board resets via USB. If the `usbus_dfu` module is used, it also initializes the DFU interface to be able to work together with the `riotboot_dfu` bootloader.

### Testing procedure

1. Use a board with a bootloader that supports the reset in bootloader via USB, but don't use the highlevel STDIO to check that it works with `usbus_cdc_acm`, for example:
   ```python
   USEMODULE=stdio_uart BOARD=arduino-mkr1000 make -C tests/usb_board_reset flash
   ```
   After reset in application with command
   ```python
   stty -F /dev/ttyACM0 raw ispeed 600 ospeed 600 cs8 -cstopb ignpar eol 255 eof 255
   ```
   command `dmesg` should give an output like the following with RIOT's test VID/PID:
   ```python
   dmesg
   [1745182.057403] usb 1-4.1.2: new full-speed USB device number 69 using xhci_hcd
   [1745182.160386] usb 1-4.1.2: New USB device found, idVendor=1209, idProduct=7d01, bcdDevice= 1.00
   [1745182.160390] usb 1-4.1.2: New USB device strings: Mfr=3, Product=2, SerialNumber=4
   [1745182.160392] usb 1-4.1.2: Product: arduino-mkr1000
   [1745182.160393] usb 1-4.1.2: Manufacturer: RIOT-os.org
   [1745182.160395] usb 1-4.1.2: SerialNumber: 6B6C2CA5229020D8
   [1745182.170982] cdc_acm 1-4.1.2:1.0: ttyACM0: USB ACM device
   ```
   After reset in bootloader with command
   ```python
   stty -F /dev/ttyACM0 raw ispeed 1200 ospeed 1200 cs8 -cstopb ignpar eol 255 eof 255
   ```
   command `dmesg` should give an output like the following with vendor VID/PID:
   ```python
   [1746220.443792] usb 1-4.1.2: new full-speed USB device number 70 using xhci_hcd
   [1746220.544705] usb 1-4.1.2: New USB device found, idVendor=2341, idProduct=024e, bcdDevice= 2.00
   [1746220.544708] usb 1-4.1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
   [1746220.553471] cdc_acm 1-4.1.2:1.0: ttyACM0: USB ACM device
   ```
   
2. Test the same as in 1., but this time use the highlevel STDIO to check that there is no regression and it still works with `stdio_cdc_acm`, for example:
   ```python
   BOARD=arduino-mkr1000 make -C tests/usb_board_reset flash
   ```
   
3. Use a board that supports `riotboot_dfu` but doesn't use the highlevel STDIO and flash the `riotboot_dfu` bootloader, for example:
   ```python
   BOARD=stm32f429i-disc1 make -C bootloaders/riotboot_dfu flash term
   ```
   Once the bootloader is flashed, command `dfu-util --list` should give something like the following:
   ```python
   Found DFU: [1209:7d02] ver=0100, devnum=14, cfg=1, intf=0, path="1-2", alt=1, name="RIOT-OS Slot 1", serial="6591620BCB270283"
   Found DFU: [1209:7d02] ver=0100, devnum=14, cfg=1, intf=0, path="1-2", alt=0, name="RIOT-OS Slot 0", serial="6591620BCB270283"
   ```
   If the output gives only
   ```python
   Found Runtime: [1209:7d00] ver=0100, devnum=123, cfg=1, intf=0, path="1-2", alt=0, name="RIOT-OS bootloader", serial="6591620BCB270283"
   ```
   an application is already running in DFU Runtime mode. Use `dfu-util -e` to restart it in bootloader DFU mode.
   Then flash the test application, for example:
   ```python
   FEATURES_REQUIRED=riotboot USEMODULE='usbus_dfu riotboot_reset' \
   BOARD=stm32f429i-disc1 make -C tests/usbus_board_reset PROGRAMMER=dfu-util riotboot/flash-slot0
   ```
   Once the test application is flashed, command `dfu-util --list` should give:
   ```python
   Found Runtime: [1209:7d00] ver=0100, devnum=123, cfg=1, intf=0, path="1-2", alt=0, name="RIOT-OS bootloader", serial="6591620BCB270283"
   ```
   Now, use command
   ```python
   stty -F /dev/ttyACM1 raw ispeed 600 ospeed 600 cs8 -cstopb ignpar eol 255 eof 255
   ``` 
   to restart the board in application. Command `dfu-util --list` should give again the following:
   ```python
   Found Runtime: [1209:7d00] ver=0100, devnum=123, cfg=1, intf=0, path="1-2", alt=0, name="RIOT-OS bootloader", serial="6591620BCB270283"
   ```
   That is, the application is running in DFU Runtime mode. Then use command
   ```python
   stty -F /dev/ttyACM1 raw ispeed 1200 ospeed 1200 cs8 -cstopb ignpar eol 255 eof 255
   ```
   to restart the board in bootloader DFU mode. Command  `dfu-util --list` should now give the following:
   ```python
   Found DFU: [1209:7d02] ver=0100, devnum=50, cfg=1, intf=0, path="1-2", alt=1, name="RIOT-OS Slot 1", serial="7D156425A950A8EB"
   Found DFU: [1209:7d02] ver=0100, devnum=50, cfg=1, intf=0, path="1-2", alt=0, name="RIOT-OS Slot 0", serial="7D156425A950A8EB"
   ```
   That is, the bootloader is in DFU mode and another application can be flash.
   
4. After a hard reset of the board under 3., try the commands `reboot` and `bootloader`. 

5. To check the same for tinyUSB, use the existing tinyUSB application with a CDC ACM interface and add module `usb_board_reset`, for example:
   ```python
   USEMODULE=usb_board_reset BOARD=stm32f429i-disc1 make -C tests/pkg_tinyusb_cdc_msc flash term
   ```
   After flashing, it should be possible to restart the application with command:
   ```python
   stty -F /dev/ttyACM1 raw ispeed 600 ospeed 600 cs8 -cstopb ignpar eol 255 eof 255
   ```
   When using command
   ```python
   stty -F /dev/ttyACM1 raw ispeed 1200 ospeed 1200 cs8 -cstopb ignpar eol 255 eof 255
   ```
   the following error message should be shown in terminal
   ```python
   [cdc-acm] reset in bootloader is not supported
   ```
   
### Issues/PRs references


Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
2023-01-03 19:36:16 +00:00
Gunar Schorcht
0fbe9f6dfd boards/common/samdx1-arduino-bootloader: use any CDC ACM interface 2023-01-03 10:05:54 +01:00
Marian Buschsieweke
d2a3ff3d83
boards/{bluepill*,blackpill*}: rename and improve doc
- renamed:
    - `bluepill` --> `bluepill-stm32f103c8`
    - `bluepill-128kib` --> `bluepill-stm32f103cb`
    - `blackpill` --> `blackpill-stm32f103c8`
    - `blackpill-128kib` --> `blackpill-stm32f103cb`
- doc:
    - added link to corresponding hardware page on the STM32-base
      project
    - added picture
2023-01-02 16:23:10 +01:00
bors[bot]
f539035c86
Merge #18756
18756: drivers/usbdev_synopsys_dwc2: add EFM32 support r=chrysn a=gschorcht

### Contribution description

This PR provides the changes for the Synopsys USB OTG IP core DWC2 driver for EFM32 MCUs. It also provides the changes of the board definition for `stk3600` and `stk3700` for testing.

### Testing procedure

`tests/usbus_hid` should work on the EFM32 boards `stk3600` (EFM32LG family) and `stk3700` (EFM32GG family).

It is already tested for a `sltb009a` board (EFM32GG12 family).

### Issues/PRs references


Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
2022-12-19 12:55:57 +00:00
bors[bot]
a0f823c553
Merge #19023
19023: pkg/tinyusb: fix Kconfig problems r=maribu a=gschorcht

### Contribution description

This PR tries to fix the [problems with `tinyUSB` in nightlies](https://ci.riot-os.org/details/d11b383ba0cd45048ed6f8d98abbc0de).
- The `tinyusb_device` feature had to be moved from `boards/common/arduino-zero` definition to the `boards/arduino-zero` definition because the common `arduino-zero` features are also used by `wemos-zero` which uses the `highlevel_stdio` feature via the `stdio_cdc_acm` module.
- The `tinyusb_device` feature had to be removed from Kconfig of board `stm32f429i-disco` since it uses the `highlevel_stdio` feature via the `stdio_cdc_acm` module.

### Testing procedure

Green CI

### Issues/PRs references


Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
2022-12-13 10:27:45 +00:00
krzysztof-cabaj
d11a6409fe boards/rpi-pico: doc - fix link to datasheet 2022-12-12 06:02:55 -05:00
Gunar Schorcht
b805709791 boards/stm32f429i-disc1: disable tinyusb feature for stm32f429i-disco 2022-12-12 06:37:53 +01:00
bors[bot]
268e931f1c
Merge #19012
19012: boards/arduino-mega2560: add TTY_BOARD_FILTER r=gschorcht a=maribu

### Contribution description

This allows automatically selecting TTY actually belonging to an
Arduino Mega2560 if `MOST_RECENT_PORT=1` is set.

### Testing procedure

```
make BOARD=arduino-mega2560 MOST_RECENT_PORT=1 -C examples/default flash term
```

Should automatically select the TTY of the most recently connected Arduino Mega2560, even if a board of a different type is connect more recently.

### Issues/PRs references

- [x] depends on (and includes) https://github.com/RIOT-OS/RIOT/pull/19011

Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
2022-12-11 18:20:38 +00:00
Marian Buschsieweke
dadf22f07a
boards/arduino-mega2560: add TTY_BOARD_FILTER
This allows automatically selecting TTY actually belonging to an
Arduino Mega2560 if `MOST_RECENT_PORT=1` is set.

Note: Unless `ARDUINO_MEGA2560_COMPAT_WITH_CLONES` is set to `0`,
this will fall back to detecting any cheap USB UART bridge typically
found in Arduino Mega 2560 clones if no genuine Arduino Mega is found.
2022-12-11 18:58:19 +01:00
krzysztof-cabaj
185c44e42d boards/nucleo-l496zg: doc improvement 2022-12-10 11:41:45 -05:00
Gunar Schorcht
c7e6e3714d board/sltb009a: enable feature periph_usbdev 2022-12-07 16:34:34 +01:00
Gunar Schorcht
7651e68db9 boards/common/silabs: add common USB OTG FS config 2022-12-07 16:34:34 +01:00
Gunar Schorcht
f085a87c51 board/stk3600: enable feature periph_usbdev 2022-12-07 16:34:34 +01:00
Gunar Schorcht
a9afc97bb2 board/stk3700: enable feature periph_usbdev 2022-12-07 16:34:34 +01:00
Gunar Schorcht
0b1b7e8408 boards/arduino-zero: move tinusb_device feature
The `tinyusb_device` feature introduced with PR #18689 has to be moved from `common/arduino-zero` definition to the `arduino-zero` definition because the common `arduino-zero` features are also used by `wemos-zero` which uses `highlevel_stdio` feature via the `stdio_cdc_acm` module.
2022-12-07 13:56:24 +01:00
Gunar Schorcht
44893a37e4 boards/common/weact-f4x1cx: remove tinyUSB feature
weact-f4xcx boards have only a single USB-C connector that is used for `highlevel_stdio` via USBUS CDC ACM so that it conflicts with tinyUSB for the moment.
2022-12-04 16:23:02 +01:00
Gunar Schorcht
5c38fafee4 boards/stm32f723e-disco: fix periph_uart_hw_fc use
Enabling module `periph_uart_hw_fc` makes only sense if module `periph_uart` is used.
2022-12-04 16:06:14 +01:00
Gunar Schorcht
93215df868 sys/usb/usbus: enable USBUS stdio_cdc_acm only if tinyUSB is not used 2022-12-03 12:52:45 +01:00
Gunar Schorcht
9fa01d69d8 boards/common/blxxxpill: enable riotboot feature 2022-11-30 19:28:14 +01:00
Gunar Schorcht
941d6be666 boards: make DFU_USB_ID and DFU_USE_DFUSE overridable 2022-11-30 19:28:14 +01:00
Marian Buschsieweke
317b12af34
Merge pull request #18986 from maribu/boards/qn9080dk
boards/qn9080dk: add default OPENOCD_DEBUG_ADAPTER
2022-11-28 17:42:30 +01:00
Marian Buschsieweke
e94fdf129f
boards/qn9080dk: add default OPENOCD_DEBUG_ADAPTER
The board has integrated debugger:

    1fc9:0090 NXP Semiconductors LPC-LINK2 CMSIS-DAP V5.173

This commit changes the default debug adapter to this one.
2022-11-28 13:38:59 +01:00
krzysztof-cabaj
d7c56670d3 boards/nucleo-g071rb: improve ADC doc 2022-11-28 05:07:25 -05:00
krzysztof-cabaj
2d4ab71a3e boards/nucleo-g070rb: improve ADC doc 2022-11-28 05:07:25 -05:00
krzysztof-cabaj
66357132e4 boards/nucleo-l476rg: improve ADC doc 2022-11-26 17:30:47 -05:00
krzysztof-cabaj
fce4d350cd boards/nucleo-l496zg: move vbat divider info to main section 2022-11-26 17:30:47 -05:00
krzysztof-cabaj
633743240d boards/nucleo-l4r5zi: add doxygen info about Vbat divider 2022-11-26 17:30:47 -05:00
Juergen Fitschen
d9cde14669 treewide: fix typos found by recent codespell 2022-11-24 14:53:48 +01:00
Juergen Fitschen
a6ff838a4b
Merge pull request #18933 from jue89/feature/cpu_efm32_series_2_adc
cpu/efm32: add periph_adc support for Gecko Series 2
2022-11-24 11:32:56 +01:00
Marian Buschsieweke
778f566210
Merge pull request #18958 from benpicco/boards/pwm-style
boards/sam*-xpro: fix style of PWM config
2022-11-24 07:32:40 +01:00
benpicco
86d72c7b85
Merge pull request #18940 from krzysztof-cabaj/nucleo-l496zg-ADC
boards/nucleo-l496zg: add ADC support
2022-11-23 20:34:08 +01:00
Benjamin Valentin
07b3ccbc6a boards/samd21-xpro: fix style of PWM config 2022-11-23 14:06:30 +01:00
Benjamin Valentin
90b0607f18 boards/same54-xpro: fix style of PWM config 2022-11-23 13:53:46 +01:00
Benjamin Valentin
58e37a7c58 boards/saml21-xpro: fix style of PWM config 2022-11-23 13:53:32 +01:00
Benjamin Valentin
f878f11193 boards/samr21-xpro: fix style of PWM config 2022-11-23 13:53:14 +01:00
Marian Buschsieweke
232c70ba53
Merge pull request #18948 from maribu/boards/common/nrf52
boards/common/nrf52: fix timer config
2022-11-23 10:47:26 +01:00
Juergen Fitschen
ab86198112 boards/xg23-pk6068a: add ADC lines 2022-11-22 14:44:56 +01:00
Marian Buschsieweke
51b6379dee
boards/common/nrf52: fix timer config
The `channels` member should not be set to the number of hardware
channels *n*, but to *n* - 1 instead. The last channel is implicitly
used in `timer_read()`. Hence out of *n* hardware channels, only *n* - 1
are available to the application.

This fixes a bug introduced by 4d02e15247
which incorrectly set the channel number to *n* rather than to
*n* - 1.
2022-11-22 13:20:53 +01:00
Jue
2a81a2ab5c cpu/efm32: provide periph_uart_modecfg feature for every board 2022-11-21 23:20:19 +01:00
krzysztof-cabaj
c7cd72c0bc boards/nucleo-l496zg: add ADC support 2022-11-21 08:35:05 -05:00
64dcfd67ff
Merge pull request #18811 from maribu/boards/common/nrf52
boards/common/nrf52: improve default clock config
2022-11-21 09:33:47 +00:00
benpicco
f533b3f282
Merge pull request #18929 from krzysztof-cabaj/nucleo-l476rg-doc
boards/nucleo-l476zg: doc improvements
2022-11-18 12:20:07 +01:00
krzysztof-cabaj
42104b79fb boards/nucleo-l476zg: doc improvements 2022-11-17 16:08:20 -05:00
Marian Buschsieweke
35149bd1c2
Merge pull request #18797 from MrKevinWeiss/pr/fixstmclk
cpu/stm32: Fix stm clock configuration
2022-11-15 11:39:25 +01:00
Gregory Holder
dde641fded
boards/dwm1001: use lis2dh12_i2c instead of lis2dh12_spi 2022-11-09 09:36:09 +00:00
krzysztof-cabaj
cfd0183f60 boards/nucleo-f207zg: add ADC support 2022-11-04 18:02:28 -04:00
MrKevinWeiss
464f57b4a3
boards: Remove PLL overrides in kconfig
Since we know the HSE speed, manual overrides are not needed anymore
2022-11-03 13:38:09 +01:00
MrKevinWeiss
fe5892d042
boards/stm32f7508-dk: Add STM32_ETH in kconfig 2022-11-03 11:37:32 +01:00
MrKevinWeiss
17cce015d4
treewide/stm32: Make CLOCK_HS* configurable 2022-11-03 11:37:28 +01:00
Juergen Fitschen
84c89f9dd7
Merge pull request #18783 from jue89/fix/ztimer_lptimer_kconfig
sys/ztimer: model ztimer_periph_lptimer for Kconfig
2022-11-02 13:56:05 +01:00