-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Showing
34 changed files
with
2,455 additions
and
302 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
/* | ||
* Copyright (C) 2023 Gunar Schorcht <gunar@schorcht.net> | ||
* | ||
* This file is subject to the terms and conditions of the GNU Lesser | ||
* General Public License v2.1. See the file LICENSE in the top level | ||
* directory for more details. | ||
*/ | ||
|
||
/** | ||
* @ingroup boards_common_gd32v | ||
* @{ | ||
* | ||
* @file | ||
* @brief Default USB OTG configuration for GD32 RISC-V board | ||
* | ||
* @author Gunar Schorcht <gunar@schorcht.net> | ||
*/ | ||
|
||
#ifndef CFG_USBDEV_DEFAULT_H | ||
#define CFG_USBDEV_DEFAULT_H | ||
|
||
#include "vendor/usbdev_gd32v.h" | ||
#include "usbdev_synopsys_dwc2.h" | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/** | ||
* @name USB OTG configuration | ||
* @{ | ||
*/ | ||
/** | ||
* @brief Enable the full speed USB OTG peripheral | ||
*/ | ||
#define DWC2_USB_OTG_FS_ENABLED | ||
|
||
/** | ||
* @brief Common USB OTG FS configuration | ||
*/ | ||
static const dwc2_usb_otg_fshs_config_t dwc2_usb_otg_fshs_config[] = { | ||
{ | ||
.periph = USB_OTG_FS_PERIPH_BASE, | ||
.type = DWC2_USB_OTG_FS, | ||
.phy = DWC2_USB_OTG_PHY_BUILTIN, | ||
.rcu_mask = RCU_AHBEN_USBFSEN_Msk, | ||
.bus = AHB, | ||
.irqn = USBFS_IRQn, | ||
} | ||
}; | ||
|
||
/** | ||
* @brief Number of available USB OTG peripherals | ||
*/ | ||
#define USBDEV_NUMOF ARRAY_SIZE(dwc2_usb_otg_fshs_config) | ||
/** @} */ | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* CFG_USBDEV_DEFAULT_H */ | ||
/** @} */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
PORT_LINUX ?= /dev/ttyACM0 | ||
include $(RIOTBOARD)/common/gd32v/Makefile.include |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
PORT_LINUX ?= /dev/ttyACM0 | ||
PROGRAMMER ?= dfu-util | ||
include $(RIOTBOARD)/common/gd32v/Makefile.include |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.