-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pkg/tinyusb: add GD32VF103 support #19256
Conversation
This file contains the definitions for the DWC2 USB OTG FS IP Core from Synopsys as also defined in the CMSIS Device Peripheral Access Layer for each STM32 MCU and in the same way for ESP32x SoCs. GD32V MCUs use the same USB IP Core, but the vendor headers for these MCUs use a different register structure and different identifiers. To be able to use the same driver `usbdev_synopsys_dwc2`, the relevant USB IP core definitions have been extracted from `cmsis/f7/Include/stm32f767xx.h` which is under the copyright of STMicroelectronics, see below. This is the same file used by ESP32x SoCs but modified for GD32V MCUs.
6f1f681
to
3996265
Compare
3996265
to
8073475
Compare
6134e0f
to
7c31b80
Compare
Hm, when I try this on my
|
Hm, strange. It definitely works for me without any problems. |
Ok my issue is unrelated to this PR. This happens when I use |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please squash
global_regs->GCCFG |= USB_OTG_GCCFG_PWRON | | ||
USB_OTG_GCCFG_VBUSIG | | ||
USB_OTG_GCCFG_VBUSBCEN; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
global_regs->GCCFG |= USB_OTG_GCCFG_PWRON | | |
USB_OTG_GCCFG_VBUSIG | | |
USB_OTG_GCCFG_VBUSBCEN; | |
global_regs->GCCFG |= USB_OTG_GCCFG_PWRON | |
| USB_OTG_GCCFG_VBUSIG | |
| USB_OTG_GCCFG_VBUSBCEN; |
I just like it pretty 😇
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Me too, but isn't that a matter of taste?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It certainly is, this was just a suggestion.
still needs squashing 😉 |
b64b410
to
f0041c9
Compare
bors merge |
19027: sys/fmt: optimize scn_u32_dec scn_u32_hex r=benpicco a=kfessel ### Contribution description Improves the compilation result for `scn_u32_dec` `scn_u32_hex` especially on `cortex-m` reducing either stack usage and or code size. This makes use of unsigned int overflow (slightly less better without doing that `hexn`). See godbolt (original versions got an `o` attached, modified versions got `k`s) all functions are marked `_S_` defined to `static` by assigning the global at end the compiled function can be changed (`deco deck hexo hexk hexkk hexn`) this PR is `hexkk` and `deck` ### Testing procedure run unit-test/test-fmt ``` <RIOT>/tests/unittests$ make tests-fmt <RIOT>/tests/unittests$ make term ``` ### Issues/PRs references [godbolt](https://godbolt.org/z/MzT1zh4q1) 19256: pkg/tinyusb: add GD32VF103 support r=benpicco a=gschorcht ### Contribution description This PR provides the tinyUSB support for GD32VF103 and enables the `tinyusb_device` feature as well as `stdio_tinyusb_cdc_acm` for GD32VF103 boards. ### Testing procedure ``` BOARD=sipeeed-longan-nano make -C tests/shell flash term ``` should work ### Issues/PRs references 19269: cpu/gd32v/periph_i2c: interrupt based driver r=benpicco a=gschorcht ### Contribution description This PR provides an interrupt-driven version of the I2C low-level driver. The existing I2C low-level driver for GDVF103 uses a busy-waiting approach where the status register is continuously polled while waiting for a certain status when sending or receiving. The MCU is thus occupied the whole time during a send or receive operation. The driver provided with this PR uses an interrupt-driven approach. This is, while waiting for a certain status when sending or receiving, the calling thread is suspended and woken up by interrupts. Since the I2C controller allows to receive up to two bytes before the application has to react, receiving a single byte, two bytes or more than two bytes needs a different handling for correct receiption. This requires a tricky implementation which distinguish a number of different case. There the driver requires 860 byte more ROM and 8 byte more RAM. ### Testing procedure The driver should work with any I2C sensor/actuator. It was tested with - `tests/driver_bmp180` <details> ``` main(): This is RIOT! (Version: 2023.04-devel-355-g940c7-cpu/gd32v/periph_i2c_interrupt_driven) BMP180 test application +------------Initializing------------+ Initialization successful +------------Calibration------------+ AC1: 8448 AC2: -1208 AC3: -14907 AC4: 33310 AC5: 24774 AC6: 19213 B1: 6515 B2: 49 MB: -32768 MC: -11786 MD: 2958 +--------Starting Measurements--------+ Temperature [°C]: 22.0 Pressure [hPa]: 1006.49 Pressure at see level [hPa]: 1025.55 Altitude [m]: 157 +-------------------------------------+ Temperature [°C]: 22.0 Pressure [hPa]: 1006.56 Pressure at see level [hPa]: 1025.58 Altitude [m]: 157 +-------------------------------------+ ``` </details> - `tests/driver_ccs811` <details> ``` main(): This is RIOT! (Version: 2023.04-devel-355-g940c7-cpu/gd32v/periph_i2c_interrupt_driven) CCS811 test application +------------Initializing------------+ +--------Starting Measurements--------+ TVOC [ppb]: 0 eCO2 [ppm]: 0 +-------------------------------------+ TVOC [ppb]: 0 eCO2 [ppm]: 0 +-------------------------------------+ TVOC [ppb]: 0 eCO2 [ppm]: 0 +-------------------------------------+ TVOC [ppb]: 0 eCO2 [ppm]: 400 +-------------------------------------+ TVOC [ppb]: 0 eCO2 [ppm]: 400 +-------------------------------------+ TVOC [ppb]: 0 eCO2 [ppm]: 400 +-------------------------------------+ TVOC [ppb]: 7 eCO2 [ppm]: 446 +-------------------------------------+ TVOC [ppb]: 7 eCO2 [ppm]: 446 +-------------------------------------+ TVOC [ppb]: 7 eCO2 [ppm]: 446 +-------------------------------------+ TVOC [ppb]: 7 eCO2 [ppm]: 446 +-------------------------------------+ ``` </details> - `tests/driver_sht3x` <details> ``` main(): This is RIOT! (Version: 2023.04-devel-355-g940c7-cpu/gd32v/periph_i2c_interrupt_driven) SHT3X test application +------------Initializing------------+ Initialization successful +--------Starting Measurements--------+ Temperature [°C]: 21.46 Relative Humidity [%]: 54.50 +-------------------------------------+ Temperature [°C]: 21.47 Relative Humidity [%]: 54.53 +-------------------------------------+ Temperature [°C]: 21.46 Relative Humidity [%]: 54.48 +-------------------------------------+ Temperature [°C]: 21.46 Relative Humidity [%]: 54.47 +-------------------------------------+ ``` </details> - `tests/driver_l3gxxxx` <details> ``` main(): This is RIOT! (Version: 2023.04-devel-375-g75547-cpu/gd32v/periph_i2c_interrupt_driven) L3GXXXX gyroscope driver test application Initializing L3GXXXX sensor [OK] gyro [dps] x: +0, y: -1, z: -2 gyro [dps] x: +0, y: +0, z: +0 gyro [dps] x: +0, y: +0, z: +0 gyro [dps] x: +0, y: +0, z: +0 gyro [dps] x: +0, y: +0, z: +0 gyro [dps] x: +0, y: +0, z: +0 gyro [dps] x: -1, y: +0, z: +4 gyro [dps] x: +0, y: +0, z: -21 gyro [dps] x: +0, y: +0, z: +6 gyro [dps] x: -43, y: +0, z: -13 gyro [dps] x: -21, y: -2, z: +0 gyro [dps] x: +0, y: +1, z: +3 gyro [dps] x: +25, y: +0, z: +0 ``` </details> - `tests/driver_hd44780` with `pcf8574a` I2C interface ### Issues/PRs references 19286: cpu/esp_common: use generic WIFI_SSID/WIFI_PASS defines r=benpicco a=benpicco Co-authored-by: Karl Fessel <karl.fessel@ovgu.de> Co-authored-by: Gunar Schorcht <gunar@schorcht.net> Co-authored-by: Benjamin Valentin <benpicco@beuth-hochschule.de>
Build failed (retrying...): |
19027: sys/fmt: optimize scn_u32_dec scn_u32_hex r=benpicco a=kfessel ### Contribution description Improves the compilation result for `scn_u32_dec` `scn_u32_hex` especially on `cortex-m` reducing either stack usage and or code size. This makes use of unsigned int overflow (slightly less better without doing that `hexn`). See godbolt (original versions got an `o` attached, modified versions got `k`s) all functions are marked `_S_` defined to `static` by assigning the global at end the compiled function can be changed (`deco deck hexo hexk hexkk hexn`) this PR is `hexkk` and `deck` ### Testing procedure run unit-test/test-fmt ``` <RIOT>/tests/unittests$ make tests-fmt <RIOT>/tests/unittests$ make term ``` ### Issues/PRs references [godbolt](https://godbolt.org/z/MzT1zh4q1) 19256: pkg/tinyusb: add GD32VF103 support r=benpicco a=gschorcht ### Contribution description This PR provides the tinyUSB support for GD32VF103 and enables the `tinyusb_device` feature as well as `stdio_tinyusb_cdc_acm` for GD32VF103 boards. ### Testing procedure ``` BOARD=sipeeed-longan-nano make -C tests/shell flash term ``` should work ### Issues/PRs references Co-authored-by: Karl Fessel <karl.fessel@ovgu.de> Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
Kconfig strikes again bors cancel |
Canceled. |
0c8c76a
to
8845bee
Compare
bors try |
bors merge |
19256: pkg/tinyusb: add GD32VF103 support r=benpicco a=gschorcht ### Contribution description This PR provides the tinyUSB support for GD32VF103 and enables the `tinyusb_device` feature as well as `stdio_tinyusb_cdc_acm` for GD32VF103 boards. ### Testing procedure ``` BOARD=sipeeed-longan-nano make -C tests/shell flash term ``` should work ### Issues/PRs references Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
Hm, I don't think that it will work. I had a problem with
|
Ah ok, I just have to blacklist them. |
Ah just blacklist the board - those tests rely on xtimer being used (not the ztimer compat API) and ztimer is used by USB. We should just drop those tests along with the legacy xtimer code already. |
Canceled. |
bors merge |
Build succeeded: |
tryTimed out. |
1 similar comment
tryTimed out. |
Thanks. |
Contribution description
This PR provides the tinyUSB support for GD32VF103 and enables the
tinyusb_device
feature as well asstdio_tinyusb_cdc_acm
for GD32VF103 boards.Testing procedure
should work
Issues/PRs references