From 0f9e3eed01aef6b4b39fc4b8b07fbc1940698ee6 Mon Sep 17 00:00:00 2001 From: Pierre Constantineau Date: Tue, 26 Oct 2021 21:48:11 -0600 Subject: [PATCH 01/36] initial commit for Seeed Review --- .../boards/seeeduino_xiao_rp2040/board.c | 40 ++++++++++++++++ .../seeeduino_xiao_rp2040/mpconfigboard.h | 15 ++++++ .../seeeduino_xiao_rp2040/mpconfigboard.mk | 9 ++++ .../pico-sdk-configboard.h | 4 ++ .../boards/seeeduino_xiao_rp2040/pins.c | 46 +++++++++++++++++++ 5 files changed, 114 insertions(+) create mode 100644 ports/raspberrypi/boards/seeeduino_xiao_rp2040/board.c create mode 100644 ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h create mode 100644 ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk create mode 100644 ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h create mode 100644 ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/board.c b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/board.c new file mode 100644 index 0000000000..de6e424ed9 --- /dev/null +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/board.c @@ -0,0 +1,40 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" + +void board_init(void) { +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { +} + +void board_deinit(void) { +} diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h new file mode 100644 index 0000000000..a0ea3c51a0 --- /dev/null +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.h @@ -0,0 +1,15 @@ +#define MICROPY_HW_BOARD_NAME "Seeeduino XIAO RP2040" +#define MICROPY_HW_MCU_NAME "rp2040" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO12) +#define CIRCUITPY_STATUS_LED_POWER (&pin_GPIO11) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO7) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO6) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO2) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO3) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO4) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO1) +#define DEFAULT_UART_BUS_TX (&pin_GPIO0) diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk new file mode 100644 index 0000000000..6376bd94f1 --- /dev/null +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk @@ -0,0 +1,9 @@ +USB_VID = 0x2886 +USB_PID = 0x003f +USB_PRODUCT = "Seeeduino XIAO RP2040" +USB_MANUFACTURER = "Seeed" + +CHIP_VARIANT = RP2040 +CHIP_FAMILY = rp2 + +EXTERNAL_FLASH_DEVICES = "GD25Q16C" diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h new file mode 100644 index 0000000000..a41131dd22 --- /dev/null +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pico-sdk-configboard.h @@ -0,0 +1,4 @@ +// Put board-specific pico-sdk definitions here. This file must exist. + +// Allow extra time for xosc to start. +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c new file mode 100644 index 0000000000..dca7161ba2 --- /dev/null +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c @@ -0,0 +1,46 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO26) }, + + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO27) }, + + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO28) }, + + { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO29) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO29) }, + + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO6) }, + + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO7) }, + + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO0) }, + + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO2) }, + + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO4) }, + + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO3) }, + + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO11) }, + + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From c9f834f3a17c4ae89edf00a51738c895ac447325 Mon Sep 17 00:00:00 2001 From: Pierre Constantineau Date: Tue, 26 Oct 2021 21:55:38 -0600 Subject: [PATCH 02/36] added LEDs --- ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c index dca7161ba2..8c8ed1197c 100644 --- a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/pins.c @@ -36,6 +36,11 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO3) }, { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_TX_LED), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_RX_LED), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_YELLOW_LED), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO12) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO11) }, From ceeec6f1a0f096ebeef0d2e6e730fe6f4b18038e Mon Sep 17 00:00:00 2001 From: Pierre Constantineau Date: Wed, 27 Oct 2021 08:10:47 -0600 Subject: [PATCH 03/36] updated USB PID to match one received from MengDu from Seeed --- ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk index 6376bd94f1..f9a003a52d 100644 --- a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk @@ -1,5 +1,5 @@ USB_VID = 0x2886 -USB_PID = 0x003f +USB_PID = 0x0042 USB_PRODUCT = "Seeeduino XIAO RP2040" USB_MANUFACTURER = "Seeed" From a75473af968b06f9fa18eb5623acc4208f6f1b68 Mon Sep 17 00:00:00 2001 From: Pierre Constantineau Date: Tue, 2 Nov 2021 20:52:58 -0600 Subject: [PATCH 04/36] update to EXTERNAL_FLASH_DEVICES to Puya P25Q16H --- ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk index f9a003a52d..1540642cd5 100644 --- a/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk +++ b/ports/raspberrypi/boards/seeeduino_xiao_rp2040/mpconfigboard.mk @@ -6,4 +6,4 @@ USB_MANUFACTURER = "Seeed" CHIP_VARIANT = RP2040 CHIP_FAMILY = rp2 -EXTERNAL_FLASH_DEVICES = "GD25Q16C" +EXTERNAL_FLASH_DEVICES = "P25Q16H" From 2e12956c408ec3f6cc4ed6f19207a9ee5b1a1a4e Mon Sep 17 00:00:00 2001 From: Pierre Constantineau Date: Tue, 2 Nov 2021 23:07:00 -0600 Subject: [PATCH 05/36] updated nvm.toml module --- data/nvm.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/nvm.toml b/data/nvm.toml index e5b149599d..73cedb3547 160000 --- a/data/nvm.toml +++ b/data/nvm.toml @@ -1 +1 @@ -Subproject commit e5b149599d14a8841167fe552846ca36925b87a0 +Subproject commit 73cedb3547481c15405ab5a88e2b39392ff13e78 From c6051719f56b0cb798882dee16ec327cd09ad1f2 Mon Sep 17 00:00:00 2001 From: Pierre Constantineau Date: Thu, 4 Nov 2021 08:56:14 -0600 Subject: [PATCH 06/36] update nvm.toml module to latest --- data/nvm.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/nvm.toml b/data/nvm.toml index 73cedb3547..266ea20ed8 160000 --- a/data/nvm.toml +++ b/data/nvm.toml @@ -1 +1 @@ -Subproject commit 73cedb3547481c15405ab5a88e2b39392ff13e78 +Subproject commit 266ea20ed80104c315dcb124b482fa5f9f48cdec From 7ba5513f9a2f8010601e8b11877788aa2148d0c9 Mon Sep 17 00:00:00 2001 From: microDev <70126934+microDev1@users.noreply.github.com> Date: Wed, 24 Nov 2021 00:00:00 +0530 Subject: [PATCH 07/36] update espressif port - update esp-idf to v4.4 - add esp32s3 support - add analogio on esp32c3 - disable rgbmatrix on all espressif soc Co-authored-by: Scott Shawcroft Co-authored-by: Seon Rozenblum --- .gitmodules | 2 +- ports/espressif/Makefile | 49 +++++++----- ports/espressif/cam.c | 5 ++ .../espressif/common-hal/alarm/pin/PinAlarm.c | 2 +- .../espressif/common-hal/analogio/AnalogIn.c | 6 ++ .../espressif/common-hal/analogio/AnalogOut.c | 10 +++ .../common-hal/frequencyio/FrequencyIn.c | 10 ++- .../common-hal/microcontroller/Processor.c | 4 + .../common-hal/microcontroller/__init__.c | 7 +- ports/espressif/esp-idf | 2 +- ports/espressif/mpconfigport.mk | 9 ++- ports/espressif/mphalport.c | 13 +-- ports/espressif/peripherals/esp32s3/pins.c | 73 +++++++++++++++++ ports/espressif/peripherals/esp32s3/pins.h | 80 +++++++++++++++++++ ports/espressif/peripherals/pcnt.h | 1 + ports/espressif/peripherals/pins.h | 4 +- ports/espressif/supervisor/port.c | 16 ++-- ports/espressif/supervisor/usb.c | 7 +- 18 files changed, 243 insertions(+), 57 deletions(-) create mode 100644 ports/espressif/peripherals/esp32s3/pins.c create mode 100644 ports/espressif/peripherals/esp32s3/pins.h diff --git a/.gitmodules b/.gitmodules index e26d3dd76b..afc3add5fc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -149,7 +149,7 @@ [submodule "ports/espressif/esp-idf"] path = ports/espressif/esp-idf url = https://github.com/espressif/esp-idf.git - branch = release/v4.3 + branch = release/v4.4 [submodule "ports/espressif/certificates/nina-fw"] path = ports/espressif/certificates/nina-fw url = https://github.com/adafruit/nina-fw.git diff --git a/ports/espressif/Makefile b/ports/espressif/Makefile index 7a034c9d2a..b29c9f35cf 100644 --- a/ports/espressif/Makefile +++ b/ports/espressif/Makefile @@ -59,12 +59,12 @@ include $(TOP)/supervisor/supervisor.mk # Include make rules and variables common across CircuitPython builds. include $(TOP)/py/circuitpy_defns.mk -ifeq ($(IDF_TARGET),esp32s2) -IDF_TARGET_ARCH = xtensa -CROSS_COMPILE = xtensa-$(IDF_TARGET)-elf- -else ifeq ($(IDF_TARGET),esp32c3) +ifeq ($(IDF_TARGET),esp32c3) IDF_TARGET_ARCH = riscv CROSS_COMPILE = riscv32-esp-elf- +else +IDF_TARGET_ARCH = xtensa +CROSS_COMPILE = xtensa-$(IDF_TARGET)-elf- endif ####################################### @@ -92,6 +92,7 @@ INC += -I.\ -isystem esp-idf/components/esp_common/include \ -isystem esp-idf/components/esp_event/include \ -isystem esp-idf/components/esp_hw_support/include \ + -isystem esp-idf/components/esp_hw_support/include/soc \ -isystem esp-idf/components/esp_netif/include \ -isystem esp-idf/components/esp_pm/include \ -isystem esp-idf/components/esp_ringbuf/include \ @@ -101,6 +102,8 @@ INC += -I.\ -isystem esp-idf/components/esp_wifi/include \ -isystem esp-idf/components/freertos/include \ -isystem esp-idf/components/freertos/include/freertos \ + -isystem esp-idf/components/freertos/include/esp_additions \ + -isystem esp-idf/components/freertos/include/esp_additions/freertos \ -isystem esp-idf/components/freertos/port/$(IDF_TARGET_ARCH)/include \ -isystem esp-idf/components/hal/include \ -isystem esp-idf/components/hal/$(IDF_TARGET)/include \ @@ -158,12 +161,11 @@ endif LDFLAGS = $(CFLAGS) -Wl,-nostdlib -Wl,-Map=$@.map -Wl,-cref -Wl,--undefined=uxTopUsedPriority -LDFLAGS += -L$(BUILD)/esp-idf/esp-idf/$(IDF_TARGET) \ - -L$(BUILD)/esp-idf/esp-idf/$(IDF_TARGET)/ld \ - -Lesp-idf/components/$(IDF_TARGET)/ld \ +LDFLAGS += -L$(BUILD)/esp-idf/esp-idf/esp_system/ld \ -Lesp-idf/components/esp_rom/$(IDF_TARGET)/ld \ - -T$(IDF_TARGET)_out.ld \ - -T$(IDF_TARGET).project.ld \ + -Lesp-idf/components/soc/$(IDF_TARGET)/ld \ + -Tmemory.ld \ + -Tsections.ld \ -T$(IDF_TARGET).peripherals.ld \ -T$(IDF_TARGET).rom.ld \ -T$(IDF_TARGET).rom.api.ld \ @@ -174,10 +176,13 @@ ifeq ($(IDF_TARGET),esp32c3) LDFLAGS += -Tesp32c3.rom.newlib.ld \ -Tesp32c3.rom.version.ld \ -Tesp32c3.rom.eco3.ld -else +else ifeq ($(IDF_TARGET),esp32s2) LDFLAGS += -T$(IDF_TARGET).rom.newlib-data.ld \ -T$(IDF_TARGET).rom.newlib-funcs.ld \ -T$(IDF_TARGET).rom.spiflash.ld +else ifeq ($(IDF_TARGET),esp32s3) +LDFLAGS += -Tesp32s3.rom.newlib.ld \ + -Tesp32s3.rom.version.ld endif LDFLAGS += -Wl,-Bstatic \ @@ -224,10 +229,14 @@ SRC_C += \ peripherals/timer.c \ peripherals/$(IDF_TARGET)/pins.c -ifneq ($(IDF_TARGET),esp32c3) +ifeq ($(IDF_TARGET),esp32s2) SRC_C += \ cam.c \ - i2s_lcd_esp32s2_driver.c \ + i2s_lcd_esp32s2_driver.c +endif + +ifneq ($(IDF_TARGET),esp32c3) +SRC_C += \ peripherals/pcnt.c \ peripherals/touch.c endif @@ -315,20 +324,15 @@ menuconfig: $(BUILD)/esp-idf/config # qstr builds include headers so we need to make sure they are up to date $(HEADER_BUILD)/qstr.split: | $(BUILD)/esp-idf/config/sdkconfig.h -ESP_IDF_COMPONENTS_LINK = $(IDF_TARGET) $(IDF_TARGET_ARCH) app_update bootloader_support driver efuse esp_adc_cal esp_common esp_event esp_hw_support esp_netif esp_pm esp_ringbuf esp_rom esp_system esp_timer esp-tls esp_wifi freertos hal heap log lwip mbedtls newlib nvs_flash pthread soc spi_flash vfs wpa_supplicant +BINARY_WIFI_BLOBS = libcoexist.a libcore.a libespnow.a libmesh.a libnet80211.a libpp.a libsmartconfig.a libwapi.a +BINARY_BLOBS = esp-idf/components/esp_phy/lib/$(IDF_TARGET)/libphy.a $(addprefix esp-idf/components/esp_wifi/lib/$(IDF_TARGET)/, $(BINARY_WIFI_BLOBS)) +ESP_IDF_COMPONENTS_LINK = $(IDF_TARGET_ARCH) app_update bootloader_support driver efuse esp_adc_cal esp_common esp_event esp_hw_support esp_ipc esp_netif esp_pm esp_phy esp_ringbuf esp_rom esp_system esp_timer esp-tls esp_wifi freertos hal heap log lwip mbedtls newlib nvs_flash pthread soc spi_flash vfs wpa_supplicant ESP_IDF_COMPONENTS_EXPANDED = $(foreach component, $(ESP_IDF_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/$(component)/lib$(component).a) -ESP_IDF_WIFI_COMPONENTS_EXPANDED = $(foreach component, $(ESP_IDF_WIFI_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/$(component)/lib$(component).a) MBEDTLS_COMPONENTS_LINK = crypto tls x509 MBEDTLS_COMPONENTS_LINK_EXPANDED = $(foreach component, $(MBEDTLS_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/mbedtls/mbedtls/library/libmbed$(component).a) -BINARY_WIFI_BLOBS = libcoexist.a libcore.a libespnow.a libmesh.a libnet80211.a libpp.a libsmartconfig.a libphy.a -ifneq ($(IDF_TARGET),esp32c3) -BINARY_WIFI_BLOBS += librtc.a -endif -BINARY_BLOBS = $(addprefix esp-idf/components/esp_wifi/lib/$(IDF_TARGET)/, $(BINARY_WIFI_BLOBS)) - ifeq ($(IDF_TARGET_ARCH),xtensa) BINARY_BLOBS += esp-idf/components/xtensa/$(IDF_TARGET)/libxt_hal.a ESP_IDF_COMPONENTS_EXPANDED += esp-idf/components/xtensa/$(IDF_TARGET)/libxt_hal.a @@ -360,17 +364,18 @@ endif esp-idf-stamp: $(BUILD)/esp-idf/config/sdkconfig.h $(Q)ninja -C $(BUILD)/esp-idf \ bootloader/bootloader.bin \ + esp-idf/esp_system/__ldgen_output_sections.ld \ esp-idf/app_update/libapp_update.a \ esp-idf/bootloader_support/libbootloader_support.a \ esp-idf/driver/libdriver.a \ esp-idf/efuse/libefuse.a \ - esp-idf/$(IDF_TARGET)/lib$(IDF_TARGET).a \ - esp-idf/$(IDF_TARGET)/ld/$(IDF_TARGET).project.ld \ esp-idf/esp_adc_cal/libesp_adc_cal.a \ esp-idf/esp_common/libesp_common.a \ esp-idf/esp_event/libesp_event.a \ esp-idf/esp_hw_support/libesp_hw_support.a \ + esp-idf/esp_ipc/libesp_ipc.a \ esp-idf/esp_netif/libesp_netif.a \ + esp-idf/esp_phy/libesp_phy.a \ esp-idf/esp_pm/libesp_pm.a \ esp-idf/esp_ringbuf/libesp_ringbuf.a \ esp-idf/esp_rom/libesp_rom.a \ diff --git a/ports/espressif/cam.c b/ports/espressif/cam.c index 146df43a41..ea50785cd9 100644 --- a/ports/espressif/cam.c +++ b/ports/espressif/cam.c @@ -21,8 +21,13 @@ #include "esp_log.h" #include "soc/i2s_struct.h" #include "soc/apb_ctrl_reg.h" +#ifdef CONFIG_IDF_TARGET_ESP32S2 #include "esp32s2/rom/lldesc.h" #include "esp32s2/rom/cache.h" +#elif defined(CONFIG_IDF_TARGET_ESP32S3) +#include "esp32s3/rom/lldesc.h" +#include "esp32s3/rom/cache.h" +#endif #include "soc/dport_access.h" #include "soc/dport_reg.h" #include "driver/ledc.h" diff --git a/ports/espressif/common-hal/alarm/pin/PinAlarm.c b/ports/espressif/common-hal/alarm/pin/PinAlarm.c index 754902f678..6318cc2cca 100644 --- a/ports/espressif/common-hal/alarm/pin/PinAlarm.c +++ b/ports/espressif/common-hal/alarm/pin/PinAlarm.c @@ -32,11 +32,11 @@ #include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/microcontroller/__init__.h" +#include "esp_sleep.h" #include "hal/gpio_ll.h" #include "esp_debug_helpers.h" #include "components/driver/include/driver/rtc_io.h" -#include "components/esp_system/include/esp_sleep.h" #include "components/freertos/include/freertos/FreeRTOS.h" void common_hal_alarm_pin_pinalarm_construct(alarm_pin_pinalarm_obj_t *self, const mcu_pin_obj_t *pin, bool value, bool edge, bool pull) { diff --git a/ports/espressif/common-hal/analogio/AnalogIn.c b/ports/espressif/common-hal/analogio/AnalogIn.c index df39b30c63..ba85d42735 100644 --- a/ports/espressif/common-hal/analogio/AnalogIn.c +++ b/ports/espressif/common-hal/analogio/AnalogIn.c @@ -40,7 +40,13 @@ #define DEFAULT_VREF 1100 #define NO_OF_SAMPLES 2 #define ATTENUATION ADC_ATTEN_DB_11 +#ifdef CONFIG_IDF_TARGET_ESP32C3 +#define DATA_WIDTH ADC_WIDTH_BIT_12 +#elif defined(CONFIG_IDF_TARGET_ESP32S2) #define DATA_WIDTH ADC_WIDTH_BIT_13 +#elif defined(CONFIG_IDF_TARGET_ESP32S3) +#define DATA_WIDTH ADC_WIDTH_BIT_12 +#endif void common_hal_analogio_analogin_construct(analogio_analogin_obj_t *self, const mcu_pin_obj_t *pin) { diff --git a/ports/espressif/common-hal/analogio/AnalogOut.c b/ports/espressif/common-hal/analogio/AnalogOut.c index 589c477a78..2c79124759 100644 --- a/ports/espressif/common-hal/analogio/AnalogOut.c +++ b/ports/espressif/common-hal/analogio/AnalogOut.c @@ -41,6 +41,7 @@ void common_hal_analogio_analogout_construct(analogio_analogout_obj_t *self, const mcu_pin_obj_t *pin) { + #ifdef CONFIG_IDF_TARGET_ESP32S2 if (pin == &pin_GPIO17) { self->channel = DAC_CHANNEL_1; } else if (pin == &pin_GPIO18) { @@ -49,6 +50,9 @@ void common_hal_analogio_analogout_construct(analogio_analogout_obj_t *self, mp_raise_ValueError(translate("Invalid DAC pin supplied")); } dac_output_enable(self->channel); + #else + mp_raise_NotImplementedError(NULL); + #endif } bool common_hal_analogio_analogout_deinited(analogio_analogout_obj_t *self) { @@ -56,18 +60,24 @@ bool common_hal_analogio_analogout_deinited(analogio_analogout_obj_t *self) { } void common_hal_analogio_analogout_deinit(analogio_analogout_obj_t *self) { + #ifdef CONFIG_IDF_TARGET_ESP32S2 dac_output_disable(self->channel); self->channel = DAC_CHANNEL_MAX; + #endif } void common_hal_analogio_analogout_set_value(analogio_analogout_obj_t *self, uint16_t value) { + #ifdef CONFIG_IDF_TARGET_ESP32S2 uint8_t dac_value = (value * 255) / 65535; dac_output_enable(self->channel); dac_output_voltage(self->channel, dac_value); + #endif } void analogout_reset(void) { + #ifdef CONFIG_IDF_TARGET_ESP32S2 dac_output_disable(DAC_CHANNEL_1); dac_output_disable(DAC_CHANNEL_2); + #endif } diff --git a/ports/espressif/common-hal/frequencyio/FrequencyIn.c b/ports/espressif/common-hal/frequencyio/FrequencyIn.c index cd13cddc66..e4d65c95bd 100644 --- a/ports/espressif/common-hal/frequencyio/FrequencyIn.c +++ b/ports/espressif/common-hal/frequencyio/FrequencyIn.c @@ -56,11 +56,15 @@ static void IRAM_ATTR timer_interrupt_handler(void *self_in) { // reset interrupt timg_dev_t *device = self->timer.group ? &(TIMERG1) : &(TIMERG0); if (self->timer.idx) { - device->int_clr.t1 = 1; + device->int_clr_timers.t1_int_clr = 1; } else { - device->int_clr.t0 = 1; + device->int_clr_timers.t0_int_clr = 1; } - device->hw_timer[self->timer.idx].config.alarm_en = 1; + #ifdef CONFIG_IDF_TARGET_ESP32S2 + device->hw_timer[self->timer.idx].config.tx_alarm_en = 1; + #elif defined(CONFIG_IDF_TARGET_ESP32S3) + device->hw_timer[self->timer.idx].config.tn_alarm_en = 1; + #endif } static void init_pcnt(frequencyio_frequencyin_obj_t *self) { diff --git a/ports/espressif/common-hal/microcontroller/Processor.c b/ports/espressif/common-hal/microcontroller/Processor.c index c50c6fbf7a..500d1f6d3e 100644 --- a/ports/espressif/common-hal/microcontroller/Processor.c +++ b/ports/espressif/common-hal/microcontroller/Processor.c @@ -43,11 +43,15 @@ float common_hal_mcu_processor_get_temperature(void) { float tsens_out; + #ifdef CONFIG_IDF_TARGET_ESP32S3 + mp_raise_NotImplementedError(NULL); + #else temp_sensor_config_t temp_sensor = TSENS_CONFIG_DEFAULT(); // DEFAULT: range:-10℃ ~ 80℃, error < 1℃. temp_sensor_set_config(temp_sensor); temp_sensor_start(); temp_sensor_read_celsius(&tsens_out); temp_sensor_stop(); + #endif return tsens_out; } diff --git a/ports/espressif/common-hal/microcontroller/__init__.c b/ports/espressif/common-hal/microcontroller/__init__.c index 909ce19b00..3cf41ba7f0 100644 --- a/ports/espressif/common-hal/microcontroller/__init__.c +++ b/ports/espressif/common-hal/microcontroller/__init__.c @@ -47,13 +47,16 @@ #ifdef CONFIG_IDF_TARGET_ESP32C3 #include "esp32c3/rom/rtc.h" -#elif CONFIG_IDF_TARGET_ESP32S2 +#elif defined(CONFIG_IDF_TARGET_ESP32S2) #include "esp32s2/rom/rtc.h" #include "esp32s2/rom/usb/usb_persist.h" #include "esp32s2/rom/usb/chip_usb_dw_wrapper.h" +#elif defined(CONFIG_IDF_TARGET_ESP32S3) +#include "esp32s3/rom/rtc.h" +#include "esp32s3/rom/usb/usb_persist.h" +#include "esp32s3/rom/usb/chip_usb_dw_wrapper.h" #endif - void common_hal_mcu_delay_us(uint32_t delay) { mp_hal_delay_us(delay); } diff --git a/ports/espressif/esp-idf b/ports/espressif/esp-idf index e493a4c30e..ddc44956bf 160000 --- a/ports/espressif/esp-idf +++ b/ports/espressif/esp-idf @@ -1 +1 @@ -Subproject commit e493a4c30e1b2f7c54a376327388b9e12262cbbf +Subproject commit ddc44956bf718540d5451e17e1becf6c7dffe5b8 diff --git a/ports/espressif/mpconfigport.mk b/ports/espressif/mpconfigport.mk index a7b69e0933..21459e01f5 100644 --- a/ports/espressif/mpconfigport.mk +++ b/ports/espressif/mpconfigport.mk @@ -26,7 +26,7 @@ CIRCUITPY_FRAMEBUFFERIO ?= 1 CIRCUITPY_FREQUENCYIO ?= 1 CIRCUITPY_IMAGECAPTURE ?= 1 CIRCUITPY_I2CPERIPHERAL ?= 1 -CIRCUITPY_RGBMATRIX ?= 1 +CIRCUITPY_RGBMATRIX ?= 0 CIRCUITPY_ROTARYIO ?= 1 CIRCUITPY_NVM ?= 1 CIRCUITPY_PS2IO ?= 1 @@ -43,17 +43,18 @@ CIRCUITPY_USB = 0 CIRCUITPY_ALARM = 0 CIRCUITPY_COUNTIO = 0 CIRCUITPY_ROTARYIO = 0 -CIRCUITPY_ANALOGIO = 0 -CIRCUITPY_RGBMATRIX = 0 CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_IMAGECAPTURE = 0 CIRCUITPY_PARALLELDISPLAY = 0 CIRCUITPY_TOUCHIO ?= 1 CIRCUITPY_TOUCHIO_USE_NATIVE = 0 +else ifeq ($(IDF_TARGET),esp32s3) +CIRCUITPY_IMAGECAPTURE = 0 +CIRCUITPY_PARALLELDISPLAY = 0 endif -# From the ESP32-S2 datasheet: +# From ESP32-S2/S3 Technical Reference Manual: # # Endpoint number 0 always present (bi-directional, consisting of EP0 IN and EP0 OUT) # Six additional endpoints (endpoint numbers 1 to 6), configurable as IN or OUT diff --git a/ports/espressif/mphalport.c b/ports/espressif/mphalport.c index f22856f0a4..39b080fba3 100644 --- a/ports/espressif/mphalport.c +++ b/ports/espressif/mphalport.c @@ -25,22 +25,17 @@ * THE SOFTWARE. */ -#include - #include "py/mphal.h" -#include "py/mpstate.h" -#include "py/gc.h" - -#include "esp_debug_helpers.h" +#include "supervisor/cpu.h" #ifdef CONFIG_IDF_TARGET_ESP32C3 #include "components/esp_rom/include/esp32c3/rom/ets_sys.h" -#elif CONFIG_IDF_TARGET_ESP32S2 +#elif defined(CONFIG_IDF_TARGET_ESP32S2) #include "components/esp_rom/include/esp32s2/rom/ets_sys.h" +#elif defined(CONFIG_IDF_TARGET_ESP32S3) +#include "components/esp_rom/include/esp32s3/rom/ets_sys.h" #endif -#include "supervisor/cpu.h" - void mp_hal_delay_us(mp_uint_t delay) { ets_delay_us(delay); } diff --git a/ports/espressif/peripherals/esp32s3/pins.c b/ports/espressif/peripherals/esp32s3/pins.c new file mode 100644 index 0000000000..891cc398ae --- /dev/null +++ b/ports/espressif/peripherals/esp32s3/pins.c @@ -0,0 +1,73 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 microDev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "peripherals/pins.h" + +const mcu_pin_obj_t pin_GPIO0 = PIN(0, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO1 = PIN(1, ADC_UNIT_1, ADC_CHANNEL_0, TOUCH_PAD_NUM1); +const mcu_pin_obj_t pin_GPIO2 = PIN(2, ADC_UNIT_1, ADC_CHANNEL_1, TOUCH_PAD_NUM2); +const mcu_pin_obj_t pin_GPIO3 = PIN(3, ADC_UNIT_1, ADC_CHANNEL_2, TOUCH_PAD_NUM3); +const mcu_pin_obj_t pin_GPIO4 = PIN(4, ADC_UNIT_1, ADC_CHANNEL_3, TOUCH_PAD_NUM4); +const mcu_pin_obj_t pin_GPIO5 = PIN(5, ADC_UNIT_1, ADC_CHANNEL_4, TOUCH_PAD_NUM5); +const mcu_pin_obj_t pin_GPIO6 = PIN(6, ADC_UNIT_1, ADC_CHANNEL_5, TOUCH_PAD_NUM6); +const mcu_pin_obj_t pin_GPIO7 = PIN(7, ADC_UNIT_1, ADC_CHANNEL_6, TOUCH_PAD_NUM7); +const mcu_pin_obj_t pin_GPIO8 = PIN(8, ADC_UNIT_1, ADC_CHANNEL_7, TOUCH_PAD_NUM8); +const mcu_pin_obj_t pin_GPIO9 = PIN(9, ADC_UNIT_1, ADC_CHANNEL_8, TOUCH_PAD_NUM9); +const mcu_pin_obj_t pin_GPIO10 = PIN(10, ADC_UNIT_1, ADC_CHANNEL_9, TOUCH_PAD_NUM10); +const mcu_pin_obj_t pin_GPIO11 = PIN(11, ADC_UNIT_2, ADC_CHANNEL_0, TOUCH_PAD_NUM11); +const mcu_pin_obj_t pin_GPIO12 = PIN(12, ADC_UNIT_2, ADC_CHANNEL_1, TOUCH_PAD_NUM12); +const mcu_pin_obj_t pin_GPIO13 = PIN(13, ADC_UNIT_2, ADC_CHANNEL_2, TOUCH_PAD_NUM13); +const mcu_pin_obj_t pin_GPIO14 = PIN(14, ADC_UNIT_2, ADC_CHANNEL_3, TOUCH_PAD_NUM14); +const mcu_pin_obj_t pin_GPIO15 = PIN(15, ADC_UNIT_2, ADC_CHANNEL_4, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO16 = PIN(16, ADC_UNIT_2, ADC_CHANNEL_5, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO17 = PIN(17, ADC_UNIT_2, ADC_CHANNEL_6, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO18 = PIN(18, ADC_UNIT_2, ADC_CHANNEL_7, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO19 = PIN(19, ADC_UNIT_2, ADC_CHANNEL_8, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO20 = PIN(20, ADC_UNIT_2, ADC_CHANNEL_9, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO21 = PIN(21, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO26 = PIN(26, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO27 = PIN(27, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO28 = PIN(28, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO29 = PIN(29, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO30 = PIN(30, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO31 = PIN(31, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO32 = PIN(32, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO33 = PIN(33, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO34 = PIN(34, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO35 = PIN(35, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO36 = PIN(36, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO37 = PIN(37, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO38 = PIN(38, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO39 = PIN(39, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO40 = PIN(40, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO41 = PIN(41, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO42 = PIN(42, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO43 = PIN(43, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO44 = PIN(44, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO45 = PIN(45, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO46 = PIN(46, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO47 = PIN(47, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); +const mcu_pin_obj_t pin_GPIO48 = PIN(48, NO_ADC, NO_ADC_CHANNEL, NO_TOUCH_CHANNEL); diff --git a/ports/espressif/peripherals/esp32s3/pins.h b/ports/espressif/peripherals/esp32s3/pins.h new file mode 100644 index 0000000000..c2a932f572 --- /dev/null +++ b/ports/espressif/peripherals/esp32s3/pins.h @@ -0,0 +1,80 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 microDev + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +// DO NOT include this file directly. +// Use shared-bindings/microcontroller/Pin.h instead. +// This ensures that all necessary includes are already included. + +#ifndef MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S3_PINS_H +#define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S3_PINS_H + +extern const mcu_pin_obj_t pin_GPIO0; +extern const mcu_pin_obj_t pin_GPIO1; +extern const mcu_pin_obj_t pin_GPIO2; +extern const mcu_pin_obj_t pin_GPIO3; +extern const mcu_pin_obj_t pin_GPIO4; +extern const mcu_pin_obj_t pin_GPIO5; +extern const mcu_pin_obj_t pin_GPIO6; +extern const mcu_pin_obj_t pin_GPIO7; +extern const mcu_pin_obj_t pin_GPIO8; +extern const mcu_pin_obj_t pin_GPIO9; +extern const mcu_pin_obj_t pin_GPIO10; +extern const mcu_pin_obj_t pin_GPIO11; +extern const mcu_pin_obj_t pin_GPIO12; +extern const mcu_pin_obj_t pin_GPIO13; +extern const mcu_pin_obj_t pin_GPIO14; +extern const mcu_pin_obj_t pin_GPIO15; +extern const mcu_pin_obj_t pin_GPIO16; +extern const mcu_pin_obj_t pin_GPIO17; +extern const mcu_pin_obj_t pin_GPIO18; +extern const mcu_pin_obj_t pin_GPIO19; +extern const mcu_pin_obj_t pin_GPIO20; +extern const mcu_pin_obj_t pin_GPIO21; +extern const mcu_pin_obj_t pin_GPIO26; +extern const mcu_pin_obj_t pin_GPIO27; +extern const mcu_pin_obj_t pin_GPIO28; +extern const mcu_pin_obj_t pin_GPIO29; +extern const mcu_pin_obj_t pin_GPIO30; +extern const mcu_pin_obj_t pin_GPIO31; +extern const mcu_pin_obj_t pin_GPIO32; +extern const mcu_pin_obj_t pin_GPIO33; +extern const mcu_pin_obj_t pin_GPIO34; +extern const mcu_pin_obj_t pin_GPIO35; +extern const mcu_pin_obj_t pin_GPIO36; +extern const mcu_pin_obj_t pin_GPIO37; +extern const mcu_pin_obj_t pin_GPIO38; +extern const mcu_pin_obj_t pin_GPIO39; +extern const mcu_pin_obj_t pin_GPIO40; +extern const mcu_pin_obj_t pin_GPIO41; +extern const mcu_pin_obj_t pin_GPIO42; +extern const mcu_pin_obj_t pin_GPIO43; +extern const mcu_pin_obj_t pin_GPIO44; +extern const mcu_pin_obj_t pin_GPIO45; +extern const mcu_pin_obj_t pin_GPIO46; +extern const mcu_pin_obj_t pin_GPIO47; +extern const mcu_pin_obj_t pin_GPIO48; + +#endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_ESP32S3_PINS_H diff --git a/ports/espressif/peripherals/pcnt.h b/ports/espressif/peripherals/pcnt.h index 86a90b4444..b2bae7b371 100644 --- a/ports/espressif/peripherals/pcnt.h +++ b/ports/espressif/peripherals/pcnt.h @@ -28,6 +28,7 @@ #define MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_PCNT_HANDLER_H #include "driver/pcnt.h" +#include "soc/pcnt_struct.h" extern int peripherals_pcnt_init(pcnt_config_t pcnt_config); extern void peripherals_pcnt_deinit(pcnt_unit_t *unit); diff --git a/ports/espressif/peripherals/pins.h b/ports/espressif/peripherals/pins.h index 3bd66d49ac..4958c46410 100644 --- a/ports/espressif/peripherals/pins.h +++ b/ports/espressif/peripherals/pins.h @@ -67,8 +67,10 @@ extern const mp_obj_type_t mcu_pin_type; // Choose based on chip #ifdef CONFIG_IDF_TARGET_ESP32C3 #include "esp32c3/pins.h" -#elif CONFIG_IDF_TARGET_ESP32S2 +#elif defined(CONFIG_IDF_TARGET_ESP32S2) #include "esp32s2/pins.h" +#elif defined(CONFIG_IDF_TARGET_ESP32S3) +#include "esp32s3/pins.h" #endif #endif // MICROPY_INCLUDED_ESPRESSIF_PERIPHERALS_PINS_H diff --git a/ports/espressif/supervisor/port.c b/ports/espressif/supervisor/port.c index 30106075e7..277777a332 100644 --- a/ports/espressif/supervisor/port.c +++ b/ports/espressif/supervisor/port.c @@ -58,6 +58,9 @@ #if CIRCUITPY_COUNTIO || CIRCUITPY_ROTARYIO || CIRCUITPY_FREQUENCYIO #include "peripherals/pcnt.h" +#endif + +#if CIRCUITPY_TOUCHIO_USE_NATIVE #include "peripherals/touch.h" #endif @@ -69,17 +72,10 @@ #include "cam.h" #endif -#include "esp_heap_caps.h" -#include "esp_debug_helpers.h" - #include "soc/cache_memory.h" #include "soc/rtc_cntl_reg.h" -#ifdef CONFIG_IDF_TARGET_ESP32C3 -#include "components/esp_rom/include/esp32c3/rom/ets_sys.h" -#elif CONFIG_IDF_TARGET_ESP32S2 -#include "components/esp_rom/include/esp32s2/rom/ets_sys.h" -#endif +#include "esp_debug_helpers.h" #define HEAP_SIZE (48 * 1024) @@ -136,7 +132,7 @@ safe_mode_t port_init(void) { #ifdef CONFIG_IDF_TARGET_ESP32C3 common_hal_never_reset_pin(&pin_GPIO20); common_hal_never_reset_pin(&pin_GPIO21); - #elif CONFIG_IDF_TARGET_ESP32S2 + #elif defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) common_hal_never_reset_pin(&pin_GPIO43); common_hal_never_reset_pin(&pin_GPIO44); #endif @@ -153,7 +149,7 @@ safe_mode_t port_init(void) { common_hal_never_reset_pin(&pin_GPIO5); common_hal_never_reset_pin(&pin_GPIO6); common_hal_never_reset_pin(&pin_GPIO7); - #elif CONFIG_IDF_TARGET_ESP32S2 + #elif defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3) common_hal_never_reset_pin(&pin_GPIO39); common_hal_never_reset_pin(&pin_GPIO40); common_hal_never_reset_pin(&pin_GPIO41); diff --git a/ports/espressif/supervisor/usb.c b/ports/espressif/supervisor/usb.c index 2137a7b0a4..7be3e84536 100644 --- a/ports/espressif/supervisor/usb.c +++ b/ports/espressif/supervisor/usb.c @@ -33,6 +33,7 @@ #include "shared/readline/readline.h" #include "hal/gpio_ll.h" +#include "hal/usb_hal.h" #include "soc/usb_periph.h" #include "components/driver/include/driver/gpio.h" @@ -40,15 +41,15 @@ #ifdef CONFIG_IDF_TARGET_ESP32C3 #include "components/esp_rom/include/esp32c3/rom/gpio.h" -#elif CONFIG_IDF_TARGET_ESP32S2 +#elif defined(CONFIG_IDF_TARGET_ESP32S2) #include "components/esp_rom/include/esp32s2/rom/gpio.h" +#elif defined(CONFIG_IDF_TARGET_ESP32S3) +#include "components/esp_rom/include/esp32s3/rom/gpio.h" #endif #include "freertos/FreeRTOS.h" #include "freertos/task.h" -#include "hal/usb_hal.h" - #include "tusb.h" #ifdef CFG_TUSB_DEBUG From e5c125d15342d1c581f72f5ae43fe067f2f17391 Mon Sep 17 00:00:00 2001 From: microDev <70126934+microDev1@users.noreply.github.com> Date: Wed, 24 Nov 2021 10:00:01 +0530 Subject: [PATCH 08/36] update espressif makefile formatting --- ports/espressif/Makefile | 190 +++++++++++++++++++-------------------- 1 file changed, 95 insertions(+), 95 deletions(-) diff --git a/ports/espressif/Makefile b/ports/espressif/Makefile index b29c9f35cf..fd8c2b251d 100644 --- a/ports/espressif/Makefile +++ b/ports/espressif/Makefile @@ -71,67 +71,69 @@ endif # CFLAGS ####################################### -INC += -I.\ - -I./boards \ - -I./boards/$(BOARD) \ - -I./peripherals \ - -I../.. \ - -I../../lib/mp-readline \ - -I../../lib/tinyusb/src \ - -I../../supervisor/shared/usb \ - -I$(BUILD) \ - -I$(BUILD)/genhdr \ - -I$(BUILD)/esp-idf/config \ - -isystem esp-idf \ - -isystem esp-idf/components/app_update/include \ - -isystem esp-idf/components/bootloader_support/include \ - -isystem esp-idf/components/driver/include \ - -isystem esp-idf/components/driver/$(IDF_TARGET)/include \ - -isystem esp-idf/components/$(IDF_TARGET)/include \ - -isystem esp-idf/components/esp_adc_cal/include \ - -isystem esp-idf/components/esp_common/include \ - -isystem esp-idf/components/esp_event/include \ - -isystem esp-idf/components/esp_hw_support/include \ - -isystem esp-idf/components/esp_hw_support/include/soc \ - -isystem esp-idf/components/esp_netif/include \ - -isystem esp-idf/components/esp_pm/include \ - -isystem esp-idf/components/esp_ringbuf/include \ - -isystem esp-idf/components/esp_rom/include \ - -isystem esp-idf/components/esp_system/include \ - -isystem esp-idf/components/esp_timer/include \ - -isystem esp-idf/components/esp_wifi/include \ - -isystem esp-idf/components/freertos/include \ - -isystem esp-idf/components/freertos/include/freertos \ - -isystem esp-idf/components/freertos/include/esp_additions \ - -isystem esp-idf/components/freertos/include/esp_additions/freertos \ - -isystem esp-idf/components/freertos/port/$(IDF_TARGET_ARCH)/include \ - -isystem esp-idf/components/hal/include \ - -isystem esp-idf/components/hal/$(IDF_TARGET)/include \ - -isystem esp-idf/components/hal/platform_port/include \ - -isystem esp-idf/components/heap/include \ - -isystem esp-idf/components/log/include \ - -isystem esp-idf/components/lwip/include \ - -isystem esp-idf/components/lwip/lwip/src/include \ - -isystem esp-idf/components/lwip/port/esp32/include \ - -isystem esp-idf/components/mbedtls/esp_crt_bundle/include \ - -isystem esp-idf/components/mbedtls/mbedtls/include \ - -isystem esp-idf/components/mbedtls/port/include \ - -isystem esp-idf/components/newlib/platform_include \ - -isystem esp-idf/components/nvs_flash/include \ - -isystem esp-idf/components/soc/include \ - -isystem esp-idf/components/soc/$(IDF_TARGET)/include \ - -isystem esp-idf/components/spi_flash/include \ - -isystem esp-idf/components/$(IDF_TARGET_ARCH)/include \ - -isystem esp-idf/components/$(IDF_TARGET_ARCH)/$(IDF_TARGET)/include +INC += \ + -I.\ + -I./boards \ + -I./boards/$(BOARD) \ + -I./peripherals \ + -I../.. \ + -I../../lib/mp-readline \ + -I../../lib/tinyusb/src \ + -I../../supervisor/shared/usb \ + -I$(BUILD) \ + -I$(BUILD)/genhdr \ + -I$(BUILD)/esp-idf/config \ + -isystem esp-idf \ + -isystem esp-idf/components/app_update/include \ + -isystem esp-idf/components/bootloader_support/include \ + -isystem esp-idf/components/driver/include \ + -isystem esp-idf/components/driver/$(IDF_TARGET)/include \ + -isystem esp-idf/components/$(IDF_TARGET)/include \ + -isystem esp-idf/components/esp_adc_cal/include \ + -isystem esp-idf/components/esp_common/include \ + -isystem esp-idf/components/esp_event/include \ + -isystem esp-idf/components/esp_hw_support/include \ + -isystem esp-idf/components/esp_hw_support/include/soc \ + -isystem esp-idf/components/esp_netif/include \ + -isystem esp-idf/components/esp_pm/include \ + -isystem esp-idf/components/esp_ringbuf/include \ + -isystem esp-idf/components/esp_rom/include \ + -isystem esp-idf/components/esp_system/include \ + -isystem esp-idf/components/esp_timer/include \ + -isystem esp-idf/components/esp_wifi/include \ + -isystem esp-idf/components/freertos/include \ + -isystem esp-idf/components/freertos/include/freertos \ + -isystem esp-idf/components/freertos/include/esp_additions \ + -isystem esp-idf/components/freertos/include/esp_additions/freertos \ + -isystem esp-idf/components/freertos/port/$(IDF_TARGET_ARCH)/include \ + -isystem esp-idf/components/hal/include \ + -isystem esp-idf/components/hal/$(IDF_TARGET)/include \ + -isystem esp-idf/components/hal/platform_port/include \ + -isystem esp-idf/components/heap/include \ + -isystem esp-idf/components/log/include \ + -isystem esp-idf/components/lwip/include \ + -isystem esp-idf/components/lwip/lwip/src/include \ + -isystem esp-idf/components/lwip/port/esp32/include \ + -isystem esp-idf/components/mbedtls/esp_crt_bundle/include \ + -isystem esp-idf/components/mbedtls/mbedtls/include \ + -isystem esp-idf/components/mbedtls/port/include \ + -isystem esp-idf/components/newlib/platform_include \ + -isystem esp-idf/components/nvs_flash/include \ + -isystem esp-idf/components/soc/include \ + -isystem esp-idf/components/soc/$(IDF_TARGET)/include \ + -isystem esp-idf/components/spi_flash/include \ + -isystem esp-idf/components/$(IDF_TARGET_ARCH)/include \ + -isystem esp-idf/components/$(IDF_TARGET_ARCH)/$(IDF_TARGET)/include # See https://github.com/espressif/esp-idf/issues/6906 ifeq ($(IDF_TARGET),esp32c3) CFLAGS += -include "esp32c3_fix.h" endif -CFLAGS += -DHAVE_CONFIG_H \ - -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" \ - -DUNITY_INCLUDE_CONFIG_H -DWITH_POSIX +CFLAGS += \ + -DHAVE_CONFIG_H \ + -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" \ + -DUNITY_INCLUDE_CONFIG_H -DWITH_POSIX # Make our canary value match FreeRTOS's # This define is in FreeRTOS as tskSTACK_FILL_BYTE 0xa5U which we expand out to a full word. @@ -161,35 +163,38 @@ endif LDFLAGS = $(CFLAGS) -Wl,-nostdlib -Wl,-Map=$@.map -Wl,-cref -Wl,--undefined=uxTopUsedPriority -LDFLAGS += -L$(BUILD)/esp-idf/esp-idf/esp_system/ld \ - -Lesp-idf/components/esp_rom/$(IDF_TARGET)/ld \ - -Lesp-idf/components/soc/$(IDF_TARGET)/ld \ - -Tmemory.ld \ - -Tsections.ld \ - -T$(IDF_TARGET).peripherals.ld \ - -T$(IDF_TARGET).rom.ld \ - -T$(IDF_TARGET).rom.api.ld \ - -T$(IDF_TARGET).rom.libgcc.ld \ - -T$(IDF_TARGET).rom.newlib-nano.ld +LDFLAGS += \ + -L$(BUILD)/esp-idf/esp-idf/esp_system/ld \ + -Lesp-idf/components/esp_rom/$(IDF_TARGET)/ld \ + -Lesp-idf/components/soc/$(IDF_TARGET)/ld \ + -Tmemory.ld \ + -Tsections.ld \ + -T$(IDF_TARGET).peripherals.ld \ + -T$(IDF_TARGET).rom.ld \ + -T$(IDF_TARGET).rom.api.ld \ + -T$(IDF_TARGET).rom.libgcc.ld \ + -T$(IDF_TARGET).rom.newlib-nano.ld \ + -Wl,-Bstatic \ + -Wl,--no-warn-mismatch \ + -Wl,--build-id=none \ + -fno-rtti ifeq ($(IDF_TARGET),esp32c3) -LDFLAGS += -Tesp32c3.rom.newlib.ld \ - -Tesp32c3.rom.version.ld \ - -Tesp32c3.rom.eco3.ld +LDFLAGS += \ + -Tesp32c3.rom.newlib.ld \ + -Tesp32c3.rom.version.ld \ + -Tesp32c3.rom.eco3.ld else ifeq ($(IDF_TARGET),esp32s2) -LDFLAGS += -T$(IDF_TARGET).rom.newlib-data.ld \ - -T$(IDF_TARGET).rom.newlib-funcs.ld \ - -T$(IDF_TARGET).rom.spiflash.ld +LDFLAGS += \ + -T$(IDF_TARGET).rom.newlib-data.ld \ + -T$(IDF_TARGET).rom.newlib-funcs.ld \ + -T$(IDF_TARGET).rom.spiflash.ld else ifeq ($(IDF_TARGET),esp32s3) -LDFLAGS += -Tesp32s3.rom.newlib.ld \ - -Tesp32s3.rom.version.ld +LDFLAGS += \ + -Tesp32s3.rom.newlib.ld \ + -Tesp32s3.rom.version.ld endif -LDFLAGS += -Wl,-Bstatic \ - -Wl,--no-warn-mismatch \ - -Wl,--build-id=none \ - -fno-rtti - LIBS := -lgcc -lc -lstdc++ # Use toolchain libm if we're not using our own. @@ -229,16 +234,15 @@ SRC_C += \ peripherals/timer.c \ peripherals/$(IDF_TARGET)/pins.c +ifneq ($(IDF_TARGET),esp32c3) +SRC_C += \ + peripherals/pcnt.c \ + peripherals/touch.c ifeq ($(IDF_TARGET),esp32s2) SRC_C += \ cam.c \ i2s_lcd_esp32s2_driver.c endif - -ifneq ($(IDF_TARGET),esp32c3) -SRC_C += \ - peripherals/pcnt.c \ - peripherals/touch.c endif $(BUILD)/i2s_lcd_esp32s2_driver.o: CFLAGS += -Wno-sign-compare @@ -247,16 +251,15 @@ ifneq ($(CIRCUITPY_USB),0) SRC_C += lib/tinyusb/src/portable/espressif/esp32sx/dcd_esp32sx.c endif -SRC_S = - -SRC_COMMON_HAL_EXPANDED = $(addprefix shared-bindings/, $(SRC_COMMON_HAL)) \ - $(addprefix shared-bindings/, $(SRC_BINDINGS_ENUMS)) \ - $(addprefix common-hal/, $(SRC_COMMON_HAL)) - -SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE)) \ - $(addprefix shared-module/, $(SRC_SHARED_MODULE)) \ - $(addprefix shared-module/, $(SRC_SHARED_MODULE_INTERNAL)) +SRC_COMMON_HAL_EXPANDED = \ + $(addprefix shared-bindings/, $(SRC_COMMON_HAL)) \ + $(addprefix shared-bindings/, $(SRC_BINDINGS_ENUMS)) \ + $(addprefix common-hal/, $(SRC_COMMON_HAL)) +SRC_SHARED_MODULE_EXPANDED = \ + $(addprefix shared-bindings/, $(SRC_SHARED_MODULE)) \ + $(addprefix shared-module/, $(SRC_SHARED_MODULE)) \ + $(addprefix shared-module/, $(SRC_SHARED_MODULE_INTERNAL)) ifneq ($(FROZEN_MPY_DIR),) FROZEN_MPY_PY_FILES := $(shell find -L $(FROZEN_MPY_DIR) -type f -name '*.py') @@ -270,7 +273,6 @@ ifeq ($(INTERNAL_LIBM),1) OBJ += $(addprefix $(BUILD)/, $(SRC_LIBM:.c=.o)) endif OBJ += $(addprefix $(BUILD)/, $(SRC_CIRCUITPY_COMMON:.c=.o)) -OBJ += $(addprefix $(BUILD)/, $(SRC_S:.S=.o)) OBJ += $(addprefix $(BUILD)/, $(SRC_MOD:.c=.o)) $(BUILD)/$(FATFS_DIR)/ff.o: COPT += -Os @@ -280,8 +282,6 @@ $(BUILD)/lib/protomatter/src/core.o: CFLAGS += -DESP32 # List of sources for qstr extraction SRC_QSTR += $(SRC_C) $(SRC_SUPERVISOR) $(SRC_MOD) $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED) -# Sources that only hold QSTRs after pre-processing. -SRC_QSTR_PREPROCESSOR += # IDF build commands IDF_PATH = $(realpath ./esp-idf) From dddc282e34a318d15a3ecba00ea8e482fb82ad82 Mon Sep 17 00:00:00 2001 From: microDev <70126934+microDev1@users.noreply.github.com> Date: Fri, 26 Nov 2021 22:44:22 +0530 Subject: [PATCH 09/36] update default sdkconfig and correct bootloader offset --- ports/espressif/Makefile | 11 ++++++----- ports/espressif/esp-idf-config/sdkconfig.defaults | 14 ++++++++------ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/ports/espressif/Makefile b/ports/espressif/Makefile index fd8c2b251d..c997dc6a0a 100644 --- a/ports/espressif/Makefile +++ b/ports/espressif/Makefile @@ -338,13 +338,14 @@ BINARY_BLOBS += esp-idf/components/xtensa/$(IDF_TARGET)/libxt_hal.a ESP_IDF_COMPONENTS_EXPANDED += esp-idf/components/xtensa/$(IDF_TARGET)/libxt_hal.a endif -ifeq ($(IDF_TARGET), esp32c3) -ESPTOOL_BAUDRATE = 230400 -BOOTLOADER_OFFSET = 0x0000 +ifeq ($(IDF_TARGET),esp32c3) +BOOTLOADER_OFFSET = 0x0 +else ifeq ($(IDF_TARGET),esp32s3) +BOOTLOADER_OFFSET = 0x0 else -ESPTOOL_BAUDRATE = 460800 BOOTLOADER_OFFSET = 0x1000 endif + PARTITION_TABLE_OFFSET = 0x8000 FIRMWARE_OFFSET = 0x10000 @@ -352,7 +353,7 @@ ESP_AUTOGEN_LD = $(BUILD)/esp-idf/esp-idf/$(IDF_TARGET)/$(IDF_TARGET)_out.ld $(B FLASH_FLAGS = --flash_mode $(CIRCUITPY_ESP_FLASH_MODE) --flash_freq $(CIRCUITPY_ESP_FLASH_FREQ) --flash_size $(CIRCUITPY_ESP_FLASH_SIZE) -ESPTOOL_FLAGS ?= -b $(ESPTOOL_BAUDRATE) --before=default_reset --after=no_reset +ESPTOOL_FLAGS ?= --before=default_reset --after=no_reset ifeq ($(IDF_TARGET),esp32c3) all: $(BUILD)/firmware.bin diff --git a/ports/espressif/esp-idf-config/sdkconfig.defaults b/ports/espressif/esp-idf-config/sdkconfig.defaults index 25e2f103d5..67e2594339 100644 --- a/ports/espressif/esp-idf-config/sdkconfig.defaults +++ b/ports/espressif/esp-idf-config/sdkconfig.defaults @@ -1,9 +1,3 @@ -# -# Bootloader config -# -# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set -# end of Bootloader config - # # Serial flasher config # @@ -50,6 +44,14 @@ CONFIG_ESP32S2_DATA_CACHE_16KB=y # end of Cache config # end of ESP32S2-specific +# +# ESP32S3-specific +# +# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160 is not set +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=240 +# end of ESP32S3-specific + # # Common ESP-related # From 2433c9572c4d41907b903860d717e2b25a117b21 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Wed, 1 Dec 2021 16:14:37 -0800 Subject: [PATCH 10/36] Add full pin mux info and use it for I2C All I2C peripherals should be usable now. This also adds pin in-use tracking and resetting. Part of #5629 --- ports/broadcom/Makefile | 1 + ports/broadcom/broadcom_peripherals_config.h | 34 ++++++ ports/broadcom/common-hal/busio/I2C.c | 56 +++++++--- .../broadcom/common-hal/microcontroller/Pin.c | 101 ++++++------------ .../broadcom/common-hal/microcontroller/Pin.h | 69 +----------- .../common-hal/microcontroller/__init__.c | 2 + ports/broadcom/peripherals | 2 +- 7 files changed, 111 insertions(+), 154 deletions(-) create mode 100644 ports/broadcom/broadcom_peripherals_config.h diff --git a/ports/broadcom/Makefile b/ports/broadcom/Makefile index a5a3f744b7..16b44f7501 100644 --- a/ports/broadcom/Makefile +++ b/ports/broadcom/Makefile @@ -63,6 +63,7 @@ SRC_C += bindings/videocore/__init__.c \ lib/tinyusb/src/portable/synopsys/dwc2/dcd_dwc2.c \ peripherals/broadcom/caches.c \ peripherals/broadcom/gen/interrupt_handlers.c \ + peripherals/broadcom/gen/pins.c \ peripherals/broadcom/gpio.c \ peripherals/broadcom/interrupts.c \ peripherals/broadcom/mmu.c \ diff --git a/ports/broadcom/broadcom_peripherals_config.h b/ports/broadcom/broadcom_peripherals_config.h new file mode 100644 index 0000000000..e31b3f635c --- /dev/null +++ b/ports/broadcom/broadcom_peripherals_config.h @@ -0,0 +1,34 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#pragma once + +#include "py/obj.h" + +extern const mp_obj_type_t mcu_pin_type; + +#define PIN_PREFIX_VALUES { &mcu_pin_type }, +#define PIN_PREFIX_FIELDS mp_obj_base_t base; diff --git a/ports/broadcom/common-hal/busio/I2C.c b/ports/broadcom/common-hal/busio/I2C.c index 608b1ded15..7301e6314b 100644 --- a/ports/broadcom/common-hal/busio/I2C.c +++ b/ports/broadcom/common-hal/busio/I2C.c @@ -35,35 +35,63 @@ #include "peripherals/broadcom/cpu.h" #include "peripherals/broadcom/vcmailbox.h" -#define NUM_I2C (2) +#if BCM_VERSION == 2711 +#define NUM_I2C (8) +STATIC BSC0_Type *i2c[NUM_I2C] = {BSC0, BSC1, NULL, BSC3, BSC4, BSC5, BSC6, NULL}; +#else +#define NUM_I2C (3) +STATIC BSC0_Type *i2c[NUM_I2C] = {BSC0, BSC1, NULL}; +#endif STATIC bool never_reset_i2c[NUM_I2C]; -STATIC bool in_use_i2c[NUM_I2C]; -STATIC BSC0_Type *i2c[2] = {BSC0, BSC1}; +STATIC bool i2c_in_use[NUM_I2C]; void reset_i2c(void) { + // BSC2 is dedicated to the first HDMI output. + never_reset_i2c[2] = true; + i2c_in_use[2] = true; + #if BCM_VERSION == 2711 + // BSC7 is dedicated to the second HDMI output. + never_reset_i2c[7] = true; + i2c_in_use[7] = true; + #endif for (size_t i = 0; i < 2; i++) { if (never_reset_i2c[i]) { continue; } - in_use_i2c[i] = false; + i2c_in_use[i] = false; + i2c[i]->C_b.I2CEN = false; + COMPLETE_MEMORY_READS; } } void common_hal_busio_i2c_construct(busio_i2c_obj_t *self, const mcu_pin_obj_t *scl, const mcu_pin_obj_t *sda, uint32_t frequency, uint32_t timeout) { size_t instance_index = NUM_I2C; - if ((scl == &pin_GPIO1 || scl == &pin_GPIO29 || scl == &pin_GPIO45) && - (sda == &pin_GPIO0 || sda == &pin_GPIO28 || sda == &pin_GPIO44)) { - instance_index = 0; - } else if ((scl == &pin_GPIO44 || scl == &pin_GPIO3) && - (sda == &pin_GPIO43 || sda == &pin_GPIO2)) { - instance_index = 1; + uint8_t scl_alt = 0; + uint8_t sda_alt = 0; + for (scl_alt = 0; scl_alt < 6; scl_alt++) { + if (scl->functions[scl_alt].type != PIN_FUNCTION_I2C || + i2c_in_use[scl->functions[scl_alt].index]) { + continue; + } + for (sda_alt = 0; sda_alt < 6; sda_alt++) { + if (sda->functions[sda_alt].type != PIN_FUNCTION_I2C || + scl->functions[scl_alt].index != sda->functions[sda_alt].index || + sda->functions[sda_alt].function != I2C_FUNCTION_SDA) { + continue; + } + instance_index = scl->functions[scl_alt].index; + break; + } + if (instance_index != NUM_I2C) { + break; + } } if (instance_index == NUM_I2C) { mp_raise_ValueError(translate("Invalid pins")); } - in_use_i2c[instance_index] = true; + i2c_in_use[instance_index] = true; self->index = instance_index; self->peripheral = i2c[self->index]; self->sda_pin = sda; @@ -73,8 +101,8 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self, uint16_t clock_divider = source_clock / frequency; self->peripheral->DIV_b.CDIV = clock_divider; - gpio_set_function(sda->number, GPIO_GPFSEL0_FSEL2_SDA1); - gpio_set_function(scl->number, GPIO_GPFSEL0_FSEL3_SCL1); + gpio_set_function(sda->number, FSEL_VALUES[sda_alt]); + gpio_set_function(scl->number, FSEL_VALUES[scl_alt]); } bool common_hal_busio_i2c_deinited(busio_i2c_obj_t *self) { @@ -86,6 +114,7 @@ void common_hal_busio_i2c_deinit(busio_i2c_obj_t *self) { return; } never_reset_i2c[self->index] = false; + i2c_in_use[self->index] = false; common_hal_reset_pin(self->sda_pin); common_hal_reset_pin(self->scl_pin); @@ -95,7 +124,6 @@ void common_hal_busio_i2c_deinit(busio_i2c_obj_t *self) { bool common_hal_busio_i2c_probe(busio_i2c_obj_t *self, uint8_t addr) { uint8_t result = common_hal_busio_i2c_write(self, addr, NULL, 0, true); - // mp_printf(&mp_plat_print, "result %d %d\n", addr, result); return result == 0; } diff --git a/ports/broadcom/common-hal/microcontroller/Pin.c b/ports/broadcom/common-hal/microcontroller/Pin.c index 3c802a5727..d1e5627bcd 100644 --- a/ports/broadcom/common-hal/microcontroller/Pin.c +++ b/ports/broadcom/common-hal/microcontroller/Pin.c @@ -28,14 +28,41 @@ #include "peripherals/broadcom/gpio.h" +STATIC bool pin_in_use[BCM_PIN_COUNT]; +STATIC bool never_reset_pin[BCM_PIN_COUNT]; + void reset_all_pins(void) { + for (size_t i = 0; i < BCM_PIN_COUNT; i++) { + if (never_reset_pin[i]) { + continue; + } + reset_pin_number(i); + } } void never_reset_pin_number(uint8_t pin_number) { + never_reset_pin[pin_number] = true; } void reset_pin_number(uint8_t pin_number) { - gpio_set_function(pin_number, 0); + gpio_set_function(pin_number, GPIO_FUNCTION_INPUT); + pin_in_use[pin_number] = false; + never_reset_pin[pin_number] = false; + // Set the pull to match the datasheet. + BP_PULL_Enum pull = BP_PULL_NONE; + if (pin_number < 9 || + (33 < pin_number && pin_number < 37) || + pin_number > 45) { + pull = BP_PULL_UP; + } else if (pin_number != 28 && + pin_number != 29 && + pin_number != 44 && + pin_number != 45) { + // Most pins are pulled low so we only exclude the four pins that aren't + // pulled at all. + pull = BP_PULL_DOWN; + } + gpio_set_pull(pin_number, pull); } void common_hal_never_reset_pin(const mcu_pin_obj_t *pin) { @@ -47,11 +74,11 @@ void common_hal_reset_pin(const mcu_pin_obj_t *pin) { } void claim_pin(const mcu_pin_obj_t *pin) { - // Nothing to do because all changes will set the GPIO settings. + pin_in_use[pin->number] = true; } bool pin_number_is_free(uint8_t pin_number) { - return true; + return !pin_in_use[pin_number]; } bool common_hal_mcu_pin_is_free(const mcu_pin_obj_t *pin) { @@ -69,71 +96,3 @@ void common_hal_mcu_pin_claim(const mcu_pin_obj_t *pin) { void common_hal_mcu_pin_reset_number(uint8_t pin_no) { reset_pin_number(pin_no); } - -#define PIN(num) \ - const mcu_pin_obj_t pin_GPIO##num = { \ - { &mcu_pin_type }, \ - .number = num \ - }; - -PIN(0) -PIN(1) -PIN(2) -PIN(3) -PIN(4) -PIN(5) -PIN(6) -PIN(7) -PIN(8) -PIN(9) -PIN(10) -PIN(11) -PIN(12) -PIN(13) -PIN(14) -PIN(15) -PIN(16) -PIN(17) -PIN(18) -PIN(19) -PIN(20) -PIN(21) -PIN(22) -PIN(23) -PIN(24) -PIN(25) -PIN(26) -PIN(27) -PIN(28) -PIN(29) - -PIN(30) -PIN(31) -PIN(32) -PIN(33) -PIN(34) -PIN(35) -PIN(36) -PIN(37) -PIN(38) -PIN(39) - -PIN(40) -PIN(41) -PIN(42) -PIN(43) -PIN(44) -PIN(45) -PIN(46) -PIN(47) -PIN(48) -PIN(49) - -PIN(50) -PIN(51) -PIN(52) -PIN(53) -PIN(54) -PIN(55) -PIN(56) -PIN(57) diff --git a/ports/broadcom/common-hal/microcontroller/Pin.h b/ports/broadcom/common-hal/microcontroller/Pin.h index 9c9b28f1e6..d234657dda 100644 --- a/ports/broadcom/common-hal/microcontroller/Pin.h +++ b/ports/broadcom/common-hal/microcontroller/Pin.h @@ -32,74 +32,7 @@ #include -typedef struct { - mp_obj_base_t base; - uint8_t number; -} mcu_pin_obj_t; - -extern const mcu_pin_obj_t pin_GPIO0; -extern const mcu_pin_obj_t pin_GPIO1; -extern const mcu_pin_obj_t pin_GPIO2; -extern const mcu_pin_obj_t pin_GPIO3; -extern const mcu_pin_obj_t pin_GPIO4; -extern const mcu_pin_obj_t pin_GPIO5; -extern const mcu_pin_obj_t pin_GPIO6; -extern const mcu_pin_obj_t pin_GPIO7; -extern const mcu_pin_obj_t pin_GPIO8; -extern const mcu_pin_obj_t pin_GPIO9; - -extern const mcu_pin_obj_t pin_GPIO10; -extern const mcu_pin_obj_t pin_GPIO11; -extern const mcu_pin_obj_t pin_GPIO12; -extern const mcu_pin_obj_t pin_GPIO13; -extern const mcu_pin_obj_t pin_GPIO14; -extern const mcu_pin_obj_t pin_GPIO15; -extern const mcu_pin_obj_t pin_GPIO16; -extern const mcu_pin_obj_t pin_GPIO17; -extern const mcu_pin_obj_t pin_GPIO18; -extern const mcu_pin_obj_t pin_GPIO19; - -extern const mcu_pin_obj_t pin_GPIO20; -extern const mcu_pin_obj_t pin_GPIO21; -extern const mcu_pin_obj_t pin_GPIO22; -extern const mcu_pin_obj_t pin_GPIO23; -extern const mcu_pin_obj_t pin_GPIO24; -extern const mcu_pin_obj_t pin_GPIO25; -extern const mcu_pin_obj_t pin_GPIO26; -extern const mcu_pin_obj_t pin_GPIO27; -extern const mcu_pin_obj_t pin_GPIO28; -extern const mcu_pin_obj_t pin_GPIO29; - -extern const mcu_pin_obj_t pin_GPIO30; -extern const mcu_pin_obj_t pin_GPIO31; -extern const mcu_pin_obj_t pin_GPIO32; -extern const mcu_pin_obj_t pin_GPIO33; -extern const mcu_pin_obj_t pin_GPIO34; -extern const mcu_pin_obj_t pin_GPIO35; -extern const mcu_pin_obj_t pin_GPIO36; -extern const mcu_pin_obj_t pin_GPIO37; -extern const mcu_pin_obj_t pin_GPIO38; -extern const mcu_pin_obj_t pin_GPIO39; - -extern const mcu_pin_obj_t pin_GPIO40; -extern const mcu_pin_obj_t pin_GPIO41; -extern const mcu_pin_obj_t pin_GPIO42; -extern const mcu_pin_obj_t pin_GPIO43; -extern const mcu_pin_obj_t pin_GPIO44; -extern const mcu_pin_obj_t pin_GPIO45; -extern const mcu_pin_obj_t pin_GPIO46; -extern const mcu_pin_obj_t pin_GPIO47; -extern const mcu_pin_obj_t pin_GPIO48; -extern const mcu_pin_obj_t pin_GPIO49; - -extern const mcu_pin_obj_t pin_GPIO50; -extern const mcu_pin_obj_t pin_GPIO51; -extern const mcu_pin_obj_t pin_GPIO52; -extern const mcu_pin_obj_t pin_GPIO53; -extern const mcu_pin_obj_t pin_GPIO54; -extern const mcu_pin_obj_t pin_GPIO55; -extern const mcu_pin_obj_t pin_GPIO56; -extern const mcu_pin_obj_t pin_GPIO57; +#include "peripherals/broadcom/pins.h" void reset_all_pins(void); // reset_pin_number takes the pin number instead of the pointer so that objects don't diff --git a/ports/broadcom/common-hal/microcontroller/__init__.c b/ports/broadcom/common-hal/microcontroller/__init__.c index 02ce04724c..e6f7b9c737 100644 --- a/ports/broadcom/common-hal/microcontroller/__init__.c +++ b/ports/broadcom/common-hal/microcontroller/__init__.c @@ -187,9 +187,11 @@ const mp_rom_map_elem_t mcu_pin_global_dict_table[TOTAL_GPIO_COUNT] = { PIN(51) PIN(52) PIN(53) + #if BCM_VERSION == 2711 PIN(54) PIN(55) PIN(56) PIN(57) + #endif }; MP_DEFINE_CONST_DICT(mcu_pin_globals, mcu_pin_global_dict_table); diff --git a/ports/broadcom/peripherals b/ports/broadcom/peripherals index 8057af2d61..2e7b56bbe9 160000 --- a/ports/broadcom/peripherals +++ b/ports/broadcom/peripherals @@ -1 +1 @@ -Subproject commit 8057af2d614c27a1e103d5f4300428f341da6bcb +Subproject commit 2e7b56bbe941311e54fba66f0b32336bfea4388d From f94d3e86cffb10dbebf99a358d1100a637b6b2ae Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Wed, 1 Dec 2021 18:07:52 -0600 Subject: [PATCH 11/36] UART: Don't allocate the object so early This object has a finalizer, so once it's no longer referenced, GC can call that finalizer and then deallocate the storage. In the case of a failure during construction (e.g., when checking `validate_obj_is_free_pin_or_none`) this will happen on an incompletely initialized structure. On samd, in particular, a newly allocated object (with construct never called) appears to be valid, so GC collecting it causes deinit() to do things, leading to a hard fault. The double creation of the UART object was necessary specifically so that the second allocation would fail. Probably there were other (single call) ways to make it fail, but this was the easiest / the one discovered in real life. Closes: #5493 --- shared-bindings/busio/UART.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/shared-bindings/busio/UART.c b/shared-bindings/busio/UART.c index 4df56c6e62..1819748992 100644 --- a/shared-bindings/busio/UART.c +++ b/shared-bindings/busio/UART.c @@ -82,12 +82,6 @@ STATIC void validate_timeout(mp_float_t timeout) { STATIC mp_obj_t busio_uart_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { #if CIRCUITPY_BUSIO_UART - // Always initially allocate the UART object within the long-lived heap. - // This is needed to avoid crashes with certain UART implementations which - // cannot accomodate being moved after creation. (See - // https://github.com/adafruit/circuitpython/issues/1056) - busio_uart_obj_t *self = m_new_ll_obj_with_finaliser(busio_uart_obj_t); - self->base.type = &busio_uart_type; enum { ARG_tx, ARG_rx, ARG_baudrate, ARG_bits, ARG_parity, ARG_stop, ARG_timeout, ARG_receiver_buffer_size, ARG_rts, ARG_cts, ARG_rs485_dir,ARG_rs485_invert}; static const mp_arg_t allowed_args[] = { @@ -140,6 +134,13 @@ STATIC mp_obj_t busio_uart_make_new(const mp_obj_type_t *type, size_t n_args, si const bool rs485_invert = args[ARG_rs485_invert].u_bool; + // Always initially allocate the UART object within the long-lived heap. + // This is needed to avoid crashes with certain UART implementations which + // cannot accomodate being moved after creation. (See + // https://github.com/adafruit/circuitpython/issues/1056) + busio_uart_obj_t *self = m_new_ll_obj_with_finaliser(busio_uart_obj_t); + self->base.type = &busio_uart_type; + common_hal_busio_uart_construct(self, tx, rx, rts, cts, rs485_dir, rs485_invert, args[ARG_baudrate].u_int, bits, parity, stop, timeout, args[ARG_receiver_buffer_size].u_int, NULL, false); From 69faaa52b824fa38b9367d3d37729f8125775fcf Mon Sep 17 00:00:00 2001 From: microDev <70126934+microDev1@users.noreply.github.com> Date: Thu, 2 Dec 2021 11:11:11 +0530 Subject: [PATCH 12/36] run test for traceback module --- .../unix/variants/coverage/mpconfigvariant.mk | 10 +++++++- shared-bindings/traceback/__init__.c | 12 +++++----- tests/circuitpython/traceback_test.py.exp | 23 +++++++++++++++++++ tests/run-tests.py | 3 +++ tests/unix/extra_coverage.py.exp | 10 ++++---- 5 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 tests/circuitpython/traceback_test.py.exp diff --git a/ports/unix/variants/coverage/mpconfigvariant.mk b/ports/unix/variants/coverage/mpconfigvariant.mk index d924fc7146..7e8aabef5b 100644 --- a/ports/unix/variants/coverage/mpconfigvariant.mk +++ b/ports/unix/variants/coverage/mpconfigvariant.mk @@ -36,6 +36,7 @@ SRC_BITMAP := \ shared-bindings/bitmaptools/__init__.c \ shared-bindings/displayio/Bitmap.c \ shared-bindings/rainbowio/__init__.c \ + shared-bindings/traceback/__init__.c \ shared-bindings/util.c \ shared-module/aesio/aes.c \ shared-module/aesio/__init__.c \ @@ -45,11 +46,18 @@ SRC_BITMAP := \ shared-module/displayio/ColorConverter.c \ shared-module/displayio/ColorConverter.c \ shared-module/rainbowio/__init__.c \ + shared-module/traceback/__init__.c $(info $(SRC_BITMAP)) SRC_C += $(SRC_BITMAP) -CFLAGS += -DCIRCUITPY_GIFIO=1 -DCIRCUITPY_DISPLAYIO_UNIX=1 -DCIRCUITPY_BITMAPTOOLS=1 -DCIRCUITPY_RAINBOWIO=1 -DCIRCUITPY_AESIO=1 +CFLAGS += \ + -DCIRCUITPY_AESIO=1 \ + -DCIRCUITPY_BITMAPTOOLS=1 \ + -DCIRCUITPY_DISPLAYIO_UNIX=1 \ + -DCIRCUITPY_GIFIO=1 \ + -DCIRCUITPY_RAINBOWIO=1 \ + -DCIRCUITPY_TRACEBACK=1 SRC_C += coverage.c SRC_CXX += coveragecpp.cpp diff --git a/shared-bindings/traceback/__init__.c b/shared-bindings/traceback/__init__.c index 7079148ba0..6fdb060439 100644 --- a/shared-bindings/traceback/__init__.c +++ b/shared-bindings/traceback/__init__.c @@ -85,9 +85,9 @@ STATIC void traceback_exception_common(mp_print_t *print, mp_obj_t value, mp_obj STATIC mp_obj_t traceback_format_exception(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_etype, ARG_value, ARG_tb, ARG_limit, ARG_chain }; static const mp_arg_t allowed_args[] = { - { MP_QSTR_etype, MP_ARG_OBJ | MP_ARG_REQUIRED }, - { MP_QSTR_value, MP_ARG_OBJ | MP_ARG_REQUIRED }, - { MP_QSTR_tb, MP_ARG_OBJ | MP_ARG_REQUIRED }, + { MP_QSTR_etype, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} }, + { MP_QSTR_value, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} }, + { MP_QSTR_tb, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} }, { MP_QSTR_limit, MP_ARG_OBJ, {.u_obj = mp_const_none} }, { MP_QSTR_chain, MP_ARG_BOOL, {.u_bool = true} }, }; @@ -127,9 +127,9 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(traceback_format_exception_obj, 0, traceback_f STATIC mp_obj_t traceback_print_exception(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { enum { ARG_etype, ARG_value, ARG_tb, ARG_limit, ARG_file, ARG_chain }; static const mp_arg_t allowed_args[] = { - { MP_QSTR_etype, MP_ARG_OBJ | MP_ARG_REQUIRED }, - { MP_QSTR_value, MP_ARG_OBJ | MP_ARG_REQUIRED }, - { MP_QSTR_tb, MP_ARG_OBJ | MP_ARG_REQUIRED }, + { MP_QSTR_etype, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} }, + { MP_QSTR_value, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} }, + { MP_QSTR_tb, MP_ARG_OBJ | MP_ARG_REQUIRED, {.u_obj = MP_OBJ_NULL} }, { MP_QSTR_limit, MP_ARG_OBJ, {.u_obj = mp_const_none} }, { MP_QSTR_file, MP_ARG_OBJ, {.u_obj = mp_const_none} }, { MP_QSTR_chain, MP_ARG_BOOL, {.u_bool = true} }, diff --git a/tests/circuitpython/traceback_test.py.exp b/tests/circuitpython/traceback_test.py.exp new file mode 100644 index 0000000000..be887f2421 --- /dev/null +++ b/tests/circuitpython/traceback_test.py.exp @@ -0,0 +1,23 @@ + +No Trace: +Exception: test + +Default Trace: +Traceback (most recent call last): + File "circuitpython/traceback_test.py", line 13, in + File "circuitpython/traceback_test.py", line 9, in fun +Exception: test + +Limit=1 Trace: +Traceback (most recent call last): + File "circuitpython/traceback_test.py", line 13, in +Exception: test + +Limit=0 Trace: +Exception: test + +Limit=-1 Trace: +Traceback (most recent call last): + File "circuitpython/traceback_test.py", line 9, in fun +Exception: test + diff --git a/tests/run-tests.py b/tests/run-tests.py index b795d6ec94..34372590a2 100755 --- a/tests/run-tests.py +++ b/tests/run-tests.py @@ -511,6 +511,9 @@ def run_tests(pyb, tests, args, result_dir, num_threads=1): skip_tests.add("basics/scope_implicit.py") # requires checking for unbound local skip_tests.add("basics/try_finally_return2.py") # requires raise_varargs skip_tests.add("basics/unboundlocal.py") # requires checking for unbound local + skip_tests.add( + "circuitpython/traceback_test.py" + ) # because native doesn't have proper traceback info skip_tests.add("extmod/uasyncio_event.py") # unknown issue skip_tests.add("extmod/uasyncio_lock.py") # requires async with skip_tests.add("extmod/uasyncio_micropython.py") # unknown issue diff --git a/tests/unix/extra_coverage.py.exp b/tests/unix/extra_coverage.py.exp index 54efc744cb..4cce80a412 100644 --- a/tests/unix/extra_coverage.py.exp +++ b/tests/unix/extra_coverage.py.exp @@ -35,11 +35,11 @@ cexample cmath collections cppexample displayio errno ffi framebuf gc gifio hashlib json math qrio rainbowio re -sys termios ubinascii uctypes -uerrno uheapq uio ujson -ulab uos urandom ure -uselect ustruct utime utimeq -uzlib +sys termios traceback ubinascii +uctypes uerrno uheapq uio +ujson ulab uos urandom +ure uselect ustruct utime +utimeq uzlib ime utime utimeq From 8adb0ecd334fe67d266bf119d420a2ecf6b372af Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Thu, 2 Dec 2021 10:28:26 -0800 Subject: [PATCH 13/36] Fix loop bounds --- ports/broadcom/common-hal/busio/I2C.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/broadcom/common-hal/busio/I2C.c b/ports/broadcom/common-hal/busio/I2C.c index 7301e6314b..9726f394d2 100644 --- a/ports/broadcom/common-hal/busio/I2C.c +++ b/ports/broadcom/common-hal/busio/I2C.c @@ -55,7 +55,7 @@ void reset_i2c(void) { never_reset_i2c[7] = true; i2c_in_use[7] = true; #endif - for (size_t i = 0; i < 2; i++) { + for (size_t i = 0; i < NUM_I2C; i++) { if (never_reset_i2c[i]) { continue; } From 9e286432d2546c658cb942ea516bad9603f7f192 Mon Sep 17 00:00:00 2001 From: microDev <70126934+microDev1@users.noreply.github.com> Date: Fri, 3 Dec 2021 20:30:40 +0530 Subject: [PATCH 14/36] add esp32s3 documentation in readme --- README.rst | 4 +- ports/espressif/README.rst | 84 ++++++++++++++++++++++++++++++++++---- 2 files changed, 79 insertions(+), 9 deletions(-) diff --git a/README.rst b/README.rst index dafc8ee96e..801466cbad 100644 --- a/README.rst +++ b/README.rst @@ -213,7 +213,7 @@ Supported Support status ================ ============================================================ atmel-samd ``SAMD21`` stable | ``SAMD51`` stable cxd56 stable -espressif ``ESP32-C3`` beta | ``ESP32-S2`` stable +espressif ``ESP32-C3`` beta | ``ESP32-S2`` stable | ``ESP32-S3`` beta litex alpha mimxrt10xx alpha nrf stable @@ -229,7 +229,7 @@ unix alpha Boards ~~~~~~ -- Each ``port`` has a ``boards`` directory containing variations of boards +- Each ``port`` has a ``boards`` directory containing boards which belong to a specific microcontroller line. - A list of native modules supported by a particular board can be found `here `__. diff --git a/ports/espressif/README.rst b/ports/espressif/README.rst index 165f7a161e..7ef0fc5dc6 100644 --- a/ports/espressif/README.rst +++ b/ports/espressif/README.rst @@ -11,6 +11,7 @@ Support Status: ESP32-C3, "beta" ESP32-S2, "stable" + ESP32-S3, "beta" How this port is organized: --------------------------------------- @@ -31,9 +32,11 @@ Connecting to the ESP32-C3 **USB Connetion:** -On ESP32-C3 REV3 chips, a USB Serial/JTAG Controller is available. Note: The USB connection cannot be used for a ``CIRCUITPY`` drive. +On ESP32-C3 REV3 chips, a USB Serial/JTAG Controller is available. Note: This USB connection cannot be used for a ``CIRCUITPY`` drive. -Depending on the board you have the USB port may or may not be connected to native USB, if it isn't connected to native USB then following connections need to be made to get serial console, REPL interface, flashing CircuitPython and JTAG debugging. +Depending on the board you have, the USB port may or may not be connected to native USB. + +Following connections need to be made if native USB isn't available on USB port: .. csv-table:: :header: GPIO, USB @@ -47,7 +50,9 @@ Connect these pins using a `USB adapter ` **UART Connection:** -A `USB to UART convertor `_ can be used for connecting to ESP32-C3 to get serial console, REPL interface and flashing CircuitPython. Following connections need to be made in this case. +A `USB to UART convertor `_ can be used for connecting to ESP32-C3 to get serial console, REPL interface and flashing CircuitPython. + +Following connections need to be made in this case. .. csv-table:: :header: GPIO, UART @@ -66,7 +71,9 @@ Connecting to the ESP32-S2 **USB Connetion:** -Depending on the board you have the USB port may or may not be connected to native USB, if it isn't connected to native USB then following connections need to be made to get CircuitPython working. +Depending on the board you have, the USB port may or may not be connected to native USB. + +Following connections need to be made if native USB isn't available on USB port: .. csv-table:: :header: GPIO, USB @@ -78,16 +85,79 @@ Depending on the board you have the USB port may or may not be connected to nati Connect these pins using a `USB adapter `_ or `breakout cable `_ to access the CircuitPython drive. +**UART Connection:** + +A `USB to UART convertor `_ can be used for connecting to ESP32-S2 to get serial console and flashing CircuitPython. + +Following connections need to be made in this case: + +.. csv-table:: + :header: GPIO, UART + + 43, "RX" + 44, "TX" + GND, "GND" + 5V, "5V" + +**BLE Connection:** + +This feature isn't available on ESP32-S2. + +Connecting to the ESP32-S3 +--------------------------------------- + +**USB Connetion:** + +Depending on the board you have, the USB port may or may not be connected to native USB. + +Following connections need to be made if native USB isn't available on USB port: + +.. csv-table:: + :header: GPIO, USB + + 20, "D+ (green)" + 19, "D- (white)" + GND, "GND (black)" + 5V, "5V (red)" + +Connect these pins using a `USB adapter `_ or `breakout cable `_ to access the CircuitPython drive. + +**UART Connection:** + +A `USB to UART convertor `_ can be used for connecting to ESP32-S3 to get serial console and flashing CircuitPython. + +Following connections need to be made in this case: + +.. csv-table:: + :header: GPIO, UART + + 43, "RX" + 44, "TX" + GND, "GND" + 5V, "5V" + +**BLE Connection:** + +This feature is not yet available and currently under development. + Building and flashing --------------------------------------- -Before building or flashing the, you must `install the esp-idf `_. This must be re-done every time the esp-idf is updated, but not every time you build. Run ``cd ports/espressif`` from ``circuitpython/`` to move to the espressif port root, and run: +Before building or flashing the, you must `install the esp-idf `_. + +Note: This must be re-done every time the esp-idf is updated, but not every time you build. + +Run ``cd ports/espressif`` from ``circuitpython/`` to move to the espressif port root, and run: .. code-block:: ./esp-idf/install.sh -After this initial installation, you must add the esp-idf tools to your path. You must also do this **any time you open a new bash environment for building or flashing**: +After this initial installation, you must add the esp-idf tools to your path. + +Note: This must be re-done every time you open a new bash environment for building or flashing. + +Run ``cd ports/espressif`` from ``circuitpython/`` to move to the espressif port root, and run: .. code-block:: @@ -106,7 +176,7 @@ Building boards is typically done through ``make BOARD=board_id``. The default p Debugging --------------------------------------- -TODO: Add documentation for ESP32-C3 JTAG feature. +TODO: Add documentation for ESP32-C3/S3 JTAG feature. The ESP32-S2 supports JTAG debugging over OpenOCD using a JLink or other probe hardware. The official tutorials can be found on the Espressif website `here `_, but they are mostly for the ESP32-S2 Kaluga, which has built-in debugging. From 3b6011d55140bf23e6378a1edff3418d05a580d4 Mon Sep 17 00:00:00 2001 From: Kattni Rembor Date: Fri, 3 Dec 2021 11:40:40 -0500 Subject: [PATCH 15/36] Update pin order to match silk. --- ports/raspberrypi/boards/adafruit_kb2040/pins.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ports/raspberrypi/boards/adafruit_kb2040/pins.c b/ports/raspberrypi/boards/adafruit_kb2040/pins.c index 0bd2dda728..e36346a0dd 100644 --- a/ports/raspberrypi/boards/adafruit_kb2040/pins.c +++ b/ports/raspberrypi/boards/adafruit_kb2040/pins.c @@ -12,10 +12,10 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO19) }, { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO20) }, - { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) }, - { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) }, @@ -27,14 +27,14 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) }, { MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) }, - { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) }, { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) }, - { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) }, { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) }, - { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) }, { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO17) }, From 659babc6206c99386d83c651b64e7a0d9d7d1ea2 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Fri, 26 Nov 2021 13:43:57 -0600 Subject: [PATCH 16/36] Add the esp32s3 devkitc (psram variant) --- locale/circuitpython.pot | 13 ++-- .../espressif_esp32s3_devkitc_1/board.c | 61 +++++++++++++++++++ .../mpconfigboard.h | 38 ++++++++++++ .../mpconfigboard.mk | 17 ++++++ .../boards/espressif_esp32s3_devkitc_1/pins.c | 45 ++++++++++++++ .../espressif_esp32s3_devkitc_1/sdkconfig | 40 ++++++++++++ 6 files changed, 209 insertions(+), 5 deletions(-) create mode 100644 ports/espressif/boards/espressif_esp32s3_devkitc_1/board.c create mode 100644 ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h create mode 100644 ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.mk create mode 100644 ports/espressif/boards/espressif_esp32s3_devkitc_1/pins.c create mode 100644 ports/espressif/boards/espressif_esp32s3_devkitc_1/sdkconfig diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index 835ef9538b..c51d074ad0 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -574,7 +574,7 @@ msgstr "" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "" @@ -1462,7 +1462,7 @@ msgstr "" msgid "Key must be 16, 24, or 32 bytes long" msgstr "" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2090,7 +2090,7 @@ msgstr "" msgid "Sample rate too high. It must be less than %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2351,7 +2351,7 @@ msgstr "" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "" @@ -3950,12 +3950,14 @@ msgstr "" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -3970,6 +3972,7 @@ msgstr "" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4462,7 +4465,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1/board.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1/board.c new file mode 100644 index 0000000000..dd24db581b --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1/board.c @@ -0,0 +1,61 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" +#include "mpconfigboard.h" +#include "shared-bindings/microcontroller/Pin.h" + +void board_init(void) { + // USB + common_hal_never_reset_pin(&pin_GPIO19); + common_hal_never_reset_pin(&pin_GPIO20); + + // Debug UART + #ifdef DEBUG + common_hal_never_reset_pin(&pin_GPIO43); + common_hal_never_reset_pin(&pin_GPIO44); + #endif + + // SPI Flash and RAM + common_hal_never_reset_pin(&pin_GPIO26); + common_hal_never_reset_pin(&pin_GPIO27); + common_hal_never_reset_pin(&pin_GPIO28); + common_hal_never_reset_pin(&pin_GPIO29); + common_hal_never_reset_pin(&pin_GPIO30); + common_hal_never_reset_pin(&pin_GPIO31); + common_hal_never_reset_pin(&pin_GPIO32); +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { + +} + +void board_deinit(void) { +} diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h new file mode 100644 index 0000000000..df83110453 --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h @@ -0,0 +1,38 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "ESP32-S3-DevKitC-1" +#define MICROPY_HW_MCU_NAME "ESP32S3" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO48) + +#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) + +#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n") + +#define AUTORESET_DELAY_MS 500 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.mk new file mode 100644 index 0000000000..aadc71a3d6 --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.mk @@ -0,0 +1,17 @@ +USB_VID = 0x239A +USB_PID = 0x7003 +USB_PRODUCT = "ESP32-S3-DevKitC-1" +USB_MANUFACTURER = "Espressif" + +IDF_TARGET = esp32s3 + +INTERNAL_FLASH_FILESYSTEM = 1 +LONGINT_IMPL = MPZ + +# The default queue depth of 16 overflows on release builds, +# so increase it to 32. +CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32 + +CIRCUITPY_ESP_FLASH_MODE=dio +CIRCUITPY_ESP_FLASH_FREQ=80m +CIRCUITPY_ESP_FLASH_SIZE=8MB diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1/pins.c new file mode 100644 index 0000000000..b1d515c306 --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1/pins.c @@ -0,0 +1,45 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38) }, + { MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_IO41), MP_ROM_PTR(&pin_GPIO41) }, + { MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) }, + { MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_TXD0), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_TXD1), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_IO45), MP_ROM_PTR(&pin_GPIO45) }, + { MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) }, + { MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) }, + { MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) }, + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO48) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1/sdkconfig b/ports/espressif/boards/espressif_esp32s3_devkitc_1/sdkconfig new file mode 100644 index 0000000000..085c832318 --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1/sdkconfig @@ -0,0 +1,40 @@ +CONFIG_ESP32S3_SPIRAM_SUPPORT=y + +# +# SPI RAM config +# +# CONFIG_SPIRAM_TYPE_AUTO is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set +CONFIG_SPIRAM_TYPE_ESPPSRAM16=y +CONFIG_SPIRAM_SIZE=2097152 + +# +# PSRAM clock and cs IO for ESP32S3 +# +CONFIG_DEFAULT_PSRAM_CLK_IO=30 +CONFIG_DEFAULT_PSRAM_CS_IO=26 +# end of PSRAM clock and cs IO for ESP32S3 + +# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set +# CONFIG_SPIRAM_RODATA is not set +CONFIG_SPIRAM_SPEED_80M=y +# CONFIG_SPIRAM_SPEED_40M is not set +# CONFIG_SPIRAM_SPEED_26M is not set +# CONFIG_SPIRAM_SPEED_20M is not set +CONFIG_SPIRAM=y +CONFIG_SPIRAM_BOOT_INIT=y +# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set +CONFIG_SPIRAM_USE_MEMMAP=y +# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set +# CONFIG_SPIRAM_USE_MALLOC is not set +CONFIG_SPIRAM_MEMTEST=y +# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set +# end of SPI RAM config + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3" +# end of LWIP + From 23e0a25aa2b3ad84191b507e55c73f369356fe4d Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Fri, 3 Dec 2021 15:20:11 -0600 Subject: [PATCH 17/36] add nopsram version of the devkit C --- .../board.c | 61 +++++++++++++++++++ .../mpconfigboard.h | 38 ++++++++++++ .../mpconfigboard.mk | 17 ++++++ .../pins.c | 45 ++++++++++++++ .../sdkconfig | 8 +++ 5 files changed, 169 insertions(+) create mode 100644 ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/board.c create mode 100644 ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h create mode 100644 ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.mk create mode 100644 ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/pins.c create mode 100644 ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/sdkconfig diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/board.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/board.c new file mode 100644 index 0000000000..dd24db581b --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/board.c @@ -0,0 +1,61 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" +#include "mpconfigboard.h" +#include "shared-bindings/microcontroller/Pin.h" + +void board_init(void) { + // USB + common_hal_never_reset_pin(&pin_GPIO19); + common_hal_never_reset_pin(&pin_GPIO20); + + // Debug UART + #ifdef DEBUG + common_hal_never_reset_pin(&pin_GPIO43); + common_hal_never_reset_pin(&pin_GPIO44); + #endif + + // SPI Flash and RAM + common_hal_never_reset_pin(&pin_GPIO26); + common_hal_never_reset_pin(&pin_GPIO27); + common_hal_never_reset_pin(&pin_GPIO28); + common_hal_never_reset_pin(&pin_GPIO29); + common_hal_never_reset_pin(&pin_GPIO30); + common_hal_never_reset_pin(&pin_GPIO31); + common_hal_never_reset_pin(&pin_GPIO32); +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { + +} + +void board_deinit(void) { +} diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h new file mode 100644 index 0000000000..c6df735975 --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.h @@ -0,0 +1,38 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "ESP32-S3-DevKitC-1-nopsram" +#define MICROPY_HW_MCU_NAME "ESP32S3" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO48) + +#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) + +#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n") + +#define AUTORESET_DELAY_MS 500 diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.mk new file mode 100644 index 0000000000..f850a9c5b3 --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.mk @@ -0,0 +1,17 @@ +USB_VID = 0x239A +USB_PID = 0x7003 +USB_PRODUCT = "ESP32-S3-DevKitC-1-nopsram" +USB_MANUFACTURER = "Espressif" + +IDF_TARGET = esp32s3 + +INTERNAL_FLASH_FILESYSTEM = 1 +LONGINT_IMPL = MPZ + +# The default queue depth of 16 overflows on release builds, +# so increase it to 32. +CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32 + +CIRCUITPY_ESP_FLASH_MODE=dio +CIRCUITPY_ESP_FLASH_FREQ=80m +CIRCUITPY_ESP_FLASH_SIZE=8MB diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/pins.c b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/pins.c new file mode 100644 index 0000000000..b1d515c306 --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/pins.c @@ -0,0 +1,45 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) }, + { MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, + { MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) }, + { MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) }, + { MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) }, + { MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) }, + { MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38) }, + { MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_IO41), MP_ROM_PTR(&pin_GPIO41) }, + { MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) }, + { MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_TXD0), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_TXD1), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_IO45), MP_ROM_PTR(&pin_GPIO45) }, + { MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) }, + { MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) }, + { MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) }, + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO48) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/sdkconfig b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/sdkconfig new file mode 100644 index 0000000000..a162344cfb --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/sdkconfig @@ -0,0 +1,8 @@ +CONFIG_ESP32S3_SPIRAM_SUPPORT=n + +# +# LWIP +# +CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3" +# end of LWIP + From 840e8b40f3b6d9e0426b697a9683bcb4cce97e79 Mon Sep 17 00:00:00 2001 From: Radomir Dopieralski Date: Fri, 3 Dec 2021 21:53:30 +0100 Subject: [PATCH 18/36] Update Stage to 1.2.3 to work around display backlight problems Works around #5476 --- frozen/circuitpython-stage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frozen/circuitpython-stage b/frozen/circuitpython-stage index 2c89a32906..3bdd335452 160000 --- a/frozen/circuitpython-stage +++ b/frozen/circuitpython-stage @@ -1 +1 @@ -Subproject commit 2c89a329063848bcd7dba6af6fb6c9d6036dd4f2 +Subproject commit 3bdd335452ff14a53d1e840de043e3159cb3b829 From d6665e2a595bb319865bf08f22154a1fe456dd0b Mon Sep 17 00:00:00 2001 From: Clay Date: Fri, 3 Dec 2021 11:44:28 +0000 Subject: [PATCH 19/36] Translated using Weblate (Russian) Currently translated at 35.8% (369 of 1028 strings) Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/ru/ --- locale/ru.po | 54 ++++++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/locale/ru.po b/locale/ru.po index cb190dede4..9c8da59303 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2021-11-29 12:53+0000\n" +"PO-Revision-Date: 2021-12-04 12:51+0000\n" "Last-Translator: Clay \n" "Language-Team: none\n" "Language: ru\n" @@ -74,16 +74,17 @@ msgstr "%%c требует int или char" #, c-format msgid "" "%d address pins, %d rgb pins and %d tiles indicate a height of %d, not %d" -msgstr "" -"%d адресные выводы, %d rgb выводы и %d плитки указывают высоту %d а не %d" +msgstr "%d адресные пины, %d rgb пины и %d плитки указывают высоту %d а не %d" #: shared-bindings/microcontroller/Pin.c +#, fuzzy msgid "%q and %q contain duplicate pins" -msgstr "%q и %q содержат повторяющиеся выводы" +msgstr "%q и %q содержат пины-дупликаты" #: shared-bindings/microcontroller/Pin.c +#, fuzzy msgid "%q contains duplicate pins" -msgstr "%q содержит повторяющиеся выводы" +msgstr "%q содержит пины-дупликаты" #: ports/atmel-samd/common-hal/sdioio/SDCard.c msgid "%q failure: %d" @@ -170,7 +171,7 @@ msgstr "%q вне диапазона" #: ports/atmel-samd/common-hal/microcontroller/Pin.c msgid "%q pin invalid" -msgstr "Вывод %q не допустим" +msgstr "Пин %q не допустим" #: shared-bindings/fontio/BuiltinFont.c msgid "%q should be an int" @@ -434,7 +435,7 @@ msgstr "Все каналы событий синхронизации уже и #: shared-bindings/pwmio/PWMOut.c msgid "All timers for this pin are in use" -msgstr "Все таймеры для этого вывода уже используются" +msgstr "Все таймеры для этого Пина уже используются" #: ports/atmel-samd/common-hal/_pew/PewPew.c #: ports/atmel-samd/common-hal/audioio/AudioOut.c @@ -472,7 +473,7 @@ msgstr "Поиск сетей wifi уже происходит" #: ports/cxd56/common-hal/analogio/AnalogIn.c msgid "AnalogIn not supported on given pin" -msgstr "AnalogIn не поддерживается на данном выводе" +msgstr "AnalogIn не поддерживается на данном пине" #: ports/cxd56/common-hal/analogio/AnalogOut.c #: ports/mimxrt10xx/common-hal/analogio/AnalogOut.c @@ -487,7 +488,7 @@ msgstr "AnalogOut имеет только 16 бит. Значение должн #: ports/atmel-samd/common-hal/analogio/AnalogOut.c msgid "AnalogOut not supported on given pin" -msgstr "AnalogOut не поддерживается на данном выводе" +msgstr "AnalogOut не поддерживается на данном пине" #: ports/stm/common-hal/audiopwmio/PWMAudioOut.c msgid "Another PWMAudioOut is already active" @@ -556,8 +557,7 @@ msgstr "Ниже минимальной частоты кадров" #: ports/raspberrypi/common-hal/audiobusio/I2SOut.c msgid "Bit clock and word select must be sequential pins" msgstr "" -"Битовый тактовый генератор и выбор слова должны быть последовательными " -"выводами" +"Битовый тактовый генератор и выбор слова должны быть последовательными пинами" #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c msgid "Bit clock and word select must share a clock unit" @@ -588,7 +588,7 @@ msgstr "Для управления потоком требуется как RX, #: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c msgid "Both pins must support hardware interrupts" -msgstr "Оба вывода должны поддерживать аппаратные прерывания" +msgstr "Оба пина должны поддерживать аппаратные прерывания" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c @@ -663,7 +663,7 @@ msgstr "Буферы должны быть одинакового размера #: ports/raspberrypi/common-hal/paralleldisplay/ParallelBus.c #, c-format msgid "Bus pin %d is already in use" -msgstr "Вывод шины %d уже используется" +msgstr "Пин шины %d уже используется" #: shared-bindings/_bleio/UUID.c msgid "Byte buffer must be 16 bytes." @@ -687,7 +687,7 @@ msgstr "Вызовите super().__init__() перед обращением к #: ports/espressif/common-hal/alarm/pin/PinAlarm.c msgid "Can only alarm on RTC IO from deep sleep." -msgstr "Сигнал из глубокого сна может подаваться только на выводе RTC IO." +msgstr "Сигнал из глубокого сна может подаваться только на пине RTC IO." #: ports/espressif/common-hal/alarm/pin/PinAlarm.c msgid "Can only alarm on one low pin while others alarm high from deep sleep." @@ -1265,8 +1265,9 @@ msgid "Insufficient encryption" msgstr "Недостаточное шифрование" #: ports/espressif/common-hal/wifi/Radio.c +#, fuzzy msgid "Interface must be started" -msgstr "" +msgstr "Интерфейс должен быть запущен" #: ports/atmel-samd/audio_dma.c ports/raspberrypi/audio_dma.c msgid "Internal audio buffer too small" @@ -1561,9 +1562,9 @@ msgstr "" "Отсутствует first_out_pin. Инструкция %d вводит (shifts out) на вывод(ы)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c -#, c-format +#, c-format, fuzzy msgid "Missing first_in_pin. Instruction %d waits based on pin" -msgstr "" +msgstr "Отсутствует first_in_pin. Инструкция %d ожидает на основе вывода" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c #, c-format @@ -1687,7 +1688,7 @@ msgstr "Свободные GCLK отсутствуют" #: shared-bindings/os/__init__.c msgid "No hardware random available" -msgstr "" +msgstr "Отсутствует аппаратный генератор случайных чисел" #: ports/atmel-samd/common-hal/ps2io/Ps2.c msgid "No hardware support on clk pin" @@ -1705,7 +1706,7 @@ msgstr "Нет in в программе" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "No in or out in program" -msgstr "" +msgstr "В программе отсутствует ввод или вывод" #: shared-bindings/aesio/aes.c msgid "No key was specified" @@ -1718,7 +1719,7 @@ msgstr "Нет поддержки длинных целых чисел (long int #: shared-module/usb_hid/__init__.c #, c-format msgid "No more than %d HID devices allowed" -msgstr "" +msgstr "Допускается не более %d HID устройств" #: shared-bindings/wifi/Radio.c msgid "No network with that ssid" @@ -1726,7 +1727,7 @@ msgstr "Нет сети с этим ssid" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c msgid "No out in program" -msgstr "" +msgstr "В программе отсутствует вывод" #: ports/atmel-samd/common-hal/busio/I2C.c #: ports/espressif/common-hal/busio/I2C.c @@ -1773,11 +1774,12 @@ msgstr "Не подключено" #: shared-bindings/audiobusio/I2SOut.c shared-bindings/audioio/AudioOut.c #: shared-bindings/audiopwmio/PWMAudioOut.c msgid "Not playing" -msgstr "" +msgstr "Не играет" #: shared-bindings/_bleio/__init__.c +#, fuzzy msgid "Not settable" -msgstr "" +msgstr "Не устанавливается" #: ports/espressif/common-hal/paralleldisplay/ParallelBus.c #, c-format @@ -1797,8 +1799,9 @@ msgstr "" #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/raspberrypi/common-hal/audiobusio/PDMIn.c +#, fuzzy msgid "Only 8 or 16 bit mono with " -msgstr "" +msgstr "Только 8- или 16-битное моно с " #: ports/espressif/common-hal/wifi/__init__.c msgid "Only IPv4 addresses supported" @@ -4576,8 +4579,9 @@ msgid "zi must be an ndarray" msgstr "" #: extmod/ulab/code/scipy/signal/signal.c +#, fuzzy msgid "zi must be of float type" -msgstr "" +msgstr "zi должно быть типа float" #: extmod/ulab/code/scipy/signal/signal.c msgid "zi must be of shape (n_section, 2)" From 1a99ce5eb37cef6ee879c57f1027af905b18d4c4 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Sat, 4 Dec 2021 08:56:42 -0600 Subject: [PATCH 20/36] espressif: busio.SPI: Use SPI_DMA_CH_AUTO All 3 micros we care about (S2, S3, C3) state in the documentation that DMA channel can be specified as SPI_DMA_CH_AUTO. Specifying a specific DMA channel explicitly doesn't _ever_ work on ESP32-S3, so no SPI bus could be used. Testing performed: On the ESP32-S3-DevKitC, used neopixel_spi to turn the onboard neopixel red, green, and blue --- ports/espressif/common-hal/busio/SPI.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/espressif/common-hal/busio/SPI.c b/ports/espressif/common-hal/busio/SPI.c index fee533e755..09c29084ac 100644 --- a/ports/espressif/common-hal/busio/SPI.c +++ b/ports/espressif/common-hal/busio/SPI.c @@ -93,7 +93,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self, mp_raise_ValueError(translate("All SPI peripherals are in use")); } - esp_err_t result = spi_bus_initialize(self->host_id, &bus_config, self->host_id /* dma channel */); + esp_err_t result = spi_bus_initialize(self->host_id, &bus_config, SPI_DMA_CH_AUTO); if (result == ESP_ERR_NO_MEM) { mp_raise_msg(&mp_type_MemoryError, translate("ESP-IDF memory allocation failed")); } else if (result == ESP_ERR_INVALID_ARG) { From 1207bfced987bd4c47ddc9c436a62b8dd22abf76 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Sat, 4 Dec 2021 08:16:37 -0600 Subject: [PATCH 21/36] espressif: Use detected size of spiram --- ports/espressif/supervisor/port.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/ports/espressif/supervisor/port.c b/ports/espressif/supervisor/port.c index 277777a332..c8cb344aae 100644 --- a/ports/espressif/supervisor/port.c +++ b/ports/espressif/supervisor/port.c @@ -77,6 +77,10 @@ #include "esp_debug_helpers.h" +#ifdef CONFIG_SPIRAM +#include "esp32/spiram.h" +#endif + #define HEAP_SIZE (48 * 1024) uint32_t *heap; @@ -158,8 +162,11 @@ safe_mode_t port_init(void) { #endif #ifdef CONFIG_SPIRAM - heap = (uint32_t *)(DRAM0_CACHE_ADDRESS_HIGH - CONFIG_SPIRAM_SIZE); - heap_size = CONFIG_SPIRAM_SIZE / sizeof(uint32_t); + if (esp_spiram_is_initialized()) { + size_t spiram_size = esp_spiram_get_size(); + heap = (uint32_t *)(SOC_EXTRAM_DATA_HIGH - spiram_size); + heap_size = spiram_size / sizeof(uint32_t); + } #endif if (heap == NULL) { From bc7f024545fb6d9c6655a4f91ebf6fa6824162b9 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Sat, 4 Dec 2021 08:12:19 -0600 Subject: [PATCH 22/36] espressif: Add esp32s3_box This module has 16MB flash, 8MB PSRAM, as well as a display & speakers. --- .../boards/espressif_esp32s3_box/board.c | 66 +++++++++++++++++++ .../espressif_esp32s3_box/mpconfigboard.h | 36 ++++++++++ .../espressif_esp32s3_box/mpconfigboard.mk | 17 +++++ .../boards/espressif_esp32s3_box/pins.c | 64 ++++++++++++++++++ .../boards/espressif_esp32s3_box/sdkconfig | 9 +++ 5 files changed, 192 insertions(+) create mode 100644 ports/espressif/boards/espressif_esp32s3_box/board.c create mode 100644 ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h create mode 100644 ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.mk create mode 100644 ports/espressif/boards/espressif_esp32s3_box/pins.c create mode 100644 ports/espressif/boards/espressif_esp32s3_box/sdkconfig diff --git a/ports/espressif/boards/espressif_esp32s3_box/board.c b/ports/espressif/boards/espressif_esp32s3_box/board.c new file mode 100644 index 0000000000..dbe64077de --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_box/board.c @@ -0,0 +1,66 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" +#include "mpconfigboard.h" +#include "shared-bindings/microcontroller/Pin.h" + +void board_init(void) { + // USB + common_hal_never_reset_pin(&pin_GPIO19); + common_hal_never_reset_pin(&pin_GPIO20); + + // Debug UART + #ifdef DEBUG + common_hal_never_reset_pin(&pin_GPIO43); + common_hal_never_reset_pin(&pin_GPIO44); + #endif + + // SPI Flash and RAM + common_hal_never_reset_pin(&pin_GPIO26); + common_hal_never_reset_pin(&pin_GPIO27); + common_hal_never_reset_pin(&pin_GPIO28); + common_hal_never_reset_pin(&pin_GPIO29); + common_hal_never_reset_pin(&pin_GPIO30); + common_hal_never_reset_pin(&pin_GPIO31); + common_hal_never_reset_pin(&pin_GPIO32); + common_hal_never_reset_pin(&pin_GPIO33); + common_hal_never_reset_pin(&pin_GPIO34); + common_hal_never_reset_pin(&pin_GPIO35); + common_hal_never_reset_pin(&pin_GPIO36); + common_hal_never_reset_pin(&pin_GPIO37); +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { + +} + +void board_deinit(void) { +} diff --git a/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h b/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h new file mode 100644 index 0000000000..b8a2207f93 --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h @@ -0,0 +1,36 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +// Micropython setup + +#define MICROPY_HW_BOARD_NAME "ESP32-S3-Box-2.5" +#define MICROPY_HW_MCU_NAME "ESP32S3" + +#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) + +#define BOARD_USER_SAFE_MODE_ACTION translate("pressing boot button at start up.\n") + +#define AUTORESET_DELAY_MS 500 diff --git a/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.mk new file mode 100644 index 0000000000..eb3cf3a30e --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.mk @@ -0,0 +1,17 @@ +USB_VID = 0x239A +USB_PID = 0x7003 +USB_PRODUCT = "ESP32-S3-Box-2.5" +USB_MANUFACTURER = "Espressif" + +IDF_TARGET = esp32s3 + +INTERNAL_FLASH_FILESYSTEM = 1 +LONGINT_IMPL = MPZ + +# The default queue depth of 16 overflows on release builds, +# so increase it to 32. +CFLAGS += -DCFG_TUD_TASK_QUEUE_SZ=32 + +CIRCUITPY_ESP_FLASH_MODE=dio +CIRCUITPY_ESP_FLASH_FREQ=80m +CIRCUITPY_ESP_FLASH_SIZE=16MB diff --git a/ports/espressif/boards/espressif_esp32s3_box/pins.c b/ports/espressif/boards/espressif_esp32s3_box/pins.c new file mode 100644 index 0000000000..b4fd11a298 --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_box/pins.c @@ -0,0 +1,64 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + // First PMOD connector + { MP_ROM_QSTR(MP_QSTR_G9), MP_ROM_PTR(&pin_GPIO9) }, + + { MP_ROM_QSTR(MP_QSTR_U0TXD), MP_ROM_PTR(&pin_GPIO43) }, + { MP_ROM_QSTR(MP_QSTR_G43), MP_ROM_PTR(&pin_GPIO43) }, + + { MP_ROM_QSTR(MP_QSTR_U0RXD), MP_ROM_PTR(&pin_GPIO44) }, + { MP_ROM_QSTR(MP_QSTR_G44), MP_ROM_PTR(&pin_GPIO44) }, + + { MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_GPIO10) }, + { MP_ROM_QSTR(MP_QSTR_G10), MP_ROM_PTR(&pin_GPIO10) }, + + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_G11), MP_ROM_PTR(&pin_GPIO11) }, + + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_G13), MP_ROM_PTR(&pin_GPIO13) }, + + { MP_ROM_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_G12), MP_ROM_PTR(&pin_GPIO12) }, + + { MP_ROM_QSTR(MP_QSTR_G14), MP_ROM_PTR(&pin_GPIO14) }, + + // Second PMOD connector + { MP_ROM_QSTR(MP_QSTR_G38), MP_ROM_PTR(&pin_GPIO38) }, + { MP_ROM_QSTR(MP_QSTR_G39), MP_ROM_PTR(&pin_GPIO39) }, + { MP_ROM_QSTR(MP_QSTR_SCL2), MP_ROM_PTR(&pin_GPIO40) }, + { MP_ROM_QSTR(MP_QSTR_G40), MP_ROM_PTR(&pin_GPIO40) }, + { MP_ROM_QSTR(MP_QSTR_SDA2), MP_ROM_PTR(&pin_GPIO41) }, + { MP_ROM_QSTR(MP_QSTR_G41), MP_ROM_PTR(&pin_GPIO41) }, + { MP_ROM_QSTR(MP_QSTR_G42), MP_ROM_PTR(&pin_GPIO42) }, + { MP_ROM_QSTR(MP_QSTR_G21), MP_ROM_PTR(&pin_GPIO21) }, + + // LCD & touchscreen + { MP_ROM_QSTR(MP_QSTR_LCD_DC), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_LCD_CS), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_LCD_MOSI), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_LCD_SCK), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_LCD_RST), MP_ROM_PTR(&pin_GPIO48) }, + { MP_ROM_QSTR(MP_QSTR_LCD_CTRL), MP_ROM_PTR(&pin_GPIO45) }, + { MP_ROM_QSTR(MP_QSTR_CTP_INT), MP_ROM_PTR(&pin_GPIO3) }, + + // Audio + { MP_ROM_QSTR(MP_QSTR_I2S_ADC_SDOUT), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_I2S_MCLK), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_I2S_SCLK), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_I2S_LRCK), MP_ROM_PTR(&pin_GPIO47) }, + { MP_ROM_QSTR(MP_QSTR_I2S_CODEC_DSDIN), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_PA_CTRL), MP_ROM_PTR(&pin_GPIO46) }, + { MP_ROM_QSTR(MP_QSTR_MUTE_STATUS), MP_ROM_PTR(&pin_GPIO1) }, + + // Internal I2C bus + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO18) }, + + // boot button, also usable as a software button + { MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO0) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); diff --git a/ports/espressif/boards/espressif_esp32s3_box/sdkconfig b/ports/espressif/boards/espressif_esp32s3_box/sdkconfig new file mode 100644 index 0000000000..73661c9f92 --- /dev/null +++ b/ports/espressif/boards/espressif_esp32s3_box/sdkconfig @@ -0,0 +1,9 @@ +CONFIG_ESP32S3_SPIRAM_SUPPORT=y +CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3" +CONFIG_SPIRAM_BOOT_INIT=y +CONFIG_SPIRAM_MEMTEST=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_SPIRAM_TYPE_AUTO=y +CONFIG_SPIRAM_USE_MALLOC=n +CONFIG_SPIRAM=y From e2abb0e0593c84c80ab6c95b68280d0f54d5fa33 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Sat, 4 Dec 2021 10:19:19 -0600 Subject: [PATCH 23/36] devkitc: update vid/pid in anticipation of allocation from espressif --- .../boards/espressif_esp32s3_devkitc_1/mpconfigboard.mk | 2 +- .../espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.mk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.mk index aadc71a3d6..b3c18a55fe 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.mk @@ -1,4 +1,4 @@ -USB_VID = 0x239A +USB_VID = 0x303A USB_PID = 0x7003 USB_PRODUCT = "ESP32-S3-DevKitC-1" USB_MANUFACTURER = "Espressif" diff --git a/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.mk index f850a9c5b3..95cc39a376 100644 --- a/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_devkitc_1_nopsram/mpconfigboard.mk @@ -1,5 +1,5 @@ -USB_VID = 0x239A -USB_PID = 0x7003 +USB_VID = 0x303A +USB_PID = 0x7005 USB_PRODUCT = "ESP32-S3-DevKitC-1-nopsram" USB_MANUFACTURER = "Espressif" From 2ad877a907f6b883fd8a212151060ff61e964940 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Sat, 4 Dec 2021 14:58:48 -0600 Subject: [PATCH 24/36] Fix VID/PID of esp32-box --- ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.mk b/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.mk index eb3cf3a30e..285957b4e8 100644 --- a/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.mk +++ b/ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.mk @@ -1,5 +1,5 @@ -USB_VID = 0x239A -USB_PID = 0x7003 +USB_VID = 0x303A +USB_PID = 0x7007 USB_PRODUCT = "ESP32-S3-Box-2.5" USB_MANUFACTURER = "Espressif" From e352048db91bbd2f267ffdf850d841607f84cfc6 Mon Sep 17 00:00:00 2001 From: Seth Kerr Date: Sun, 5 Dec 2021 14:49:48 -0700 Subject: [PATCH 25/36] Add ODT Cast-Away RP2040 --- .../boards/odt_cast_away_rp2040/board.c | 40 ++++++++++++++++++ .../odt_cast_away_rp2040/mpconfigboard.h | 14 +++++++ .../odt_cast_away_rp2040/mpconfigboard.mk | 11 +++++ .../pico-sdk-configboard.h | 3 ++ .../boards/odt_cast_away_rp2040/pins.c | 41 +++++++++++++++++++ 5 files changed, 109 insertions(+) create mode 100644 ports/raspberrypi/boards/odt_cast_away_rp2040/board.c create mode 100644 ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h create mode 100644 ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.mk create mode 100644 ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h create mode 100644 ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/board.c b/ports/raspberrypi/boards/odt_cast_away_rp2040/board.c new file mode 100644 index 0000000000..de6e424ed9 --- /dev/null +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/board.c @@ -0,0 +1,40 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" + +void board_init(void) { +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { +} + +void board_deinit(void) { +} diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h new file mode 100644 index 0000000000..db2b871bb0 --- /dev/null +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.h @@ -0,0 +1,14 @@ +#define MICROPY_HW_BOARD_NAME "Oak Dev Tech Cast-Away RP2040" +#define MICROPY_HW_MCU_NAME "rp2040" + +#define MICROPY_HW_NEOPIXEL (&pin_GPIO18) + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO1) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO0) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO2) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO3) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO4) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO14) +#define DEFAULT_UART_BUS_TX (&pin_GPIO15) diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.mk new file mode 100644 index 0000000000..40f3582005 --- /dev/null +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/mpconfigboard.mk @@ -0,0 +1,11 @@ +USB_VID = 0x1209 +USB_PID = 0x4DF2 +USB_PRODUCT = "CAST AWAY RP2040" +USB_MANUFACTURER = "Oak Dev Tech" + +CHIP_VARIANT = RP2040 +CHIP_FAMILY = rp2 + +EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ" + +CIRCUITPY__EVE = 1 diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h new file mode 100644 index 0000000000..7d1b96b85a --- /dev/null +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/pico-sdk-configboard.h @@ -0,0 +1,3 @@ +// Put board-specific pico-sdk definitions here. This file must exist. +// Allow extra time for xosc to start. +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c b/ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c new file mode 100644 index 0000000000..8686f7ae0b --- /dev/null +++ b/ports/raspberrypi/boards/odt_cast_away_rp2040/pins.c @@ -0,0 +1,41 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_global_dict_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO1) }, + { MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) }, + + { MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_GPIO17) }, + + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO18) }, + + { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_D28), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) }, + + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, + { MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) }, + { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table); From db6e58dc2d789502af2deaa435e5402c1ae801d3 Mon Sep 17 00:00:00 2001 From: Seth Kerr Date: Sun, 5 Dec 2021 15:02:18 -0700 Subject: [PATCH 26/36] run precommit locally and passed --- locale/circuitpython.pot | 12 +++++++----- .../boards/adafruit_feather_esp32s2_tft/board.c | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index 835ef9538b..4cd4de67d1 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -574,7 +574,7 @@ msgstr "" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "" @@ -1462,7 +1462,7 @@ msgstr "" msgid "Key must be 16, 24, or 32 bytes long" msgstr "" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2090,7 +2090,7 @@ msgstr "" msgid "Sample rate too high. It must be less than %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2351,7 +2351,7 @@ msgstr "" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "" @@ -3950,12 +3950,14 @@ msgstr "" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4462,7 +4464,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c index adc4ae1b01..c6d9b581b3 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c @@ -86,7 +86,7 @@ void board_init(void) { common_hal_busio_spi_never_reset(spi); - displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus; + displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus; bus->base.type = &displayio_fourwire_type; common_hal_displayio_fourwire_construct( @@ -99,7 +99,7 @@ void board_init(void) { 0, // polarity 0 // phase ); - displayio_display_obj_t* display = &displays[0].display; + displayio_display_obj_t *display = &displays[0].display; display->base.type = &displayio_display_type; // workaround as board_init() is called before reset_port() in main.c From 1a1f0158951d0e71f654806014608e606298620d Mon Sep 17 00:00:00 2001 From: Seth Kerr Date: Sun, 5 Dec 2021 15:09:56 -0700 Subject: [PATCH 27/36] fixing files changed by precommit --- locale/circuitpython.pot | 12 +++++------- .../boards/adafruit_feather_esp32s2_tft/board.c | 4 ++-- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index 4cd4de67d1..835ef9538b 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -574,7 +574,7 @@ msgstr "" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/IS31FL3741.c +#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "" @@ -1462,7 +1462,7 @@ msgstr "" msgid "Key must be 16, 24, or 32 bytes long" msgstr "" -#: shared-module/is31fl3741/IS31FL3741.c +#: shared-module/is31fl3741/is31fl3741.c msgid "LED mappings must match display size" msgstr "" @@ -2090,7 +2090,7 @@ msgstr "" msgid "Sample rate too high. It must be less than %d" msgstr "" -#: shared-bindings/is31fl3741/IS31FL3741.c +#: shared-bindings/is31fl3741/is31fl3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2351,7 +2351,7 @@ msgstr "" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "" @@ -3950,14 +3950,12 @@ msgstr "" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h -#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h -#: ports/espressif/boards/espressif_esp32s3_box/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4464,7 +4462,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/IS31FL3741.c +#: shared-bindings/is31fl3741/is31fl3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c b/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c index c6d9b581b3..adc4ae1b01 100644 --- a/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c +++ b/ports/espressif/boards/adafruit_feather_esp32s2_tft/board.c @@ -86,7 +86,7 @@ void board_init(void) { common_hal_busio_spi_never_reset(spi); - displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus; + displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus; bus->base.type = &displayio_fourwire_type; common_hal_displayio_fourwire_construct( @@ -99,7 +99,7 @@ void board_init(void) { 0, // polarity 0 // phase ); - displayio_display_obj_t *display = &displays[0].display; + displayio_display_obj_t* display = &displays[0].display; display->base.type = &displayio_display_type; // workaround as board_init() is called before reset_port() in main.c From bde65d0f28365da5214f9df4449f2a23bcf7408f Mon Sep 17 00:00:00 2001 From: Kong Wai Weng Date: Mon, 6 Dec 2021 17:26:00 +0800 Subject: [PATCH 28/36] Added Maker Nano RP2040 --- .../boards/cytron_maker_nano_rp2040/board.c | 40 ++++++++++++++ .../cytron_maker_nano_rp2040/mpconfigboard.h | 12 ++++ .../cytron_maker_nano_rp2040/mpconfigboard.mk | 15 +++++ .../pico-sdk-configboard.h | 4 ++ .../boards/cytron_maker_nano_rp2040/pins.c | 55 +++++++++++++++++++ 5 files changed, 126 insertions(+) create mode 100644 ports/raspberrypi/boards/cytron_maker_nano_rp2040/board.c create mode 100644 ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h create mode 100644 ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.mk create mode 100644 ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h create mode 100644 ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/board.c b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/board.c new file mode 100644 index 0000000000..b583e7bf11 --- /dev/null +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/board.c @@ -0,0 +1,40 @@ +/* + * This file is part of the MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2021 Wai Weng for Cytron Technologies + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "supervisor/board.h" + +void board_init(void) { +} + +bool board_requests_safe_mode(void) { + return false; +} + +void reset_board(void) { +} + +void board_deinit(void) { +} diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h new file mode 100644 index 0000000000..2d182e78c9 --- /dev/null +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.h @@ -0,0 +1,12 @@ +#define MICROPY_HW_BOARD_NAME "Cytron Maker Nano RP2040" +#define MICROPY_HW_MCU_NAME "rp2040" + +#define DEFAULT_I2C_BUS_SCL (&pin_GPIO1) +#define DEFAULT_I2C_BUS_SDA (&pin_GPIO0) + +#define DEFAULT_SPI_BUS_SCK (&pin_GPIO18) +#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO19) +#define DEFAULT_SPI_BUS_MISO (&pin_GPIO16) + +#define DEFAULT_UART_BUS_RX (&pin_GPIO1) +#define DEFAULT_UART_BUS_TX (&pin_GPIO0) diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.mk b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.mk new file mode 100644 index 0000000000..fc5f8ead36 --- /dev/null +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/mpconfigboard.mk @@ -0,0 +1,15 @@ +USB_VID = 0x2E8A +USB_PID = 0x100f +USB_PRODUCT = "Maker Nano RP2040" +USB_MANUFACTURER = "Cytron" + +CHIP_VARIANT = RP2040 +CHIP_FAMILY = rp2 + +EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ" + +CIRCUITPY__EVE = 1 + +# Include these Python libraries in firmware. +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel +FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SimpleIO diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h new file mode 100644 index 0000000000..a41131dd22 --- /dev/null +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pico-sdk-configboard.h @@ -0,0 +1,4 @@ +// Put board-specific pico-sdk definitions here. This file must exist. + +// Allow extra time for xosc to start. +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c new file mode 100644 index 0000000000..30fe8d64a9 --- /dev/null +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c @@ -0,0 +1,55 @@ +#include "shared-bindings/board/__init__.h" + +STATIC const mp_rom_map_elem_t board_module_globals_table[] = { + CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS + + { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, + { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, + + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_GP2), MP_ROM_PTR(&pin_GPIO2) }, + + { MP_ROM_QSTR(MP_QSTR_GP3), MP_ROM_PTR(&pin_GPIO3) }, + { MP_ROM_QSTR(MP_QSTR_GP4), MP_ROM_PTR(&pin_GPIO4) }, + { MP_ROM_QSTR(MP_QSTR_GP5), MP_ROM_PTR(&pin_GPIO5) }, + { MP_ROM_QSTR(MP_QSTR_GP6), MP_ROM_PTR(&pin_GPIO6) }, + { MP_ROM_QSTR(MP_QSTR_GP7), MP_ROM_PTR(&pin_GPIO7) }, + { MP_ROM_QSTR(MP_QSTR_GP8), MP_ROM_PTR(&pin_GPIO8) }, + { MP_ROM_QSTR(MP_QSTR_GP9), MP_ROM_PTR(&pin_GPIO9) }, + + { MP_ROM_QSTR(MP_QSTR_RGB), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_GP11), MP_ROM_PTR(&pin_GPIO11) }, + + { MP_ROM_QSTR(MP_QSTR_GP12), MP_ROM_PTR(&pin_GPIO12) }, + { MP_ROM_QSTR(MP_QSTR_GP13), MP_ROM_PTR(&pin_GPIO13) }, + { MP_ROM_QSTR(MP_QSTR_GP14), MP_ROM_PTR(&pin_GPIO14) }, + { MP_ROM_QSTR(MP_QSTR_GP15), MP_ROM_PTR(&pin_GPIO15) }, + { MP_ROM_QSTR(MP_QSTR_GP16), MP_ROM_PTR(&pin_GPIO16) }, + { MP_ROM_QSTR(MP_QSTR_GP17), MP_ROM_PTR(&pin_GPIO17) }, + { MP_ROM_QSTR(MP_QSTR_GP18), MP_ROM_PTR(&pin_GPIO18) }, + { MP_ROM_QSTR(MP_QSTR_GP19), MP_ROM_PTR(&pin_GPIO19) }, + + { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_GP20), MP_ROM_PTR(&pin_GPIO20) }, + + { MP_ROM_QSTR(MP_QSTR_BUZZER), MP_ROM_PTR(&pin_GPIO22) }, + { MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) }, + + { MP_ROM_QSTR(MP_QSTR_GP26_A0), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_GP26), MP_ROM_PTR(&pin_GPIO26) }, + { MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) }, + + { MP_ROM_QSTR(MP_QSTR_GP27_A1), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_GP27), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) }, + + { MP_ROM_QSTR(MP_QSTR_GP28_A2), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_GP28), MP_ROM_PTR(&pin_GPIO28) }, + { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) }, + + { MP_ROM_QSTR(MP_QSTR_GP29_A3), MP_ROM_PTR(&pin_GPIO29) }, + { MP_ROM_QSTR(MP_QSTR_GP29), MP_ROM_PTR(&pin_GPIO29) }, + { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO29) }, +}; +MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From 7ee825370e0361bb28a720997800a5824f5c936c Mon Sep 17 00:00:00 2001 From: Kong Wai Weng Date: Mon, 6 Dec 2021 17:28:45 +0800 Subject: [PATCH 29/36] Use 4x space instead of tab. --- ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c index 30fe8d64a9..19b4ffc6fa 100644 --- a/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c +++ b/ports/raspberrypi/boards/cytron_maker_nano_rp2040/pins.c @@ -6,7 +6,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) }, { MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) }, - { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO2) }, + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_GP2), MP_ROM_PTR(&pin_GPIO2) }, { MP_ROM_QSTR(MP_QSTR_GP3), MP_ROM_PTR(&pin_GPIO3) }, @@ -17,7 +17,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_GP8), MP_ROM_PTR(&pin_GPIO8) }, { MP_ROM_QSTR(MP_QSTR_GP9), MP_ROM_PTR(&pin_GPIO9) }, - { MP_ROM_QSTR(MP_QSTR_RGB), MP_ROM_PTR(&pin_GPIO11) }, + { MP_ROM_QSTR(MP_QSTR_RGB), MP_ROM_PTR(&pin_GPIO11) }, { MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO11) }, { MP_ROM_QSTR(MP_QSTR_GP11), MP_ROM_PTR(&pin_GPIO11) }, @@ -30,7 +30,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_GP18), MP_ROM_PTR(&pin_GPIO18) }, { MP_ROM_QSTR(MP_QSTR_GP19), MP_ROM_PTR(&pin_GPIO19) }, - { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO20) }, + { MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO20) }, { MP_ROM_QSTR(MP_QSTR_GP20), MP_ROM_PTR(&pin_GPIO20) }, { MP_ROM_QSTR(MP_QSTR_BUZZER), MP_ROM_PTR(&pin_GPIO22) }, @@ -48,7 +48,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_GP28), MP_ROM_PTR(&pin_GPIO28) }, { MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) }, - { MP_ROM_QSTR(MP_QSTR_GP29_A3), MP_ROM_PTR(&pin_GPIO29) }, + { MP_ROM_QSTR(MP_QSTR_GP29_A3), MP_ROM_PTR(&pin_GPIO29) }, { MP_ROM_QSTR(MP_QSTR_GP29), MP_ROM_PTR(&pin_GPIO29) }, { MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO29) }, }; From 7cbb30806aa6c31f83b02e8b102c986bad9042fb Mon Sep 17 00:00:00 2001 From: Dan Halbert Date: Mon, 6 Dec 2021 08:36:24 -0500 Subject: [PATCH 30/36] minor .py changes due to blacken update --- tests/extmod/utimeq1.py | 1 - tools/pydfu.py | 1 - 2 files changed, 2 deletions(-) diff --git a/tests/extmod/utimeq1.py b/tests/extmod/utimeq1.py index 234d7a31dd..ddbc969afb 100644 --- a/tests/extmod/utimeq1.py +++ b/tests/extmod/utimeq1.py @@ -17,7 +17,6 @@ if DEBUG: def dprint(*v): print(*v) - else: def dprint(*v): diff --git a/tools/pydfu.py b/tools/pydfu.py index 26e40f5613..ce34b08a58 100755 --- a/tools/pydfu.py +++ b/tools/pydfu.py @@ -83,7 +83,6 @@ if "length" in inspect.getfullargspec(usb.util.get_string).args: def get_string(dev, index): return usb.util.get_string(dev, 255, index) - else: # PyUSB 1.0.0.b2 dropped the length argument def get_string(dev, index): From fae6d47a458778797a10a6fdcc7d3f6b3be77d12 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Mon, 6 Dec 2021 09:52:20 -0600 Subject: [PATCH 31/36] espressif: keep never_reset_pins marked as in use --- ports/espressif/common-hal/microcontroller/Pin.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/espressif/common-hal/microcontroller/Pin.c b/ports/espressif/common-hal/microcontroller/Pin.c index 462fef3ca1..4648fec64d 100644 --- a/ports/espressif/common-hal/microcontroller/Pin.c +++ b/ports/espressif/common-hal/microcontroller/Pin.c @@ -95,8 +95,8 @@ void reset_all_pins(void) { } floating_gpio_reset(i); } - in_use[0] = 0; - in_use[1] = 0; + in_use[0] = never_reset_pins[0]; + in_use[1] = never_reset_pins[1]; } void claim_pin_number(gpio_num_t pin_number) { From b722a2bca1af2a17b6eeacfe98ee8144077c02e9 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Mon, 6 Dec 2021 09:52:55 -0600 Subject: [PATCH 32/36] espressif: pwmout: get rid of not_first_reset special case --- ports/espressif/common-hal/pwmio/PWMOut.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ports/espressif/common-hal/pwmio/PWMOut.c b/ports/espressif/common-hal/pwmio/PWMOut.c index 71cf5c19d0..9ca39c223b 100644 --- a/ports/espressif/common-hal/pwmio/PWMOut.c +++ b/ports/espressif/common-hal/pwmio/PWMOut.c @@ -32,10 +32,9 @@ #define INDEX_EMPTY 0xFF -STATIC bool not_first_reset = false; STATIC uint32_t reserved_timer_freq[LEDC_TIMER_MAX]; STATIC bool varfreq_timers[LEDC_TIMER_MAX]; -STATIC uint8_t reserved_channels[LEDC_CHANNEL_MAX]; +STATIC uint8_t reserved_channels[LEDC_CHANNEL_MAX] = { [0 ... LEDC_CHANNEL_MAX - 1] = INDEX_EMPTY}; STATIC bool never_reset_tim[LEDC_TIMER_MAX]; STATIC bool never_reset_chan[LEDC_CHANNEL_MAX]; @@ -56,7 +55,7 @@ STATIC uint32_t calculate_duty_cycle(uint32_t frequency) { void pwmout_reset(void) { for (size_t i = 0; i < LEDC_CHANNEL_MAX; i++) { - if (reserved_channels[i] != INDEX_EMPTY && not_first_reset) { + if (reserved_channels[i] != INDEX_EMPTY) { ledc_stop(LEDC_LOW_SPEED_MODE, i, 0); } if (!never_reset_chan[i]) { @@ -72,7 +71,6 @@ void pwmout_reset(void) { varfreq_timers[i] = false; } } - not_first_reset = true; } pwmout_result_t common_hal_pwmio_pwmout_construct(pwmio_pwmout_obj_t *self, From 1b5e98e2faecba9310e34945aec83ad4dac43017 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Mon, 6 Dec 2021 09:53:18 -0600 Subject: [PATCH 33/36] esp32s3 box: add display --- .../boards/espressif_esp32s3_box/board.c | 61 +++++++++++++++++++ .../boards/espressif_esp32s3_box/pins.c | 3 + 2 files changed, 64 insertions(+) diff --git a/ports/espressif/boards/espressif_esp32s3_box/board.c b/ports/espressif/boards/espressif_esp32s3_box/board.c index dbe64077de..c425c5c24e 100644 --- a/ports/espressif/boards/espressif_esp32s3_box/board.c +++ b/ports/espressif/boards/espressif_esp32s3_box/board.c @@ -28,7 +28,68 @@ #include "mpconfigboard.h" #include "shared-bindings/microcontroller/Pin.h" +#include "shared-bindings/busio/SPI.h" +#include "shared-bindings/displayio/FourWire.h" +#include "shared-module/displayio/__init__.h" +#include "shared-module/displayio/mipi_constants.h" + +uint8_t display_init_sequence[] = { + 0x01, 0x80, 0x96, // _SWRESET and Delay 150ms + 0x11, 0x80, 0xFF, // _SLPOUT and Delay 500ms + 0x3A, 0x81, 0x55, 0x0A, // _COLMOD and Delay 10ms + 0x36, 0x01, 0x08, // _MADCTL + 0x13, 0x80, 0x0A, // _NORON and Delay 10ms + 0x36, 0x01, 0xC0, // _MADCTL + 0x29, 0x80, 0xFF, // _DISPON and Delay 500ms +}; + void board_init(void) { + busio_spi_obj_t *spi = &displays[0].fourwire_bus.inline_bus; + common_hal_busio_spi_construct(spi, &pin_GPIO7, &pin_GPIO6, NULL); + common_hal_busio_spi_never_reset(spi); + + displayio_fourwire_obj_t *bus = &displays[0].fourwire_bus; + bus->base.type = &displayio_fourwire_type; + common_hal_displayio_fourwire_construct(bus, + spi, + &pin_GPIO4, // TFT_DC Command or data + &pin_GPIO5, // TFT_CS Chip select + &pin_GPIO48, // TFT_RST Reset + 60000000, // Baudrate + 0, // Polarity + 0); // Phase + + displayio_display_obj_t *display = &displays[0].display; + display->base.type = &displayio_display_type; + common_hal_displayio_display_construct(display, + bus, + 320, // Width + 240, // Height + 0, // column start + 0, // row start + 0, // rotation + 16, // Color depth + false, // Grayscale + false, // pixels in a byte share a row. Only valid for depths < 8 + 1, // bytes per cell. Only valid for depths < 8 + false, // reverse_pixels_in_byte. Only valid for depths < 8 + true, // reverse_pixels_in_word + MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command + MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command + MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command + display_init_sequence, + sizeof(display_init_sequence), + &pin_GPIO45, // backlight pin + NO_BRIGHTNESS_COMMAND, + 1.0f, // brightness (ignored) + true, // auto_brightness + false, // single_byte_bounds + false, // data_as_commands + true, // auto_refresh + 60, // native_frames_per_second + true, // backlight_on_high + false); // SH1107_addressing + // USB common_hal_never_reset_pin(&pin_GPIO19); common_hal_never_reset_pin(&pin_GPIO20); diff --git a/ports/espressif/boards/espressif_esp32s3_box/pins.c b/ports/espressif/boards/espressif_esp32s3_box/pins.c index b4fd11a298..73ef15697c 100644 --- a/ports/espressif/boards/espressif_esp32s3_box/pins.c +++ b/ports/espressif/boards/espressif_esp32s3_box/pins.c @@ -1,4 +1,5 @@ #include "shared-bindings/board/__init__.h" +#include "shared-module/displayio/__init__.h" STATIC const mp_rom_map_elem_t board_module_globals_table[] = { CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS @@ -60,5 +61,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = { // boot button, also usable as a software button { MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO0) }, + + { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)} }; MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table); From ea92303b0f42bce1f84b449eed40a5a3daa1f40b Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 6 Dec 2021 19:47:17 +0100 Subject: [PATCH 34/36] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: CircuitPython/main Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/ --- locale/ID.po | 13 ++++++++----- locale/cs.po | 13 ++++++++----- locale/de_DE.po | 13 ++++++++----- locale/el.po | 13 ++++++++----- locale/en_GB.po | 13 ++++++++----- locale/es.po | 13 ++++++++----- locale/fil.po | 13 ++++++++----- locale/fr.po | 13 ++++++++----- locale/hi.po | 13 ++++++++----- locale/it_IT.po | 13 ++++++++----- locale/ja.po | 13 ++++++++----- locale/ko.po | 13 ++++++++----- locale/nl.po | 13 ++++++++----- locale/pl.po | 13 ++++++++----- locale/pt_BR.po | 13 ++++++++----- locale/ru.po | 15 +++++++++------ locale/sv.po | 13 ++++++++----- locale/zh_Latn_pinyin.po | 13 ++++++++----- 18 files changed, 145 insertions(+), 91 deletions(-) diff --git a/locale/ID.po b/locale/ID.po index a145d0048e..b514da6672 100644 --- a/locale/ID.po +++ b/locale/ID.po @@ -584,7 +584,7 @@ msgstr "Kedua pin harus mendukung hardware interrut" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "Kecerahan harus di antara 0-1.0" @@ -1483,7 +1483,7 @@ msgstr "Panjang kata/bit tidak valid" msgid "Key must be 16, 24, or 32 bytes long" msgstr "Panjang kunci harus 16, 24, atau 32 byte" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2125,7 +2125,7 @@ msgstr "Tingkat sampel harus positif" msgid "Sample rate too high. It must be less than %d" msgstr "Nilai sampel terlalu tinggi. Nilai harus kurang dari %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2386,7 +2386,7 @@ msgstr "Tidak dapat mengalokasikan buffer untuk signed conversion" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "Tidak dapat menemukan Tampilan I2C di %x" @@ -3988,12 +3988,14 @@ msgstr "" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4008,6 +4010,7 @@ msgstr "" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4500,7 +4503,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/locale/cs.po b/locale/cs.po index 8a3a920fbb..d587a10fa2 100644 --- a/locale/cs.po +++ b/locale/cs.po @@ -577,7 +577,7 @@ msgstr "" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "" @@ -1465,7 +1465,7 @@ msgstr "" msgid "Key must be 16, 24, or 32 bytes long" msgstr "" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2093,7 +2093,7 @@ msgstr "" msgid "Sample rate too high. It must be less than %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2354,7 +2354,7 @@ msgstr "" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "" @@ -3953,12 +3953,14 @@ msgstr "" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -3973,6 +3975,7 @@ msgstr "" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4465,7 +4468,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/locale/de_DE.po b/locale/de_DE.po index 2ee5eda3e9..407fe3aa10 100644 --- a/locale/de_DE.po +++ b/locale/de_DE.po @@ -585,7 +585,7 @@ msgstr "Beide pins müssen Hardware Interrupts unterstützen" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "Die Helligkeit muss zwischen 0 und 1.0 liegen" @@ -1482,7 +1482,7 @@ msgstr "Ungültige Wort- / Bitlänge" msgid "Key must be 16, 24, or 32 bytes long" msgstr "Der Schlüssel muss 16, 24 oder 32 Byte lang sein" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2122,7 +2122,7 @@ msgstr "Abtastrate muss positiv sein" msgid "Sample rate too high. It must be less than %d" msgstr "Abtastrate zu hoch. Wert muss unter %d liegen" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2386,7 +2386,7 @@ msgstr "Konnte keine Buffer für Vorzeichenumwandlung allozieren" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "Konnte kein I2C Display finden an %x" @@ -4016,12 +4016,14 @@ msgstr "pow() mit 3 Argumenten erfordert Integer" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4036,6 +4038,7 @@ msgstr "pow() mit 3 Argumenten erfordert Integer" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4533,7 +4536,7 @@ msgstr "watchdog Zeitlimit muss größer als 0 sein" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "breite muss zwischen (inklusive) 2 und 8 liegen, nicht %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "breite muss größer als 0 sein" diff --git a/locale/el.po b/locale/el.po index de46c6c73d..fa9c878990 100644 --- a/locale/el.po +++ b/locale/el.po @@ -574,7 +574,7 @@ msgstr "" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "" @@ -1462,7 +1462,7 @@ msgstr "" msgid "Key must be 16, 24, or 32 bytes long" msgstr "" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2090,7 +2090,7 @@ msgstr "" msgid "Sample rate too high. It must be less than %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2351,7 +2351,7 @@ msgstr "" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "" @@ -3950,12 +3950,14 @@ msgstr "" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -3970,6 +3972,7 @@ msgstr "" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4462,7 +4465,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/locale/en_GB.po b/locale/en_GB.po index 9301346a34..9a4519d444 100644 --- a/locale/en_GB.po +++ b/locale/en_GB.po @@ -585,7 +585,7 @@ msgstr "Both pins must support hardware interrupts" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "Brightness must be 0-1.0" @@ -1477,7 +1477,7 @@ msgstr "Invalid word/bit length" msgid "Key must be 16, 24, or 32 bytes long" msgstr "Key must be 16, 24, or 32 bytes long" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2114,7 +2114,7 @@ msgstr "Sample rate must be positive" msgid "Sample rate too high. It must be less than %d" msgstr "Sample rate too high. It must be less than %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2382,7 +2382,7 @@ msgstr "Unable to allocate buffers for signed conversion" msgid "Unable to create lock" msgstr "Unable to create lock" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "Unable to find I2C display at %x" @@ -3987,12 +3987,14 @@ msgstr "pow() with 3 arguments requires integers" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4007,6 +4009,7 @@ msgstr "pow() with 3 arguments requires integers" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4501,7 +4504,7 @@ msgstr "WatchDog timeout must be greater than 0" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "width must be from 2 to 8 (inclusive), not %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "width must be greater than zero" diff --git a/locale/es.po b/locale/es.po index 330eda2c2a..c13ce15161 100644 --- a/locale/es.po +++ b/locale/es.po @@ -589,7 +589,7 @@ msgstr "Ambos pines deben soportar interrupciones por hardware" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "El brillo debe ser 0-1.0" @@ -1495,7 +1495,7 @@ msgstr "Tamaño no válido de palabra/bit" msgid "Key must be 16, 24, or 32 bytes long" msgstr "La llave debe tener 16, 24 o 32 bytes de longitud" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2142,7 +2142,7 @@ msgstr "Sample rate debe ser positivo" msgid "Sample rate too high. It must be less than %d" msgstr "Frecuencia de muestreo demasiado alta. Debe ser menor a %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2413,7 +2413,7 @@ msgstr "No se pudieron asignar buffers para la conversión con signo" msgid "Unable to create lock" msgstr "No se puede crear bloqueo" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "No se puede encontrar la pantalla I2C en %x" @@ -4033,12 +4033,14 @@ msgstr "pow() con 3 argumentos requiere enteros" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4053,6 +4055,7 @@ msgstr "pow() con 3 argumentos requiere enteros" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4548,7 +4551,7 @@ msgstr "el tiempo de espera del perro guardián debe ser mayor a 0" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "ancho debe estar entre 2 y 8 (inclusivamente), no %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "el ancho debe ser mayor que cero" diff --git a/locale/fil.po b/locale/fil.po index cdf24b9389..b1e47bf1a1 100644 --- a/locale/fil.po +++ b/locale/fil.po @@ -581,7 +581,7 @@ msgstr "Ang parehong mga pin ay dapat na sumusuporta sa hardware interrupts" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "" @@ -1477,7 +1477,7 @@ msgstr "" msgid "Key must be 16, 24, or 32 bytes long" msgstr "" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2110,7 +2110,7 @@ msgstr "Sample rate ay dapat positibo" msgid "Sample rate too high. It must be less than %d" msgstr "Sample rate ay masyadong mataas. Ito ay dapat hindi hiigit sa %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2371,7 +2371,7 @@ msgstr "Hindi ma-allocate ang buffers para sa naka-sign na conversion" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "" @@ -3991,12 +3991,14 @@ msgstr "pow() na may 3 argumento kailangan ng integers" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4011,6 +4013,7 @@ msgstr "pow() na may 3 argumento kailangan ng integers" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4507,7 +4510,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/locale/fr.po b/locale/fr.po index 4e938bae59..bac854ed73 100644 --- a/locale/fr.po +++ b/locale/fr.po @@ -591,7 +591,7 @@ msgstr "Les deux broches doivent supporter les interruptions matérielles" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "La luminosité doit être de 0 à 1.0" @@ -1508,7 +1508,7 @@ msgstr "Longueur de mot / bit invalide" msgid "Key must be 16, 24, or 32 bytes long" msgstr "La clé doit comporter 16, 24 ou 32 octets" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "La disposition des LED doit correspondre à la taille de l'écran" @@ -2154,7 +2154,7 @@ msgstr "Le taux d'échantillonage doit être positif" msgid "Sample rate too high. It must be less than %d" msgstr "Taux d'échantillonage trop élevé. Doit être inférieur à %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "La dimension d'échelle doit être un multiple de 3" @@ -2429,7 +2429,7 @@ msgstr "Impossible d'allouer des tampons pour une conversion signée" msgid "Unable to create lock" msgstr "Impossible de créer un verrou ('lock')" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "Impossible de trouver l'affichage I2C à %x" @@ -4065,12 +4065,14 @@ msgstr "pow() avec 3 arguments nécessite des entiers" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4085,6 +4087,7 @@ msgstr "pow() avec 3 arguments nécessite des entiers" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4580,7 +4583,7 @@ msgstr "watchdog timeout doit être supérieur à 0" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "width doit être entre 2 et 8 (inclusivement), non %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "width doit être plus que zero" diff --git a/locale/hi.po b/locale/hi.po index 7d6327a2ee..12fff21485 100644 --- a/locale/hi.po +++ b/locale/hi.po @@ -574,7 +574,7 @@ msgstr "" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "" @@ -1462,7 +1462,7 @@ msgstr "" msgid "Key must be 16, 24, or 32 bytes long" msgstr "" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2090,7 +2090,7 @@ msgstr "" msgid "Sample rate too high. It must be less than %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2351,7 +2351,7 @@ msgstr "" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "" @@ -3950,12 +3950,14 @@ msgstr "" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -3970,6 +3972,7 @@ msgstr "" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4462,7 +4465,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/locale/it_IT.po b/locale/it_IT.po index 0f57f5ba80..4ebfa3dedf 100644 --- a/locale/it_IT.po +++ b/locale/it_IT.po @@ -589,7 +589,7 @@ msgstr "Entrambi i pin devono supportare gli interrupt hardware" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "La luminosità deve essere tra 0-1.0" @@ -1487,7 +1487,7 @@ msgstr "" msgid "Key must be 16, 24, or 32 bytes long" msgstr "" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2129,7 +2129,7 @@ msgid "Sample rate too high. It must be less than %d" msgstr "" "Frequenza di campionamento troppo alta. Il valore deve essere inferiore a %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2390,7 +2390,7 @@ msgstr "Ipossibilitato ad allocare buffer per la conversione con segno" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "" @@ -4013,12 +4013,14 @@ msgstr "pow() con 3 argomenti richiede interi" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4033,6 +4035,7 @@ msgstr "pow() con 3 argomenti richiede interi" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4529,7 +4532,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/locale/ja.po b/locale/ja.po index 5c76879f82..56b92bbbf3 100644 --- a/locale/ja.po +++ b/locale/ja.po @@ -581,7 +581,7 @@ msgstr "両方のピンにハードウェア割り込み対応が必要" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "brightnessは0から1.0まででなければなりません" @@ -1473,7 +1473,7 @@ msgstr "不正なワード/ビット長" msgid "Key must be 16, 24, or 32 bytes long" msgstr "Keyの長さは、16, 24, 32バイトのいずれかでなければなりません" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2104,7 +2104,7 @@ msgstr "サンプルレートは正数でなければなりません" msgid "Sample rate too high. It must be less than %d" msgstr "サンプルレートは%d以下でなければなりません" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2366,7 +2366,7 @@ msgstr "" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "I2Cディスプレイを %x に見つけられません" @@ -3972,12 +3972,14 @@ msgstr "pow()の第3引数には整数が必要" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -3992,6 +3994,7 @@ msgstr "pow()の第3引数には整数が必要" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4485,7 +4488,7 @@ msgstr "watchdogのtimeoutは0以上でなければなりません" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/locale/ko.po b/locale/ko.po index b6a7791ae6..953ffcef49 100644 --- a/locale/ko.po +++ b/locale/ko.po @@ -577,7 +577,7 @@ msgstr "" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "" @@ -1465,7 +1465,7 @@ msgstr "" msgid "Key must be 16, 24, or 32 bytes long" msgstr "" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2093,7 +2093,7 @@ msgstr "" msgid "Sample rate too high. It must be less than %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2355,7 +2355,7 @@ msgstr "" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "" @@ -3954,12 +3954,14 @@ msgstr "" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -3974,6 +3976,7 @@ msgstr "" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4466,7 +4469,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/locale/nl.po b/locale/nl.po index 2d888bc99a..e8ca7390d6 100644 --- a/locale/nl.po +++ b/locale/nl.po @@ -579,7 +579,7 @@ msgstr "Beide pinnen moeten hardware interrupts ondersteunen" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "Helderheid moet tussen de 0 en 1.0 liggen" @@ -1474,7 +1474,7 @@ msgstr "Ongeldig woord/bit lengte" msgid "Key must be 16, 24, or 32 bytes long" msgstr "Sleutel moet 16, 24, of 32 bytes lang zijn" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2116,7 +2116,7 @@ msgstr "Sample rate moet positief zijn" msgid "Sample rate too high. It must be less than %d" msgstr "Sample rate is te hoog. Moet minder dan %d zijn" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2377,7 +2377,7 @@ msgstr "Niet in staat buffers voor gesigneerde conversie te alloceren" msgid "Unable to create lock" msgstr "Kan vergrendeling niet maken" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "Geen I2C beeldscherm gevonden bij %x" @@ -3991,12 +3991,14 @@ msgstr "pow() met 3 argumenten vereist integers" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4011,6 +4013,7 @@ msgstr "pow() met 3 argumenten vereist integers" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4505,7 +4508,7 @@ msgstr "watchdog time-out moet groter zijn dan 0" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "breedte moet groter dan nul zijn" diff --git a/locale/pl.po b/locale/pl.po index 77d99ea668..87e00d4bab 100644 --- a/locale/pl.po +++ b/locale/pl.po @@ -581,7 +581,7 @@ msgstr "Obie nóżki muszą wspierać przerwania sprzętowe" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "Jasność musi wynosić 0-1,0" @@ -1473,7 +1473,7 @@ msgstr "Niepoprawna długość słowa/bitu" msgid "Key must be 16, 24, or 32 bytes long" msgstr "Klucz musi mieć długość 16, 24 lub 32 bajtów" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2101,7 +2101,7 @@ msgstr "Częstotliwość próbkowania musi być dodatnia" msgid "Sample rate too high. It must be less than %d" msgstr "Zbyt wysoka częstotliwość próbkowania. Musi być mniejsza niż %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2362,7 +2362,7 @@ msgstr "Nie udała się alokacja buforów do konwersji ze znakiem" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "" @@ -3963,12 +3963,14 @@ msgstr "trzyargumentowe pow() wymaga liczb całkowitych" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -3983,6 +3985,7 @@ msgstr "trzyargumentowe pow() wymaga liczb całkowitych" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4476,7 +4479,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "szerokość musi być większa niż zero" diff --git a/locale/pt_BR.po b/locale/pt_BR.po index 4e79af465e..396b99e010 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -594,7 +594,7 @@ msgstr "Ambos os pinos devem suportar interrupções de hardware" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "O brilho deve ser 0-1,0" @@ -1499,7 +1499,7 @@ msgstr "O comprimento do bit/palavra são inválidos" msgid "Key must be 16, 24, or 32 bytes long" msgstr "A chave deve ter 16, 24 ou 32 bytes de comprimento" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "Os mapeamentos do led devem corresponder ao tamanho do display" @@ -2146,7 +2146,7 @@ msgstr "A taxa de amostragem deve ser positiva" msgid "Sample rate too high. It must be less than %d" msgstr "Taxa de amostragem muito alta. Deve ser menor que %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "As dimensões da escala devem ser poder ser divididas por 3" @@ -2422,7 +2422,7 @@ msgstr "Não é possível alocar buffers para conversão assinada" msgid "Unable to create lock" msgstr "Não é possível criar um lock" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "Não foi possível encontrar a tela I2C no %x" @@ -4054,12 +4054,14 @@ msgstr "o pow() com 3 argumentos requer números inteiros" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4074,6 +4076,7 @@ msgstr "o pow() com 3 argumentos requer números inteiros" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4568,7 +4571,7 @@ msgstr "o tempo limite do watchdog deve ser maior que 0" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "a largura deve ser entre 2 a 8 (inclusive), não %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "a largura deve ser maior que zero" diff --git a/locale/ru.po b/locale/ru.po index 9c8da59303..37743afe94 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -592,7 +592,7 @@ msgstr "Оба пина должны поддерживать аппаратны #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "Яркость должна быть в диапазоне от 0 до 1.0" @@ -1505,7 +1505,7 @@ msgstr "Недопустимая длина слова/бита" msgid "Key must be 16, 24, or 32 bytes long" msgstr "Ключ должен быть длинной 16, 24 или 32 байта" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -1562,7 +1562,7 @@ msgstr "" "Отсутствует first_out_pin. Инструкция %d вводит (shifts out) на вывод(ы)" #: ports/raspberrypi/common-hal/rp2pio/StateMachine.c -#, c-format, fuzzy +#, fuzzy, c-format msgid "Missing first_in_pin. Instruction %d waits based on pin" msgstr "Отсутствует first_in_pin. Инструкция %d ожидает на основе вывода" @@ -2145,7 +2145,7 @@ msgstr "" msgid "Sample rate too high. It must be less than %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2406,7 +2406,7 @@ msgstr "" msgid "Unable to create lock" msgstr "" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "" @@ -4005,12 +4005,14 @@ msgstr "" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4025,6 +4027,7 @@ msgstr "" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4517,7 +4520,7 @@ msgstr "" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "" diff --git a/locale/sv.po b/locale/sv.po index 7e6ae3e77c..d41f8a0af3 100644 --- a/locale/sv.po +++ b/locale/sv.po @@ -584,7 +584,7 @@ msgstr "Båda pinnarna måste stödja maskinvaruavbrott" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "Ljusstyrkan måste vara mellan 0 och 1,0" @@ -1481,7 +1481,7 @@ msgstr "Ogiltig word-/bitlängd" msgid "Key must be 16, 24, or 32 bytes long" msgstr "Nyckeln måste vara 16, 24 eller 32 byte lång" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "LED-mappning måste matcha displaystorlek" @@ -2122,7 +2122,7 @@ msgstr "Samplingsfrekvensen måste vara positiv" msgid "Sample rate too high. It must be less than %d" msgstr "Samplingsfrekvensen är för hög. Den måste vara mindre än %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "Skaldimension måste vara delbar med 3" @@ -2393,7 +2393,7 @@ msgstr "Det går inte att allokera buffert för signerad konvertering" msgid "Unable to create lock" msgstr "Kan inte skapa lås" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "Det gick inte att hitta I2C-display på %x" @@ -4011,12 +4011,14 @@ msgstr "pow() med 3 argument kräver heltal" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4031,6 +4033,7 @@ msgstr "pow() med 3 argument kräver heltal" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4525,7 +4528,7 @@ msgstr "watchdog timeout måste vara större än 0" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "width måste vara mellan 2 och 8, inte %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "width måste vara större än noll" diff --git a/locale/zh_Latn_pinyin.po b/locale/zh_Latn_pinyin.po index 07188c8f99..7a09f0f025 100644 --- a/locale/zh_Latn_pinyin.po +++ b/locale/zh_Latn_pinyin.po @@ -591,7 +591,7 @@ msgstr "liǎnggè yǐnjiǎo dōu bìxū zhīchí yìngjiàn zhōngduàn" #: shared-bindings/displayio/Display.c #: shared-bindings/framebufferio/FramebufferDisplay.c -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "Brightness must be 0-1.0" msgstr "Liàngdù bìxū wèi 0-1.0" @@ -1492,7 +1492,7 @@ msgstr "Wúxiào de zì/wèi chángdù" msgid "Key must be 16, 24, or 32 bytes long" msgstr "mì yào bì xū wéi 16, 24 huò 32 zì jié cháng" -#: shared-module/is31fl3741/is31fl3741.c +#: shared-module/is31fl3741/IS31FL3741.c msgid "LED mappings must match display size" msgstr "" @@ -2132,7 +2132,7 @@ msgstr "Cǎiyàng lǜ bìxū wèi zhèng shù" msgid "Sample rate too high. It must be less than %d" msgstr "Cǎiyàng lǜ tài gāo. Tā bìxū xiǎoyú %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c msgid "Scale dimensions must divide by 3" msgstr "" @@ -2402,7 +2402,7 @@ msgstr "Wúfǎ fēnpèi huǎnchōng qū yòng yú qiānmíng zhuǎnhuàn" msgid "Unable to create lock" msgstr "Wúfǎ chuàngjiàn suǒ" -#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/is31fl3741.c +#: shared-module/displayio/I2CDisplay.c shared-module/is31fl3741/IS31FL3741.c #, c-format msgid "Unable to find I2C Display at %x" msgstr "Wúfǎ zài%x zhǎodào I2C xiǎnshìqì" @@ -4018,12 +4018,14 @@ msgstr "pow() yǒu 3 cānshù xūyào zhěngshù" #: ports/espressif/boards/adafruit_funhouse/mpconfigboard.h #: ports/espressif/boards/adafruit_magtag_2.9_grayscale/mpconfigboard.h #: ports/espressif/boards/adafruit_metro_esp32s2/mpconfigboard.h +#: ports/espressif/boards/adafruit_qtpy_esp32s2/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp32-c3s/mpconfigboard.h #: ports/espressif/boards/ai_thinker_esp_12k_nodemcu/mpconfigboard.h #: ports/espressif/boards/artisense_rd00/mpconfigboard.h #: ports/espressif/boards/atmegazero_esp32s2/mpconfigboard.h #: ports/espressif/boards/crumpspace_crumps2/mpconfigboard.h #: ports/espressif/boards/electroniccats_bastwifi/mpconfigboard.h +#: ports/espressif/boards/espressif_esp32s3_devkitc_1/mpconfigboard.h #: ports/espressif/boards/espressif_hmi_devkit_1/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1.3/mpconfigboard.h #: ports/espressif/boards/espressif_kaluga_1/mpconfigboard.h @@ -4038,6 +4040,7 @@ msgstr "pow() yǒu 3 cānshù xūyào zhěngshù" #: ports/espressif/boards/lilygo_ttgo_t8_s2_st7789/mpconfigboard.h #: ports/espressif/boards/lolin_s2_mini/mpconfigboard.h #: ports/espressif/boards/lolin_s2_pico/mpconfigboard.h +#: ports/espressif/boards/microdev_macro_s3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_c3/mpconfigboard.h #: ports/espressif/boards/microdev_micro_s2/mpconfigboard.h #: ports/espressif/boards/morpheans_morphesp-240/mpconfigboard.h @@ -4535,7 +4538,7 @@ msgstr "kān mén gǒu chāoshí bìxū dàyú 0" msgid "width must be from 2 to 8 (inclusive), not %d" msgstr "kuān dù bì xū cóng 2 dào 8 ( hán ), ér bù shì %d" -#: shared-bindings/is31fl3741/is31fl3741.c +#: shared-bindings/is31fl3741/IS31FL3741.c #: shared-bindings/rgbmatrix/RGBMatrix.c msgid "width must be greater than zero" msgstr "kuāndù bìxū dàyú líng" From 92a4261ad505f6dfab9b6574f842fdbcf43c4b5e Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Fri, 3 Dec 2021 13:15:24 -0800 Subject: [PATCH 35/36] Full UART support for RPI This adds PL011 UART support which is more plentiful. It also: * Fixes PI4 build by including .dtb files on the SD card. * Enables the activity LED as the status LED on PI4 and CM4 I/O. * Adds that LED as board.LED. Fixes #5650 and progress on #5629 --- main.c | 1 + ports/broadcom/Makefile | 2 +- .../boards/raspberrypi_cm4io/mpconfigboard.h | 2 + .../broadcom/boards/raspberrypi_cm4io/pins.c | 2 + .../boards/raspberrypi_pi4b/mpconfigboard.h | 2 + .../boards/raspberrypi_pi4b/mpconfigboard.mk | 2 +- ports/broadcom/boards/raspberrypi_pi4b/pins.c | 2 + ports/broadcom/common-hal/busio/I2C.c | 3 +- ports/broadcom/common-hal/busio/UART.c | 303 +++++++++++++++--- ports/broadcom/common-hal/busio/UART.h | 1 + ports/broadcom/firmware | 2 +- ports/broadcom/peripherals | 2 +- 12 files changed, 269 insertions(+), 55 deletions(-) diff --git a/main.c b/main.c index b1b482f985..c019237362 100644 --- a/main.c +++ b/main.c @@ -56,6 +56,7 @@ #include "supervisor/shared/safe_mode.h" #include "supervisor/shared/stack.h" #include "supervisor/shared/status_leds.h" +#include "supervisor/shared/tick.h" #include "supervisor/shared/traceback.h" #include "supervisor/shared/translate.h" #include "supervisor/shared/workflow.h" diff --git a/ports/broadcom/Makefile b/ports/broadcom/Makefile index 16b44f7501..401d601528 100644 --- a/ports/broadcom/Makefile +++ b/ports/broadcom/Makefile @@ -166,7 +166,7 @@ $(BUILD)/firmware.disk.img.zip: $(BUILD)/kernel8.img $(Q)parted -s $(BUILD)/circuitpython-disk.img mkpart primary fat32 0% 100% $(Q)mkfs.fat -F 32 -n BOOT --offset=2048 $(BUILD)/circuitpython-disk.img - $(Q)mcopy -i $(BUILD)/circuitpython-disk.img@@1M config.txt firmware/bootcode.bin firmware/fixup* firmware/start* :: + $(Q)mcopy -i $(BUILD)/circuitpython-disk.img@@1M config.txt firmware/bootcode.bin firmware/fixup* firmware/start* firmware/*.dtb :: $(Q)mcopy -i $(BUILD)/circuitpython-disk.img@@1M $(BUILD)/kernel8.img :: $(Q)zip $@ $(BUILD)/circuitpython-disk.img $(Q)rm $(BUILD)/circuitpython-disk.img diff --git a/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h index 4211568bfa..9acfb32626 100644 --- a/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_cm4io/mpconfigboard.h @@ -2,3 +2,5 @@ #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) #define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) + +#define MICROPY_HW_LED_STATUS (&pin_GPIO42) diff --git a/ports/broadcom/boards/raspberrypi_cm4io/pins.c b/ports/broadcom/boards/raspberrypi_cm4io/pins.c index 0dfbe4cbd5..db4eb91710 100644 --- a/ports/broadcom/boards/raspberrypi_cm4io/pins.c +++ b/ports/broadcom/boards/raspberrypi_cm4io/pins.c @@ -57,6 +57,8 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) }, { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO42) }, + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}, }; diff --git a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h b/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h index be77d35ac7..2980b0f9a5 100644 --- a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h +++ b/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.h @@ -2,3 +2,5 @@ #define DEFAULT_I2C_BUS_SCL (&pin_GPIO3) #define DEFAULT_I2C_BUS_SDA (&pin_GPIO2) + +#define MICROPY_HW_LED_STATUS (&pin_GPIO42) diff --git a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.mk b/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.mk index 4567e9c15e..67b1c1dc85 100644 --- a/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.mk +++ b/ports/broadcom/boards/raspberrypi_pi4b/mpconfigboard.mk @@ -3,4 +3,4 @@ USB_PID = 0xF001 USB_PRODUCT = "Raspberry Pi 4B" USB_MANUFACTURER = "Raspberry Pi" -CHIP_VARIANT = bcm2711 +CHIP_VARIANT = "bcm2711" diff --git a/ports/broadcom/boards/raspberrypi_pi4b/pins.c b/ports/broadcom/boards/raspberrypi_pi4b/pins.c index 0dfbe4cbd5..db4eb91710 100644 --- a/ports/broadcom/boards/raspberrypi_pi4b/pins.c +++ b/ports/broadcom/boards/raspberrypi_pi4b/pins.c @@ -57,6 +57,8 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_GPIO26) }, { MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_GPIO27) }, + { MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO42) }, + { MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) }, { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}, }; diff --git a/ports/broadcom/common-hal/busio/I2C.c b/ports/broadcom/common-hal/busio/I2C.c index 9726f394d2..8e135ab4d7 100644 --- a/ports/broadcom/common-hal/busio/I2C.c +++ b/ports/broadcom/common-hal/busio/I2C.c @@ -72,7 +72,8 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self, uint8_t sda_alt = 0; for (scl_alt = 0; scl_alt < 6; scl_alt++) { if (scl->functions[scl_alt].type != PIN_FUNCTION_I2C || - i2c_in_use[scl->functions[scl_alt].index]) { + i2c_in_use[scl->functions[scl_alt].index] || + scl->functions[scl_alt].function != I2C_FUNCTION_SCL) { continue; } for (sda_alt = 0; sda_alt < 6; sda_alt++) { diff --git a/ports/broadcom/common-hal/busio/UART.c b/ports/broadcom/common-hal/busio/UART.c index 85dc36e755..b23aa85b92 100644 --- a/ports/broadcom/common-hal/busio/UART.c +++ b/ports/broadcom/common-hal/busio/UART.c @@ -41,7 +41,14 @@ #define NO_PIN 0xff -#define UART_INST(uart) (((uart) ? uart1 : uart0)) +// UART1 is a different peripheral than the rest so it is hardcoded below. +#if BCM_VERSION == 2711 +#define NUM_UART (6) +STATIC ARM_UART_PL011_Type *uart[NUM_UART] = {UART0, NULL, UART2, UART3, UART4, UART5}; +#else +#define NUM_UART (2) +STATIC ARM_UART_PL011_Type *uart[NUM_UART] = {UART0, NULL}; +#endif typedef enum { STATUS_FREE = 0, @@ -49,29 +56,62 @@ typedef enum { STATUS_NEVER_RESET } uart_status_t; -// The Broadcom chips have two different types of UARTs. UART1 is the "mini-UART" -// that is most available so we've implemented it first. The ARM PL011 UART -// support will be added later. We set NUM_UARTS to 2 here so that we can match -// the indexing even though UART0 isn't supported yet. We currently use this -// UART for debugging so we don't support user use of UART yet. -#define NUM_UARTS 2 - -static uart_status_t uart_status[NUM_UARTS]; +static uart_status_t uart_status[NUM_UART]; +static busio_uart_obj_t *active_uart[NUM_UART]; void reset_uart(void) { - for (uint8_t num = 0; num < NUM_UARTS; num++) { + bool any_pl011_active = false; + for (uint8_t num = 0; num < NUM_UART; num++) { if (uart_status[num] == STATUS_BUSY) { + if (num == 1) { + UART1->IER_b.DATA_READY = false; + UART1->CNTL = 0; + COMPLETE_MEMORY_READS; + AUX->ENABLES_b.UART_1 = false; + } else { + ARM_UART_PL011_Type *pl011 = uart[num]; + pl011->CR = 0; + } + active_uart[num] = NULL; uart_status[num] = STATUS_FREE; + } else { + any_pl011_active = any_pl011_active || (num != 1 && uart_status[num] == STATUS_NEVER_RESET); + } + } + if (!any_pl011_active) { + BP_DisableIRQ(UART_IRQn); + } + COMPLETE_MEMORY_READS; + if (AUX->ENABLES == 0) { + BP_DisableIRQ(AUX_IRQn); + } +} + +STATIC void fetch_all_from_fifo(busio_uart_obj_t *self) { + if (self->uart_id == 1) { + while (UART1->STAT_b.DATA_READY && ringbuf_num_empty(&self->ringbuf) > 0) { + int c = UART1->IO_b.DATA; + if (self->sigint_enabled && c == mp_interrupt_char) { + mp_sched_keyboard_interrupt(); + continue; + } + ringbuf_put(&self->ringbuf, c); + } + } else { + ARM_UART_PL011_Type *pl011 = uart[self->uart_id]; + while (!pl011->FR_b.RXFE && ringbuf_num_empty(&self->ringbuf) > 0) { + int c = pl011->DR_b.DATA; + if (self->sigint_enabled && c == mp_interrupt_char) { + mp_sched_keyboard_interrupt(); + continue; + } + ringbuf_put(&self->ringbuf, c); } } } -static busio_uart_obj_t *active_uarts[NUM_UARTS]; - void UART1_IRQHandler(void) { - while (UART1->STAT_b.DATA_READY && ringbuf_num_empty(&active_uarts[1]->ringbuf) > 0) { - ringbuf_put(&active_uarts[1]->ringbuf, (uint8_t)UART1->IO_b.DATA); - } + fetch_all_from_fifo(active_uart[1]); // We couldn't read all pending data (overrun) so clear the FIFO so that the interrupt // can finish. if (UART1->STAT_b.DATA_READY) { @@ -79,6 +119,33 @@ void UART1_IRQHandler(void) { } } +void pl011_IRQHandler(uint8_t index) { + fetch_all_from_fifo(active_uart[index]); + // Clear the interrupt in case we weren't able to clear it by emptying the + // FIFO. (This won't clear the FIFO.) + ARM_UART_PL011_Type *pl011 = uart[index]; + pl011->ICR = UART0_ICR_RXIC_Msk; +} + +void UART0_IRQHandler(void) { + pl011_IRQHandler(0); +} + +#if BCM_VERSION == 2711 +void UART2_IRQHandler(void) { + pl011_IRQHandler(2); +} +void UART3_IRQHandler(void) { + pl011_IRQHandler(3); +} +void UART4_IRQHandler(void) { + pl011_IRQHandler(4); +} +void UART5_IRQHandler(void) { + pl011_IRQHandler(5); +} +#endif + void common_hal_busio_uart_never_reset(busio_uart_obj_t *self) { uart_status[self->uart_id] = STATUS_NEVER_RESET; } @@ -103,14 +170,43 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self, mp_raise_NotImplementedError(translate("RS485 Not yet supported on this device")); } - if (tx == &pin_GPIO14) { - if (rx == &pin_GPIO15) { - self->uart_id = 1; + size_t instance_index = NUM_UART; + BP_Function_Enum tx_alt = 0; + BP_Function_Enum rx_alt = 0; + BP_Function_Enum rts_alt = 0; + BP_Function_Enum cts_alt = 0; + for (size_t i = 0; i < NUM_UART; i++) { + if (uart_status[i] != STATUS_FREE) { + continue; } + if (tx != NULL) { + if (!pin_find_alt(tx, PIN_FUNCTION_UART, i, UART_FUNCTION_TXD, &tx_alt)) { + continue; + } + if (rts != NULL && !pin_find_alt(rts, PIN_FUNCTION_UART, i, UART_FUNCTION_RTS, &rts_alt)) { + continue; + } + } + if (rx != NULL) { + if (!pin_find_alt(rx, PIN_FUNCTION_UART, i, UART_FUNCTION_RXD, &rx_alt)) { + continue; + } + if (cts != NULL && !pin_find_alt(cts, PIN_FUNCTION_UART, i, UART_FUNCTION_CTS, &cts_alt)) { + continue; + } + } + instance_index = i; + break; + } + if (instance_index == NUM_UART) { + mp_raise_ValueError(translate("Invalid pins")); } self->rx_pin = rx; self->tx_pin = tx; + self->rts_pin = rts; + self->cts_pin = cts; + self->sigint_enabled = sigint_enabled; if (rx != NULL) { if (receiver_buffer != NULL) { @@ -129,8 +225,11 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self, } } + active_uart[self->uart_id] = self; + + ARM_UART_PL011_Type *pl011 = uart[self->uart_id]; + if (self->uart_id == 1) { - active_uarts[1] = self; AUX->ENABLES_b.UART_1 = true; UART1->IER = 0; @@ -145,22 +244,80 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self, // Clear interrupts UART1->IIR = 0xff; - uint32_t source_clock = vcmailbox_get_clock_rate_measured(VCMAILBOX_CLOCK_CORE); - UART1->BAUD = ((source_clock / (baudrate * 8)) - 1); + common_hal_busio_uart_set_baudrate(self, baudrate); if (tx != NULL) { UART1->CNTL |= UART1_CNTL_TX_ENABLE_Msk; - gpio_set_pull(14, BP_PULL_NONE); - gpio_set_function(14, GPIO_GPFSEL1_FSEL14_TXD1); } if (rx != NULL) { UART1->CNTL |= UART1_CNTL_RX_ENABLE_Msk; - gpio_set_pull(15, BP_PULL_NONE); - gpio_set_function(15, GPIO_GPFSEL1_FSEL15_RXD1); } + } else { + // Ensure the UART is disabled as we configure it. + pl011->CR_b.UARTEN = false; + pl011->IMSC = 0; + pl011->ICR = 0x3ff; + + common_hal_busio_uart_set_baudrate(self, baudrate); + + uint32_t line_control = UART0_LCR_H_FEN_Msk; + line_control |= (bits - 5) << UART0_LCR_H_WLEN_Pos; + if (stop == 2) { + line_control |= UART0_LCR_H_STP2_Msk; + } + if (parity != BUSIO_UART_PARITY_NONE) { + line_control |= UART0_LCR_H_PEN_Msk; + } + if (parity == BUSIO_UART_PARITY_EVEN) { + line_control |= UART0_LCR_H_EPS_Msk; + } + pl011->LCR_H = line_control; + + uint32_t control = UART0_CR_UARTEN_Msk; + if (tx != NULL) { + control |= UART0_CR_TXE_Msk; + } + if (rx != NULL) { + control |= UART0_CR_RXE_Msk; + } + if (cts != NULL) { + control |= UART0_CR_CTSEN_Msk; + } + if (rts != NULL) { + control |= UART0_CR_RTSEN_Msk; + } + pl011->CR = control; + } + + // Setup the pins after waiting for UART stuff + COMPLETE_MEMORY_READS; + if (tx != NULL) { + gpio_set_pull(tx->number, BP_PULL_NONE); + gpio_set_function(tx->number, tx_alt); + } + if (rx != NULL) { + gpio_set_pull(rx->number, BP_PULL_NONE); + gpio_set_function(rx->number, rx_alt); + } + if (rts != NULL) { + gpio_set_pull(rts->number, BP_PULL_NONE); + gpio_set_function(rts->number, rts_alt); + } + if (cts != NULL) { + gpio_set_pull(cts->number, BP_PULL_NONE); + gpio_set_function(cts->number, cts_alt); + } + + // Turn on interrupts + COMPLETE_MEMORY_READS; + if (self->uart_id == 1) { UART1->IER_b.DATA_READY = true; // Never disable this in case the SPIs are used. They can each be // disabled at the peripheral itself. BP_EnableIRQ(AUX_IRQn); + } else { + pl011->IMSC_b.RXIM = true; + // Never disable this in case the other PL011 UARTs are used. + BP_EnableIRQ(UART_IRQn); } } @@ -176,8 +333,11 @@ void common_hal_busio_uart_deinit(busio_uart_obj_t *self) { UART1->IER_b.DATA_READY = false; UART1->CNTL = 0; AUX->ENABLES_b.UART_1 = false; - active_uarts[1] = NULL; + } else { + ARM_UART_PL011_Type *pl011 = uart[self->uart_id]; + pl011->CR = 0; } + active_uart[self->uart_id] = NULL; ringbuf_free(&self->ringbuf); uart_status[self->uart_id] = STATUS_FREE; common_hal_reset_pin(self->tx_pin); @@ -196,20 +356,46 @@ size_t common_hal_busio_uart_write(busio_uart_obj_t *self, const uint8_t *data, mp_raise_ValueError(translate("No TX pin")); } - if (self->uart_id == 1) { - COMPLETE_MEMORY_READS; - for (size_t i = 0; i < len; i++) { + COMPLETE_MEMORY_READS; + ARM_UART_PL011_Type *pl011 = uart[self->uart_id]; + for (size_t i = 0; i < len; i++) { + if (self->uart_id == 1) { // Wait for the FIFO to have space. while (!UART1->STAT_b.TX_READY) { RUN_BACKGROUND_TASKS; } UART1->IO = data[i]; + } else { + while (pl011->FR_b.TXFF) { + RUN_BACKGROUND_TASKS; + } + pl011->DR_b.DATA = data[i]; } - COMPLETE_MEMORY_READS; - return len; } + // Wait for the data to be shifted out + if (self->uart_id == 1) { + while (!UART1->STAT_b.TX_DONE) { + RUN_BACKGROUND_TASKS; + } + } else { + while (pl011->FR_b.BUSY) { + RUN_BACKGROUND_TASKS; + } + } + COMPLETE_MEMORY_READS; + return len; +} - return 0; +STATIC void disable_interrupt(busio_uart_obj_t *self) { + if (self->uart_id == 1) { + UART1->IER_b.DATA_READY = false; + } +} + +STATIC void enable_interrupt(busio_uart_obj_t *self) { + if (self->uart_id == 1) { + UART1->IER_b.DATA_READY = true; + } } // Read characters. @@ -225,9 +411,7 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t COMPLETE_MEMORY_READS; // Prevent conflict with uart irq. - if (self->uart_id == 1) { - UART1->IER_b.DATA_READY = false; - } + disable_interrupt(self); // Copy as much received data as available, up to len bytes. size_t total_read = ringbuf_get_n(&self->ringbuf, data, len); @@ -238,14 +422,11 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t uint64_t start_ticks = supervisor_ticks_ms64(); // Busy-wait until timeout or until we've read enough chars. while (len > 0 && (supervisor_ticks_ms64() - start_ticks < self->timeout_ms)) { - if (UART1->STAT_b.DATA_READY) { - // Read and advance. - data[total_read] = UART1->IO_b.DATA; - - // Adjust the counters. - len--; - total_read++; - + fetch_all_from_fifo(self); + size_t additional_read = ringbuf_get_n(&self->ringbuf, data + total_read, len); + len -= additional_read; + total_read += additional_read; + if (additional_read > 0) { // Reset the timeout on every character read. start_ticks = supervisor_ticks_ms64(); } @@ -260,14 +441,10 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t // Now that we've emptied the ringbuf some, fill it up with anything in the // FIFO. This ensures that we'll empty the FIFO as much as possible and // reset the interrupt when we catch up. - while (UART1->STAT_b.DATA_READY && ringbuf_num_empty(&self->ringbuf) > 0) { - ringbuf_put(&self->ringbuf, (uint8_t)UART1->IO_b.DATA); - } + fetch_all_from_fifo(self); // Re-enable irq. - if (self->uart_id == 1) { - UART1->IER_b.DATA_READY = true; - } + enable_interrupt(self); COMPLETE_MEMORY_READS; if (total_read == 0) { @@ -283,6 +460,31 @@ uint32_t common_hal_busio_uart_get_baudrate(busio_uart_obj_t *self) { } void common_hal_busio_uart_set_baudrate(busio_uart_obj_t *self, uint32_t baudrate) { + if (self->uart_id == 1) { + uint32_t source_clock = vcmailbox_get_clock_rate_measured(VCMAILBOX_CLOCK_CORE); + UART1->BAUD = ((source_clock / (baudrate * 8)) - 1); + } else { + ARM_UART_PL011_Type *pl011 = uart[self->uart_id]; + bool reenable = false; + if (pl011->CR_b.UARTEN) { + pl011->CR_b.UARTEN = false; + reenable = true; + } + uint32_t source_clock = vcmailbox_get_clock_rate_measured(VCMAILBOX_CLOCK_UART); + uint32_t divisor = 16 * baudrate; + pl011->IBRD = source_clock / divisor; + // The fractional divisor is 64ths. + uint32_t remainder = source_clock % divisor; + uint32_t per_tick = (divisor / 64) + 1; + uint32_t adjust = 0; + if (remainder % per_tick > 0) { + adjust = 1; + } + pl011->FBRD = remainder / per_tick + adjust; + if (reenable) { + pl011->CR_b.UARTEN = true; + } + } self->baudrate = baudrate; } @@ -295,6 +497,7 @@ void common_hal_busio_uart_set_timeout(busio_uart_obj_t *self, mp_float_t timeou } uint32_t common_hal_busio_uart_rx_characters_available(busio_uart_obj_t *self) { + fetch_all_from_fifo(self); return ringbuf_num_filled(&self->ringbuf); } @@ -309,5 +512,5 @@ bool common_hal_busio_uart_ready_to_tx(busio_uart_obj_t *self) { if (self->uart_id == 1) { return UART1->STAT_b.TX_READY; } - return false; + return !uart[self->uart_id]->FR_b.TXFF; } diff --git a/ports/broadcom/common-hal/busio/UART.h b/ports/broadcom/common-hal/busio/UART.h index 8ef4073f8e..0590bc28b6 100644 --- a/ports/broadcom/common-hal/busio/UART.h +++ b/ports/broadcom/common-hal/busio/UART.h @@ -39,6 +39,7 @@ typedef struct { uint8_t uart_id; uint32_t baudrate; uint32_t timeout_ms; + bool sigint_enabled; ringbuf_t ringbuf; } busio_uart_obj_t; diff --git a/ports/broadcom/firmware b/ports/broadcom/firmware index 6a5207946e..bf96d0eda5 160000 --- a/ports/broadcom/firmware +++ b/ports/broadcom/firmware @@ -1 +1 @@ -Subproject commit 6a5207946edcd45813d1dd1572ca8bd8101b68b6 +Subproject commit bf96d0eda5952595d717fedb797aeb168483e9fa diff --git a/ports/broadcom/peripherals b/ports/broadcom/peripherals index 2e7b56bbe9..a0666ce987 160000 --- a/ports/broadcom/peripherals +++ b/ports/broadcom/peripherals @@ -1 +1 @@ -Subproject commit 2e7b56bbe941311e54fba66f0b32336bfea4388d +Subproject commit a0666ce987ae96a58e587a04b9f89c7c5707dd13 From ab4f789e9aa30d7e8140fc107a7f5915bff75ba2 Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Tue, 7 Dec 2021 13:29:46 -0800 Subject: [PATCH 36/36] Fix Pi Zero 2 W build --- ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.mk | 2 +- ports/broadcom/peripherals | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.mk b/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.mk index 8ba37dbba7..25f113b856 100644 --- a/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.mk +++ b/ports/broadcom/boards/raspberrypi_zero2w/mpconfigboard.mk @@ -3,4 +3,4 @@ USB_PID = 0xF002 USB_PRODUCT = "Raspberry Pi Zero 2W" USB_MANUFACTURER = "Raspberry Pi" -CHIP_VARIANT = rp3a0 +CHIP_VARIANT = "bcm2837" diff --git a/ports/broadcom/peripherals b/ports/broadcom/peripherals index a0666ce987..c236f5a5ff 160000 --- a/ports/broadcom/peripherals +++ b/ports/broadcom/peripherals @@ -1 +1 @@ -Subproject commit a0666ce987ae96a58e587a04b9f89c7c5707dd13 +Subproject commit c236f5a5ff93b50b8b948c904715e89f6d4fafe8