Merge branch 'main' into recv_into_size_check

This commit is contained in:
Mark 2020-10-16 15:52:45 -05:00 committed by GitHub
commit 8e6d3e5b91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
144 changed files with 3374 additions and 1507 deletions

View File

@ -28,7 +28,7 @@ jobs:
- name: CircuitPython version - name: CircuitPython version
run: | run: |
git describe --dirty --tags git describe --dirty --tags
echo "::set-env name=CP_VERSION::$(git describe --dirty --tags)" echo >>$GITHUB_ENV CP_VERSION=$(git describe --dirty --tags)
- name: Set up Python 3.8 - name: Set up Python 3.8
uses: actions/setup-python@v1 uses: actions/setup-python@v1
with: with:
@ -132,7 +132,7 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: | run: |
brew install gettext awscli brew install gettext awscli
echo "::set-env name=PATH::/usr/local/opt/gettext/bin:$PATH" echo >>$GITHUB_PATH /usr/local/opt/gettext/bin
- name: Versions - name: Versions
run: | run: |
gcc --version gcc --version
@ -146,7 +146,7 @@ jobs:
- name: CircuitPython version - name: CircuitPython version
run: | run: |
git describe --dirty --tags git describe --dirty --tags
echo "::set-env name=CP_VERSION::$(git describe --dirty --tags)" echo >>$GITHUB_ENV CP_VERSION=$(git describe --dirty --tags)
- name: Build mpy-cross - name: Build mpy-cross
run: make -C mpy-cross -j2 run: make -C mpy-cross -j2
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
@ -180,6 +180,7 @@ jobs:
- "arduino_zero" - "arduino_zero"
- "bast_pro_mini_m0" - "bast_pro_mini_m0"
- "bdmicro_vina_d21" - "bdmicro_vina_d21"
- "bdmicro_vina_d51"
- "bless_dev_board_multi_sensor" - "bless_dev_board_multi_sensor"
- "blm_badge" - "blm_badge"
- "capablerobot_usbhub" - "capablerobot_usbhub"
@ -197,6 +198,8 @@ jobs:
- "datum_imu" - "datum_imu"
- "datum_light" - "datum_light"
- "datum_weather" - "datum_weather"
- "dynossat_edu_eps"
- "dynossat_edu_obc"
- "electronut_labs_blip" - "electronut_labs_blip"
- "electronut_labs_papyr" - "electronut_labs_papyr"
- "escornabot_makech" - "escornabot_makech"
@ -243,6 +246,7 @@ jobs:
- "metro_m0_express" - "metro_m0_express"
- "metro_m4_airlift_lite" - "metro_m4_airlift_lite"
- "metro_m4_express" - "metro_m4_express"
- "metro_m7_1011"
- "metro_nrf52840_express" - "metro_nrf52840_express"
- "mini_sam_m4" - "mini_sam_m4"
- "monster_m4sk" - "monster_m4sk"

View File

@ -16,7 +16,7 @@ jobs:
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- uses: actions/setup-python@v1 - uses: actions/setup-python@v1
- name: set PY - name: set PY
run: echo "::set-env name=PY::$(python -c 'import hashlib, sys;print(hashlib.sha256(sys.version.encode()+sys.executable.encode()).hexdigest())')" run: echo >>$GITHUB_ENV PY="$(python -c 'import hashlib, sys;print(hashlib.sha256(sys.version.encode()+sys.executable.encode()).hexdigest())')"
- uses: actions/cache@v1 - uses: actions/cache@v1
with: with:
path: ~/.cache/pre-commit path: ~/.cache/pre-commit

2
.gitmodules vendored
View File

@ -152,4 +152,4 @@
url = https://github.com/adafruit/Adafruit_CircuitPython_RFM69.git url = https://github.com/adafruit/Adafruit_CircuitPython_RFM69.git
[submodule "ports/esp32s2/esp-idf"] [submodule "ports/esp32s2/esp-idf"]
path = ports/esp32s2/esp-idf path = ports/esp32s2/esp-idf
url = https://github.com/hierophect/esp-idf.git url = https://github.com/espressif/esp-idf.git

View File

@ -45,7 +45,6 @@
#include "shared-bindings/_bleio/Address.h" #include "shared-bindings/_bleio/Address.h"
#include "shared-bindings/_bleio/Characteristic.h" #include "shared-bindings/_bleio/Characteristic.h"
#include "shared-bindings/_bleio/Service.h" #include "shared-bindings/_bleio/Service.h"
#include "shared-bindings/nvm/ByteArray.h"
#include "shared-bindings/_bleio/Connection.h" #include "shared-bindings/_bleio/Connection.h"
#include "shared-bindings/_bleio/ScanEntry.h" #include "shared-bindings/_bleio/ScanEntry.h"
#include "shared-bindings/time/__init__.h" #include "shared-bindings/time/__init__.h"

View File

@ -98,7 +98,7 @@ bleio_adapter_obj_t *common_hal_bleio_allocate_adapter_or_raise(void) {
void common_hal_bleio_check_connected(uint16_t conn_handle) { void common_hal_bleio_check_connected(uint16_t conn_handle) {
if (conn_handle == BLE_CONN_HANDLE_INVALID) { if (conn_handle == BLE_CONN_HANDLE_INVALID) {
mp_raise_bleio_ConnectionError(translate("Not connected")); mp_raise_ConnectionError(translate("Not connected"));
} }
} }

View File

@ -11,7 +11,7 @@
#include <stdbool.h> #include <stdbool.h>
// for __packed // for __packed
#include <string.h> #include <sys/cdefs.h>
#define BT_EATT_PSM 0x27 #define BT_EATT_PSM 0x27
#define BT_ATT_DEFAULT_LE_MTU 23 #define BT_ATT_DEFAULT_LE_MTU 23

View File

@ -12,10 +12,15 @@
#define ZEPHYR_INCLUDE_BLUETOOTH_HCI_H_ #define ZEPHYR_INCLUDE_BLUETOOTH_HCI_H_
#include <stdbool.h> #include <stdbool.h>
#include <string.h> // for __packed
#include <sys/cdefs.h>
#include "addr.h" #include "addr.h"
// ESP32S2 build environment defines this already.
#ifndef BIT
#define BIT(n) (1UL << (n)) #define BIT(n) (1UL << (n))
#endif
/* Special own address types for LL privacy (used in adv & scan parameters) */ /* Special own address types for LL privacy (used in adv & scan parameters) */
#define BT_HCI_OWN_ADDR_RPA_OR_PUBLIC 0x02 #define BT_HCI_OWN_ADDR_RPA_OR_PUBLIC 0x02

View File

@ -123,7 +123,7 @@ DRESULT disk_write (
DRESULT disk_ioctl ( DRESULT disk_ioctl (
bdev_t pdrv, /* Physical drive nmuber (0..) */ bdev_t pdrv, /* Physical drive nmuber (0..) */
BYTE cmd, /* Control code */ BYTE cmd, /* Control code */
void *buff /* Buffer to send/receive control data */ void *buff /* Buffer to send/receive control data */
) )
{ {
@ -133,7 +133,7 @@ DRESULT disk_ioctl (
} }
// First part: call the relevant method of the underlying block device // First part: call the relevant method of the underlying block device
mp_obj_t ret = mp_const_none; mp_int_t out_value = 0;
if (vfs->flags & FSUSER_HAVE_IOCTL) { if (vfs->flags & FSUSER_HAVE_IOCTL) {
// new protocol with ioctl // new protocol with ioctl
static const uint8_t op_map[8] = { static const uint8_t op_map[8] = {
@ -144,9 +144,19 @@ DRESULT disk_ioctl (
}; };
uint8_t bp_op = op_map[cmd & 7]; uint8_t bp_op = op_map[cmd & 7];
if (bp_op != 0) { if (bp_op != 0) {
vfs->u.ioctl[2] = MP_OBJ_NEW_SMALL_INT(bp_op); if (vfs->flags & FSUSER_NATIVE) {
vfs->u.ioctl[3] = MP_OBJ_NEW_SMALL_INT(0); // unused bool (*f)(size_t, mp_int_t*) = (void*)(uintptr_t)vfs->u.ioctl[2];
ret = mp_call_method_n_kw(2, 0, vfs->u.ioctl); if (!f(bp_op, (mp_int_t*) &out_value)) {
return RES_ERROR;
}
} else {
vfs->u.ioctl[2] = MP_OBJ_NEW_SMALL_INT(bp_op);
vfs->u.ioctl[3] = MP_OBJ_NEW_SMALL_INT(0); // unused
mp_obj_t ret = mp_call_method_n_kw(2, 0, vfs->u.ioctl);
if (ret != mp_const_none) {
out_value = mp_obj_get_int(ret);
}
}
} }
} else { } else {
// old protocol with sync and count // old protocol with sync and count
@ -157,10 +167,13 @@ DRESULT disk_ioctl (
} }
break; break;
case GET_SECTOR_COUNT: case GET_SECTOR_COUNT: {
ret = mp_call_method_n_kw(0, 0, vfs->u.old.count); mp_obj_t ret = mp_call_method_n_kw(0, 0, vfs->u.old.count);
if (ret != mp_const_none) {
out_value = mp_obj_get_int(ret);
}
break; break;
}
case GET_SECTOR_SIZE: case GET_SECTOR_SIZE:
// old protocol has fixed sector size of 512 bytes // old protocol has fixed sector size of 512 bytes
break; break;
@ -177,16 +190,16 @@ DRESULT disk_ioctl (
return RES_OK; return RES_OK;
case GET_SECTOR_COUNT: { case GET_SECTOR_COUNT: {
*((DWORD*)buff) = mp_obj_get_int(ret); *((DWORD*)buff) = out_value;
return RES_OK; return RES_OK;
} }
case GET_SECTOR_SIZE: { case GET_SECTOR_SIZE: {
if (ret == mp_const_none) { if (out_value == 0) {
// Default sector size // Default sector size
*((WORD*)buff) = 512; *((WORD*)buff) = 512;
} else { } else {
*((WORD*)buff) = mp_obj_get_int(ret); *((WORD*)buff) = out_value;
} }
#if _MAX_SS != _MIN_SS #if _MAX_SS != _MIN_SS
// need to store ssize because we use it in disk_read/disk_write // need to store ssize because we use it in disk_read/disk_write
@ -202,7 +215,7 @@ DRESULT disk_ioctl (
case IOCTL_INIT: case IOCTL_INIT:
case IOCTL_STATUS: { case IOCTL_STATUS: {
DSTATUS stat; DSTATUS stat;
if (ret != mp_const_none && MP_OBJ_SMALL_INT_VALUE(ret) != 0) { if (out_value != 0) {
// error initialising // error initialising
stat = STA_NOINIT; stat = STA_NOINIT;
} else if (vfs->writeblocks[0] == MP_OBJ_NULL) { } else if (vfs->writeblocks[0] == MP_OBJ_NULL) {

@ -1 +1 @@
Subproject commit 5f07ec6188852794a94138763e612844842f13e4 Subproject commit de6b7704c530d886ad8dfa0fa1864764d86117ee

View File

@ -5,8 +5,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-07-06 18:10+0000\n" "PO-Revision-Date: 2020-10-10 23:51+0000\n"
"Last-Translator: oon arfiandwi <oon.arfiandwi@gmail.com>\n" "Last-Translator: oon arfiandwi <oon.arfiandwi@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ID\n" "Language: ID\n"
@ -14,7 +14,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.2-dev\n" "X-Generator: Weblate 4.3-dev\n"
#: main.c #: main.c
msgid "" msgid ""
@ -250,6 +250,10 @@ msgstr "'label' membutuhkan 1 argumen"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "'return' diluar fungsi" msgstr "'return' diluar fungsi"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "'yield' diluar fungsi" msgstr "'yield' diluar fungsi"
@ -275,6 +279,10 @@ msgstr "pow() 3-arg tidak didukung"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "Sebuah channel hardware interrupt sedang digunakan" msgstr "Sebuah channel hardware interrupt sedang digunakan"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -289,6 +297,7 @@ msgid "All I2C peripherals are in use"
msgstr "Semua perangkat I2C sedang digunakan" msgstr "Semua perangkat I2C sedang digunakan"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr ""
@ -910,6 +919,7 @@ msgid "File exists"
msgstr "File sudah ada" msgstr "File sudah ada"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -947,7 +957,8 @@ msgid "Group full"
msgstr "Grup penuh" msgstr "Grup penuh"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "Perangkat keras sibuk, coba pin alternatif" msgstr "Perangkat keras sibuk, coba pin alternatif"
@ -955,6 +966,10 @@ msgstr "Perangkat keras sibuk, coba pin alternatif"
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "Perangkat keras sedang digunakan, coba pin alternatif" msgstr "Perangkat keras sedang digunakan, coba pin alternatif"
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "operasi I/O pada file tertutup" msgstr "operasi I/O pada file tertutup"
@ -1019,7 +1034,8 @@ msgid "Invalid %q pin"
msgstr "%q pada tidak valid" msgstr "%q pada tidak valid"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "" msgstr ""
@ -1035,6 +1051,7 @@ msgstr "File BMP tidak valid"
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "Pin DAC yang diberikan tidak valid" msgstr "Pin DAC yang diberikan tidak valid"
@ -1218,32 +1235,32 @@ msgstr "Kesalahan fatal MicroPython."
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Microphone startup delay must be in range 0.0 to 1.0" msgid "Microphone startup delay must be in range 0.0 to 1.0"
msgstr "" msgstr "Penundaan mulai mikrofon harus dalam kisaran 0,0 hingga 1,0"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
msgid "Missing MISO or MOSI Pin" msgid "Missing MISO or MOSI Pin"
msgstr "" msgstr "Tidak menemukan Pin MISO atau MOSI"
#: shared-bindings/displayio/Group.c #: shared-bindings/displayio/Group.c
msgid "Must be a %q subclass." msgid "Must be a %q subclass."
msgstr "" msgstr "Harus berupa subclass %q."
#: ports/mimxrt10xx/common-hal/busio/SPI.c shared-bindings/busio/SPI.c #: ports/mimxrt10xx/common-hal/busio/SPI.c shared-bindings/busio/SPI.c
msgid "Must provide MISO or MOSI pin" msgid "Must provide MISO or MOSI pin"
msgstr "" msgstr "Harus menyediakan pin MISO atau MOSI"
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format #, c-format
msgid "Must use a multiple of 6 rgb pins, not %d" msgid "Must use a multiple of 6 rgb pins, not %d"
msgstr "" msgstr "Harus menggunakan kelipatan 6 pin rgb, bukan %d"
#: py/parse.c #: py/parse.c
msgid "Name too long" msgid "Name too long"
msgstr "" msgstr "Nama terlalu panjang"
#: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "No CCCD for this Characteristic" msgid "No CCCD for this Characteristic"
msgstr "" msgstr "Tidak ada CCCD untuk Karakteristik ini"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
@ -1258,12 +1275,12 @@ msgstr "tidak ada channel DMA ditemukan"
#: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c #: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/SPI.c
msgid "No MISO Pin" msgid "No MISO Pin"
msgstr "" msgstr "Tidak ada Pin MISO"
#: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c #: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/SPI.c
msgid "No MOSI Pin" msgid "No MOSI Pin"
msgstr "" msgstr "Tidak ada Pin MOSI"
#: ports/atmel-samd/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c
#: ports/esp32s2/common-hal/busio/UART.c #: ports/esp32s2/common-hal/busio/UART.c
@ -1281,11 +1298,11 @@ msgstr "Tidak ada pin TX"
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c #: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
msgid "No available clocks" msgid "No available clocks"
msgstr "" msgstr "Tidak ada clocks yang tersedia"
#: shared-bindings/_bleio/PacketBuffer.c #: shared-bindings/_bleio/PacketBuffer.c
msgid "No connection: length cannot be determined" msgid "No connection: length cannot be determined"
msgstr "" msgstr "Tidak ada koneksi: panjang tidak dapat ditentukan"
#: shared-bindings/board/__init__.c #: shared-bindings/board/__init__.c
msgid "No default %q bus" msgid "No default %q bus"
@ -1297,11 +1314,11 @@ msgstr "Tidak ada GCLK yang kosong"
#: shared-bindings/os/__init__.c #: shared-bindings/os/__init__.c
msgid "No hardware random available" msgid "No hardware random available"
msgstr "" msgstr "Tidak ada perangkat keras acak yang tersedia"
#: ports/atmel-samd/common-hal/ps2io/Ps2.c #: ports/atmel-samd/common-hal/ps2io/Ps2.c
msgid "No hardware support on clk pin" msgid "No hardware support on clk pin"
msgstr "" msgstr "Tidak ada dukungan perangkat keras pada pin clk"
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c #: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c #: ports/atmel-samd/common-hal/pulseio/PulseIn.c
@ -1310,11 +1327,11 @@ msgstr "Tidak ada dukungan hardware untuk pin"
#: shared-bindings/aesio/aes.c #: shared-bindings/aesio/aes.c
msgid "No key was specified" msgid "No key was specified"
msgstr "" msgstr "Tidak ada kunci yang ditentukan"
#: shared-bindings/time/__init__.c #: shared-bindings/time/__init__.c
msgid "No long integer support" msgid "No long integer support"
msgstr "" msgstr "Tidak ada dukungan bilangan bulat yang panjang"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c #: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "No more channels available" msgid "No more channels available"
@ -1326,7 +1343,7 @@ msgstr ""
#: ports/stm/common-hal/pwmio/PWMOut.c #: ports/stm/common-hal/pwmio/PWMOut.c
msgid "No more timers available on this pin." msgid "No more timers available on this pin."
msgstr "" msgstr "Tidak ada lagi penghitung waktu yang tersedia pada pin ini."
#: shared-bindings/wifi/Radio.c #: shared-bindings/wifi/Radio.c
msgid "No network with that ssid" msgid "No network with that ssid"
@ -1334,23 +1351,23 @@ msgstr ""
#: shared-module/touchio/TouchIn.c #: shared-module/touchio/TouchIn.c
msgid "No pulldown on pin; 1Mohm recommended" msgid "No pulldown on pin; 1Mohm recommended"
msgstr "" msgstr "Tidak ada pull-down pada pin; 1Mohm direkomendasikan"
#: py/moduerrno.c #: py/moduerrno.c
msgid "No space left on device" msgid "No space left on device"
msgstr "" msgstr "Tidak ada ruang yang tersisa di perangkat"
#: py/moduerrno.c #: py/moduerrno.c
msgid "No such file/directory" msgid "No such file/directory"
msgstr "" msgstr "Tidak ada file/direktori"
#: shared-module/rgbmatrix/RGBMatrix.c #: shared-module/rgbmatrix/RGBMatrix.c
msgid "No timer available" msgid "No timer available"
msgstr "" msgstr "Penghitung waktu tidak tersedia"
#: supervisor/shared/safe_mode.c #: supervisor/shared/safe_mode.c
msgid "Nordic Soft Device failure assertion." msgid "Nordic Soft Device failure assertion."
msgstr "" msgstr "Pernyataan kegagalan Perangkat Lunak Nordic."
#: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c
msgid "Not a valid IP string" msgid "Not a valid IP string"
@ -1365,7 +1382,7 @@ msgstr "Tidak dapat menyambungkan ke AP"
#: shared-bindings/audiobusio/I2SOut.c shared-bindings/audioio/AudioOut.c #: shared-bindings/audiobusio/I2SOut.c shared-bindings/audioio/AudioOut.c
#: shared-bindings/audiopwmio/PWMAudioOut.c #: shared-bindings/audiopwmio/PWMAudioOut.c
msgid "Not playing" msgid "Not playing"
msgstr "" msgstr "Tidak berfungsi"
#: main.c #: main.c
msgid "Not running saved code.\n" msgid "Not running saved code.\n"
@ -1379,6 +1396,7 @@ msgstr ""
msgid "" msgid ""
"Object has been deinitialized and can no longer be used. Create a new object." "Object has been deinitialized and can no longer be used. Create a new object."
msgstr "" msgstr ""
"Objek telah dideinisialisasi dan tidak dapat lagi digunakan. Buat objek baru."
#: ports/nrf/common-hal/busio/UART.c #: ports/nrf/common-hal/busio/UART.c
msgid "Odd parity is not supported" msgid "Odd parity is not supported"
@ -1401,6 +1419,8 @@ msgstr ""
msgid "" msgid ""
"Only Windows format, uncompressed BMP supported: given header size is %d" "Only Windows format, uncompressed BMP supported: given header size is %d"
msgstr "" msgstr ""
"Hanya format Windows, mendukung BMP tidak dikompresi: ukuran header yang "
"diberikan adalah %d"
#: shared-module/displayio/OnDiskBitmap.c #: shared-module/displayio/OnDiskBitmap.c
#, c-format #, c-format
@ -1408,6 +1428,8 @@ msgid ""
"Only monochrome, indexed 4bpp or 8bpp, and 16bpp or greater BMPs supported: " "Only monochrome, indexed 4bpp or 8bpp, and 16bpp or greater BMPs supported: "
"%d bpp given" "%d bpp given"
msgstr "" msgstr ""
"Hanya monokrom, 4bpp atau 8bpp yang diindeks, dan 16bpp atau lebih yang "
"didukung: %d bpp diberikan"
#: shared-bindings/ipaddress/__init__.c #: shared-bindings/ipaddress/__init__.c
msgid "Only raw int supported for ip" msgid "Only raw int supported for ip"
@ -1419,30 +1441,33 @@ msgstr ""
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Oversample must be multiple of 8." msgid "Oversample must be multiple of 8."
msgstr "" msgstr "Sampel berlebihan harus kelipatan 8."
#: shared-bindings/pwmio/PWMOut.c #: shared-bindings/pwmio/PWMOut.c
msgid "" msgid ""
"PWM duty_cycle must be between 0 and 65535 inclusive (16 bit resolution)" "PWM duty_cycle must be between 0 and 65535 inclusive (16 bit resolution)"
msgstr "" msgstr "PWM duty_cycle harus antara 0 dan 65535 inklusif (resolusi 16 bit)"
#: shared-bindings/pwmio/PWMOut.c #: shared-bindings/pwmio/PWMOut.c
msgid "" msgid ""
"PWM frequency not writable when variable_frequency is False on construction." "PWM frequency not writable when variable_frequency is False on construction."
msgstr "" msgstr ""
"Frekuensi PWM tidak dapat ditulis ketika variabel_frequency Salah pada "
"konstruksi."
#: ports/esp32s2/common-hal/displayio/ParallelBus.c #: ports/esp32s2/common-hal/displayio/ParallelBus.c
#: ports/mimxrt10xx/common-hal/displayio/ParallelBus.c #: ports/mimxrt10xx/common-hal/displayio/ParallelBus.c
#: ports/stm/common-hal/displayio/ParallelBus.c #: ports/stm/common-hal/displayio/ParallelBus.c
msgid "ParallelBus not yet supported" msgid "ParallelBus not yet supported"
msgstr "" msgstr "ParallelBus belum didukung"
#: py/moduerrno.c #: py/moduerrno.c
msgid "Permission denied" msgid "Permission denied"
msgstr "" msgstr "Izin ditolak"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -1455,11 +1480,11 @@ msgstr ""
#: ports/atmel-samd/common-hal/countio/Counter.c #: ports/atmel-samd/common-hal/countio/Counter.c
msgid "Pin must support hardware interrupts" msgid "Pin must support hardware interrupts"
msgstr "" msgstr "Pin harus mendukung interupsi perangkat keras"
#: ports/stm/common-hal/pulseio/PulseIn.c #: ports/stm/common-hal/pulseio/PulseIn.c
msgid "Pin number already reserved by EXTI" msgid "Pin number already reserved by EXTI"
msgstr "" msgstr "Nomor pin sudah dipesan oleh EXTI"
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format #, c-format
@ -1468,6 +1493,9 @@ msgid ""
"bytes. If this cannot be avoided, pass allow_inefficient=True to the " "bytes. If this cannot be avoided, pass allow_inefficient=True to the "
"constructor" "constructor"
msgstr "" msgstr ""
"Pinout menggunakan %d byte per elemen, yang mengonsumsi lebih dari %d byte "
"ideal. Jika ini tidak dapat dihindari, berikan allow_inefficient=True ke "
"konstruktor"
#: py/builtinhelp.c #: py/builtinhelp.c
msgid "Plus any modules on the filesystem\n" msgid "Plus any modules on the filesystem\n"
@ -1494,7 +1522,7 @@ msgstr ""
#: shared-bindings/_bleio/Adapter.c #: shared-bindings/_bleio/Adapter.c
msgid "Prefix buffer must be on the heap" msgid "Prefix buffer must be on the heap"
msgstr "" msgstr "Buffer awalan harus ada di heap"
#: main.c #: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload." msgid "Press any key to enter the REPL. Use CTRL-D to reload."
@ -1504,43 +1532,43 @@ msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c #: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output." msgid "Pull not used when direction is output."
msgstr "" msgstr "Pull tidak digunakan saat arah output."
#: ports/stm/common-hal/os/__init__.c #: ports/stm/common-hal/os/__init__.c
msgid "RNG DeInit Error" msgid "RNG DeInit Error"
msgstr "" msgstr "Kesalahan DeInit RNG"
#: ports/stm/common-hal/os/__init__.c #: ports/stm/common-hal/os/__init__.c
msgid "RNG Init Error" msgid "RNG Init Error"
msgstr "" msgstr "Kesalahan Init RNG"
#: ports/esp32s2/common-hal/busio/UART.c #: ports/esp32s2/common-hal/busio/UART.c
#: ports/mimxrt10xx/common-hal/busio/UART.c #: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "RS485 inversion specified when not in RS485 mode" msgid "RS485 inversion specified when not in RS485 mode"
msgstr "" msgstr "Pembalikan RS485 ditentukan saat tidak dalam mode RS485"
#: ports/cxd56/common-hal/rtc/RTC.c ports/esp32s2/common-hal/rtc/RTC.c #: ports/cxd56/common-hal/rtc/RTC.c ports/esp32s2/common-hal/rtc/RTC.c
#: ports/mimxrt10xx/common-hal/rtc/RTC.c ports/nrf/common-hal/rtc/RTC.c #: ports/mimxrt10xx/common-hal/rtc/RTC.c ports/nrf/common-hal/rtc/RTC.c
msgid "RTC calibration is not supported on this board" msgid "RTC calibration is not supported on this board"
msgstr "" msgstr "Kalibrasi RTC tidak didukung pada board ini"
#: shared-bindings/time/__init__.c #: shared-bindings/time/__init__.c
msgid "RTC is not supported on this board" msgid "RTC is not supported on this board"
msgstr "" msgstr "RTC tidak didukung di board ini"
#: ports/atmel-samd/common-hal/busio/UART.c ports/cxd56/common-hal/busio/UART.c #: ports/atmel-samd/common-hal/busio/UART.c ports/cxd56/common-hal/busio/UART.c
#: ports/nrf/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c #: ports/nrf/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
msgid "RTS/CTS/RS485 Not yet supported on this device" msgid "RTS/CTS/RS485 Not yet supported on this device"
msgstr "" msgstr "RTS/CTS/RS485 Belum didukung pada perangkat ini"
#: ports/stm/common-hal/os/__init__.c #: ports/stm/common-hal/os/__init__.c
msgid "Random number generation error" msgid "Random number generation error"
msgstr "" msgstr "Kesalahan pembuatan nomor acak"
#: shared-bindings/memorymonitor/AllocationSize.c #: shared-bindings/memorymonitor/AllocationSize.c
#: shared-bindings/pulseio/PulseIn.c #: shared-bindings/pulseio/PulseIn.c
msgid "Read-only" msgid "Read-only"
msgstr "" msgstr "Baca-saja"
#: extmod/vfs_fat.c py/moduerrno.c #: extmod/vfs_fat.c py/moduerrno.c
msgid "Read-only filesystem" msgid "Read-only filesystem"
@ -1553,7 +1581,7 @@ msgstr "sistem file (filesystem) bersifat Read-only"
#: shared-bindings/displayio/EPaperDisplay.c #: shared-bindings/displayio/EPaperDisplay.c
msgid "Refresh too soon" msgid "Refresh too soon"
msgstr "" msgstr "Segarkan terlalu cepat"
#: shared-bindings/canio/RemoteTransmissionRequest.c #: shared-bindings/canio/RemoteTransmissionRequest.c
msgid "RemoteTransmissionRequests limited to 8 bytes" msgid "RemoteTransmissionRequests limited to 8 bytes"
@ -1561,7 +1589,7 @@ msgstr ""
#: shared-bindings/aesio/aes.c #: shared-bindings/aesio/aes.c
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
msgstr "" msgstr "Mode AES yang diminta tidak didukung"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c #: ports/atmel-samd/common-hal/audioio/AudioOut.c
msgid "Right channel unsupported" msgid "Right channel unsupported"
@ -1569,7 +1597,7 @@ msgstr "Channel Kanan tidak didukung"
#: shared-bindings/_pew/PewPew.c #: shared-bindings/_pew/PewPew.c
msgid "Row entry must be digitalio.DigitalInOut" msgid "Row entry must be digitalio.DigitalInOut"
msgstr "" msgstr "Entri baris harus digitalio.DigitalInOut"
#: main.c #: main.c
msgid "Running in safe mode! " msgid "Running in safe mode! "
@ -1596,15 +1624,15 @@ msgstr ""
#: ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/SPI.c
msgid "SPI Init Error" msgid "SPI Init Error"
msgstr "" msgstr "Kesalahan Init SPI"
#: ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/SPI.c
msgid "SPI Re-initialization error" msgid "SPI Re-initialization error"
msgstr "" msgstr "Kesalahan Inisialisasi ulang SPI"
#: shared-bindings/audiomixer/Mixer.c #: shared-bindings/audiomixer/Mixer.c
msgid "Sample rate must be positive" msgid "Sample rate must be positive"
msgstr "" msgstr "Tingkat sampel harus positif"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c #: ports/atmel-samd/common-hal/audioio/AudioOut.c
#, c-format #, c-format
@ -1613,15 +1641,15 @@ msgstr "Nilai sampel terlalu tinggi. Nilai harus kurang dari %d"
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Scan already in progess. Stop with stop_scan." msgid "Scan already in progess. Stop with stop_scan."
msgstr "" msgstr "Pindai sudah dalam proses. Hentikan dengan stop_scan."
#: ports/mimxrt10xx/common-hal/busio/UART.c #: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Selected CTS pin not valid" msgid "Selected CTS pin not valid"
msgstr "" msgstr "Pin CTS yang dipilih tidak valid"
#: ports/mimxrt10xx/common-hal/busio/UART.c #: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Selected RTS pin not valid" msgid "Selected RTS pin not valid"
msgstr "" msgstr "Pin RTS yang dipilih tidak valid"
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c #: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c #: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
@ -1638,14 +1666,14 @@ msgstr ""
#: shared-bindings/nvm/ByteArray.c #: shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths." msgid "Slice and value different lengths."
msgstr "" msgstr "Potongan dan nilai panjangnya berbeda."
#: shared-bindings/displayio/Bitmap.c shared-bindings/displayio/Group.c #: shared-bindings/displayio/Bitmap.c shared-bindings/displayio/Group.c
#: shared-bindings/displayio/TileGrid.c #: shared-bindings/displayio/TileGrid.c
#: shared-bindings/memorymonitor/AllocationSize.c #: shared-bindings/memorymonitor/AllocationSize.c
#: shared-bindings/pulseio/PulseIn.c #: shared-bindings/pulseio/PulseIn.c
msgid "Slices not supported" msgid "Slices not supported"
msgstr "" msgstr "Potongan tidak didukung"
#: ports/esp32s2/common-hal/socketpool/SocketPool.c #: ports/esp32s2/common-hal/socketpool/SocketPool.c
msgid "SocketPool can only be used with wifi.radio" msgid "SocketPool can only be used with wifi.radio"
@ -1653,7 +1681,7 @@ msgstr ""
#: shared-bindings/aesio/aes.c #: shared-bindings/aesio/aes.c
msgid "Source and destination buffers must be the same length" msgid "Source and destination buffers must be the same length"
msgstr "" msgstr "Buffer sumber dan tujuan harus memiliki panjang yang sama"
#: extmod/modure.c #: extmod/modure.c
msgid "Splitting with sub-captures" msgid "Splitting with sub-captures"
@ -1661,15 +1689,15 @@ msgstr "Memisahkan dengan menggunakan sub-captures"
#: shared-bindings/supervisor/__init__.c #: shared-bindings/supervisor/__init__.c
msgid "Stack size must be at least 256" msgid "Stack size must be at least 256"
msgstr "" msgstr "Ukuran stack minimal harus 256"
#: shared-bindings/multiterminal/__init__.c #: shared-bindings/multiterminal/__init__.c
msgid "Stream missing readinto() or write() method." msgid "Stream missing readinto() or write() method."
msgstr "" msgstr "Aliran tidak menemukan metode readinto() atau write()."
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c #: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
msgid "Supply at least one UART pin" msgid "Supply at least one UART pin"
msgstr "" msgstr "Berikan setidaknya satu pin UART"
#: shared-bindings/gnss/GNSS.c #: shared-bindings/gnss/GNSS.c
msgid "System entry must be gnss.SatelliteSystem" msgid "System entry must be gnss.SatelliteSystem"
@ -1677,19 +1705,23 @@ msgstr ""
#: ports/stm/common-hal/microcontroller/Processor.c #: ports/stm/common-hal/microcontroller/Processor.c
msgid "Temperature read timed out" msgid "Temperature read timed out"
msgstr "" msgstr "Waktu baca suhu habis"
#: supervisor/shared/safe_mode.c #: supervisor/shared/safe_mode.c
msgid "" msgid ""
"The CircuitPython heap was corrupted because the stack was too small.\n" "The CircuitPython heap was corrupted because the stack was too small.\n"
"Please increase the stack size if you know how, or if not:" "Please increase the stack size if you know how, or if not:"
msgstr "" msgstr ""
"heap dari CircuitPython rusak karena stack terlalu kecil.\n"
"Harap tambah ukuran stack jika Anda tahu caranya, atau jika tidak:"
#: supervisor/shared/safe_mode.c #: supervisor/shared/safe_mode.c
msgid "" msgid ""
"The `microcontroller` module was used to boot into safe mode. Press reset to " "The `microcontroller` module was used to boot into safe mode. Press reset to "
"exit safe mode.\n" "exit safe mode.\n"
msgstr "" msgstr ""
"Modul `microcontroller` digunakan untukboot ke mode aman. Tekan reset untuk "
"keluar dari mode aman.\n"
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "The length of rgb_pins must be 6, 12, 18, 24, or 30" msgid "The length of rgb_pins must be 6, 12, 18, 24, or 30"
@ -2747,6 +2779,10 @@ msgstr "format tidak valid"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "key tidak valid" msgstr "key tidak valid"
@ -3178,6 +3214,7 @@ msgstr ""
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "" msgstr ""
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3185,6 +3222,7 @@ msgstr ""
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3453,6 +3491,10 @@ msgstr ""
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "" msgstr ""
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "" msgstr ""

View File

@ -246,6 +246,10 @@ msgstr ""
msgid "'return' outside function" msgid "'return' outside function"
msgstr "" msgstr ""
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "" msgstr ""
@ -271,6 +275,10 @@ msgstr ""
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -939,6 +947,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "" msgstr ""
@ -1018,6 +1030,7 @@ msgstr ""
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "" msgstr ""
@ -1425,6 +1438,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2722,6 +2736,10 @@ msgstr ""
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "" msgstr ""
@ -3428,6 +3446,10 @@ msgstr ""
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "" msgstr ""
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-05-24 03:22+0000\n" "PO-Revision-Date: 2020-05-24 03:22+0000\n"
"Last-Translator: dronecz <mzuzelka@gmail.com>\n" "Last-Translator: dronecz <mzuzelka@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -250,6 +250,10 @@ msgstr ""
msgid "'return' outside function" msgid "'return' outside function"
msgstr "" msgstr ""
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "" msgstr ""
@ -275,6 +279,10 @@ msgstr ""
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -289,6 +297,7 @@ msgid "All I2C peripherals are in use"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr ""
@ -896,6 +905,7 @@ msgid "File exists"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -932,7 +942,8 @@ msgid "Group full"
msgstr "" msgstr ""
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "" msgstr ""
@ -940,6 +951,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "" msgstr ""
@ -1002,7 +1017,8 @@ msgid "Invalid %q pin"
msgstr "" msgstr ""
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "" msgstr ""
@ -1018,6 +1034,7 @@ msgstr ""
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "" msgstr ""
@ -1425,6 +1442,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2718,6 +2736,10 @@ msgstr ""
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "" msgstr ""
@ -3148,6 +3170,7 @@ msgstr ""
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "" msgstr ""
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3155,6 +3178,7 @@ msgstr ""
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3422,6 +3446,10 @@ msgstr ""
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "" msgstr ""
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-06-16 18:24+0000\n" "PO-Revision-Date: 2020-06-16 18:24+0000\n"
"Last-Translator: Andreas Buchen <andreas.buchen@gmail.com>\n" "Last-Translator: Andreas Buchen <andreas.buchen@gmail.com>\n"
"Language: de_DE\n" "Language: de_DE\n"
@ -249,6 +249,10 @@ msgstr "'label' erfordert genau ein Argument"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "'return' außerhalb einer Funktion" msgstr "'return' außerhalb einer Funktion"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "'yield' außerhalb einer Funktion" msgstr "'yield' außerhalb einer Funktion"
@ -274,6 +278,10 @@ msgstr "3-arg pow() wird nicht unterstützt"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "Ein Hardware Interrupt Kanal wird schon benutzt" msgstr "Ein Hardware Interrupt Kanal wird schon benutzt"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -288,6 +296,7 @@ msgid "All I2C peripherals are in use"
msgstr "Alle I2C-Peripheriegeräte sind in Benutzung" msgstr "Alle I2C-Peripheriegeräte sind in Benutzung"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr ""
@ -907,6 +916,7 @@ msgid "File exists"
msgstr "Datei existiert" msgstr "Datei existiert"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -947,7 +957,8 @@ msgid "Group full"
msgstr "Gruppe voll" msgstr "Gruppe voll"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "Hardware beschäftigt, versuchen Sie alternative Pins" msgstr "Hardware beschäftigt, versuchen Sie alternative Pins"
@ -955,6 +966,10 @@ msgstr "Hardware beschäftigt, versuchen Sie alternative Pins"
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "Hardware in benutzung, probiere alternative Pins" msgstr "Hardware in benutzung, probiere alternative Pins"
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "Lese/Schreibe-operation an geschlossener Datei" msgstr "Lese/Schreibe-operation an geschlossener Datei"
@ -1019,7 +1034,8 @@ msgid "Invalid %q pin"
msgstr "Ungültiger %q pin" msgstr "Ungültiger %q pin"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "" msgstr ""
@ -1035,6 +1051,7 @@ msgstr "Ungültige BMP-Datei"
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "Ungültiger DAC-Pin angegeben" msgstr "Ungültiger DAC-Pin angegeben"
@ -1450,6 +1467,7 @@ msgstr "Zugang verweigert"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2789,6 +2807,10 @@ msgstr "ungültiges Format"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "ungültiger Formatbezeichner" msgstr "ungültiger Formatbezeichner"
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "ungültiger Schlüssel" msgstr "ungültiger Schlüssel"
@ -3229,6 +3251,7 @@ msgstr "pow() drittes Argument darf nicht 0 sein"
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "pow () mit 3 Argumenten erfordert Integer" msgstr "pow () mit 3 Argumenten erfordert Integer"
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3236,6 +3259,7 @@ msgstr "pow () mit 3 Argumenten erfordert Integer"
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3506,6 +3530,10 @@ msgstr "Typ ist kein akzeptierter Basis-Typ"
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "Typ vom Objekt '%q' hat kein Attribut '%q'" msgstr "Typ vom Objekt '%q' hat kein Attribut '%q'"
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "Typ akzeptiert 1 oder 3 Argumente" msgstr "Typ akzeptiert 1 oder 3 Argumente"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n" "Last-Translator: Automatically generated\n"
"Language-Team: none\n" "Language-Team: none\n"
@ -245,6 +245,10 @@ msgstr ""
msgid "'return' outside function" msgid "'return' outside function"
msgstr "" msgstr ""
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "" msgstr ""
@ -270,6 +274,10 @@ msgstr ""
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -284,6 +292,7 @@ msgid "All I2C peripherals are in use"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr ""
@ -891,6 +900,7 @@ msgid "File exists"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -927,7 +937,8 @@ msgid "Group full"
msgstr "" msgstr ""
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "" msgstr ""
@ -935,6 +946,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "" msgstr ""
@ -997,7 +1012,8 @@ msgid "Invalid %q pin"
msgstr "" msgstr ""
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "" msgstr ""
@ -1013,6 +1029,7 @@ msgstr ""
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "" msgstr ""
@ -1420,6 +1437,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2713,6 +2731,10 @@ msgstr ""
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "" msgstr ""
@ -3143,6 +3165,7 @@ msgstr ""
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "" msgstr ""
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3150,6 +3173,7 @@ msgstr ""
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3417,6 +3441,10 @@ msgstr ""
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "" msgstr ""
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "" msgstr ""

View File

@ -7,9 +7,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-10-01 21:24+0000\n" "PO-Revision-Date: 2020-10-09 17:19+0000\n"
"Last-Translator: Alvaro Figueroa <alvaro@greencore.co.cr>\n" "Last-Translator: dherrada <dylan.herrada@adafruit.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: es\n" "Language: es\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -253,6 +253,10 @@ msgstr "'label' requiere 1 argumento"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "'return' fuera de una función" msgstr "'return' fuera de una función"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "'yield' fuera de una función" msgstr "'yield' fuera de una función"
@ -278,6 +282,10 @@ msgstr "pow() con 3 argumentos no soportado"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "El canal EXTINT ya está siendo utilizado" msgstr "El canal EXTINT ya está siendo utilizado"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -292,6 +300,7 @@ msgid "All I2C peripherals are in use"
msgstr "Todos los periféricos I2C están siendo usados" msgstr "Todos los periféricos I2C están siendo usados"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "Todos los FIFOs de RX en uso" msgstr "Todos los FIFOs de RX en uso"
@ -911,6 +920,7 @@ msgid "File exists"
msgstr "El archivo ya existe" msgstr "El archivo ya existe"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "Filtros muy complejos" msgstr "Filtros muy complejos"
@ -948,7 +958,8 @@ msgid "Group full"
msgstr "Group lleno" msgstr "Group lleno"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "Hardware ocupado, pruebe pines alternativos" msgstr "Hardware ocupado, pruebe pines alternativos"
@ -956,6 +967,10 @@ msgstr "Hardware ocupado, pruebe pines alternativos"
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "Hardware en uso, pruebe pines alternativos" msgstr "Hardware en uso, pruebe pines alternativos"
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "Operación I/O en archivo cerrado" msgstr "Operación I/O en archivo cerrado"
@ -1020,7 +1035,8 @@ msgid "Invalid %q pin"
msgstr "Pin %q inválido" msgstr "Pin %q inválido"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "selección inválida de pin %q" msgstr "selección inválida de pin %q"
@ -1036,6 +1052,7 @@ msgstr "Archivo BMP inválido"
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "BSSID inválido" msgstr "BSSID inválido"
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "Pin suministrado inválido para DAC" msgstr "Pin suministrado inválido para DAC"
@ -1451,6 +1468,7 @@ msgstr "Permiso denegado"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -1709,7 +1727,7 @@ msgstr ""
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "The length of rgb_pins must be 6, 12, 18, 24, or 30" msgid "The length of rgb_pins must be 6, 12, 18, 24, or 30"
msgstr "" msgstr "La longitud de rgb_pins debe ser 6, 12, 18, 24, o 30"
#: supervisor/shared/safe_mode.c #: supervisor/shared/safe_mode.c
msgid "" msgid ""
@ -2783,6 +2801,10 @@ msgstr "formato inválido"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "especificador de formato inválido" msgstr "especificador de formato inválido"
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "llave inválida" msgstr "llave inválida"
@ -3219,6 +3241,7 @@ msgstr "el 3er argumento de pow() no puede ser 0"
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "pow() con 3 argumentos requiere enteros" msgstr "pow() con 3 argumentos requiere enteros"
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3226,6 +3249,7 @@ msgstr "pow() con 3 argumentos requiere enteros"
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "presionando botón de arranque al inicio.\n" msgstr "presionando botón de arranque al inicio.\n"
@ -3496,6 +3520,10 @@ msgstr "type no es un tipo de base aceptable"
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "objeto de tipo '%q' no tiene atributo '%q'" msgstr "objeto de tipo '%q' no tiene atributo '%q'"
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "type acepta 1 ó 3 argumentos" msgstr "type acepta 1 ó 3 argumentos"
@ -3604,7 +3632,7 @@ msgstr "el tiempo de espera del perro guardián debe ser mayor a 0"
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr "el ancho debe ser mayor que cero"
#: shared-bindings/_bleio/Adapter.c #: shared-bindings/_bleio/Adapter.c
msgid "window must be <= interval" msgid "window must be <= interval"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2018-12-20 22:15-0800\n" "PO-Revision-Date: 2018-12-20 22:15-0800\n"
"Last-Translator: Timothy <me@timothygarcia.ca>\n" "Last-Translator: Timothy <me@timothygarcia.ca>\n"
"Language-Team: fil\n" "Language-Team: fil\n"
@ -247,6 +247,10 @@ msgstr "'label' kailangan ng 1 argument"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "'return' sa labas ng function" msgstr "'return' sa labas ng function"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "'yield' sa labas ng function" msgstr "'yield' sa labas ng function"
@ -272,6 +276,10 @@ msgstr "3-arg pow() hindi suportado"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "Isang channel ng hardware interrupt ay ginagamit na" msgstr "Isang channel ng hardware interrupt ay ginagamit na"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, fuzzy, c-format #, fuzzy, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -286,6 +294,7 @@ msgid "All I2C peripherals are in use"
msgstr "Lahat ng I2C peripherals ginagamit" msgstr "Lahat ng I2C peripherals ginagamit"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr ""
@ -904,6 +913,7 @@ msgid "File exists"
msgstr "Mayroong file" msgstr "Mayroong file"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -940,7 +950,8 @@ msgid "Group full"
msgstr "Puno ang group" msgstr "Puno ang group"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "" msgstr ""
@ -948,6 +959,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "I/O operasyon sa saradong file" msgstr "I/O operasyon sa saradong file"
@ -1012,7 +1027,8 @@ msgid "Invalid %q pin"
msgstr "Mali ang %q pin" msgstr "Mali ang %q pin"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "" msgstr ""
@ -1028,6 +1044,7 @@ msgstr "Mali ang BMP file"
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "" msgstr ""
@ -1439,6 +1456,7 @@ msgstr "Walang pahintulot"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2758,6 +2776,10 @@ msgstr "hindi wastong pag-format"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "mali ang format specifier" msgstr "mali ang format specifier"
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "mali ang key" msgstr "mali ang key"
@ -3194,6 +3216,7 @@ msgstr "pow() 3rd argument ay hindi maaring 0"
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "pow() na may 3 argumento kailangan ng integers" msgstr "pow() na may 3 argumento kailangan ng integers"
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3201,6 +3224,7 @@ msgstr "pow() na may 3 argumento kailangan ng integers"
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3472,6 +3496,10 @@ msgstr "hindi puede ang type para sa base type"
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "type object '%q' ay walang attribute '%q'" msgstr "type object '%q' ay walang attribute '%q'"
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "type kumuhuha ng 1 o 3 arguments" msgstr "type kumuhuha ng 1 o 3 arguments"

View File

@ -7,9 +7,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.1\n" "Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-09-16 13:47+0000\n" "PO-Revision-Date: 2020-10-15 18:17+0000\n"
"Last-Translator: Hugo Dahl <hugo@code-jedi.com>\n" "Last-Translator: Jeff Epler <jepler@gmail.com>\n"
"Language: fr\n" "Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
@ -46,7 +46,7 @@ msgstr " Fichier \"%q\", ligne %d"
#: main.c #: main.c
msgid " output:\n" msgid " output:\n"
msgstr " sortie:\n" msgstr " sortie :\n"
#: py/objstr.c #: py/objstr.c
#, c-format #, c-format
@ -102,7 +102,7 @@ msgstr "%q doit être un tuple de longueur 2"
#: shared-bindings/canio/Match.c #: shared-bindings/canio/Match.c
msgid "%q out of range" msgid "%q out of range"
msgstr "" msgstr "%q est hors de porté"
#: ports/atmel-samd/common-hal/microcontroller/Pin.c #: ports/atmel-samd/common-hal/microcontroller/Pin.c
msgid "%q pin invalid" msgid "%q pin invalid"
@ -254,6 +254,10 @@ msgstr "'label' nécessite 1 argument"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "'return' en dehors d'une fonction" msgstr "'return' en dehors d'une fonction"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "'yield' en dehors d'une fonction" msgstr "'yield' en dehors d'une fonction"
@ -279,6 +283,10 @@ msgstr "pow() non supporté avec 3 arguments"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "Un canal d'interruptions matérielles est déjà utilisé" msgstr "Un canal d'interruptions matérielles est déjà utilisé"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr "ADC2 est utilisé pars le Wifi"
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -293,8 +301,9 @@ msgid "All I2C peripherals are in use"
msgstr "Tous les périphériques I2C sont utilisés" msgstr "Tous les périphériques I2C sont utilisés"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr "Tout les RX FIFOs sont utilisé"
#: ports/esp32s2/common-hal/busio/SPI.c ports/nrf/common-hal/busio/SPI.c #: ports/esp32s2/common-hal/busio/SPI.c ports/nrf/common-hal/busio/SPI.c
msgid "All SPI peripherals are in use" msgid "All SPI peripherals are in use"
@ -523,7 +532,7 @@ msgstr "Impossible de définir CCCD sur une caractéristique locale"
#: shared-bindings/_bleio/Adapter.c #: shared-bindings/_bleio/Adapter.c
msgid "Cannot create a new Adapter; use _bleio.adapter;" msgid "Cannot create a new Adapter; use _bleio.adapter;"
msgstr "" msgstr ""
"Un nouveau Adapter ne peut être créé; Adapter; utilisez _bleio.adapter;" "Un nouveau Adapter ne peut être créé ; Adapter; utilisez _bleio.adapter;"
#: shared-bindings/displayio/Bitmap.c #: shared-bindings/displayio/Bitmap.c
#: shared-bindings/memorymonitor/AllocationSize.c #: shared-bindings/memorymonitor/AllocationSize.c
@ -660,7 +669,7 @@ msgstr "Code brut corrompu"
#: ports/cxd56/common-hal/camera/Camera.c #: ports/cxd56/common-hal/camera/Camera.c
msgid "Could not initialize Camera" msgid "Could not initialize Camera"
msgstr "" msgstr "Impossible d'initialisé la Camera"
#: ports/cxd56/common-hal/gnss/GNSS.c #: ports/cxd56/common-hal/gnss/GNSS.c
msgid "Could not initialize GNSS" msgid "Could not initialize GNSS"
@ -791,7 +800,7 @@ msgstr "La BCE ne fonctionne que sur 16 octets à la fois"
#: ports/esp32s2/common-hal/busio/SPI.c #: ports/esp32s2/common-hal/busio/SPI.c
msgid "ESP-IDF memory allocation failed" msgid "ESP-IDF memory allocation failed"
msgstr "" msgstr "ESP-IDF échec d'allocation de la mémoire"
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c #: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
#: ports/atmel-samd/common-hal/ps2io/Ps2.c #: ports/atmel-samd/common-hal/ps2io/Ps2.c
@ -896,7 +905,7 @@ msgstr "Impossible de se connecter : délai d'expiration"
#: ports/esp32s2/common-hal/wifi/__init__.c #: ports/esp32s2/common-hal/wifi/__init__.c
msgid "Failed to init wifi" msgid "Failed to init wifi"
msgstr "" msgstr "Echec de l'initialisation du Wifi"
#: shared-module/audiomp3/MP3Decoder.c #: shared-module/audiomp3/MP3Decoder.c
msgid "Failed to parse MP3 file" msgid "Failed to parse MP3 file"
@ -916,6 +925,7 @@ msgid "File exists"
msgstr "Le fichier existe" msgstr "Le fichier existe"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -953,7 +963,8 @@ msgid "Group full"
msgstr "Groupe plein" msgstr "Groupe plein"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "Matériel occupé, essayez d'autres broches" msgstr "Matériel occupé, essayez d'autres broches"
@ -961,6 +972,10 @@ msgstr "Matériel occupé, essayez d'autres broches"
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "Matériel utilisé, essayez d'autres broches" msgstr "Matériel utilisé, essayez d'autres broches"
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "opération d'E/S sur un fichier fermé" msgstr "opération d'E/S sur un fichier fermé"
@ -971,7 +986,7 @@ msgstr "Erreur d'initialisation I2C"
#: shared-bindings/audiobusio/I2SOut.c #: shared-bindings/audiobusio/I2SOut.c
msgid "I2SOut not available" msgid "I2SOut not available"
msgstr "" msgstr "I2SOut n'est pas disponible"
#: shared-bindings/aesio/aes.c #: shared-bindings/aesio/aes.c
#, c-format #, c-format
@ -1025,7 +1040,8 @@ msgid "Invalid %q pin"
msgstr "Broche invalide pour '%q'" msgstr "Broche invalide pour '%q'"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "" msgstr ""
@ -1039,8 +1055,9 @@ msgstr "Fichier BMP invalide"
#: shared-bindings/wifi/Radio.c #: shared-bindings/wifi/Radio.c
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr "BSSID Invalide"
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "Broche DAC non valide fournie" msgstr "Broche DAC non valide fournie"
@ -1089,7 +1106,7 @@ msgstr "Taille de bloc de formatage invalide"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c #: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "Invalid frequency" msgid "Invalid frequency"
msgstr "" msgstr "fréquence non Valide"
#: ports/stm/common-hal/pwmio/PWMOut.c #: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Invalid frequency supplied" msgid "Invalid frequency supplied"
@ -1212,7 +1229,7 @@ msgstr "La valeur max. de x est %d lors d'une opération miroir"
#: shared-bindings/canio/Message.c #: shared-bindings/canio/Message.c
msgid "Messages limited to 8 bytes" msgid "Messages limited to 8 bytes"
msgstr "" msgstr "Message limité a 8 bytes"
#: supervisor/shared/safe_mode.c #: supervisor/shared/safe_mode.c
msgid "MicroPython NLR jump failed. Likely memory corruption." msgid "MicroPython NLR jump failed. Likely memory corruption."
@ -1324,11 +1341,11 @@ msgstr "Pas de support entier long"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c #: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "No more channels available" msgid "No more channels available"
msgstr "" msgstr "Pas de canal supplémentaire disponible"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c #: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "No more timers available" msgid "No more timers available"
msgstr "" msgstr "Pas d'horloge supplémentaire disponible"
#: ports/stm/common-hal/pwmio/PWMOut.c #: ports/stm/common-hal/pwmio/PWMOut.c
msgid "No more timers available on this pin." msgid "No more timers available on this pin."
@ -1336,7 +1353,7 @@ msgstr "Plus de minuteurs disponibles sur cette broche."
#: shared-bindings/wifi/Radio.c #: shared-bindings/wifi/Radio.c
msgid "No network with that ssid" msgid "No network with that ssid"
msgstr "" msgstr "Aucun réseau avec ce ssid"
#: shared-module/touchio/TouchIn.c #: shared-module/touchio/TouchIn.c
msgid "No pulldown on pin; 1Mohm recommended" msgid "No pulldown on pin; 1Mohm recommended"
@ -1360,7 +1377,7 @@ msgstr "Affirmation de défaillance du Nordic Soft Device."
#: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c
msgid "Not a valid IP string" msgid "Not a valid IP string"
msgstr "" msgstr "Chaîne IP non valide"
#: ports/nrf/common-hal/_bleio/__init__.c #: ports/nrf/common-hal/_bleio/__init__.c
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c
@ -1458,6 +1475,7 @@ msgstr "Permission refusée"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2798,6 +2816,10 @@ msgstr "format invalide"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "spécification de format invalide" msgstr "spécification de format invalide"
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "clé invalide" msgstr "clé invalide"
@ -3237,6 +3259,7 @@ msgstr "le 3e argument de pow() ne peut être 0"
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "pow() avec 3 arguments nécessite des entiers" msgstr "pow() avec 3 arguments nécessite des entiers"
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3244,6 +3267,7 @@ msgstr "pow() avec 3 arguments nécessite des entiers"
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3514,6 +3538,10 @@ msgstr "le type n'est pas un type de base accepté"
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "l'objet de type '%q' n'a pas d'attribut '%q'" msgstr "l'objet de type '%q' n'a pas d'attribut '%q'"
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "le type prend 1 ou 3 arguments" msgstr "le type prend 1 ou 3 arguments"
@ -3593,7 +3621,7 @@ msgstr "caractère de format '%c' (0x%x) non supporté à l'index %d"
#: py/runtime.c #: py/runtime.c
msgid "unsupported type for %q: '%q'" msgid "unsupported type for %q: '%q'"
msgstr "type non supporté pour %q: '%q'" msgstr "type non supporté pour %q : '%q'"
#: py/runtime.c #: py/runtime.c
msgid "unsupported type for operator" msgid "unsupported type for operator"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n" "Last-Translator: Automatically generated\n"
"Language-Team: none\n" "Language-Team: none\n"
@ -245,6 +245,10 @@ msgstr ""
msgid "'return' outside function" msgid "'return' outside function"
msgstr "" msgstr ""
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "" msgstr ""
@ -270,6 +274,10 @@ msgstr ""
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -284,6 +292,7 @@ msgid "All I2C peripherals are in use"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr ""
@ -891,6 +900,7 @@ msgid "File exists"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -927,7 +937,8 @@ msgid "Group full"
msgstr "" msgstr ""
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "" msgstr ""
@ -935,6 +946,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "" msgstr ""
@ -997,7 +1012,8 @@ msgid "Invalid %q pin"
msgstr "" msgstr ""
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "" msgstr ""
@ -1013,6 +1029,7 @@ msgstr ""
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "" msgstr ""
@ -1420,6 +1437,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2713,6 +2731,10 @@ msgstr ""
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "" msgstr ""
@ -3143,6 +3165,7 @@ msgstr ""
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "" msgstr ""
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3150,6 +3173,7 @@ msgstr ""
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3417,6 +3441,10 @@ msgstr ""
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "" msgstr ""
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "" msgstr ""

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2018-10-02 16:27+0200\n" "PO-Revision-Date: 2018-10-02 16:27+0200\n"
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n" "Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -246,6 +246,10 @@ msgstr "'label' richiede 1 argomento"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "'return' al di fuori della funzione" msgstr "'return' al di fuori della funzione"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "'yield' al di fuori della funzione" msgstr "'yield' al di fuori della funzione"
@ -271,6 +275,10 @@ msgstr "pow() con tre argmomenti non supportata"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "Un canale di interrupt hardware è già in uso" msgstr "Un canale di interrupt hardware è già in uso"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, fuzzy, c-format #, fuzzy, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -285,6 +293,7 @@ msgid "All I2C peripherals are in use"
msgstr "Tutte le periferiche I2C sono in uso" msgstr "Tutte le periferiche I2C sono in uso"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr ""
@ -904,6 +913,7 @@ msgid "File exists"
msgstr "File esistente" msgstr "File esistente"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -940,7 +950,8 @@ msgid "Group full"
msgstr "Gruppo pieno" msgstr "Gruppo pieno"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "" msgstr ""
@ -948,6 +959,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "operazione I/O su file chiuso" msgstr "operazione I/O su file chiuso"
@ -1012,7 +1027,8 @@ msgid "Invalid %q pin"
msgstr "Pin %q non valido" msgstr "Pin %q non valido"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "" msgstr ""
@ -1028,6 +1044,7 @@ msgstr "File BMP non valido"
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "" msgstr ""
@ -1448,6 +1465,7 @@ msgstr "Permesso negato"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2759,6 +2777,10 @@ msgstr "formato non valido"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "specificatore di formato non valido" msgstr "specificatore di formato non valido"
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "chiave non valida" msgstr "chiave non valida"
@ -3201,6 +3223,7 @@ msgstr "il terzo argomento di pow() non può essere 0"
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "pow() con 3 argomenti richiede interi" msgstr "pow() con 3 argomenti richiede interi"
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3208,6 +3231,7 @@ msgstr "pow() con 3 argomenti richiede interi"
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3479,6 +3503,10 @@ msgstr "il tipo non è un tipo di base accettabile"
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "l'oggetto di tipo '%q' non ha l'attributo '%q'" msgstr "l'oggetto di tipo '%q' non ha l'attributo '%q'"
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "tipo prende 1 o 3 argomenti" msgstr "tipo prende 1 o 3 argomenti"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-09-25 18:20+0000\n" "PO-Revision-Date: 2020-09-25 18:20+0000\n"
"Last-Translator: Taku Fukada <naninunenor@gmail.com>\n" "Last-Translator: Taku Fukada <naninunenor@gmail.com>\n"
"Language-Team: none\n" "Language-Team: none\n"
@ -252,6 +252,10 @@ msgstr ""
msgid "'return' outside function" msgid "'return' outside function"
msgstr "関数外でのreturn" msgstr "関数外でのreturn"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "関数外でのyield" msgstr "関数外でのyield"
@ -277,6 +281,10 @@ msgstr "引数3つのpow()は非対応"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "ハードウェア割り込みチャネルは使用中" msgstr "ハードウェア割り込みチャネルは使用中"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -291,6 +299,7 @@ msgid "All I2C peripherals are in use"
msgstr "全てのI2C周辺機器が使用中" msgstr "全てのI2C周辺機器が使用中"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "全てのRX FIFOが使用中" msgstr "全てのRX FIFOが使用中"
@ -904,6 +913,7 @@ msgid "File exists"
msgstr "ファイルが存在します" msgstr "ファイルが存在します"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -940,7 +950,8 @@ msgid "Group full"
msgstr "グループが一杯" msgstr "グループが一杯"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "ハードウェアビジー。代替のピンを試してください" msgstr "ハードウェアビジー。代替のピンを試してください"
@ -948,6 +959,10 @@ msgstr "ハードウェアビジー。代替のピンを試してください"
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "ハードウェア使用中。代わりのピンを試してください" msgstr "ハードウェア使用中。代わりのピンを試してください"
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "閉じられたファイルへのI/O操作" msgstr "閉じられたファイルへのI/O操作"
@ -1012,7 +1027,8 @@ msgid "Invalid %q pin"
msgstr "不正な%qピン" msgstr "不正な%qピン"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "不正な%qピン選択" msgstr "不正な%qピン選択"
@ -1028,6 +1044,7 @@ msgstr "不正なBMPファイル"
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "不正なDACピンが与えられました" msgstr "不正なDACピンが与えられました"
@ -1438,6 +1455,7 @@ msgstr "パーミッション拒否"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2743,6 +2761,10 @@ msgstr ""
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "不正な鍵" msgstr "不正な鍵"
@ -3175,6 +3197,7 @@ msgstr "pow()の3つ目の引数は0にできません"
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "pow()の第3引数には整数が必要" msgstr "pow()の第3引数には整数が必要"
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3182,6 +3205,7 @@ msgstr "pow()の第3引数には整数が必要"
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3450,6 +3474,10 @@ msgstr "この型はベース型にできません"
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "" msgstr ""
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "typeは1つか3つの引数をとります" msgstr "typeは1つか3つの引数をとります"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-10-05 12:12+0000\n" "PO-Revision-Date: 2020-10-05 12:12+0000\n"
"Last-Translator: Michal Čihař <michal@cihar.com>\n" "Last-Translator: Michal Čihař <michal@cihar.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -248,6 +248,10 @@ msgstr "'label' 에는 1 개의 독립변수가 필요합니다"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "'return' 는 함수 외부에 존재합니다" msgstr "'return' 는 함수 외부에 존재합니다"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "'yield' 는 함수 외부에 존재합니다" msgstr "'yield' 는 함수 외부에 존재합니다"
@ -273,6 +277,10 @@ msgstr ""
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -287,6 +295,7 @@ msgid "All I2C peripherals are in use"
msgstr "사용중인 모든 I2C주변 기기" msgstr "사용중인 모든 I2C주변 기기"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr ""
@ -896,6 +905,7 @@ msgid "File exists"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -932,7 +942,8 @@ msgid "Group full"
msgstr "" msgstr ""
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "" msgstr ""
@ -940,6 +951,10 @@ msgstr ""
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "" msgstr ""
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "" msgstr ""
@ -1002,7 +1017,8 @@ msgid "Invalid %q pin"
msgstr "" msgstr ""
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "" msgstr ""
@ -1018,6 +1034,7 @@ msgstr ""
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "" msgstr ""
@ -1425,6 +1442,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2719,6 +2737,10 @@ msgstr "형식가 유효하지 않습니다"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "형식 지정자(format specifier)가 유효하지 않습니다" msgstr "형식 지정자(format specifier)가 유효하지 않습니다"
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "키가 유효하지 않습니다" msgstr "키가 유효하지 않습니다"
@ -3149,6 +3171,7 @@ msgstr ""
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "" msgstr ""
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3156,6 +3179,7 @@ msgstr ""
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3423,6 +3447,10 @@ msgstr ""
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "" msgstr ""
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-09-09 16:05+0000\n" "PO-Revision-Date: 2020-09-09 16:05+0000\n"
"Last-Translator: Jelle Jager <jell@jjc.id.au>\n" "Last-Translator: Jelle Jager <jell@jjc.id.au>\n"
"Language-Team: none\n" "Language-Team: none\n"
@ -250,6 +250,10 @@ msgstr "'label' vereist 1 argument"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "'return' buiten de functie" msgstr "'return' buiten de functie"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "'yield' buiten de functie" msgstr "'yield' buiten de functie"
@ -275,6 +279,10 @@ msgstr "3-arg pow() niet ondersteund"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "Een hardware interrupt kanaal is al in gebruik" msgstr "Een hardware interrupt kanaal is al in gebruik"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -289,6 +297,7 @@ msgid "All I2C peripherals are in use"
msgstr "Alle I2C peripherals zijn in gebruik" msgstr "Alle I2C peripherals zijn in gebruik"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr ""
@ -904,6 +913,7 @@ msgid "File exists"
msgstr "Bestand bestaat" msgstr "Bestand bestaat"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -942,7 +952,8 @@ msgid "Group full"
msgstr "Groep is vol" msgstr "Groep is vol"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "Hardware bezig, probeer alternatieve pinnen" msgstr "Hardware bezig, probeer alternatieve pinnen"
@ -950,6 +961,10 @@ msgstr "Hardware bezig, probeer alternatieve pinnen"
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "Hardware in gebruik, probeer alternatieve pinnen" msgstr "Hardware in gebruik, probeer alternatieve pinnen"
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "I/O actie op gesloten bestand" msgstr "I/O actie op gesloten bestand"
@ -1014,7 +1029,8 @@ msgid "Invalid %q pin"
msgstr "Ongeldige %q pin" msgstr "Ongeldige %q pin"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "Ongeldige %q pin selectie" msgstr "Ongeldige %q pin selectie"
@ -1030,6 +1046,7 @@ msgstr "Ongeldig BMP bestand"
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "Ongeldige DAC pin opgegeven" msgstr "Ongeldige DAC pin opgegeven"
@ -1446,6 +1463,7 @@ msgstr "Toegang geweigerd"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2770,6 +2788,10 @@ msgstr "ongeldig formaat"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "ongeldige formaatspecificatie" msgstr "ongeldige formaatspecificatie"
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "ongeldige sleutel" msgstr "ongeldige sleutel"
@ -3204,6 +3226,7 @@ msgstr "derde argument van pow() mag geen 0 zijn"
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "pow() met 3 argumenten vereist integers" msgstr "pow() met 3 argumenten vereist integers"
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3211,6 +3234,7 @@ msgstr "pow() met 3 argumenten vereist integers"
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3480,6 +3504,10 @@ msgstr "type is geen aanvaardbaar basistype"
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "objecttype '%q' heeft geen attribuut '%q'" msgstr "objecttype '%q' heeft geen attribuut '%q'"
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "type accepteert 1 of 3 argumenten" msgstr "type accepteert 1 of 3 argumenten"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-09-29 01:39+0000\n" "PO-Revision-Date: 2020-09-29 01:39+0000\n"
"Last-Translator: Maciej Stankiewicz <tawezik@gmail.com>\n" "Last-Translator: Maciej Stankiewicz <tawezik@gmail.com>\n"
"Language-Team: pl\n" "Language-Team: pl\n"
@ -252,6 +252,10 @@ msgstr "'label' wymaga 1 argumentu"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "'return' poza funkcją" msgstr "'return' poza funkcją"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr ""
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "'yield' poza funkcją" msgstr "'yield' poza funkcją"
@ -277,6 +281,10 @@ msgstr "3-argumentowy pow() jest niewspierany"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "Kanał przerwań sprzętowych w użyciu" msgstr "Kanał przerwań sprzętowych w użyciu"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr ""
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -291,6 +299,7 @@ msgid "All I2C peripherals are in use"
msgstr "Wszystkie peryferia I2C w użyciu" msgstr "Wszystkie peryferia I2C w użyciu"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr ""
@ -904,6 +913,7 @@ msgid "File exists"
msgstr "Plik istnieje" msgstr "Plik istnieje"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr ""
@ -940,7 +950,8 @@ msgid "Group full"
msgstr "Grupa pełna" msgstr "Grupa pełna"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "Sprzęt zajęty, wypróbuj alternatywne piny" msgstr "Sprzęt zajęty, wypróbuj alternatywne piny"
@ -948,6 +959,10 @@ msgstr "Sprzęt zajęty, wypróbuj alternatywne piny"
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "Sprzęt w użyciu, wypróbuj alternatywne piny" msgstr "Sprzęt w użyciu, wypróbuj alternatywne piny"
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "Operacja I/O na zamkniętym pliku" msgstr "Operacja I/O na zamkniętym pliku"
@ -1012,7 +1027,8 @@ msgid "Invalid %q pin"
msgstr "Zła nóżka %q" msgstr "Zła nóżka %q"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "" msgstr ""
@ -1028,6 +1044,7 @@ msgstr "Zły BMP"
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "" msgstr ""
@ -1436,6 +1453,7 @@ msgstr "Odmowa dostępu"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2736,6 +2754,10 @@ msgstr "zły format"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "zła specyfikacja formatu" msgstr "zła specyfikacja formatu"
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "zły klucz" msgstr "zły klucz"
@ -3167,6 +3189,7 @@ msgstr "trzeci argument pow() nie może być 0"
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "trzyargumentowe pow() wymaga liczb całkowitych" msgstr "trzyargumentowe pow() wymaga liczb całkowitych"
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3174,6 +3197,7 @@ msgstr "trzyargumentowe pow() wymaga liczb całkowitych"
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr ""
@ -3442,6 +3466,10 @@ msgstr "typ nie może być bazowy"
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "typ '%q' nie ma atrybutu '%q'" msgstr "typ '%q' nie ma atrybutu '%q'"
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr ""
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "type wymaga 1 lub 3 argumentów" msgstr "type wymaga 1 lub 3 argumentów"

View File

@ -5,8 +5,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-10-02 22:53+0000\n" "PO-Revision-Date: 2020-10-16 17:01+0000\n"
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n" "Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: pt_BR\n" "Language: pt_BR\n"
@ -14,7 +14,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n" "Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.3-dev\n" "X-Generator: Weblate 4.3.1-dev\n"
#: main.c #: main.c
msgid "" msgid ""
@ -254,6 +254,10 @@ msgstr "'label' exige 1 argumento"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "função externa 'return'" msgstr "função externa 'return'"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr "'yield a partir' de dentro da função async"
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "função externa 'yield'" msgstr "função externa 'yield'"
@ -279,6 +283,10 @@ msgstr "3-arg pow() não compatível"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "Um canal de interrupção de hardware já está em uso" msgstr "Um canal de interrupção de hardware já está em uso"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr "O ADC2 está sendo usado pelo WiFi"
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -293,6 +301,7 @@ msgid "All I2C peripherals are in use"
msgstr "Todos os periféricos I2C estão em uso" msgstr "Todos os periféricos I2C estão em uso"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "Todos os FIFOs RX estão em uso" msgstr "Todos os FIFOs RX estão em uso"
@ -913,6 +922,7 @@ msgid "File exists"
msgstr "Arquivo já existe" msgstr "Arquivo já existe"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "Os filtros são muito complexos" msgstr "Os filtros são muito complexos"
@ -951,7 +961,8 @@ msgid "Group full"
msgstr "Grupo cheio" msgstr "Grupo cheio"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "O hardware está ocupado, tente os pinos alternativos" msgstr "O hardware está ocupado, tente os pinos alternativos"
@ -959,6 +970,10 @@ msgstr "O hardware está ocupado, tente os pinos alternativos"
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "O hardware está em uso, tente os pinos alternativos" msgstr "O hardware está em uso, tente os pinos alternativos"
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr "O nome do host deve ter entre 1 e 253 caracteres"
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "Operação I/O no arquivo fechado" msgstr "Operação I/O no arquivo fechado"
@ -1023,7 +1038,8 @@ msgid "Invalid %q pin"
msgstr "Pino do %q inválido" msgstr "Pino do %q inválido"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "Seleção inválida dos pinos %q" msgstr "Seleção inválida dos pinos %q"
@ -1039,6 +1055,7 @@ msgstr "Arquivo BMP inválido"
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "BSSID Inválido" msgstr "BSSID Inválido"
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "O pino DAC informado é inválido" msgstr "O pino DAC informado é inválido"
@ -1455,6 +1472,7 @@ msgstr "Permissão negada"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2794,6 +2812,10 @@ msgstr "formato inválido"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "o especificador do formato é inválido" msgstr "o especificador do formato é inválido"
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr "o nome do host é inválido"
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "chave inválida" msgstr "chave inválida"
@ -3234,6 +3256,7 @@ msgstr "O terceiro argumento pow() não pode ser 0"
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "o pow() com 3 argumentos requer números inteiros" msgstr "o pow() com 3 argumentos requer números inteiros"
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3241,6 +3264,7 @@ msgstr "o pow() com 3 argumentos requer números inteiros"
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "pressionando o botão de boot na inicialização.\n" msgstr "pressionando o botão de boot na inicialização.\n"
@ -3510,6 +3534,10 @@ msgstr "tipo não é um tipo base aceitável"
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "o objeto tipo '%q' não possuí atributo '%q'" msgstr "o objeto tipo '%q' não possuí atributo '%q'"
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr "o tipo do objeto 'generator' não possui qualquer atributo '__await__'"
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "o tipo usa 1 ou 3 argumentos" msgstr "o tipo usa 1 ou 3 argumentos"

View File

@ -5,8 +5,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2020-10-02 22:53+0000\n" "PO-Revision-Date: 2020-10-14 18:12+0000\n"
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n" "Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sv\n" "Language: sv\n"
@ -250,6 +250,10 @@ msgstr "'label' kräver 1 argument"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "'return' utanför funktion" msgstr "'return' utanför funktion"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr "'yield from' i async-funktion"
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "'yield' utanför funktion" msgstr "'yield' utanför funktion"
@ -275,6 +279,10 @@ msgstr "3-arguments pow() stöds inte"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "En kanal för hårdvaruavbrott används redan" msgstr "En kanal för hårdvaruavbrott används redan"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr "ADC2 används av WiFi"
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -289,6 +297,7 @@ msgid "All I2C peripherals are in use"
msgstr "All I2C-kringutrustning används" msgstr "All I2C-kringutrustning används"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "Alla RX FIFO i bruk" msgstr "Alla RX FIFO i bruk"
@ -904,6 +913,7 @@ msgid "File exists"
msgstr "Filen finns redan" msgstr "Filen finns redan"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "Filter för komplexa" msgstr "Filter för komplexa"
@ -940,7 +950,8 @@ msgid "Group full"
msgstr "Gruppen är full" msgstr "Gruppen är full"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "Hårdvaran är upptagen, prova alternativa pinnar" msgstr "Hårdvaran är upptagen, prova alternativa pinnar"
@ -948,6 +959,10 @@ msgstr "Hårdvaran är upptagen, prova alternativa pinnar"
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "Hårdvaran används redan, prova alternativa pinnar" msgstr "Hårdvaran används redan, prova alternativa pinnar"
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "I/O-operation på stängd fil" msgstr "I/O-operation på stängd fil"
@ -1012,7 +1027,8 @@ msgid "Invalid %q pin"
msgstr "Ogiltig %q-pinne" msgstr "Ogiltig %q-pinne"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "Ogiltigt val av %q pinne" msgstr "Ogiltigt val av %q pinne"
@ -1028,6 +1044,7 @@ msgstr "Ogiltig BMP-fil"
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "Ogiltig BSSID" msgstr "Ogiltig BSSID"
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "Ogiltig DAC-pinne angiven" msgstr "Ogiltig DAC-pinne angiven"
@ -1443,6 +1460,7 @@ msgstr "Åtkomst nekad"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -2767,6 +2785,10 @@ msgstr "ogiltigt format"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "ogiltig formatspecificerare" msgstr "ogiltig formatspecificerare"
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "ogiltig nyckel" msgstr "ogiltig nyckel"
@ -3201,6 +3223,7 @@ msgstr "pow() 3: e argument kan inte vara 0"
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "pow() med 3 argument kräver heltal" msgstr "pow() med 3 argument kräver heltal"
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3208,6 +3231,7 @@ msgstr "pow() med 3 argument kräver heltal"
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "trycka på startknappen vid start.\n" msgstr "trycka på startknappen vid start.\n"
@ -3477,6 +3501,10 @@ msgstr "typ är inte en acceptabel bastyp"
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "typobjektet '%q' har inget attribut '%q'" msgstr "typobjektet '%q' har inget attribut '%q'"
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr "typobjekt 'generator' har inget attribut '__await__'"
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "typen tar 1 eller 3 argument" msgstr "typen tar 1 eller 3 argument"

View File

@ -6,15 +6,16 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: circuitpython-cn\n" "Project-Id-Version: circuitpython-cn\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-29 20:14-0500\n" "POT-Creation-Date: 2020-10-15 16:06+0530\n"
"PO-Revision-Date: 2019-04-13 10:10-0700\n" "PO-Revision-Date: 2020-10-13 17:11+0000\n"
"Last-Translator: hexthat\n" "Last-Translator: hexthat <hexthat@gmail.com>\n"
"Language-Team: Chinese Hanyu Pinyin\n" "Language-Team: Chinese Hanyu Pinyin\n"
"Language: zh\n" "Language: zh_Latn_pinyin\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.1\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.3-dev\n"
#: main.c #: main.c
msgid "" msgid ""
@ -99,7 +100,7 @@ msgstr "%q bìxū shì chángdù wèi 2 de yuán zǔ"
#: shared-bindings/canio/Match.c #: shared-bindings/canio/Match.c
msgid "%q out of range" msgid "%q out of range"
msgstr "" msgstr "%q chāochū fànwéi"
#: ports/atmel-samd/common-hal/microcontroller/Pin.c #: ports/atmel-samd/common-hal/microcontroller/Pin.c
msgid "%q pin invalid" msgid "%q pin invalid"
@ -119,7 +120,7 @@ msgstr "xūyào '%q' cānshù"
#: py/runtime.c #: py/runtime.c
msgid "'%q' object cannot assign attribute '%q'" msgid "'%q' object cannot assign attribute '%q'"
msgstr "'%q' duì xiàng wú fǎ fēn pèi shǔ xìng '%q'" msgstr "'%q' duì xiàng wú fǎ fēn pèi shǔ xìng '%q'"
#: py/proto.c #: py/proto.c
msgid "'%q' object does not support '%q'" msgid "'%q' object does not support '%q'"
@ -251,6 +252,10 @@ msgstr "'label' xūyào 1 cānshù"
msgid "'return' outside function" msgid "'return' outside function"
msgstr "'return' wàibù gōngnéng" msgstr "'return' wàibù gōngnéng"
#: py/compile.c
msgid "'yield from' inside async function"
msgstr "Yì bù hán shù zhōng de 'yield from'"
#: py/compile.c #: py/compile.c
msgid "'yield' outside function" msgid "'yield' outside function"
msgstr "'yield' wàibù gōngnéng" msgstr "'yield' wàibù gōngnéng"
@ -276,6 +281,10 @@ msgstr "bù zhīchí 3-arg pow ()"
msgid "A hardware interrupt channel is already in use" msgid "A hardware interrupt channel is already in use"
msgstr "Yìngjiàn zhōngduàn tōngdào yǐ zài shǐyòng zhōng" msgstr "Yìngjiàn zhōngduàn tōngdào yǐ zài shǐyòng zhōng"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "ADC2 is being used by WiFi"
msgstr "ADC2 zhèng yóu WiFi shǐ yòng"
#: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c #: shared-bindings/_bleio/Address.c shared-bindings/ipaddress/IPv4Address.c
#, c-format #, c-format
msgid "Address must be %d bytes long" msgid "Address must be %d bytes long"
@ -290,8 +299,9 @@ msgid "All I2C peripherals are in use"
msgstr "Suǒyǒu I2C wàiwéi qì zhèngzài shǐyòng" msgstr "Suǒyǒu I2C wàiwéi qì zhèngzài shǐyòng"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "All RX FIFOs in use" msgid "All RX FIFOs in use"
msgstr "" msgstr "Suǒyǒu shǐyòng zhōng de RX FIFO"
#: ports/esp32s2/common-hal/busio/SPI.c ports/nrf/common-hal/busio/SPI.c #: ports/esp32s2/common-hal/busio/SPI.c ports/nrf/common-hal/busio/SPI.c
msgid "All SPI peripherals are in use" msgid "All SPI peripherals are in use"
@ -330,11 +340,11 @@ msgstr "Suǒyǒu jìshí qì shǐyòng"
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Already advertising." msgid "Already advertising."
msgstr "Mùqián zhèngzài guǎngbò" msgstr "Mùqián zhèngzài guǎngbò."
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
msgid "Already have all-matches listener" msgid "Already have all-matches listener"
msgstr "" msgstr "yǐ jù yǒu quán pǐ pèi zhēn tīng qì"
#: shared-module/memorymonitor/AllocationAlarm.c #: shared-module/memorymonitor/AllocationAlarm.c
#: shared-module/memorymonitor/AllocationSize.c #: shared-module/memorymonitor/AllocationSize.c
@ -343,7 +353,7 @@ msgstr "yǐ zài yùn xíng"
#: ports/esp32s2/common-hal/wifi/Radio.c #: ports/esp32s2/common-hal/wifi/Radio.c
msgid "Already scanning for wifi networks" msgid "Already scanning for wifi networks"
msgstr "" msgstr "yǐ jīng sǎo miáo WIFI wǎng luò"
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
msgid "AnalogIn not supported on given pin" msgid "AnalogIn not supported on given pin"
@ -391,7 +401,7 @@ msgstr "MicroPython VM zài wèi yùnxíng shí chángshì fēnpèi duī."
#: shared-bindings/wifi/Radio.c #: shared-bindings/wifi/Radio.c
msgid "Authentication failure" msgid "Authentication failure"
msgstr "" msgstr "shēn fèn yàn zhèng shī bài"
#: main.c #: main.c
msgid "Auto-reload is off.\n" msgid "Auto-reload is off.\n"
@ -454,7 +464,7 @@ msgstr "Huǎnchōng qū dàxiǎo bù zhèngquè. Yīnggāi shì %d zì jié."
#: shared-bindings/displayio/Display.c #: shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
msgid "Buffer is not a bytearray." msgid "Buffer is not a bytearray."
msgstr "Huǎnchōng qū bùshì bytearray" msgstr "Huǎnchōng qū bùshì bytearray."
#: ports/cxd56/common-hal/camera/Camera.c shared-bindings/displayio/Display.c #: ports/cxd56/common-hal/camera/Camera.c shared-bindings/displayio/Display.c
#: shared-bindings/framebufferio/FramebufferDisplay.c #: shared-bindings/framebufferio/FramebufferDisplay.c
@ -508,7 +518,7 @@ msgstr "CBC kuài bì xū shì 16 zì jié de bèi shù"
#: py/objtype.c #: py/objtype.c
msgid "Call super().__init__() before accessing native object." msgid "Call super().__init__() before accessing native object."
msgstr "Zài fǎngwèn běn jī wùjiàn zhīqián diàoyòng super().__init__()" msgstr "Zài fǎngwèn běn jī wùjiàn zhīqián diàoyòng super().__init__()."
#: ports/nrf/common-hal/_bleio/Characteristic.c #: ports/nrf/common-hal/_bleio/Characteristic.c
msgid "Can't set CCCD on local Characteristic" msgid "Can't set CCCD on local Characteristic"
@ -516,7 +526,7 @@ msgstr "Wúfǎ jiāng CCCD shèzhì wéi běndì tèzhēng"
#: shared-bindings/_bleio/Adapter.c #: shared-bindings/_bleio/Adapter.c
msgid "Cannot create a new Adapter; use _bleio.adapter;" msgid "Cannot create a new Adapter; use _bleio.adapter;"
msgstr "" msgstr "Wúfǎ chuàngjiàn xīn de shìpèiqì; shǐyòng_bleio.Adapter;"
#: shared-bindings/displayio/Bitmap.c #: shared-bindings/displayio/Bitmap.c
#: shared-bindings/memorymonitor/AllocationSize.c #: shared-bindings/memorymonitor/AllocationSize.c
@ -607,7 +617,7 @@ msgstr ""
#: supervisor/shared/safe_mode.c #: supervisor/shared/safe_mode.c
msgid "CircuitPython was unable to allocate the heap.\n" msgid "CircuitPython was unable to allocate the heap.\n"
msgstr "" msgstr "CircuitPython wúfǎ fēnpèi duī.\n"
#: shared-module/bitbangio/SPI.c #: shared-module/bitbangio/SPI.c
msgid "Clock pin init failed." msgid "Clock pin init failed."
@ -646,7 +656,7 @@ msgstr "Sǔnhuài de yuánshǐ dàimǎ"
#: ports/cxd56/common-hal/camera/Camera.c #: ports/cxd56/common-hal/camera/Camera.c
msgid "Could not initialize Camera" msgid "Could not initialize Camera"
msgstr "" msgstr "Wúfǎ chūshǐhuà xiàngjī"
#: ports/cxd56/common-hal/gnss/GNSS.c #: ports/cxd56/common-hal/gnss/GNSS.c
msgid "Could not initialize GNSS" msgid "Could not initialize GNSS"
@ -683,7 +693,7 @@ msgstr "Wúfǎ chóngqǐ PWM"
#: ports/esp32s2/common-hal/neopixel_write/__init__.c #: ports/esp32s2/common-hal/neopixel_write/__init__.c
msgid "Could not retrieve clock" msgid "Could not retrieve clock"
msgstr "" msgstr "Wúfǎ huòqǔ shízhōng"
#: shared-bindings/_bleio/Adapter.c #: shared-bindings/_bleio/Adapter.c
msgid "Could not set address" msgid "Could not set address"
@ -777,7 +787,7 @@ msgstr "ECB yí cì zhǐ shǐ yòng 16 gè zì jié"
#: ports/esp32s2/common-hal/busio/SPI.c #: ports/esp32s2/common-hal/busio/SPI.c
msgid "ESP-IDF memory allocation failed" msgid "ESP-IDF memory allocation failed"
msgstr "" msgstr "ESP-IDF nèicún fēnpèi shībài"
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c #: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
#: ports/atmel-samd/common-hal/ps2io/Ps2.c #: ports/atmel-samd/common-hal/ps2io/Ps2.c
@ -804,7 +814,7 @@ msgstr "Yùqí de tèdiǎn"
#: shared-bindings/_bleio/Adapter.c #: shared-bindings/_bleio/Adapter.c
msgid "Expected a DigitalInOut" msgid "Expected a DigitalInOut"
msgstr "" msgstr "yù qī shù zì huà"
#: shared-bindings/_bleio/Characteristic.c #: shared-bindings/_bleio/Characteristic.c
msgid "Expected a Service" msgid "Expected a Service"
@ -812,7 +822,7 @@ msgstr "Yùqí fúwù"
#: shared-bindings/_bleio/Adapter.c #: shared-bindings/_bleio/Adapter.c
msgid "Expected a UART" msgid "Expected a UART"
msgstr "" msgstr "qī dài UART"
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c #: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
#: shared-bindings/_bleio/Service.c #: shared-bindings/_bleio/Service.c
@ -838,7 +848,7 @@ msgstr "FFT jǐn wéi ndarrays dìng yì"
#: ports/esp32s2/common-hal/socketpool/Socket.c #: ports/esp32s2/common-hal/socketpool/Socket.c
msgid "Failed SSL handshake" msgid "Failed SSL handshake"
msgstr "" msgstr "SSL wòshǒu shībài"
#: shared-bindings/ps2io/Ps2.c #: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command." msgid "Failed sending command."
@ -865,11 +875,11 @@ msgstr "Fēnpèi RX huǎnchōng qū%d zì jié shībài"
#: ports/esp32s2/common-hal/wifi/__init__.c #: ports/esp32s2/common-hal/wifi/__init__.c
msgid "Failed to allocate Wifi memory" msgid "Failed to allocate Wifi memory"
msgstr "" msgstr "Wúfǎ fēnpèi Wifi nèicún"
#: ports/esp32s2/common-hal/wifi/ScannedNetworks.c #: ports/esp32s2/common-hal/wifi/ScannedNetworks.c
msgid "Failed to allocate wifi scan memory" msgid "Failed to allocate wifi scan memory"
msgstr "" msgstr "Wúfǎ fēnpèi wifi sǎomiáo nèicún"
#: ports/nrf/common-hal/_bleio/Adapter.c #: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Failed to connect: internal error" msgid "Failed to connect: internal error"
@ -881,7 +891,7 @@ msgstr "Liánjiē shībài: Chāoshí"
#: ports/esp32s2/common-hal/wifi/__init__.c #: ports/esp32s2/common-hal/wifi/__init__.c
msgid "Failed to init wifi" msgid "Failed to init wifi"
msgstr "" msgstr "Wúfǎ chūshǐhuà wifi"
#: shared-module/audiomp3/MP3Decoder.c #: shared-module/audiomp3/MP3Decoder.c
msgid "Failed to parse MP3 file" msgid "Failed to parse MP3 file"
@ -901,12 +911,13 @@ msgid "File exists"
msgstr "Wénjiàn cúnzài" msgstr "Wénjiàn cúnzài"
#: ports/atmel-samd/common-hal/canio/Listener.c #: ports/atmel-samd/common-hal/canio/Listener.c
#: ports/stm/common-hal/canio/Listener.c
msgid "Filters too complex" msgid "Filters too complex"
msgstr "" msgstr "guò lǜ qì tài fù zá"
#: ports/cxd56/common-hal/camera/Camera.c #: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported" msgid "Format not supported"
msgstr "" msgstr "Bù zhīyuán géshì"
#: shared-module/framebufferio/FramebufferDisplay.c #: shared-module/framebufferio/FramebufferDisplay.c
#, c-format #, c-format
@ -937,7 +948,8 @@ msgid "Group full"
msgstr "Fēnzǔ yǐ mǎn" msgstr "Fēnzǔ yǐ mǎn"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c #: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Hardware busy, try alternative pins" msgid "Hardware busy, try alternative pins"
msgstr "Yìngjiàn máng, qǐng chángshì qítā zhēnjiǎo" msgstr "Yìngjiàn máng, qǐng chángshì qítā zhēnjiǎo"
@ -945,6 +957,10 @@ msgstr "Yìngjiàn máng, qǐng chángshì qítā zhēnjiǎo"
msgid "Hardware in use, try alternative pins" msgid "Hardware in use, try alternative pins"
msgstr "Shǐyòng de yìngjiàn, qǐng chángshì qítā yǐn jiǎo" msgstr "Shǐyòng de yìngjiàn, qǐng chángshì qítā yǐn jiǎo"
#: shared-bindings/wifi/Radio.c
msgid "Hostname must be between 1 and 253 characters"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c #: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file" msgid "I/O operation on closed file"
msgstr "Wénjiàn shàng de I/ O cāozuò" msgstr "Wénjiàn shàng de I/ O cāozuò"
@ -976,7 +992,7 @@ msgstr "Huǎnchōng qū dàxiǎo bù zhèngquè"
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c #: ports/atmel-samd/common-hal/pulseio/PulseIn.c
msgid "Input taking too long" msgid "Input taking too long"
msgstr "" msgstr "Shūrù shíjiānguò zhǎng"
#: ports/esp32s2/common-hal/neopixel_write/__init__.c py/moduerrno.c #: ports/esp32s2/common-hal/neopixel_write/__init__.c py/moduerrno.c
msgid "Input/output error" msgid "Input/output error"
@ -1009,7 +1025,8 @@ msgid "Invalid %q pin"
msgstr "Wúxiào de %q yǐn jiǎo" msgstr "Wúxiào de %q yǐn jiǎo"
#: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c #: ports/stm/common-hal/busio/I2C.c ports/stm/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/sdioio/SDCard.c #: ports/stm/common-hal/busio/UART.c ports/stm/common-hal/canio/CAN.c
#: ports/stm/common-hal/sdioio/SDCard.c
msgid "Invalid %q pin selection" msgid "Invalid %q pin selection"
msgstr "wú xiào %q yǐn jiǎo xuǎn zé" msgstr "wú xiào %q yǐn jiǎo xuǎn zé"
@ -1023,8 +1040,9 @@ msgstr "Wúxiào de BMP wénjiàn"
#: shared-bindings/wifi/Radio.c #: shared-bindings/wifi/Radio.c
msgid "Invalid BSSID" msgid "Invalid BSSID"
msgstr "" msgstr "Wúxiào de BSSID"
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
msgstr "Tí gōng liǎo wúxiào de DAC yǐn jiǎo" msgstr "Tí gōng liǎo wúxiào de DAC yǐn jiǎo"
@ -1073,7 +1091,7 @@ msgstr "Géshì kuài dàxiǎo wúxiào"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c #: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "Invalid frequency" msgid "Invalid frequency"
msgstr "" msgstr "Wúxiào de pínlǜ"
#: ports/stm/common-hal/pwmio/PWMOut.c #: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Invalid frequency supplied" msgid "Invalid frequency supplied"
@ -1196,7 +1214,7 @@ msgstr "Jìngxiàng shí de zuìdà X zhí wèi%d"
#: shared-bindings/canio/Message.c #: shared-bindings/canio/Message.c
msgid "Messages limited to 8 bytes" msgid "Messages limited to 8 bytes"
msgstr "" msgstr "Yóujiàn xiànzhì wèi 8 gè zì jié"
#: supervisor/shared/safe_mode.c #: supervisor/shared/safe_mode.c
msgid "MicroPython NLR jump failed. Likely memory corruption." msgid "MicroPython NLR jump failed. Likely memory corruption."
@ -1308,11 +1326,11 @@ msgstr "Méiyǒu zhǎng zhěngshù zhīchí"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c #: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "No more channels available" msgid "No more channels available"
msgstr "" msgstr "Méiyǒu gèng duō kěyòng píndào"
#: ports/esp32s2/common-hal/pwmio/PWMOut.c #: ports/esp32s2/common-hal/pwmio/PWMOut.c
msgid "No more timers available" msgid "No more timers available"
msgstr "" msgstr "Méiyǒu gèng duō kěyòng de jìshí qì"
#: ports/stm/common-hal/pwmio/PWMOut.c #: ports/stm/common-hal/pwmio/PWMOut.c
msgid "No more timers available on this pin." msgid "No more timers available on this pin."
@ -1320,7 +1338,7 @@ msgstr "Gāi yǐn jiǎo shàng méiyǒu kěyòng de dìngshí qì."
#: shared-bindings/wifi/Radio.c #: shared-bindings/wifi/Radio.c
msgid "No network with that ssid" msgid "No network with that ssid"
msgstr "" msgstr "Méiyǒu wǎngluò yǔ gāi ssid"
#: shared-module/touchio/TouchIn.c #: shared-module/touchio/TouchIn.c
msgid "No pulldown on pin; 1Mohm recommended" msgid "No pulldown on pin; 1Mohm recommended"
@ -1344,7 +1362,7 @@ msgstr "Nordic ruǎn shèbèi gùzhàng shēngmíng."
#: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c #: shared-bindings/ipaddress/IPv4Address.c shared-bindings/ipaddress/__init__.c
msgid "Not a valid IP string" msgid "Not a valid IP string"
msgstr "" msgstr "Wúxiào de IP zìfú chuàn"
#: ports/nrf/common-hal/_bleio/__init__.c #: ports/nrf/common-hal/_bleio/__init__.c
#: shared-bindings/_bleio/CharacteristicBuffer.c #: shared-bindings/_bleio/CharacteristicBuffer.c
@ -1362,7 +1380,7 @@ msgstr "Méiyǒu yùnxíng yǐ bǎocún de dàimǎ.\n"
#: shared-bindings/_bleio/__init__.c #: shared-bindings/_bleio/__init__.c
msgid "Not settable" msgid "Not settable"
msgstr "" msgstr "bù kě shè zhì"
#: shared-bindings/util.c #: shared-bindings/util.c
msgid "" msgid ""
@ -1380,11 +1398,11 @@ msgstr "Zhǐyǒu 8 huò 16 wèi dānwèi "
#: ports/esp32s2/common-hal/socketpool/SocketPool.c #: ports/esp32s2/common-hal/socketpool/SocketPool.c
msgid "Only IPv4 SOCK_STREAM sockets supported" msgid "Only IPv4 SOCK_STREAM sockets supported"
msgstr "" msgstr "Jǐn zhīchí IPv4 SOCK_STREAM tào jiē zì"
#: ports/esp32s2/common-hal/wifi/__init__.c #: ports/esp32s2/common-hal/wifi/__init__.c
msgid "Only IPv4 addresses supported" msgid "Only IPv4 addresses supported"
msgstr "" msgstr "Jǐn zhīchí IPv4 dìzhǐ"
#: shared-module/displayio/OnDiskBitmap.c #: shared-module/displayio/OnDiskBitmap.c
#, c-format #, c-format
@ -1405,11 +1423,11 @@ msgstr ""
#: shared-bindings/ipaddress/__init__.c #: shared-bindings/ipaddress/__init__.c
msgid "Only raw int supported for ip" msgid "Only raw int supported for ip"
msgstr "" msgstr "Ip jǐn zhīchí raw int"
#: ports/esp32s2/common-hal/socketpool/SocketPool.c #: ports/esp32s2/common-hal/socketpool/SocketPool.c
msgid "Out of sockets" msgid "Out of sockets"
msgstr "" msgstr "tào jiē zì wài"
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "Oversample must be multiple of 8." msgid "Oversample must be multiple of 8."
@ -1438,6 +1456,7 @@ msgstr "Quánxiàn bèi jùjué"
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c #: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c #: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c #: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c #: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm/common-hal/analogio/AnalogIn.c #: ports/stm/common-hal/analogio/AnalogIn.c
@ -1479,7 +1498,7 @@ msgstr "Duōbiānxíng zhìshǎo xūyào 3 diǎn"
msgid "" msgid ""
"Port does not accept PWM carrier. Pass a pin, frequency and duty cycle " "Port does not accept PWM carrier. Pass a pin, frequency and duty cycle "
"instead" "instead"
msgstr "" msgstr "Duānkǒu bù jiēshòu PWM zàibō. Tōngguò yǐn jiǎo, pínlǜ hé zhàn kōng bǐ"
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c #: ports/atmel-samd/common-hal/pulseio/PulseOut.c
#: ports/cxd56/common-hal/pulseio/PulseOut.c #: ports/cxd56/common-hal/pulseio/PulseOut.c
@ -1489,6 +1508,7 @@ msgid ""
"Port does not accept pins or frequency. Construct and pass a PWMOut Carrier " "Port does not accept pins or frequency. Construct and pass a PWMOut Carrier "
"instead" "instead"
msgstr "" msgstr ""
"Duānkǒu bù jiēshòu yǐn jiǎo huò pínlǜ. Gòuzào bìng chuándì PWMOut zàibō"
#: shared-bindings/_bleio/Adapter.c #: shared-bindings/_bleio/Adapter.c
msgid "Prefix buffer must be on the heap" msgid "Prefix buffer must be on the heap"
@ -1552,7 +1572,7 @@ msgstr "Shuāxīn tài kuàile"
#: shared-bindings/canio/RemoteTransmissionRequest.c #: shared-bindings/canio/RemoteTransmissionRequest.c
msgid "RemoteTransmissionRequests limited to 8 bytes" msgid "RemoteTransmissionRequests limited to 8 bytes"
msgstr "" msgstr "RemoteTransmissionRequests xiànzhì wèi 8 gè zì jié"
#: shared-bindings/aesio/aes.c #: shared-bindings/aesio/aes.c
msgid "Requested AES mode is unsupported" msgid "Requested AES mode is unsupported"
@ -1568,7 +1588,7 @@ msgstr "Xíng xiàng bìxū shì digitalio.DigitalInOut"
#: main.c #: main.c
msgid "Running in safe mode! " msgid "Running in safe mode! "
msgstr "Zài ānquán móshì xià yùnxíng!" msgstr "Zài ānquán móshì xià yùnxíng! "
#: shared-module/sdcardio/SDCard.c #: shared-module/sdcardio/SDCard.c
msgid "SD card CSD format not supported" msgid "SD card CSD format not supported"
@ -1625,11 +1645,11 @@ msgstr "Xùliè huà yǐjīng shǐyòngguò"
#: shared-bindings/ssl/SSLContext.c #: shared-bindings/ssl/SSLContext.c
msgid "Server side context cannot have hostname" msgid "Server side context cannot have hostname"
msgstr "" msgstr "Fúwùqì duān shàngxiàwén bùnéng jùyǒu zhǔjī míng"
#: ports/cxd56/common-hal/camera/Camera.c #: ports/cxd56/common-hal/camera/Camera.c
msgid "Size not supported" msgid "Size not supported"
msgstr "" msgstr "bù zhī chí dà xiǎo"
#: shared-bindings/nvm/ByteArray.c #: shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths." msgid "Slice and value different lengths."
@ -1644,7 +1664,7 @@ msgstr "Qiēpiàn bù shòu zhīchí"
#: ports/esp32s2/common-hal/socketpool/SocketPool.c #: ports/esp32s2/common-hal/socketpool/SocketPool.c
msgid "SocketPool can only be used with wifi.radio" msgid "SocketPool can only be used with wifi.radio"
msgstr "" msgstr "SocketPool zhǐ néng yǔ wifi.Radio yīqǐ shǐyòng"
#: shared-bindings/aesio/aes.c #: shared-bindings/aesio/aes.c
msgid "Source and destination buffers must be the same length" msgid "Source and destination buffers must be the same length"
@ -1692,7 +1712,7 @@ msgstr ""
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "The length of rgb_pins must be 6, 12, 18, 24, or 30" msgid "The length of rgb_pins must be 6, 12, 18, 24, or 30"
msgstr "" msgstr "Rgb_pins de chángdù bìxū wèi 6,12,18,24 huò 30"
#: supervisor/shared/safe_mode.c #: supervisor/shared/safe_mode.c
msgid "" msgid ""
@ -1823,7 +1843,7 @@ msgstr "Wúfǎ fēnpèi huǎnchōng qū yòng yú qiānmíng zhuǎnhuàn"
#: ports/esp32s2/common-hal/busio/I2C.c #: ports/esp32s2/common-hal/busio/I2C.c
msgid "Unable to create lock" msgid "Unable to create lock"
msgstr "" msgstr "Wúfǎ chuàngjiàn suǒ"
#: shared-module/displayio/I2CDisplay.c #: shared-module/displayio/I2CDisplay.c
#, c-format #, c-format
@ -1854,11 +1874,11 @@ msgstr "Yìwài de nrfx uuid lèixíng"
#: ports/esp32s2/common-hal/socketpool/Socket.c #: ports/esp32s2/common-hal/socketpool/Socket.c
#, c-format #, c-format
msgid "Unhandled ESP TLS error %d %d %x %d" msgid "Unhandled ESP TLS error %d %d %x %d"
msgstr "" msgstr "Wèi chǔlǐ de ESP TLS cuòwù %d %d %x %d"
#: shared-bindings/wifi/Radio.c #: shared-bindings/wifi/Radio.c
msgid "Unknown failure" msgid "Unknown failure"
msgstr "" msgstr "Wèizhī gùzhàng"
#: ports/nrf/common-hal/_bleio/__init__.c #: ports/nrf/common-hal/_bleio/__init__.c
#, c-format #, c-format
@ -1946,7 +1966,7 @@ msgstr "WatchDogTimer dāngqián wèi yùnxíng"
#: shared-bindings/watchdog/WatchDogTimer.c #: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET" msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
msgstr "" msgstr ""
"Yīdàn shèzhì wèi WatchDogMode.RESET, zé bùnéng gēnggǎi WatchDogTimer.Mode." "Yīdàn shèzhì wèi WatchDogMode.RESET, zé bùnéng gēnggǎi WatchDogTimer.Mode"
#: shared-bindings/watchdog/WatchDogTimer.c #: shared-bindings/watchdog/WatchDogTimer.c
msgid "WatchDogTimer.timeout must be greater than 0" msgid "WatchDogTimer.timeout must be greater than 0"
@ -1967,13 +1987,14 @@ msgid ""
msgstr "" msgstr ""
"Huānyíng lái dào Adafruit CircuitPython%s!\n" "Huānyíng lái dào Adafruit CircuitPython%s!\n"
"\n" "\n"
"Qǐng fǎngwèn xuéxí. learn.Adafruit.com/category/circuitpython.\n" "Qǐng fǎngwèn learn.Adafruit.Com/category/circuitpython yǐ huòqǔ xiàngmù "
"zhǐnán.\n"
"\n" "\n"
"Ruò yào liè chū nèizài de mókuài, qǐng qǐng zuò yǐxià `help(\"modules\")`.\n" "Yào liè chū nèizhì mókuài, qǐng zhíxíng `help(“modules”)`\n"
#: shared-bindings/wifi/Radio.c #: shared-bindings/wifi/Radio.c
msgid "WiFi password must be between 8 and 63 characters" msgid "WiFi password must be between 8 and 63 characters"
msgstr "" msgstr "WiFi mìmǎ bìxū jiè yú 8 dào 63 gè zìfú zhī jiān"
#: ports/nrf/common-hal/_bleio/PacketBuffer.c #: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic" msgid "Writes not supported on Characteristic"
@ -1989,7 +2010,7 @@ msgstr "Nín qǐngqiú qǐdòng ānquán móshì "
#: py/objtype.c #: py/objtype.c
msgid "__init__() should return None" msgid "__init__() should return None"
msgstr "__init__() fǎnhuí not" msgstr "__init__() fǎnhuí not"
#: py/objtype.c #: py/objtype.c
msgid "__init__() should return None, not '%q'" msgid "__init__() should return None, not '%q'"
@ -2145,7 +2166,7 @@ msgstr "zì jié > 8 wèi"
#: py/objarray.c #: py/objarray.c
msgid "bytes length not a multiple of item size" msgid "bytes length not a multiple of item size"
msgstr "" msgstr "zì jié chángdù, bùshì xiàngmù dàxiǎo de bèishù"
#: py/objstr.c #: py/objstr.c
msgid "bytes value out of range" msgid "bytes value out of range"
@ -2405,7 +2426,8 @@ msgstr "mòrèn 'except' bìxū shì zuìhòu yīgè"
msgid "" msgid ""
"destination buffer must be a bytearray or array of type 'B' for bit_depth = 8" "destination buffer must be a bytearray or array of type 'B' for bit_depth = 8"
msgstr "" msgstr ""
"mùbiāo huǎnchōng qū bìxū shì zì yǎnlèi huò lèixíng 'B' wèi wèi shēndù = 8" "Duìyú bit_depth = 8, mùbiāo huǎnchōng qū bìxū shì zì jié shùzǔ huò lèixíng "
"wèi 'B' de shùzǔ"
#: shared-bindings/audiobusio/PDMIn.c #: shared-bindings/audiobusio/PDMIn.c
msgid "destination buffer must be an array of type 'H' for bit_depth = 16" msgid "destination buffer must be an array of type 'H' for bit_depth = 16"
@ -2463,11 +2485,11 @@ msgstr "lìwài bìxū láizì BaseException"
#: shared-bindings/canio/CAN.c #: shared-bindings/canio/CAN.c
msgid "expected '%q' but got '%q'" msgid "expected '%q' but got '%q'"
msgstr "" msgstr "yùqí wèi'%q'dàn dédàole'%q'"
#: shared-bindings/canio/CAN.c #: shared-bindings/canio/CAN.c
msgid "expected '%q' or '%q' but got '%q'" msgid "expected '%q' or '%q' but got '%q'"
msgstr "" msgstr "yùqí wèi'%q'huò'%q', dàn huòdéle'%q'"
#: py/objstr.c #: py/objstr.c
msgid "expected ':' after format specifier" msgid "expected ':' after format specifier"
@ -2680,7 +2702,7 @@ msgstr "chūshǐ zhí bìxū shì kě diédài de"
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c #: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
msgid "initial_value length is wrong" msgid "initial_value length is wrong"
msgstr "" msgstr "Initial_value chángdù cuòwù"
#: py/compile.c #: py/compile.c
msgid "inline assembler must be a function" msgid "inline assembler must be a function"
@ -2755,6 +2777,10 @@ msgstr "wúxiào géshì"
msgid "invalid format specifier" msgid "invalid format specifier"
msgstr "wúxiào de géshì biāozhù" msgstr "wúxiào de géshì biāozhù"
#: shared-bindings/wifi/Radio.c
msgid "invalid hostname"
msgstr ""
#: extmod/modussl_axtls.c #: extmod/modussl_axtls.c
msgid "invalid key" msgid "invalid key"
msgstr "wúxiào de mì yào" msgstr "wúxiào de mì yào"
@ -2877,7 +2903,7 @@ msgstr "Dāng gùdìng chángdù wèi %s shí, zuìdà chángdù bìxū wèi 0-%
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c #: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
msgid "max_length must be > 0" msgid "max_length must be > 0"
msgstr "" msgstr "Max_length bìxū > 0"
#: py/runtime.c #: py/runtime.c
msgid "maximum recursion depth exceeded" msgid "maximum recursion depth exceeded"
@ -2937,9 +2963,8 @@ msgid "name reused for argument"
msgstr "cān shǔ míngchēng bèi chóngxīn shǐyòng" msgstr "cān shǔ míngchēng bèi chóngxīn shǐyòng"
#: py/emitnative.c #: py/emitnative.c
#, fuzzy
msgid "native yield" msgid "native yield"
msgstr "yuánshēng chǎnliàng" msgstr "yuán chǎn"
#: py/runtime.c #: py/runtime.c
#, c-format #, c-format
@ -3116,11 +3141,11 @@ msgstr "ord() yùqí zìfú, dàn chángdù zìfú chuàn %d"
#: shared-bindings/displayio/Bitmap.c #: shared-bindings/displayio/Bitmap.c
msgid "out of range of source" msgid "out of range of source"
msgstr "" msgstr "yuán fàn wéi wài"
#: shared-bindings/displayio/Bitmap.c #: shared-bindings/displayio/Bitmap.c
msgid "out of range of target" msgid "out of range of target"
msgstr "" msgstr "mù biāo fàn wéi wài"
#: py/objint_mpz.c #: py/objint_mpz.c
msgid "overflow converting long int to machine word" msgid "overflow converting long int to machine word"
@ -3129,7 +3154,7 @@ msgstr "chāo gāo zhuǎnhuàn zhǎng zhěng shùzì shí"
#: py/modstruct.c #: py/modstruct.c
#, c-format #, c-format
msgid "pack expected %d items for packing (got %d)" msgid "pack expected %d items for packing (got %d)"
msgstr "" msgstr "bāo zhuāng yù qī de %d bāo zhuāng xiàng mù dé dào %d)"
#: shared-bindings/_stage/Layer.c shared-bindings/_stage/Text.c #: shared-bindings/_stage/Layer.c shared-bindings/_stage/Text.c
msgid "palette must be 32 bytes long" msgid "palette must be 32 bytes long"
@ -3169,7 +3194,7 @@ msgstr "duōbiānxíng zhī néng zài yīgè fù jí zhōng zhùcè"
#: ports/esp32s2/common-hal/pulseio/PulseIn.c #: ports/esp32s2/common-hal/pulseio/PulseIn.c
msgid "pop from an empty PulseIn" msgid "pop from an empty PulseIn"
msgstr "cóng kōng de PulseIn dànchū dànchū" msgstr "cóng kōng mài chōng tán chū"
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c #: ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c #: ports/cxd56/common-hal/pulseio/PulseIn.c
@ -3187,6 +3212,7 @@ msgstr "pow() 3 cān shǔ bùnéng wéi 0"
msgid "pow() with 3 arguments requires integers" msgid "pow() with 3 arguments requires integers"
msgstr "pow() yǒu 3 cānshù xūyào zhěngshù" msgstr "pow() yǒu 3 cānshù xūyào zhěngshù"
#: ports/esp32s2/boards/adafruit_metro_esp32s2/mpconfigboard.h
#: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h #: ports/esp32s2/boards/electroniccats_bastwifi/mpconfigboard.h
#: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h #: ports/esp32s2/boards/espressif_kaluga_1/mpconfigboard.h
#: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h #: ports/esp32s2/boards/espressif_saola_1_wroom/mpconfigboard.h
@ -3194,8 +3220,9 @@ msgstr "pow() yǒu 3 cānshù xūyào zhěngshù"
#: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h #: ports/esp32s2/boards/microdev_micro_s2/mpconfigboard.h
#: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h #: ports/esp32s2/boards/muselab_nanoesp32_s2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h #: ports/esp32s2/boards/unexpectedmaker_feathers2/mpconfigboard.h
#: ports/esp32s2/boards/unexpectedmaker_feathers2_prerelease/mpconfigboard.h
msgid "pressing boot button at start up.\n" msgid "pressing boot button at start up.\n"
msgstr "" msgstr "Zài qǐdòng shí àn qǐdòng ànniǔ.\n"
#: ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h #: ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h
#: ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h #: ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h
@ -3203,7 +3230,7 @@ msgstr ""
#: ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h #: ports/atmel-samd/boards/escornabot_makech/mpconfigboard.h
#: ports/atmel-samd/boards/meowmeow/mpconfigboard.h #: ports/atmel-samd/boards/meowmeow/mpconfigboard.h
msgid "pressing both buttons at start up.\n" msgid "pressing both buttons at start up.\n"
msgstr "" msgstr "zài qǐdòng shí tóngshí àn xià liǎng gè ànniǔ.\n"
#: extmod/modutimeq.c #: extmod/modutimeq.c
msgid "queue overflow" msgid "queue overflow"
@ -3250,7 +3277,7 @@ msgstr "yòubiān bìxū shì ndarray huò biāoliàng"
#: py/objstr.c #: py/objstr.c
msgid "rsplit(None,n)" msgid "rsplit(None,n)"
msgstr "" msgstr "Rchāifēn(wú N"
#: shared-bindings/audiocore/RawSample.c #: shared-bindings/audiocore/RawSample.c
msgid "" msgid ""
@ -3330,7 +3357,7 @@ msgstr "sosfilt xūyào diédài cānshù"
#: shared-bindings/displayio/Bitmap.c #: shared-bindings/displayio/Bitmap.c
msgid "source palette too large" msgid "source palette too large"
msgstr "" msgstr "yuán miànbǎn tài dà"
#: py/objstr.c #: py/objstr.c
msgid "start/end indices" msgid "start/end indices"
@ -3463,6 +3490,10 @@ msgstr "lèixíng bùshì kě jiēshòu de jīchǔ lèixíng"
msgid "type object '%q' has no attribute '%q'" msgid "type object '%q' has no attribute '%q'"
msgstr "lèixíng duìxiàng '%q' méiyǒu shǔxìng '%q'" msgstr "lèixíng duìxiàng '%q' méiyǒu shǔxìng '%q'"
#: py/objgenerator.c
msgid "type object 'generator' has no attribute '__await__'"
msgstr "lèi xíng duì xiàng 'generator' méi yǒu shǔ xìng '__await__'"
#: py/objtype.c #: py/objtype.c
msgid "type takes 1 or 3 arguments" msgid "type takes 1 or 3 arguments"
msgstr "lèixíng wèi 1 huò 3 gè cānshù" msgstr "lèixíng wèi 1 huò 3 gè cānshù"
@ -3571,7 +3602,7 @@ msgstr "kān mén gǒu chāoshí bìxū dàyú 0"
#: shared-bindings/rgbmatrix/RGBMatrix.c #: shared-bindings/rgbmatrix/RGBMatrix.c
msgid "width must be greater than zero" msgid "width must be greater than zero"
msgstr "" msgstr "kuāndù bìxū dàyú líng"
#: shared-bindings/_bleio/Adapter.c #: shared-bindings/_bleio/Adapter.c
msgid "window must be <= interval" msgid "window must be <= interval"

42
main.c
View File

@ -242,19 +242,24 @@ void cleanup_after_vm(supervisor_allocation* heap) {
reset_status_led(); reset_status_led();
} }
void print_code_py_status_message(safe_mode_t safe_mode) {
if (autoreload_is_enabled()) {
serial_write_compressed(translate("Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.\n"));
} else {
serial_write_compressed(translate("Auto-reload is off.\n"));
}
if (safe_mode != NO_SAFE_MODE) {
serial_write_compressed(translate("Running in safe mode! "));
serial_write_compressed(translate("Not running saved code.\n"));
}
}
bool run_code_py(safe_mode_t safe_mode) { bool run_code_py(safe_mode_t safe_mode) {
bool serial_connected_at_start = serial_connected(); bool serial_connected_at_start = serial_connected();
#if CIRCUITPY_AUTORELOAD_DELAY_MS > 0 #if CIRCUITPY_AUTORELOAD_DELAY_MS > 0
if (serial_connected_at_start) { if (serial_connected_at_start) {
serial_write("\n"); serial_write("\n");
if (autoreload_is_enabled()) { print_code_py_status_message(safe_mode);
serial_write_compressed(translate("Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.\n"));
} else if (safe_mode != NO_SAFE_MODE) {
serial_write_compressed(translate("Running in safe mode! "));
serial_write_compressed(translate("Auto-reload is off.\n"));
} else if (!autoreload_is_enabled()) {
serial_write_compressed(translate("Auto-reload is off.\n"));
}
} }
#endif #endif
@ -266,10 +271,7 @@ bool run_code_py(safe_mode_t safe_mode) {
bool found_main = false; bool found_main = false;
if (safe_mode != NO_SAFE_MODE) { if (safe_mode == NO_SAFE_MODE) {
serial_write_compressed(translate("Running in safe mode! "));
serial_write_compressed(translate("Not running saved code.\n"));
} else {
new_status_color(MAIN_RUNNING); new_status_color(MAIN_RUNNING);
static const char * const supported_filenames[] = STRING_LIST("code.txt", "code.py", "main.py", "main.txt"); static const char * const supported_filenames[] = STRING_LIST("code.txt", "code.py", "main.py", "main.txt");
@ -322,16 +324,8 @@ bool run_code_py(safe_mode_t safe_mode) {
} }
if (!serial_connected_before_animation && serial_connected()) { if (!serial_connected_before_animation && serial_connected()) {
if (serial_connected_at_start) {
serial_write("\n\n");
}
if (!serial_connected_at_start) { if (!serial_connected_at_start) {
if (autoreload_is_enabled()) { print_code_py_status_message(safe_mode);
serial_write_compressed(translate("Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.\n"));
} else {
serial_write_compressed(translate("Auto-reload is off.\n"));
}
} }
print_safe_mode_message(safe_mode); print_safe_mode_message(safe_mode);
serial_write("\n"); serial_write("\n");
@ -486,8 +480,10 @@ int __attribute__((used)) main(void) {
reset_devices(); reset_devices();
reset_board(); reset_board();
// Turn on autoreload by default but before boot.py in case it wants to change it. // If not in safe mode turn on autoreload by default but before boot.py in case it wants to change it.
autoreload_enable(); if (safe_mode == NO_SAFE_MODE) {
autoreload_enable();
}
// By default our internal flash is readonly to local python code and // By default our internal flash is readonly to local python code and
// writable over USB. Set it here so that boot.py can change it. // writable over USB. Set it here so that boot.py can change it.

View File

@ -66,7 +66,7 @@ LDFLAGS += -static -static-libgcc -static-libstdc++
endif endif
# source files # source files
SRC_C = \ SRC_C += \
main.c \ main.c \
gccollect.c \ gccollect.c \
supervisor/stub/safe_mode.c \ supervisor/stub/safe_mode.c \

View File

@ -0,0 +1,48 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2017 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 "boards/board.h"
#include "mpconfigboard.h"
void board_init(void)
{
// struct port_config pin_conf;
// port_get_config_defaults(&pin_conf);
//
// pin_conf.direction = PORT_PIN_DIR_OUTPUT;
// port_pin_set_config(MICROPY_HW_LED_TX, &pin_conf);
// port_pin_set_output_level(MICROPY_HW_LED_TX, true);
//
// port_pin_set_config(MICROPY_HW_LED_RX, &pin_conf);
// port_pin_set_output_level(MICROPY_HW_LED_RX, true);
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
}

View File

@ -0,0 +1,28 @@
#define MICROPY_HW_BOARD_NAME "BDMICRO VINA-D51"
#define MICROPY_HW_MCU_NAME "samd51n20"
#define CIRCUITPY_MCU_FAMILY samd51
// These are pins not to reset.
// Don't reset QSPI data pins
#define MICROPY_PORT_A (PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11)
#define MICROPY_PORT_B (PORT_PB10 | PORT_PB11)
#define MICROPY_PORT_C (0)
#define MICROPY_PORT_D (0)
#define BOARD_HAS_CRYSTAL 1
#define DEFAULT_I2C_BUS_SDA (&pin_PB02)
#define DEFAULT_I2C_BUS_SCL (&pin_PB03)
#define DEFAULT_SPI_BUS_MISO (&pin_PB23)
#define DEFAULT_UART_BUS_TX (&pin_PB24)
#define DEFAULT_UART_BUS_RX (&pin_PB25)
#define DEFAULT_SPI_BUS_MOSI (&pin_PC27)
#define DEFAULT_SPI_BUS_SCK (&pin_PC28)
#define MICROPY_HW_LED_STATUS (&pin_PA15)
#define MICROPY_HW_LED_RX (&pin_PC05)
#define MICROPY_HW_LED_TX (&pin_PC06)
// USB is always used internally so skip the pin objects for it.
#define IGNORE_PIN_PA24 1
#define IGNORE_PIN_PA25 1

View File

@ -0,0 +1,12 @@
USB_VID = 0x31e2
USB_PID = 0x2011
USB_PRODUCT = "VINA-D51"
USB_MANUFACTURER = "BDMICRO LLC"
CHIP_VARIANT = SAMD51N20A
CHIP_FAMILY = samd51
QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 2
EXTERNAL_FLASH_DEVICES = "MX25L51245G","GD25S512MD"
LONGINT_IMPL = MPZ

View File

@ -0,0 +1,82 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PB08) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB09) },
{ MP_ROM_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_PC00) },
{ MP_ROM_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_PC01) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA04) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB00) },
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PB01) },
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_PB05) },
{ MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_PB06) },
{ MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_PB07) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PC10) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PC11) },
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA14) },
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA13) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PB14) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PB15) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PC20) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PC21) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA12) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB31) },
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA16) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA17) },
{ MP_ROM_QSTR(MP_QSTR_DAC0), MP_ROM_PTR(&pin_PA02) },
{ MP_ROM_QSTR(MP_QSTR_DAC1), MP_ROM_PTR(&pin_PA05) },
{ MP_ROM_QSTR(MP_QSTR_ESP01_EN), MP_ROM_PTR(&pin_PC03) },
{ MP_ROM_QSTR(MP_QSTR_ESP01_GPIO0), MP_ROM_PTR(&pin_PA18) },
{ MP_ROM_QSTR(MP_QSTR_UART3_RTS), MP_ROM_PTR(&pin_PA18) },
{ MP_ROM_QSTR(MP_QSTR_ESP01_GPIO2), MP_ROM_PTR(&pin_PA19) },
{ MP_ROM_QSTR(MP_QSTR_UART3_CTS), MP_ROM_PTR(&pin_PA19) },
{ MP_ROM_QSTR(MP_QSTR_ESP01_RESET), MP_ROM_PTR(&pin_PC02) },
{ MP_ROM_QSTR(MP_QSTR_ESP01_RX), MP_ROM_PTR(&pin_PB21) },
{ MP_ROM_QSTR(MP_QSTR_UART3_RX), MP_ROM_PTR(&pin_PB21) },
{ MP_ROM_QSTR(MP_QSTR_ESP01_TX), MP_ROM_PTR(&pin_PB20) },
{ MP_ROM_QSTR(MP_QSTR_UART3_TX), MP_ROM_PTR(&pin_PB20) },
{ MP_ROM_QSTR(MP_QSTR_I2C_SCL), MP_ROM_PTR(&pin_PB03) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB03) },
{ MP_ROM_QSTR(MP_QSTR_I2C_SDA), MP_ROM_PTR(&pin_PB02) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB02) },
{ MP_ROM_QSTR(MP_QSTR_I2S_FS_0), MP_ROM_PTR(&pin_PA20) },
{ MP_ROM_QSTR(MP_QSTR_I2S_FS_1), MP_ROM_PTR(&pin_PA23) },
{ MP_ROM_QSTR(MP_QSTR_I2S_MCK_0), MP_ROM_PTR(&pin_PB17) },
{ MP_ROM_QSTR(MP_QSTR_I2S_MCK_1), MP_ROM_PTR(&pin_PB13) },
{ MP_ROM_QSTR(MP_QSTR_I2S_SCK_0), MP_ROM_PTR(&pin_PB16) },
{ MP_ROM_QSTR(MP_QSTR_I2S_SCK_1), MP_ROM_PTR(&pin_PB12) },
{ MP_ROM_QSTR(MP_QSTR_I2S_SDI), MP_ROM_PTR(&pin_PA22) },
{ MP_ROM_QSTR(MP_QSTR_I2S_SDO), MP_ROM_PTR(&pin_PA21) },
{ MP_ROM_QSTR(MP_QSTR_LED_B), MP_ROM_PTR(&pin_PA15) },
{ MP_ROM_QSTR(MP_QSTR_LED_STATUS), MP_ROM_PTR(&pin_PA15) },
{ MP_ROM_QSTR(MP_QSTR_LED_G), MP_ROM_PTR(&pin_PB18) },
{ MP_ROM_QSTR(MP_QSTR_LED_R), MP_ROM_PTR(&pin_PB19) },
{ MP_ROM_QSTR(MP_QSTR_LED_RX), MP_ROM_PTR(&pin_PC05) },
{ MP_ROM_QSTR(MP_QSTR_LED_TX), MP_ROM_PTR(&pin_PC06) },
{ MP_ROM_QSTR(MP_QSTR_RS485_RE), MP_ROM_PTR(&pin_PC15) },
{ MP_ROM_QSTR(MP_QSTR_RS485_RX), MP_ROM_PTR(&pin_PC13) },
{ MP_ROM_QSTR(MP_QSTR_RS485_TE), MP_ROM_PTR(&pin_PC14) },
{ MP_ROM_QSTR(MP_QSTR_RS485_TX), MP_ROM_PTR(&pin_PC12) },
{ MP_ROM_QSTR(MP_QSTR_SPI_MISO), MP_ROM_PTR(&pin_PB23) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB23) },
{ MP_ROM_QSTR(MP_QSTR_SPI_MOSI), MP_ROM_PTR(&pin_PC27) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PC27) },
{ MP_ROM_QSTR(MP_QSTR_SPI_SCK), MP_ROM_PTR(&pin_PC28) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PC28) },
{ MP_ROM_QSTR(MP_QSTR_SPI_SS), MP_ROM_PTR(&pin_PB22) },
{ MP_ROM_QSTR(MP_QSTR_SS), MP_ROM_PTR(&pin_PB22) },
{ MP_ROM_QSTR(MP_QSTR_UART1_CTS), MP_ROM_PTR(&pin_PC19) },
{ MP_ROM_QSTR(MP_QSTR_UART1_RTS), MP_ROM_PTR(&pin_PC18) },
{ MP_ROM_QSTR(MP_QSTR_UART1_RX), MP_ROM_PTR(&pin_PC17) },
{ MP_ROM_QSTR(MP_QSTR_UART1_TX), MP_ROM_PTR(&pin_PC16) },
{ MP_ROM_QSTR(MP_QSTR_UART2_RX), MP_ROM_PTR(&pin_PB25) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PB25) },
{ MP_ROM_QSTR(MP_QSTR_UART2_TX), MP_ROM_PTR(&pin_PB24) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PB24) },
{ 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);

View File

@ -16,6 +16,7 @@ CIRCUITPY_COUNTIO = 0
CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_FREQUENCYIO = 0
CIRCUITPY_I2CPERIPHERAL = 0 CIRCUITPY_I2CPERIPHERAL = 0
CIRCUITPY_VECTORIO = 0 CIRCUITPY_VECTORIO = 0
MICROPY_PY_ASYNC_AWAIT = 0
SUPEROPT_GC = 0 SUPEROPT_GC = 0

View File

@ -15,6 +15,7 @@ LONGINT_IMPL = MPZ
CIRCUITPY_DISPLAYIO = 0 CIRCUITPY_DISPLAYIO = 0
CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_FREQUENCYIO = 0
CIRCUITPY_I2CPERIPHERAL = 0 CIRCUITPY_I2CPERIPHERAL = 0
MICROPY_PY_ASYNC_AWAIT = 0
SUPEROPT_GC = 0 SUPEROPT_GC = 0
CFLAGS_INLINE_LIMIT = 55 CFLAGS_INLINE_LIMIT = 55

View File

@ -0,0 +1,38 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2017 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 "boards/board.h"
void board_init(void)
{
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
}

View File

@ -0,0 +1,40 @@
#define MICROPY_HW_BOARD_NAME "DynOSSAT-EDU-EPS"
#define MICROPY_HW_MCU_NAME "samd21g18"
#define MICROPY_HW_NEOPIXEL (&pin_PA06)
#define SPI_FLASH_MOSI_PIN &pin_PA22
#define SPI_FLASH_MISO_PIN &pin_PA21
#define SPI_FLASH_SCK_PIN &pin_PA23
#define SPI_FLASH_CS_PIN &pin_PA20
// These are pins not to reset.
#define MICROPY_PORT_A ( 0 )
#define MICROPY_PORT_B ( 0 )
#define MICROPY_PORT_C ( 0 )
#define BOARD_HAS_CRYSTAL 1
#define DEFAULT_I2C_BUS_SCL (&pin_PA09)
#define DEFAULT_I2C_BUS_SDA (&pin_PA08)
#define DEFAULT_SPI_BUS_SCK (&pin_PB11)
#define DEFAULT_SPI_BUS_MOSI (&pin_PA12)
#define DEFAULT_SPI_BUS_MISO (&pin_PB10)
#define DEFAULT_UART_BUS_RX (&pin_PA17)
#define DEFAULT_UART_BUS_TX (&pin_PA16)
// USB is always used internally so skip the pin objects for it.
#define IGNORE_PIN_PA24 1
#define IGNORE_PIN_PA25 1
#define IGNORE_PIN_PA03 1
#define IGNORE_PIN_PA13 1
#define IGNORE_PIN_PA14 1
#define IGNORE_PIN_PA15 1
#define IGNORE_PIN_PA18 1
#define IGNORE_PIN_PA27 1
#define IGNORE_PIN_PA28 1
#define IGNORE_PIN_PB08 1
#define IGNORE_PIN_PB22 1
#define IGNORE_PIN_PB23 1

View File

@ -0,0 +1,23 @@
USB_VID = 0x04D8
USB_PID = 0xEAD1
USB_PRODUCT = "DynOSSAT-EDU-EPS-v1.0"
USB_MANUFACTURER = "BH Dynamics"
CHIP_VARIANT = SAMD21G18A
CHIP_FAMILY = samd21
SPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = "GD25Q32C"
LONGINT_IMPL = MPZ
CIRCUITPY_BITBANGIO = 0
CIRCUITPY_FREQUENCYIO = 0
CIRCUITPY_COUNTIO = 0
CIRCUITPY_I2CPERIPHERAL = 0
CIRCUITPY_VECTORIO = 0
CFLAGS_INLINE_LIMIT = 60
SUPEROPT_GC = 0

View File

@ -0,0 +1,32 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA12) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB10) },
{ MP_ROM_QSTR(MP_QSTR_D30), MP_ROM_PTR(&pin_PA30) },
{ MP_ROM_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_PA31) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA17) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_OVTEMP), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA16) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA08) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA09) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA11) },
{ MP_ROM_QSTR(MP_QSTR_SAT_RESET), MP_ROM_PTR(&pin_PA11) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA10) },
{ MP_ROM_QSTR(MP_QSTR_SAT_PWR_ENABLE), MP_ROM_PTR(&pin_PA10) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA19) },
{ MP_ROM_QSTR(MP_QSTR_INT_IMU_OBC), MP_ROM_PTR(&pin_PA19) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PB03) },
{ MP_ROM_QSTR(MP_QSTR_PWRMON_SDA), MP_ROM_PTR(&pin_PA04) },
{ MP_ROM_QSTR(MP_QSTR_PWRMON_SCL), MP_ROM_PTR(&pin_PA05) },
{ MP_ROM_QSTR(MP_QSTR_PWRMON_ALERT), MP_ROM_PTR(&pin_PB03) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
{ MP_ROM_QSTR(MP_QSTR_I2C_MONITOR), 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);

View File

@ -0,0 +1,38 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2017 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 "boards/board.h"
void board_init(void)
{
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
}

View File

@ -0,0 +1,44 @@
#define MICROPY_HW_BOARD_NAME "DynOSSAT-EDU-OBC"
#define MICROPY_HW_MCU_NAME "samd51j20"
#define MICROPY_HW_NEOPIXEL (&pin_PA08)
#define SPI_FLASH_MOSI_PIN &pin_PA16
#define SPI_FLASH_MISO_PIN &pin_PA18
#define SPI_FLASH_SCK_PIN &pin_PA17
#define SPI_FLASH_CS_PIN &pin_PA19
// These are pins not to reset.
#define MICROPY_PORT_A ( PORT_PA16 | PORT_PA17 | PORT_PA18 | PORT_PA19 )
#define MICROPY_PORT_B ( 0 )
#define MICROPY_PORT_C ( 0 )
#define MICROPY_PORT_D ( 0 )
#define BOARD_HAS_CRYSTAL 1
#define DEFAULT_I2C_BUS_SCL (&pin_PB13)
#define DEFAULT_I2C_BUS_SDA (&pin_PB12)
#define DEFAULT_SPI_BUS_SCK (&pin_PB03)
#define DEFAULT_SPI_BUS_MOSI (&pin_PB02)
#define DEFAULT_SPI_BUS_MISO (&pin_PB01)
#define DEFAULT_UART_BUS_RX (&pin_PA23)
#define DEFAULT_UART_BUS_TX (&pin_PA22)
// USB is always used internally so skip the pin objects for it.
#define IGNORE_PIN_PA24 1
#define IGNORE_PIN_PA25 1
#define IGNORE_PIN_PA02 1
#define IGNORE_PIN_PA13 1
#define IGNORE_PIN_PA14 1
#define IGNORE_PIN_PA20 1
#define IGNORE_PIN_PA21 1
#define IGNORE_PIN_PA27 1
#define IGNORE_PIN_PB00 1
#define IGNORE_PIN_PB04 1
#define IGNORE_PIN_PB05 1
#define IGNORE_PIN_PB16 1
#define IGNORE_PIN_PB17 1
#define IGNORE_PIN_PB23 1
#define IGNORE_PIN_PB31 1

View File

@ -0,0 +1,16 @@
USB_VID = 0x04D8
USB_PID = 0xEAD2
USB_PRODUCT = "DynOSSAT-EDU-OBC-v1.0"
USB_MANUFACTURER = "BH Dynamics"
CHIP_VARIANT = SAMD51J20A
CHIP_FAMILY = samd51
SPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = "GD25Q32C"
LONGINT_IMPL = MPZ
CFLAGS_INLINE_LIMIT = 60
SUPEROPT_GC = 0

View File

@ -0,0 +1,40 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA05) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA04) },
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PB09) },
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB08) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB03) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB02) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB01) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PB15) },
{ MP_ROM_QSTR(MP_QSTR_D30), MP_ROM_PTR(&pin_PA22) },
{ MP_ROM_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_PA23) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA23) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PB14) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA22) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB12) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB13) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PB11) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PB10) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PA11) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA10) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA09) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB07) },
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB06) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PB30) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA08) },
{ MP_ROM_QSTR(MP_QSTR_D32), MP_ROM_PTR(&pin_PA30) },
{ MP_ROM_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_PA31) },
{ MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_PB22) },
{ MP_ROM_QSTR(MP_QSTR_INT_IMU), MP_ROM_PTR(&pin_PA12) },
{ MP_ROM_QSTR(MP_QSTR_SAT_POWER), MP_ROM_PTR(&pin_PA15) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA08) },
{ 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);

View File

@ -22,6 +22,7 @@ CIRCUITPY_USB_MIDI = 0
CIRCUITPY_USB_HID = 0 CIRCUITPY_USB_HID = 0
CIRCUITPY_TOUCHIO = 0 CIRCUITPY_TOUCHIO = 0
CFLAGS_INLINE_LIMIT = 35 CFLAGS_INLINE_LIMIT = 35
# Make more room. # Make more room.
SUPEROPT_GC = 0 SUPEROPT_GC = 0

View File

@ -22,6 +22,7 @@ CIRCUITPY_SAMD = 0
CIRCUITPY_USB_MIDI = 0 CIRCUITPY_USB_MIDI = 0
CIRCUITPY_USB_HID = 0 CIRCUITPY_USB_HID = 0
CIRCUITPY_TOUCHIO = 0 CIRCUITPY_TOUCHIO = 0
CFLAGS_INLINE_LIMIT = 35 CFLAGS_INLINE_LIMIT = 35
# Make more room. # Make more room.
SUPEROPT_GC = 0 SUPEROPT_GC = 0

View File

@ -11,12 +11,12 @@ LONGINT_IMPL = MPZ
# Not needed. # Not needed.
CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_FRAMEBUFFERIO = 0
CIRCUITPY_DISPLAYIO = 0
CIRCUITPY_RGBMATRIX = 0
CIRCUITPY_PS2IO = 0
CIRCUITPY_AUDIOMP3 = 0 CIRCUITPY_AUDIOMP3 = 0
CIRCUITPY_BLEIO_HCI = 0
CIRCUITPY_DISPLAYIO = 0
CIRCUITPY_FRAMEBUFFERIO = 0
CIRCUITPY_PS2IO = 0
CIRCUITPY_RGBMATRIX = 0
CIRCUITPY_ULAB = 0 CIRCUITPY_ULAB = 0
# Override optimization to keep binary small # Override optimization to keep binary small

View File

@ -15,8 +15,8 @@
#define MICROPY_PORT_C (0) #define MICROPY_PORT_C (0)
#define MICROPY_PORT_D (0) #define MICROPY_PORT_D (0)
#define DEFAULT_I2C_BUS_SCL (&pin_PB03) #define DEFAULT_I2C_BUS_SCL (&pin_PB30)
#define DEFAULT_I2C_BUS_SDA (&pin_PB02) #define DEFAULT_I2C_BUS_SDA (&pin_PB31)
#define DEFAULT_SPI_BUS_SCK (&pin_PA16) #define DEFAULT_SPI_BUS_SCK (&pin_PA16)
#define DEFAULT_SPI_BUS_MOSI (&pin_PA19) #define DEFAULT_SPI_BUS_MOSI (&pin_PA19)

View File

@ -6,10 +6,6 @@ USB_MANUFACTURER = "Adafruit Industries LLC"
CHIP_VARIANT = SAMD51J19A CHIP_VARIANT = SAMD51J19A
CHIP_FAMILY = samd51 CHIP_FAMILY = samd51
# Support _bleio via the on-board ESP32 module.
CIRCUITPY_BLEIO = 1
CIRCUITPY_BLEIO_HCI = 1
QSPI_FLASH_FILESYSTEM = 1 QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 3 EXTERNAL_FLASH_DEVICE_COUNT = 3
EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C" EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C"

View File

@ -17,6 +17,7 @@ CIRCUITPY_COUNTIO = 0
CIRCUITPY_RTC = 0 CIRCUITPY_RTC = 0
CIRCUITPY_FREQUENCYIO = 0 CIRCUITPY_FREQUENCYIO = 0
CIRCUITPY_I2CPERIPHERAL = 0 CIRCUITPY_I2CPERIPHERAL = 0
MICROPY_PY_ASYNC_AWAIT = 0
SUPEROPT_GC = 0 SUPEROPT_GC = 0

View File

@ -18,7 +18,7 @@ LONGINT_IMPL = MPZ
# Disable modules that are unusable on this special-purpose board. # Disable modules that are unusable on this special-purpose board.
CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_AUDIOIO = 0 CIRCUITPY_AUDIOIO = 0
CIRCUITPY_BLEIO = 0 CIRCUITPY_BLEIO_HCI = 0
CIRCUITPY_DISPLAYIO = 0 CIRCUITPY_DISPLAYIO = 0
CIRCUITPY_FRAMEBUFFERIO = 0 CIRCUITPY_FRAMEBUFFERIO = 0
CIRCUITPY_GAMEPAD = 0 CIRCUITPY_GAMEPAD = 0

View File

@ -51,7 +51,6 @@ void pulsein_reset(void);
void pulsein_interrupt_handler(uint8_t channel); void pulsein_interrupt_handler(uint8_t channel);
void pulsein_timer_interrupt_handler(uint8_t index); void pulsein_timer_interrupt_handler(uint8_t index);
#ifdef SAMD21 #ifdef SAMD21
void rtc_set_continuous(void);
void rtc_start_pulsein(void); void rtc_start_pulsein(void);
void rtc_end_pulsein(void); void rtc_end_pulsein(void);
#endif #endif

View File

@ -37,6 +37,9 @@ ifndef CIRCUITPY_TOUCHIO_USE_NATIVE
CIRCUITPY_TOUCHIO_USE_NATIVE = 1 CIRCUITPY_TOUCHIO_USE_NATIVE = 1
endif endif
# No room for HCI _bleio on SAMD21.
CIRCUITPY_BLEIO_HCI = 0
CIRCUITPY_SDCARDIO ?= 0 CIRCUITPY_SDCARDIO ?= 0
# Not enough RAM for framebuffers # Not enough RAM for framebuffers

@ -1 +1 @@
Subproject commit 2ff4ab05101ce7d3e105009cc6612df6e992123f Subproject commit a7e39c4d01aa5916015beecb021777617e77b0ad

View File

@ -96,19 +96,20 @@
#endif #endif
volatile bool hold_interrupt = false; volatile bool hold_interrupt = false;
#ifdef SAMD21 #ifdef SAMD21
static void rtc_set_continuous(bool continuous) {
while (RTC->MODE0.STATUS.bit.SYNCBUSY);
RTC->MODE0.READREQ.reg = (continuous ? RTC_READREQ_RCONT : 0) | 0x0010;
while (RTC->MODE0.STATUS.bit.SYNCBUSY);
}
void rtc_start_pulsein(void) { void rtc_start_pulsein(void) {
rtc_set_continuous(); rtc_set_continuous(true);
hold_interrupt = true; hold_interrupt = true;
} }
void rtc_end_pulsein(void) { void rtc_end_pulsein(void) {
hold_interrupt = false; hold_interrupt = false;
} rtc_set_continuous(false);
void rtc_set_continuous(void) {
while (RTC->MODE0.STATUS.bit.SYNCBUSY);
RTC->MODE0.READREQ.reg = RTC_READREQ_RREQ | RTC_READREQ_RCONT | 0x0010;
while (RTC->MODE0.STATUS.bit.SYNCBUSY);
} }
#endif #endif
@ -430,6 +431,42 @@ uint32_t port_get_saved_word(void) {
static volatile uint64_t overflowed_ticks = 0; static volatile uint64_t overflowed_ticks = 0;
static volatile bool _ticks_enabled = false; static volatile bool _ticks_enabled = false;
static uint32_t _get_count(uint32_t* overflow_count) {
#ifdef SAM_D5X_E5X
while ((RTC->MODE0.SYNCBUSY.reg & (RTC_MODE0_SYNCBUSY_COUNTSYNC | RTC_MODE0_SYNCBUSY_COUNT)) != 0) {}
#endif
#ifdef SAMD21
// Request a read so we don't stall the bus later. See section 14.3.1.5 Read Request
RTC->MODE0.READREQ.reg = RTC_READREQ_RREQ | 0x0010;
while (RTC->MODE0.STATUS.bit.SYNCBUSY != 0) {}
#endif
// Disable interrupts so we can grab the count and the overflow.
common_hal_mcu_disable_interrupts();
uint32_t count = RTC->MODE0.COUNT.reg;
if (overflow_count != NULL) {
*overflow_count = overflowed_ticks;
}
common_hal_mcu_enable_interrupts();
return count;
}
static void _port_interrupt_after_ticks(uint32_t ticks) {
uint32_t current_ticks = _get_count(NULL);
if (ticks > 1 << 28) {
// We'll interrupt sooner with an overflow.
return;
}
#ifdef SAMD21
if (hold_interrupt) {
return;
}
#endif
RTC->MODE0.COMP[0].reg = current_ticks + (ticks << 4);
RTC->MODE0.INTFLAG.reg = RTC_MODE0_INTFLAG_CMP0;
RTC->MODE0.INTENSET.reg = RTC_MODE0_INTENSET_CMP0;
}
void RTC_Handler(void) { void RTC_Handler(void) {
uint32_t intflag = RTC->MODE0.INTFLAG.reg; uint32_t intflag = RTC->MODE0.INTFLAG.reg;
if (intflag & RTC_MODE0_INTFLAG_OVF) { if (intflag & RTC_MODE0_INTFLAG_OVF) {
@ -452,7 +489,7 @@ void RTC_Handler(void) {
supervisor_tick(); supervisor_tick();
// Check _ticks_enabled again because a tick handler may have turned it off. // Check _ticks_enabled again because a tick handler may have turned it off.
if (_ticks_enabled) { if (_ticks_enabled) {
port_interrupt_after_ticks(1); _port_interrupt_after_ticks(1);
} }
} }
#endif #endif
@ -462,24 +499,14 @@ void RTC_Handler(void) {
} }
} }
static uint32_t _get_count(void) {
#ifdef SAM_D5X_E5X
while ((RTC->MODE0.SYNCBUSY.reg & (RTC_MODE0_SYNCBUSY_COUNTSYNC | RTC_MODE0_SYNCBUSY_COUNT)) != 0) {}
#endif
#ifdef SAMD21
while (RTC->MODE0.STATUS.bit.SYNCBUSY != 0) {}
#endif
return RTC->MODE0.COUNT.reg;
}
uint64_t port_get_raw_ticks(uint8_t* subticks) { uint64_t port_get_raw_ticks(uint8_t* subticks) {
uint32_t current_ticks = _get_count(); uint32_t overflow_count;
uint32_t current_ticks = _get_count(&overflow_count);
if (subticks != NULL) { if (subticks != NULL) {
*subticks = (current_ticks % 16) * 2; *subticks = (current_ticks % 16) * 2;
} }
return overflowed_ticks + current_ticks / 16; return overflow_count + current_ticks / 16;
} }
// Enable 1/1024 second tick. // Enable 1/1024 second tick.
@ -489,8 +516,9 @@ void port_enable_tick(void) {
RTC->MODE0.INTENSET.reg = RTC_MODE0_INTENSET_PER2; RTC->MODE0.INTENSET.reg = RTC_MODE0_INTENSET_PER2;
#endif #endif
#ifdef SAMD21 #ifdef SAMD21
// TODO: Switch to using the PER *event* from the RTC to generate an interrupt via EVSYS.
_ticks_enabled = true; _ticks_enabled = true;
port_interrupt_after_ticks(1); _port_interrupt_after_ticks(1);
#endif #endif
} }
@ -505,20 +533,14 @@ void port_disable_tick(void) {
#endif #endif
} }
// This is called by sleep, we ignore it when our ticks are enabled because
// they'll wake us up earlier. If we don't, we'll mess up ticks by overwriting
// the next RTC wake up time.
void port_interrupt_after_ticks(uint32_t ticks) { void port_interrupt_after_ticks(uint32_t ticks) {
uint32_t current_ticks = _get_count(); if (_ticks_enabled) {
if (ticks > 1 << 28) {
// We'll interrupt sooner with an overflow.
return; return;
} }
#ifdef SAMD21 _port_interrupt_after_ticks(ticks);
if (hold_interrupt) {
return;
}
#endif
RTC->MODE0.COMP[0].reg = current_ticks + (ticks << 4);
RTC->MODE0.INTFLAG.reg = RTC_MODE0_INTFLAG_CMP0;
RTC->MODE0.INTENSET.reg = RTC_MODE0_INTENSET_CMP0;
} }
void port_sleep_until_interrupt(void) { void port_sleep_until_interrupt(void) {

View File

@ -162,7 +162,7 @@ SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE))
SRC_S = supervisor/cpu.s SRC_S = supervisor/cpu.s
SRC_C = \ SRC_C += \
background.c \ background.c \
fatfs_port.c \ fatfs_port.c \
mphalport.c \ mphalport.c \

View File

@ -6,7 +6,7 @@ set(ENV{IDF_PATH} ${CMAKE_SOURCE_DIR}/esp-idf)
# The component list here determines what options we get in menuconfig and what the ninja file # The component list here determines what options we get in menuconfig and what the ninja file
# can build. # can build.
set(COMPONENTS esptool_py soc driver log main esp-tls mbedtls esp_event esp_netif esp_wifi lwip wpa_supplicant freertos) set(COMPONENTS esptool_py soc driver log main esp-tls mbedtls esp_event esp_adc_cal esp_netif esp_wifi lwip wpa_supplicant freertos)
include($ENV{IDF_PATH}/tools/cmake/project.cmake) include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(circuitpython) project(circuitpython)

View File

@ -97,6 +97,7 @@ INC += -isystem esp-idf/components/lwip/include/apps/sntp
INC += -isystem esp-idf/components/hal/include INC += -isystem esp-idf/components/hal/include
INC += -isystem esp-idf/components/hal/esp32s2/include INC += -isystem esp-idf/components/hal/esp32s2/include
INC += -isystem esp-idf/components/log/include/ INC += -isystem esp-idf/components/log/include/
INC += -isystem esp-idf/components/driver/esp32s2/include
INC += -isystem esp-idf/components/soc/include INC += -isystem esp-idf/components/soc/include
INC += -isystem esp-idf/components/soc/src/esp32s2/include INC += -isystem esp-idf/components/soc/src/esp32s2/include
INC += -isystem esp-idf/components/soc/soc/include INC += -isystem esp-idf/components/soc/soc/include
@ -268,14 +269,13 @@ menuconfig: $(BUILD)/esp-idf/config
$(Q)grep -Fvxf $(DEBUG_SDKCONFIG) -f $(FLASH_SDKCONFIG) $(BUILD)/sdkconfig.diff > boards/$(BOARD)/sdkconfig $(Q)grep -Fvxf $(DEBUG_SDKCONFIG) -f $(FLASH_SDKCONFIG) $(BUILD)/sdkconfig.diff > boards/$(BOARD)/sdkconfig
# qstr builds include headers so we need to make sure they are up to date # qstr builds include headers so we need to make sure they are up to date
$(HEADER_BUILD)/qstr.i.last: | $(BUILD)/esp-idf/config/sdkconfig.h $(HEADER_BUILD)/qstr.split: | $(BUILD)/esp-idf/config/sdkconfig.h
# Order here matters ESP_IDF_COMPONENTS_LINK = freertos log hal esp_system esp_adc_cal esp32s2 bootloader_support pthread esp_timer vfs spi_flash app_update esp_common esp32s2 heap newlib driver xtensa soc esp_ringbuf esp_wifi esp_event wpa_supplicant mbedtls efuse nvs_flash esp_netif lwip esp_rom esp-tls
ESP_IDF_COMPONENTS_LINK = freertos log esp_system esp32s2 bootloader_support pthread esp_timer vfs spi_flash app_update esp_common esp32s2 heap newlib driver xtensa soc esp_ringbuf esp_wifi esp_event wpa_supplicant mbedtls efuse nvs_flash esp_netif lwip esp_rom esp-tls
ESP_IDF_COMPONENTS_INCLUDE = driver freertos log soc ESP_IDF_COMPONENTS_INCLUDE = driver freertos log soc
INC += $(foreach component, $(ESP_IDF_COMPONENTS_INCLUDE), -Iesp-idf/components/$(component)/include) INC += $(foreach component, $(ESP_IDF_COMPONENTS_INCLUDE), -isystem esp-idf/components/$(component)/include)
ESP_IDF_COMPONENTS_EXPANDED = $(foreach component, $(ESP_IDF_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/$(component)/lib$(component).a) 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) ESP_IDF_WIFI_COMPONENTS_EXPANDED = $(foreach component, $(ESP_IDF_WIFI_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/$(component)/lib$(component).a)
@ -283,11 +283,11 @@ ESP_IDF_WIFI_COMPONENTS_EXPANDED = $(foreach component, $(ESP_IDF_WIFI_COMPONENT
MBEDTLS_COMPONENTS_LINK = crypto tls x509 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) MBEDTLS_COMPONENTS_LINK_EXPANDED = $(foreach component, $(MBEDTLS_COMPONENTS_LINK), $(BUILD)/esp-idf/esp-idf/mbedtls/mbedtls/library/libmbed$(component).a)
BINARY_BLOBS = esp-idf/components/xtensa/esp32s2/libhal.a BINARY_BLOBS = esp-idf/components/xtensa/esp32s2/libxt_hal.a
BINARY_WIFI_BLOBS = libcoexist.a libcore.a libespnow.a libmesh.a libnet80211.a libpp.a librtc.a libsmartconfig.a libphy.a BINARY_WIFI_BLOBS = libcoexist.a libcore.a libespnow.a libmesh.a libnet80211.a libpp.a librtc.a libsmartconfig.a libphy.a
BINARY_BLOBS += $(addprefix esp-idf/components/esp_wifi/lib/esp32s2/, $(BINARY_WIFI_BLOBS)) BINARY_BLOBS += $(addprefix esp-idf/components/esp_wifi/lib/esp32s2/, $(BINARY_WIFI_BLOBS))
ESP_IDF_COMPONENTS_EXPANDED += $(BUILD)/esp-idf/esp-idf/soc/soc/esp32s2/libsoc_esp32s2.a esp-idf/components/xtensa/esp32s2/libhal.a ESP_IDF_COMPONENTS_EXPANDED += $(BUILD)/esp-idf/esp-idf/soc/soc/esp32s2/libsoc_esp32s2.a esp-idf/components/xtensa/esp32s2/libxt_hal.a
ESP_AUTOGEN_LD = $(BUILD)/esp-idf/esp-idf/esp32s2/esp32s2_out.ld $(BUILD)/esp-idf/esp-idf/esp32s2/ld/esp32s2.project.ld ESP_AUTOGEN_LD = $(BUILD)/esp-idf/esp-idf/esp32s2/esp32s2_out.ld $(BUILD)/esp-idf/esp-idf/esp32s2/ld/esp32s2.project.ld
FLASH_FLAGS = --flash_mode $(CIRCUITPY_ESP_FLASH_MODE) --flash_freq $(CIRCUITPY_ESP_FLASH_FREQ) --flash_size $(CIRCUITPY_ESP_FLASH_SIZE) FLASH_FLAGS = --flash_mode $(CIRCUITPY_ESP_FLASH_MODE) --flash_freq $(CIRCUITPY_ESP_FLASH_FREQ) --flash_size $(CIRCUITPY_ESP_FLASH_SIZE)

View File

@ -31,3 +31,9 @@ CONFIG_SPIRAM_USE_MEMMAP=y
CONFIG_SPIRAM_MEMTEST=y CONFIG_SPIRAM_MEMTEST=y
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set # CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
# end of SPI RAM config # end of SPI RAM config
#
# LWIP
#
CONFIG_LWIP_LOCAL_HOSTNAME="Metro-ESP32S2"
# end of LWIP

View File

@ -32,3 +32,8 @@ CONFIG_SPIRAM_MEMTEST=y
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set # CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
# end of SPI RAM config # end of SPI RAM config
#
# LWIP
#
CONFIG_LWIP_LOCAL_HOSTNAME="microS2"
# end of LWIP

View File

@ -32,3 +32,8 @@ CONFIG_SPIRAM_MEMTEST=y
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set # CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
# end of SPI RAM config # end of SPI RAM config
#
# LWIP
#
CONFIG_LWIP_LOCAL_HOSTNAME="UMFeatherS2"
# end of LWIP

View File

@ -26,7 +26,7 @@
//Micropython setup //Micropython setup
#define MICROPY_HW_BOARD_NAME "FeatherS2" #define MICROPY_HW_BOARD_NAME "FeatherS2 PreRelease"
#define MICROPY_HW_MCU_NAME "ESP32S2" #define MICROPY_HW_MCU_NAME "ESP32S2"
#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0) #define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0)

View File

@ -33,3 +33,9 @@ CONFIG_SPIRAM_USE_MEMMAP=y
CONFIG_SPIRAM_MEMTEST=y CONFIG_SPIRAM_MEMTEST=y
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set # CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
# end of SPI RAM config # end of SPI RAM config
#
# LWIP
#
CONFIG_LWIP_LOCAL_HOSTNAME="UMFeatherS2"
# end of LWIP

View File

@ -0,0 +1,98 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 Lucian Copeland 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 "common-hal/analogio/AnalogIn.h"
#include "py/mperrno.h"
#include "py/runtime.h"
#include "supervisor/shared/translate.h"
#include "components/driver/include/driver/adc_common.h"
#include "components/esp_adc_cal/include/esp_adc_cal.h"
#include "shared-bindings/microcontroller/Pin.h"
#define DEFAULT_VREF 1100
#define NO_OF_SAMPLES 64
#define ATTENUATION ADC_ATTEN_DB_11
#define DATA_WIDTH ADC_WIDTH_BIT_13
void common_hal_analogio_analogin_construct(analogio_analogin_obj_t* self,
const mcu_pin_obj_t *pin) {
if (pin->adc_index == 0 || pin->adc_channel == ADC_CHANNEL_MAX) {
mp_raise_ValueError(translate("Pin does not have ADC capabilities"));
}
common_hal_mcu_pin_claim(pin);
self->pin = pin;
}
bool common_hal_analogio_analogin_deinited(analogio_analogin_obj_t *self) {
return self->pin == NULL;
}
void common_hal_analogio_analogin_deinit(analogio_analogin_obj_t *self) {
if (common_hal_analogio_analogin_deinited(self)) {
return;
}
reset_pin_number(self->pin->number);
self->pin = NULL;
}
uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
if (self->pin->adc_index == ADC_UNIT_1) {
adc1_config_width(DATA_WIDTH);
adc1_config_channel_atten((adc1_channel_t)self->pin->adc_channel, ATTENUATION);
} else if (self->pin->adc_index == ADC_UNIT_2) {
adc2_config_channel_atten((adc2_channel_t)self->pin->adc_channel, ATTENUATION);
}
// Automatically select calibration process depending on status of efuse
esp_adc_cal_characteristics_t *adc_chars = calloc(1, sizeof(esp_adc_cal_characteristics_t));
esp_adc_cal_characterize(self->pin->adc_index, ATTENUATION, DATA_WIDTH, DEFAULT_VREF, adc_chars);
uint32_t adc_reading = 0;
//Multisampling
for (int i = 0; i < NO_OF_SAMPLES; i++) {
if (self->pin->adc_index == ADC_UNIT_1) {
adc_reading += adc1_get_raw((adc1_channel_t)self->pin->adc_channel);
} else {
int raw;
esp_err_t r = adc2_get_raw((adc2_channel_t)self->pin->adc_channel, DATA_WIDTH, &raw);
if ( r != ESP_OK ) {
mp_raise_ValueError(translate("ADC2 is being used by WiFi"));
}
adc_reading += raw;
}
}
adc_reading /= NO_OF_SAMPLES;
// This corrects non-linear regions of the ADC range with a LUT, so it's a better reading than raw
uint32_t voltage = esp_adc_cal_raw_to_voltage(adc_reading, adc_chars);
return voltage * ((1 << 16) - 1)/3300;
}
float common_hal_analogio_analogin_get_reference_voltage(analogio_analogin_obj_t *self) {
return 3.3f;
}

View File

@ -0,0 +1,42 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 Lucian Copeland 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.
*/
#ifndef MICROPY_INCLUDED_ESP32S2_COMMON_HAL_ANALOGIO_ANALOGIN_H
#define MICROPY_INCLUDED_ESP32S2_COMMON_HAL_ANALOGIO_ANALOGIN_H
#include "common-hal/microcontroller/Pin.h"
#include "components/hal/include/hal/adc_types.h"
#include "FreeRTOS.h"
#include "freertos/semphr.h"
#include "py/obj.h"
typedef struct {
mp_obj_base_t base;
const mcu_pin_obj_t * pin;
} analogio_analogin_obj_t;
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_ANALOGIO_ANALOGIN_H

View File

@ -0,0 +1,73 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* SPDX-FileCopyrightText: Copyright (c) 2013, 2014 Damien P. George
* Copyright (c) 2019, Lucian Copeland 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 <stdint.h>
#include <string.h>
#include "py/mperrno.h"
#include "py/runtime.h"
#include "shared-bindings/analogio/AnalogOut.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "supervisor/shared/translate.h"
#include "components/driver/include/driver/dac_common.h"
#include "common-hal/microcontroller/Pin.h"
void common_hal_analogio_analogout_construct(analogio_analogout_obj_t* self,
const mcu_pin_obj_t *pin) {
if (pin == &pin_GPIO17) {
self->channel = DAC_CHANNEL_1;
} else if (pin == &pin_GPIO18) {
self->channel = DAC_CHANNEL_2;
} else {
mp_raise_ValueError(translate("Invalid DAC pin supplied"));
}
dac_output_enable(self->channel);
}
bool common_hal_analogio_analogout_deinited(analogio_analogout_obj_t *self) {
return (self->channel == DAC_CHANNEL_MAX);
}
void common_hal_analogio_analogout_deinit(analogio_analogout_obj_t *self) {
dac_output_disable(self->channel);
self->channel = DAC_CHANNEL_MAX;
}
void common_hal_analogio_analogout_set_value(analogio_analogout_obj_t *self,
uint16_t value) {
uint8_t dac_value = (value * 255) / 65535;
dac_output_enable(self->channel);
dac_output_voltage(self->channel, dac_value);
}
void analogout_reset(void) {
dac_output_disable(DAC_CHANNEL_1);
dac_output_disable(DAC_CHANNEL_2);
}

View File

@ -0,0 +1,43 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2016 Scott Shawcroft
* Copyright (c) 2019 Lucian Copeland 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.
*/
#ifndef MICROPY_INCLUDED_ESP32S2_COMMON_HAL_ANALOGIO_ANALOGOUT_H
#define MICROPY_INCLUDED_ESP32S2_COMMON_HAL_ANALOGIO_ANALOGOUT_H
#include "common-hal/microcontroller/Pin.h"
#include "py/obj.h"
typedef struct {
mp_obj_base_t base;
const mcu_pin_obj_t * pin;
uint8_t channel;
} analogio_analogout_obj_t;
void analogout_reset(void);
#endif // MICROPY_INCLUDED_STM32F4_COMMON_HAL_ANALOGIO_ANALOGOUT_H

View File

@ -0,0 +1 @@
// No analogio module functions.

View File

@ -29,7 +29,7 @@
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "components/soc/include/hal/i2c_types.h" #include "components/hal/include/hal/i2c_types.h"
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "freertos/semphr.h" #include "freertos/semphr.h"
#include "py/obj.h" #include "py/obj.h"

View File

@ -30,8 +30,8 @@
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "components/driver/include/driver/spi_common_internal.h" #include "components/driver/include/driver/spi_common_internal.h"
#include "components/soc/include/hal/spi_hal.h" #include "components/hal/include/hal/spi_hal.h"
#include "components/soc/include/hal/spi_types.h" #include "components/hal/include/hal/spi_types.h"
#include "py/obj.h" #include "py/obj.h"
typedef struct { typedef struct {

View File

@ -29,7 +29,7 @@
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "components/soc/include/hal/uart_types.h" #include "components/hal/include/hal/uart_types.h"
#include "py/obj.h" #include "py/obj.h"
typedef struct { typedef struct {

View File

@ -30,7 +30,7 @@
#include "components/driver/include/driver/gpio.h" #include "components/driver/include/driver/gpio.h"
#include "components/soc/include/hal/gpio_hal.h" #include "components/hal/include/hal/gpio_hal.h"
void common_hal_digitalio_digitalinout_never_reset( void common_hal_digitalio_digitalinout_never_reset(
digitalio_digitalinout_obj_t *self) { digitalio_digitalinout_obj_t *self) {

View File

@ -32,7 +32,7 @@
#include "py/mphal.h" #include "py/mphal.h"
#include "components/driver/include/driver/gpio.h" #include "components/driver/include/driver/gpio.h"
#include "components/soc/include/hal/gpio_hal.h" #include "components/hal/include/hal/gpio_hal.h"
#ifdef MICROPY_HW_NEOPIXEL #ifdef MICROPY_HW_NEOPIXEL
bool neopixel_in_use; bool neopixel_in_use;

View File

@ -33,7 +33,6 @@
#include "common-hal/ssl/SSLContext.h" #include "common-hal/ssl/SSLContext.h"
#include "components/esp-tls/esp_tls.h" #include "components/esp-tls/esp_tls.h"
#include "components/log/include/esp_log.h"
typedef struct { typedef struct {
mp_obj_base_t base; mp_obj_base_t base;

View File

@ -104,6 +104,19 @@ void common_hal_wifi_radio_stop_scanning_networks(wifi_radio_obj_t *self) {
self->current_scan = NULL; self->current_scan = NULL;
} }
mp_obj_t common_hal_wifi_radio_get_hostname(wifi_radio_obj_t *self) {
const char *hostname = NULL;
esp_netif_get_hostname(self->netif, &hostname);
if (hostname == NULL) {
return mp_const_none;
}
return mp_obj_new_str(hostname, strlen(hostname));
}
void common_hal_wifi_radio_set_hostname(wifi_radio_obj_t *self, const char *hostname) {
esp_netif_set_hostname(self->netif, hostname);
}
wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t* ssid, size_t ssid_len, uint8_t* password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t* bssid, size_t bssid_len) { wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t* ssid, size_t ssid_len, uint8_t* password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t* bssid, size_t bssid_len) {
// check enabled // check enabled
start_station(self); start_station(self);

View File

@ -36,7 +36,6 @@
#include "freertos/event_groups.h" #include "freertos/event_groups.h"
#include "components/esp_wifi/include/esp_wifi_types.h" #include "components/esp_wifi/include/esp_wifi_types.h"
#include "components/log/include/esp_log.h"
typedef struct { typedef struct {
mp_obj_base_t base; mp_obj_base_t base;

@ -1 +1 @@
Subproject commit a7f77798816661f7c4ae198f3878bc92a9274f82 Subproject commit 8bc19ba893e5544d571a753d82b44a84799b94b1

View File

@ -31,8 +31,8 @@
#define CIRCUITPY_INTERNAL_NVM_SIZE (0) #define CIRCUITPY_INTERNAL_NVM_SIZE (0)
#define MICROPY_NLR_THUMB (0) #define MICROPY_NLR_THUMB (0)
#define MICROPY_PY_UJSON (1) #define MICROPY_PY_UJSON (1)
#define MICROPY_USE_INTERNAL_PRINTF (0) #define MICROPY_USE_INTERNAL_PRINTF (0)
#include "py/circuitpy_mpconfig.h" #include "py/circuitpy_mpconfig.h"

View File

@ -14,7 +14,6 @@ LONGINT_IMPL = MPZ
# These modules are implemented in ports/<port>/common-hal: # These modules are implemented in ports/<port>/common-hal:
CIRCUITPY_FULL_BUILD = 1 CIRCUITPY_FULL_BUILD = 1
CIRCUITPY_ANALOGIO = 0
CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_AUDIOIO = 0 CIRCUITPY_AUDIOIO = 0
CIRCUITPY_COUNTIO = 0 CIRCUITPY_COUNTIO = 0

View File

@ -26,56 +26,58 @@
#include "peripherals/pins.h" #include "peripherals/pins.h"
#define NO_ADC 0xff #define NO_ADC 0
#define NO_ADC_CHANNEL ADC_CHANNEL_MAX
// This macro is used to simplify pin definition in boards/<board>/pins.c // This macro is used to simplify pin definition in boards/<board>/pins.c
#define PIN(p_name, p_number) \ #define PIN(p_name, p_number, p_adc_index, p_adc_channel) \
const mcu_pin_obj_t pin_## p_name = { \ const mcu_pin_obj_t pin_## p_name = { \
PIN_PREFIX_VALUES \ PIN_PREFIX_VALUES \
.number = p_number, \ .number = p_number, \
.adc_index = p_adc_index, \
.adc_channel = p_adc_channel, \
} }
PIN(GPIO0, 0); PIN(GPIO0, 0, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO1, 1); PIN(GPIO1, 1, ADC_UNIT_1, ADC_CHANNEL_0);
PIN(GPIO2, 2); PIN(GPIO2, 2, ADC_UNIT_1, ADC_CHANNEL_1);
PIN(GPIO3, 3); PIN(GPIO3, 3, ADC_UNIT_1, ADC_CHANNEL_2);
PIN(GPIO4, 4); PIN(GPIO4, 4, ADC_UNIT_1, ADC_CHANNEL_3);
PIN(GPIO5, 5); PIN(GPIO5, 5, ADC_UNIT_1, ADC_CHANNEL_4);
PIN(GPIO6, 6); PIN(GPIO6, 6, ADC_UNIT_1, ADC_CHANNEL_5);
PIN(GPIO7, 7); PIN(GPIO7, 7, ADC_UNIT_1, ADC_CHANNEL_6);
PIN(GPIO8, 8); PIN(GPIO8, 8, ADC_UNIT_1, ADC_CHANNEL_7);
PIN(GPIO9, 9); PIN(GPIO9, 9, ADC_UNIT_1, ADC_CHANNEL_8);
PIN(GPIO10, 10); PIN(GPIO10, 10, ADC_UNIT_1, ADC_CHANNEL_9);
PIN(GPIO11, 11); PIN(GPIO11, 11, ADC_UNIT_2, ADC_CHANNEL_0);
PIN(GPIO12, 12); PIN(GPIO12, 12, ADC_UNIT_2, ADC_CHANNEL_1);
PIN(GPIO13, 13); PIN(GPIO13, 13, ADC_UNIT_2, ADC_CHANNEL_2);
PIN(GPIO14, 14); PIN(GPIO14, 14, ADC_UNIT_2, ADC_CHANNEL_3);
PIN(GPIO15, 15); PIN(GPIO15, 15, ADC_UNIT_2, ADC_CHANNEL_4);
PIN(GPIO16, 16); PIN(GPIO16, 16, ADC_UNIT_2, ADC_CHANNEL_5);
PIN(GPIO17, 17); PIN(GPIO17, 17, ADC_UNIT_2, ADC_CHANNEL_6);
PIN(GPIO18, 18); PIN(GPIO18, 18, ADC_UNIT_2, ADC_CHANNEL_7);
PIN(GPIO19, 19, ADC_UNIT_2, ADC_CHANNEL_8);
PIN(GPIO19, 19); PIN(GPIO20, 20, ADC_UNIT_2, ADC_CHANNEL_9);
PIN(GPIO20, 20); PIN(GPIO21, 21, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO21, 21); PIN(GPIO26, 26, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO26, 26); PIN(GPIO27, 27, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO27, 27); PIN(GPIO28, 28, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO28, 28); PIN(GPIO29, 29, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO29, 29); PIN(GPIO30, 30, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO30, 30); PIN(GPIO31, 31, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO31, 31); PIN(GPIO32, 32, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO32, 32); PIN(GPIO33, 33, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO33, 33); PIN(GPIO34, 34, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO34, 34); PIN(GPIO35, 35, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO35, 35); PIN(GPIO36, 36, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO36, 36); PIN(GPIO37, 37, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO37, 37); PIN(GPIO38, 38, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO38, 38); PIN(GPIO39, 39, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO39, 39); PIN(GPIO40, 40, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO40, 40); PIN(GPIO41, 41, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO41, 41); PIN(GPIO42, 42, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO42, 42); PIN(GPIO43, 43, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO43, 43); PIN(GPIO44, 44, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO44, 44); PIN(GPIO45, 45, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO45, 45); PIN(GPIO46, 46, NO_ADC, NO_ADC_CHANNEL);
PIN(GPIO46, 46);

View File

@ -34,11 +34,15 @@
#include "esp32s2_peripherals_config.h" #include "esp32s2_peripherals_config.h"
#include "esp-idf/config/sdkconfig.h" #include "esp-idf/config/sdkconfig.h"
#include "components/soc/include/hal/gpio_types.h"
#include "components/hal/include/hal/gpio_types.h"
#include "components/hal/include/hal/adc_types.h"
typedef struct { typedef struct {
PIN_PREFIX_FIELDS PIN_PREFIX_FIELDS
gpio_num_t number; gpio_num_t number;
uint8_t adc_index:2;
uint8_t adc_channel:6;
} mcu_pin_obj_t; } mcu_pin_obj_t;
extern const mcu_pin_obj_t pin_GPIO0; extern const mcu_pin_obj_t pin_GPIO0;

View File

@ -35,6 +35,7 @@
#include "freertos/task.h" #include "freertos/task.h"
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "common-hal/analogio/AnalogOut.h"
#include "common-hal/busio/I2C.h" #include "common-hal/busio/I2C.h"
#include "common-hal/busio/SPI.h" #include "common-hal/busio/SPI.h"
#include "common-hal/busio/UART.h" #include "common-hal/busio/UART.h"
@ -95,6 +96,10 @@ void reset_port(void) {
// A larger delay so the idle task can run and do any IDF cleanup needed. // A larger delay so the idle task can run and do any IDF cleanup needed.
vTaskDelay(4); vTaskDelay(4);
#if CIRCUITPY_ANALOGIO
analogout_reset();
#endif
#if CIRCUITPY_PULSEIO #if CIRCUITPY_PULSEIO
esp32s2_peripherals_rmt_reset(); esp32s2_peripherals_rmt_reset();
pulsein_reset(); pulsein_reset();

View File

@ -33,6 +33,8 @@
#include "components/driver/include/driver/periph_ctrl.h" #include "components/driver/include/driver/periph_ctrl.h"
#include "components/driver/include/driver/gpio.h" #include "components/driver/include/driver/gpio.h"
#include "components/esp_rom/include/esp32s2/rom/gpio.h" #include "components/esp_rom/include/esp32s2/rom/gpio.h"
#include "components/esp_rom/include/esp_rom_gpio.h"
#include "components/hal/esp32s2/include/hal/gpio_ll.h"
#include "freertos/FreeRTOS.h" #include "freertos/FreeRTOS.h"
#include "freertos/task.h" #include "freertos/task.h"
@ -68,6 +70,33 @@ void usb_device_task(void* param)
} }
} }
static void configure_pins (usb_hal_context_t *usb)
{
/* usb_periph_iopins currently configures USB_OTG as USB Device.
* Introduce additional parameters in usb_hal_context_t when adding support
* for USB Host.
*/
for ( const usb_iopin_dsc_t *iopin = usb_periph_iopins; iopin->pin != -1; ++iopin ) {
if ( (usb->use_external_phy) || (iopin->ext_phy_only == 0) ) {
esp_rom_gpio_pad_select_gpio(iopin->pin);
if ( iopin->is_output ) {
esp_rom_gpio_connect_out_signal(iopin->pin, iopin->func, false, false);
}
else {
esp_rom_gpio_connect_in_signal(iopin->pin, iopin->func, false);
if ( (iopin->pin != GPIO_FUNC_IN_LOW) && (iopin->pin != GPIO_FUNC_IN_HIGH) ) {
gpio_ll_input_enable(&GPIO, iopin->pin);
}
}
esp_rom_gpio_pad_unhold(iopin->pin);
}
}
if ( !usb->use_external_phy ) {
gpio_set_drive_capability(USBPHY_DM_NUM, GPIO_DRIVE_CAP_3);
gpio_set_drive_capability(USBPHY_DP_NUM, GPIO_DRIVE_CAP_3);
}
}
void init_usb_hardware(void) { void init_usb_hardware(void) {
periph_module_reset(PERIPH_USB_MODULE); periph_module_reset(PERIPH_USB_MODULE);
periph_module_enable(PERIPH_USB_MODULE); periph_module_enable(PERIPH_USB_MODULE);
@ -75,10 +104,7 @@ void init_usb_hardware(void) {
.use_external_phy = false // use built-in PHY .use_external_phy = false // use built-in PHY
}; };
usb_hal_init(&hal); usb_hal_init(&hal);
configure_pins(&hal);
// Initialize the pin drive strength.
gpio_set_drive_capability(USBPHY_DM_NUM, GPIO_DRIVE_CAP_3);
gpio_set_drive_capability(USBPHY_DP_NUM, GPIO_DRIVE_CAP_3);
(void) xTaskCreateStatic(usb_device_task, (void) xTaskCreateStatic(usb_device_task,
"usbd", "usbd",

View File

@ -16,6 +16,7 @@ CIRCUITPY_ANALOGIO = 0
CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_AUDIOIO = 0 CIRCUITPY_AUDIOIO = 0
CIRCUITPY_BITBANGIO = 0 CIRCUITPY_BITBANGIO = 0
CIRCUITPY_BLEIO_HCI = 0
CIRCUITPY_BOARD = 0 CIRCUITPY_BOARD = 0
CIRCUITPY_BUSIO = 0 CIRCUITPY_BUSIO = 0
CIRCUITPY_COUNTIO = 0 CIRCUITPY_COUNTIO = 0

View File

@ -128,7 +128,11 @@ uint32_t port_get_saved_word(void) {
} }
uint64_t port_get_raw_ticks(uint8_t* subticks) { uint64_t port_get_raw_ticks(uint8_t* subticks) {
return raw_ticks; // Reading 64 bits may take two loads, so turn of interrupts while we do it.
irq_setie(false);
uint64_t raw_tick_snapshot = raw_ticks;
irq_setie(true);
return raw_tick_snapshot;
} }
// Enable 1/1024 second tick. // Enable 1/1024 second tick.

View File

@ -75,7 +75,7 @@ INC += \
# NDEBUG disables assert() statements. This reduces code size pretty dramatically, per tannewt. # NDEBUG disables assert() statements. This reduces code size pretty dramatically, per tannewt.
CFLAGS += -Os -DNDEBUG CFLAGS += -Os -DNDEBUG -ffreestanding
# TinyUSB defines # TinyUSB defines
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_MIMXRT10XX -DCFG_TUD_MIDI_RX_BUFSIZE=512 -DCFG_TUD_CDC_RX_BUFSIZE=512 -DCFG_TUD_MIDI_TX_BUFSIZE=512 -DCFG_TUD_CDC_TX_BUFSIZE=512 -DCFG_TUD_MSC_BUFSIZE=1024 CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_MIMXRT10XX -DCFG_TUD_MIDI_RX_BUFSIZE=512 -DCFG_TUD_CDC_RX_BUFSIZE=512 -DCFG_TUD_MIDI_TX_BUFSIZE=512 -DCFG_TUD_CDC_TX_BUFSIZE=512 -DCFG_TUD_MSC_BUFSIZE=1024
@ -147,7 +147,7 @@ SRC_SDK := \
SRC_SDK := $(addprefix sdk/devices/$(CHIP_FAMILY)/, $(SRC_SDK)) SRC_SDK := $(addprefix sdk/devices/$(CHIP_FAMILY)/, $(SRC_SDK))
SRC_C = \ SRC_C += \
background.c \ background.c \
boards/$(BOARD)/board.c \ boards/$(BOARD)/board.c \
boards/$(BOARD)/flash_config.c \ boards/$(BOARD)/flash_config.c \

View File

@ -33,6 +33,7 @@
#include "py/mpconfig.h" #include "py/mpconfig.h"
#include "fsl_common.h" #include "fsl_common.h"
#include "fsl_flexspi_nor_config.h"
// Initializes board related state once on start up. // Initializes board related state once on start up.
void board_init(void); void board_init(void);
@ -45,4 +46,11 @@ bool board_requests_safe_mode(void);
// Reset the state of off MCU components such as neopixels. // Reset the state of off MCU components such as neopixels.
void reset_board(void); void reset_board(void);
#define SEQUENCE(first, second, third, fourth) first, second, third, fourth
#define TWO_EMPTY_STEPS 0x00000000
#define EMPTY_SEQUENCE SEQUENCE(TWO_EMPTY_STEPS, TWO_EMPTY_STEPS, TWO_EMPTY_STEPS, TWO_EMPTY_STEPS)
// FlexSPI configuration that stores command info.
extern const flexspi_nor_config_t qspiflash_config;
#endif // MICROPY_INCLUDED_MIMXRT10XX_BOARDS_BOARD_H #endif // MICROPY_INCLUDED_MIMXRT10XX_BOARDS_BOARD_H

View File

@ -6,7 +6,7 @@
*/ */
#include "fsl_flexspi_nor_boot.h" #include "fsl_flexspi_nor_boot.h"
#include "fsl_flexspi_nor_config.h" #include "boards/board.h"
__attribute__((section(".boot_hdr.ivt"))) __attribute__((section(".boot_hdr.ivt")))
@ -35,88 +35,135 @@ const BOOT_DATA_T boot_data = {
0xFFFFFFFF /* empty - extra data word */ 0xFFFFFFFF /* empty - extra data word */
}; };
// Config for W25Q32JV with QSPI routed.
__attribute__((section(".boot_hdr.conf"))) __attribute__((section(".boot_hdr.conf")))
// Values copied from https://github.com/PaulStoffregen/cores/blob/ddb23fa5d97dac763bc06e11b9b41f026bd51f0a/teensy4/bootdata.c#L39
const flexspi_nor_config_t qspiflash_config = { const flexspi_nor_config_t qspiflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 1u,
.csSetupTime = 2u,
// Enable DDR mode, Wordaddressable, Safe configuration, Differential clock
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz, // 03
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// (FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) |
// FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
// Read LUTs
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
0,
0,
0x24040405,
0,
0,
0,
0,
0,
0,
0,
0x00000406,
0,
0,
0,
0,
0,
0,
0,
0x08180420,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0x081804D8,
0,
0,
0,
0x08180402,
0x00002004,
0,
0,
0,
0,
0,
0,
0x00000460,
},
},
.pageSize = 256u, .pageSize = 256u,
.sectorSize = 4u * 1024u, .sectorSize = 4u * 1024u,
.ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz, .ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz,
.blockSize = 0x00010000, .blockSize = 0x00010000,
.isUniformBlockSize = false, .isUniformBlockSize = false,
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
.busyOffset = 0u, // Status bit 0 indicates busy.
.busyBitPolarity = 0u, // Busy when the bit is 1.
.deviceModeCfgEnable = 1u,
.deviceModeType = kDeviceConfigCmdType_QuadEnable,
.deviceModeSeq = {
.seqId = 4u,
.seqNum = 1u,
},
.deviceModeArg = 0x02, // Bit pattern for setting Quad Enable.
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_133MHz,
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// The high 16 bits is command 1 and the low are command 0.
// Within a command, the top 6 bits are the opcode, the next two are the number
// of pads and then last byte is the operand. The operand's meaning changes
// per opcode.
// Indices with ROM should always have the same function because the ROM
// bootloader uses it.
// 0: ROM: Read LUTs
// Quad version
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB /* the command to send */,
RADDR_SDR, FLEXSPI_4PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 6 /* 6 dummy cycles, 2 for M7-0 and 4 dummy */,
READ_SDR, FLEXSPI_4PAD, 0x04),
// Single fast read version, good for debugging.
// FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x0B /* the command to send */,
// RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
// FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_1PAD, 8 /* 8 dummy clocks */,
// READ_SDR, FLEXSPI_1PAD, 0x04),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 1: ROM: Read status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05 /* the command to send */,
READ_SDR, FLEXSPI_1PAD, 0x02),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 2: Empty
EMPTY_SEQUENCE,
// 3: ROM: Write Enable
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06 /* the command to send */,
STOP, FLEXSPI_1PAD, 0x00),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 4: Config: Write Status -2
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x31 /* the command to send */,
WRITE_SDR, FLEXSPI_1PAD, 0x01 /* number of bytes to write */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 5: ROM: Erase Sector
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 6: Empty
EMPTY_SEQUENCE,
// 7: Empty
EMPTY_SEQUENCE,
// 8: Block Erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 9: ROM: Page program
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04 /* data out */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 10: Empty
EMPTY_SEQUENCE,
// 11: ROM: Chip erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60 /* the command to send */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 12: Empty
EMPTY_SEQUENCE,
// 13: ROM: Read SFDP
EMPTY_SEQUENCE,
// 14: ROM: Restore no cmd
EMPTY_SEQUENCE,
// 15: ROM: Dummy
EMPTY_SEQUENCE
},
},
}; };

View File

@ -6,7 +6,7 @@
*/ */
#include "fsl_flexspi_nor_boot.h" #include "fsl_flexspi_nor_boot.h"
#include "fsl_flexspi_nor_config.h" #include "boards/board.h"
__attribute__((section(".boot_hdr.ivt"))) __attribute__((section(".boot_hdr.ivt")))
@ -35,88 +35,135 @@ const BOOT_DATA_T boot_data = {
0xFFFFFFFF /* empty - extra data word */ 0xFFFFFFFF /* empty - extra data word */
}; };
// Config for W25Q64JV with QSPI routed.
__attribute__((section(".boot_hdr.conf"))) __attribute__((section(".boot_hdr.conf")))
// Values copied from https://github.com/PaulStoffregen/cores/blob/ddb23fa5d97dac763bc06e11b9b41f026bd51f0a/teensy4/bootdata.c#L39
const flexspi_nor_config_t qspiflash_config = { const flexspi_nor_config_t qspiflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 1u,
.csSetupTime = 2u,
// Enable DDR mode, Wordaddressable, Safe configuration, Differential clock
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz, // 03
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// (FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) |
// FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
// Read LUTs
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
0,
0,
0x24040405,
0,
0,
0,
0,
0,
0,
0,
0x00000406,
0,
0,
0,
0,
0,
0,
0,
0x08180420,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0x081804D8,
0,
0,
0,
0x08180402,
0x00002004,
0,
0,
0,
0,
0,
0,
0x00000460,
},
},
.pageSize = 256u, .pageSize = 256u,
.sectorSize = 4u * 1024u, .sectorSize = 4u * 1024u,
.ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz, .ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz,
.blockSize = 0x00010000, .blockSize = 0x00010000,
.isUniformBlockSize = false, .isUniformBlockSize = false,
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
.busyOffset = 0u, // Status bit 0 indicates busy.
.busyBitPolarity = 0u, // Busy when the bit is 1.
.deviceModeCfgEnable = 1u,
.deviceModeType = kDeviceConfigCmdType_QuadEnable,
.deviceModeSeq = {
.seqId = 4u,
.seqNum = 1u,
},
.deviceModeArg = 0x02,
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_133MHz,
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// The high 16 bits is command 1 and the low are command 0.
// Within a command, the top 6 bits are the opcode, the next two are the number
// of pads and then last byte is the operand. The operand's meaning changes
// per opcode.
// Indices with ROM should always have the same function because the ROM
// bootloader uses it.
// 0: ROM: Read LUTs
// Quad version
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB /* the command to send */,
RADDR_SDR, FLEXSPI_4PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 6 /* 6 dummy cycles, 2 for M7-0 and 4 dummy */,
READ_SDR, FLEXSPI_4PAD, 0x04),
// Single fast read version, good for debugging.
// FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x0B /* the command to send */,
// RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
// FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_1PAD, 8 /* 8 dummy clocks */,
// READ_SDR, FLEXSPI_1PAD, 0x04),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 1: ROM: Read status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05 /* the command to send */,
READ_SDR, FLEXSPI_1PAD, 0x01),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 2: Empty
EMPTY_SEQUENCE,
// 3: ROM: Write Enable
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06 /* the command to send */,
STOP, FLEXSPI_1PAD, 0x00),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 4: Config: Write Status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x31 /* the command to send */,
WRITE_SDR, FLEXSPI_1PAD, 0x01),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 5: ROM: Erase Sector
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 6: Empty
EMPTY_SEQUENCE,
// 7: Empty
EMPTY_SEQUENCE,
// 8: Block Erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 9: ROM: Page program
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04 /* data out */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 10: Empty
EMPTY_SEQUENCE,
// 11: ROM: Chip erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60 /* the command to send */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 12: Empty
EMPTY_SEQUENCE,
// 13: ROM: Read SFDP
EMPTY_SEQUENCE,
// 14: ROM: Restore no cmd
EMPTY_SEQUENCE,
// 15: ROM: Dummy
EMPTY_SEQUENCE
},
},
}; };

View File

@ -6,7 +6,7 @@
*/ */
#include "fsl_flexspi_nor_boot.h" #include "fsl_flexspi_nor_boot.h"
#include "fsl_flexspi_nor_config.h" #include "boards/board.h"
__attribute__((section(".boot_hdr.ivt"))) __attribute__((section(".boot_hdr.ivt")))
@ -35,88 +35,135 @@ const BOOT_DATA_T boot_data = {
0xFFFFFFFF /* empty - extra data word */ 0xFFFFFFFF /* empty - extra data word */
}; };
// Config for W25Q64JV with QSPI routed.
__attribute__((section(".boot_hdr.conf"))) __attribute__((section(".boot_hdr.conf")))
// Values copied from https://github.com/PaulStoffregen/cores/blob/ddb23fa5d97dac763bc06e11b9b41f026bd51f0a/teensy4/bootdata.c#L39
const flexspi_nor_config_t qspiflash_config = { const flexspi_nor_config_t qspiflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 1u,
.csSetupTime = 2u,
// Enable DDR mode, Wordaddressable, Safe configuration, Differential clock
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz, // 03
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// (FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) |
// FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
// Read LUTs
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
0,
0,
0x24040405,
0,
0,
0,
0,
0,
0,
0,
0x00000406,
0,
0,
0,
0,
0,
0,
0,
0x08180420,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0x081804D8,
0,
0,
0,
0x08180402,
0x00002004,
0,
0,
0,
0,
0,
0,
0x00000460,
},
},
.pageSize = 256u, .pageSize = 256u,
.sectorSize = 4u * 1024u, .sectorSize = 4u * 1024u,
.ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz, .ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz,
.blockSize = 0x00010000, .blockSize = 0x00010000,
.isUniformBlockSize = false, .isUniformBlockSize = false,
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
.busyOffset = 0u, // Status bit 0 indicates busy.
.busyBitPolarity = 0u, // Busy when the bit is 1.
.deviceModeCfgEnable = 1u,
.deviceModeType = kDeviceConfigCmdType_QuadEnable,
.deviceModeSeq = {
.seqId = 4u,
.seqNum = 1u,
},
.deviceModeArg = 0x02,
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_133MHz,
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// The high 16 bits is command 1 and the low are command 0.
// Within a command, the top 6 bits are the opcode, the next two are the number
// of pads and then last byte is the operand. The operand's meaning changes
// per opcode.
// Indices with ROM should always have the same function because the ROM
// bootloader uses it.
// 0: ROM: Read LUTs
// Quad version
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB /* the command to send */,
RADDR_SDR, FLEXSPI_4PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 6 /* 6 dummy cycles, 2 for M7-0 and 4 dummy */,
READ_SDR, FLEXSPI_4PAD, 0x04),
// Single fast read version, good for debugging.
// FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x0B /* the command to send */,
// RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
// FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_1PAD, 8 /* 8 dummy clocks */,
// READ_SDR, FLEXSPI_1PAD, 0x04),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 1: ROM: Read status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05 /* the command to send */,
READ_SDR, FLEXSPI_1PAD, 0x01),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 2: Empty
EMPTY_SEQUENCE,
// 3: ROM: Write Enable
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06 /* the command to send */,
STOP, FLEXSPI_1PAD, 0x00),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 4: Config: Write Status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x31 /* the command to send */,
WRITE_SDR, FLEXSPI_1PAD, 0x01),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 5: ROM: Erase Sector
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 6: Empty
EMPTY_SEQUENCE,
// 7: Empty
EMPTY_SEQUENCE,
// 8: Block Erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 9: ROM: Page program
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04 /* data out */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 10: Empty
EMPTY_SEQUENCE,
// 11: ROM: Chip erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60 /* the command to send */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 12: Empty
EMPTY_SEQUENCE,
// 13: ROM: Read SFDP
EMPTY_SEQUENCE,
// 14: ROM: Restore no cmd
EMPTY_SEQUENCE,
// 15: ROM: Dummy
EMPTY_SEQUENCE
},
},
}; };

View File

@ -6,7 +6,8 @@
*/ */
#include "fsl_flexspi_nor_boot.h" #include "fsl_flexspi_nor_boot.h"
#include "fsl_flexspi_nor_config.h" #include "boards/board.h"
__attribute__((section(".boot_hdr.ivt"))) __attribute__((section(".boot_hdr.ivt")))
/************************************* /*************************************
@ -34,88 +35,135 @@ const BOOT_DATA_T boot_data = {
0xFFFFFFFF /* empty - extra data word */ 0xFFFFFFFF /* empty - extra data word */
}; };
// Config for AT25SF128A with QSPI routed.
__attribute__((section(".boot_hdr.conf"))) __attribute__((section(".boot_hdr.conf")))
// Values copied from https://github.com/PaulStoffregen/cores/blob/ddb23fa5d97dac763bc06e11b9b41f026bd51f0a/teensy4/bootdata.c#L39
const flexspi_nor_config_t qspiflash_config = { const flexspi_nor_config_t qspiflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 1u,
.csSetupTime = 2u,
// Enable DDR mode, Wordaddressable, Safe configuration, Differential clock
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz, // 03
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// (FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) |
// FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
// Read LUTs
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
0,
0,
0x24040405,
0,
0,
0,
0,
0,
0,
0,
0x00000406,
0,
0,
0,
0,
0,
0,
0,
0x08180420,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0x081804D8,
0,
0,
0,
0x08180402,
0x00002004,
0,
0,
0,
0,
0,
0,
0x00000460,
},
},
.pageSize = 256u, .pageSize = 256u,
.sectorSize = 4u * 1024u, .sectorSize = 4u * 1024u,
.ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz, .ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz,
.blockSize = 0x00010000, .blockSize = 0x00010000,
.isUniformBlockSize = false, .isUniformBlockSize = false,
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
.busyOffset = 0u, // Status bit 0 indicates busy.
.busyBitPolarity = 0u, // Busy when the bit is 1.
.deviceModeCfgEnable = 1u,
.deviceModeType = kDeviceConfigCmdType_QuadEnable,
.deviceModeSeq = {
.seqId = 4u,
.seqNum = 1u,
},
.deviceModeArg = 0x02,
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz,
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// The high 16 bits is command 1 and the low are command 0.
// Within a command, the top 6 bits are the opcode, the next two are the number
// of pads and then last byte is the operand. The operand's meaning changes
// per opcode.
// Indices with ROM should always have the same function because the ROM
// bootloader uses it.
// 0: ROM: Read LUTs
// Quad version
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB /* the command to send */,
RADDR_SDR, FLEXSPI_4PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 6 /* 6 dummy cycles, 2 for M7-0 and 4 dummy */,
READ_SDR, FLEXSPI_4PAD, 0x04),
// Single fast read version, good for debugging.
// FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x0B /* the command to send */,
// RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
// FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_1PAD, 8 /* 8 dummy clocks */,
// READ_SDR, FLEXSPI_1PAD, 0x04),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 1: ROM: Read status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05 /* the command to send */,
READ_SDR, FLEXSPI_1PAD, 0x02),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 2: Empty
EMPTY_SEQUENCE,
// 3: ROM: Write Enable
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06 /* the command to send */,
STOP, FLEXSPI_1PAD, 0x00),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 4: Config: Write Status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x31 /* the command to send */,
WRITE_SDR, FLEXSPI_1PAD, 0x01),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 5: ROM: Erase Sector
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 6: Empty
EMPTY_SEQUENCE,
// 7: Empty
EMPTY_SEQUENCE,
// 8: Block Erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 9: ROM: Page program
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04 /* data out */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 10: Empty
EMPTY_SEQUENCE,
// 11: ROM: Chip erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60 /* the command to send */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 12: Empty
EMPTY_SEQUENCE,
// 13: ROM: Read SFDP
EMPTY_SEQUENCE,
// 14: ROM: Restore no cmd
EMPTY_SEQUENCE,
// 15: ROM: Dummy
EMPTY_SEQUENCE
},
},
}; };

View File

@ -6,7 +6,7 @@
*/ */
#include "fsl_flexspi_nor_boot.h" #include "fsl_flexspi_nor_boot.h"
#include "fsl_flexspi_nor_config.h" #include "boards/board.h"
__attribute__((section(".boot_hdr.ivt"))) __attribute__((section(".boot_hdr.ivt")))
@ -35,92 +35,135 @@ const BOOT_DATA_T boot_data = {
0xFFFFFFFF /* empty - extra data word */ 0xFFFFFFFF /* empty - extra data word */
}; };
// Config for IS25LP064A with QSPI routed.
__attribute__((section(".boot_hdr.conf"))) __attribute__((section(".boot_hdr.conf")))
// Values copied from https://github.com/PaulStoffregen/cores/blob/ddb23fa5d97dac763bc06e11b9b41f026bd51f0a/teensy4/bootdata.c#L39
const flexspi_nor_config_t qspiflash_config = { const flexspi_nor_config_t qspiflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
#ifdef BOARD_USING_SECONDARY_QSPI_PINMUX
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromInternally,
#else
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
#endif
.csHoldTime = 1u,
.csSetupTime = 2u,
// Enable DDR mode, Wordaddressable, Safe configuration, Differential clock
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz, // 03
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// (FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) |
// FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
// Read LUTs
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
0,
0,
0x24040405,
0,
0,
0,
0,
0,
0,
0,
0x00000406,
0,
0,
0,
0,
0,
0,
0,
0x08180420,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0x081804D8,
0,
0,
0,
0x08180402,
0x00002004,
0,
0,
0,
0,
0,
0,
0x00000460,
},
},
.pageSize = 256u, .pageSize = 256u,
.sectorSize = 4u * 1024u, .sectorSize = 4u * 1024u,
.ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz, .ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz,
.blockSize = 0x00010000, .blockSize = 0x00010000,
.isUniformBlockSize = false, .isUniformBlockSize = false,
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
.busyOffset = 0u, // Status bit 0 indicates busy.
.busyBitPolarity = 0u, // Busy when the bit is 1.
.deviceModeCfgEnable = 1u,
.deviceModeType = kDeviceConfigCmdType_QuadEnable,
.deviceModeSeq = {
.seqId = 4u,
.seqNum = 1u,
},
.deviceModeArg = 0x40,
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_30MHz,
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// The high 16 bits is command 1 and the low are command 0.
// Within a command, the top 6 bits are the opcode, the next two are the number
// of pads and then last byte is the operand. The operand's meaning changes
// per opcode.
// Indices with ROM should always have the same function because the ROM
// bootloader uses it.
// 0: ROM: Read LUTs
// Quad version
// SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB /* the command to send */,
// RADDR_SDR, FLEXSPI_4PAD, 24 bits to transmit ),
// FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 6 /* 6 dummy cycles, 2 for M7-0 and 4 dummy */,
// READ_SDR, FLEXSPI_4PAD, 0x04),
// Single fast read version, good for debugging.
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x0B /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_1PAD, 8 /* 8 dummy clocks */,
READ_SDR, FLEXSPI_1PAD, 0x04),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 1: ROM: Read status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05 /* the command to send */,
READ_SDR, FLEXSPI_1PAD, 0x01),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 2: Empty
EMPTY_SEQUENCE,
// 3: ROM: Write Enable
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06 /* the command to send */,
STOP, FLEXSPI_1PAD, 0x00),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 4: Config: Write Status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x01 /* the command to send */,
WRITE_SDR, FLEXSPI_1PAD, 0x01),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 5: ROM: Erase Sector
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 6: Empty
EMPTY_SEQUENCE,
// 7: Empty
EMPTY_SEQUENCE,
// 8: Block Erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 9: ROM: Page program
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04 /* data out */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 10: Empty
EMPTY_SEQUENCE,
// 11: ROM: Chip erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60 /* the command to send */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 12: Empty
EMPTY_SEQUENCE,
// 13: ROM: Read SFDP
EMPTY_SEQUENCE,
// 14: ROM: Restore no cmd
EMPTY_SEQUENCE,
// 15: ROM: Dummy
EMPTY_SEQUENCE
},
},
}; };

View File

@ -6,10 +6,10 @@
*/ */
#include "fsl_flexspi_nor_boot.h" #include "fsl_flexspi_nor_boot.h"
#include "fsl_flexspi_nor_config.h" #include "boards/board.h"
__attribute__((section(".boot_hdr.ivt"))) __attribute__((section(".boot_hdr.ivt")))
/************************************* /*************************************
* IVT Data * IVT Data
*************************************/ *************************************/
@ -35,88 +35,135 @@ const BOOT_DATA_T boot_data = {
0xFFFFFFFF /* empty - extra data word */ 0xFFFFFFFF /* empty - extra data word */
}; };
// Config for IS25WP064A with QSPI routed.
__attribute__((section(".boot_hdr.conf"))) __attribute__((section(".boot_hdr.conf")))
// Values copied from https://github.com/PaulStoffregen/cores/blob/ddb23fa5d97dac763bc06e11b9b41f026bd51f0a/teensy4/bootdata.c#L39
const flexspi_nor_config_t qspiflash_config = { const flexspi_nor_config_t qspiflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 1u,
.csSetupTime = 2u,
// Enable DDR mode, Wordaddressable, Safe configuration, Differential clock
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz, // 03
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// (FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) |
// FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
// Read LUTs
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
0,
0,
0x24040405,
0,
0,
0,
0,
0,
0,
0,
0x00000406,
0,
0,
0,
0,
0,
0,
0,
0x08180420,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0x081804D8,
0,
0,
0,
0x08180402,
0x00002004,
0,
0,
0,
0,
0,
0,
0x00000460,
},
},
.pageSize = 256u, .pageSize = 256u,
.sectorSize = 4u * 1024u, .sectorSize = 4u * 1024u,
.ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz, .ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz,
.blockSize = 0x00010000, .blockSize = 0x00010000,
.isUniformBlockSize = false, .isUniformBlockSize = false,
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
.busyOffset = 0u, // Status bit 0 indicates busy.
.busyBitPolarity = 0u, // Busy when the bit is 1.
.deviceModeCfgEnable = 1u,
.deviceModeType = kDeviceConfigCmdType_QuadEnable,
.deviceModeSeq = {
.seqId = 4u,
.seqNum = 1u,
},
.deviceModeArg = 0x40,
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz,
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// The high 16 bits is command 1 and the low are command 0.
// Within a command, the top 6 bits are the opcode, the next two are the number
// of pads and then last byte is the operand. The operand's meaning changes
// per opcode.
// Indices with ROM should always have the same function because the ROM
// bootloader uses it.
// 0: ROM: Read LUTs
// Quad version
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB /* the command to send */,
RADDR_SDR, FLEXSPI_4PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 6 /* 6 dummy cycles, 2 for M7-0 and 4 dummy */,
READ_SDR, FLEXSPI_4PAD, 0x04),
// Single fast read version, good for debugging.
// FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x0B /* the command to send */,
// RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
// FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_1PAD, 8 /* 8 dummy clocks */,
// READ_SDR, FLEXSPI_1PAD, 0x04),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 1: ROM: Read status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05 /* the command to send */,
READ_SDR, FLEXSPI_1PAD, 0x02),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 2: Empty
EMPTY_SEQUENCE,
// 3: ROM: Write Enable
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06 /* the command to send */,
STOP, FLEXSPI_1PAD, 0x00),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 4: Config: Write Status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x01 /* the command to send */,
WRITE_SDR, FLEXSPI_1PAD, 0x01),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 5: ROM: Erase Sector
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 6: Empty
EMPTY_SEQUENCE,
// 7: Empty
EMPTY_SEQUENCE,
// 8: Block Erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 9: ROM: Page program
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04 /* data out */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 10: Empty
EMPTY_SEQUENCE,
// 11: ROM: Chip erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60 /* the command to send */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 12: Empty
EMPTY_SEQUENCE,
// 13: ROM: Read SFDP
EMPTY_SEQUENCE,
// 14: ROM: Restore no cmd
EMPTY_SEQUENCE,
// 15: ROM: Dummy
EMPTY_SEQUENCE
},
},
}; };

View File

@ -0,0 +1,52 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
* Copyright (c) 2019 Artur Pacholec
*
* 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 "boards/board.h"
#include "mpconfigboard.h"
#include "shared-bindings/microcontroller/Pin.h"
void board_init(void) {
// SWD Pins
common_hal_never_reset_pin(&pin_GPIO_AD_13);//SWDIO
common_hal_never_reset_pin(&pin_GPIO_AD_12);//SWCLK
// FLEX flash
common_hal_never_reset_pin(&pin_GPIO_SD_12);
common_hal_never_reset_pin(&pin_GPIO_SD_11);
common_hal_never_reset_pin(&pin_GPIO_SD_10);
common_hal_never_reset_pin(&pin_GPIO_SD_09);
common_hal_never_reset_pin(&pin_GPIO_SD_08);
common_hal_never_reset_pin(&pin_GPIO_SD_07);
common_hal_never_reset_pin(&pin_GPIO_SD_06);
}
bool board_requests_safe_mode(void) {
return false;
}
void reset_board(void) {
}

View File

@ -0,0 +1,179 @@
/*
* Copyright 2017 NXP
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "fsl_flexspi_nor_boot.h"
#include "boards/board.h"
__attribute__((section(".boot_hdr.ivt")))
/*************************************
* IVT Data
*************************************/
const ivt image_vector_table = {
IVT_HEADER, /* IVT Header */
IMAGE_ENTRY_ADDRESS, /* Image Entry Function */
IVT_RSVD, /* Reserved = 0 */
(uint32_t)DCD_ADDRESS, /* Address where DCD information is stored */
(uint32_t)BOOT_DATA_ADDRESS, /* Address where BOOT Data Structure is stored */
(uint32_t)&image_vector_table, /* Pointer to IVT Self (absolute address */
(uint32_t)CSF_ADDRESS, /* Address where CSF file is stored */
IVT_RSVD /* Reserved = 0 */
};
__attribute__((section(".boot_hdr.boot_data")))
/*************************************
* Boot Data
*************************************/
const BOOT_DATA_T boot_data = {
FLASH_BASE, /* boot start location */
FLASH_SIZE, /* size */
PLUGIN_FLAG, /* Plugin flag*/
0xFFFFFFFF /* empty - extra data word */
};
// Config for W25Q16JV with QSPI routed.
__attribute__((section(".boot_hdr.conf")))
const flexspi_nor_config_t qspiflash_config = {
.pageSize = 256u,
.sectorSize = 4u * 1024u,
.ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz,
.blockSize = 0x00010000,
.isUniformBlockSize = false,
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
.busyOffset = 0u, // Status bit 0 indicates busy.
.busyBitPolarity = 0u, // Busy when the bit is 1.
.deviceModeCfgEnable = 1u,
.deviceModeType = kDeviceConfigCmdType_QuadEnable,
.deviceModeSeq = {
.seqId = 4u,
.seqNum = 1u,
},
.deviceModeArg = 0x0200,
.configCmdEnable = 1u,
.configModeType[0] = kDeviceConfigCmdType_Generic,
.configCmdSeqs[0] = {
.seqId = 2u,
.seqNum = 1u,
},
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz,
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// The high 16 bits is command 1 and the low are command 0.
// Within a command, the top 6 bits are the opcode, the next two are the number
// of pads and then last byte is the operand. The operand's meaning changes
// per opcode.
// Indices with ROM should always have the same function because the ROM
// bootloader uses it.
// 0: ROM: Read LUTs
// Quad version
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB /* the command to send */,
RADDR_SDR, FLEXSPI_4PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 6 /* 6 dummy cycles, 2 for M7-0 and 4 dummy */,
READ_SDR, FLEXSPI_4PAD, 0x04),
// Single fast read version, good for debugging.
// FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x0B /* the command to send */,
// RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
// FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_1PAD, 8 /* 8 dummy clocks */,
// READ_SDR, FLEXSPI_1PAD, 0x04),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 1: ROM: Read status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05 /* the command to send */,
READ_SDR, FLEXSPI_1PAD, 0x02),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 2: Empty
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x35 /* the command to send */,
DUMMY_SDR, FLEXSPI_1PAD, 8),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 3: ROM: Write Enable
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06 /* the command to send */,
STOP, FLEXSPI_1PAD, 0x00),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 4: Config: Write Status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x01 /* the command to send */,
WRITE_SDR, FLEXSPI_1PAD, 0x02),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 5: ROM: Erase Sector
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 6: Empty
EMPTY_SEQUENCE,
// 7: Empty
EMPTY_SEQUENCE,
// 8: Block Erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 9: ROM: Page program
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04 /* data out */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 10: Empty
EMPTY_SEQUENCE,
// 11: ROM: Chip erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60 /* the command to send */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 12: Empty
EMPTY_SEQUENCE,
// 13: ROM: Read SFDP
EMPTY_SEQUENCE,
// 14: ROM: Restore no cmd
EMPTY_SEQUENCE,
// 15: ROM: Dummy
EMPTY_SEQUENCE
},
},
};

View File

@ -0,0 +1,20 @@
#define MICROPY_HW_BOARD_NAME "Metro MIMXRT1011"
#define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO_00)
// If you change this, then make sure to update the linker scripts as well to
// make sure you don't overwrite code
#define CIRCUITPY_INTERNAL_NVM_SIZE 0
#define BOARD_FLASH_SIZE (2 * 1024 * 1024)
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO_02)
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO_01)
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO_AD_06)
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO_AD_04)
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO_AD_03)
#define DEFAULT_UART_BUS_RX (&pin_GPIO_09)
#define DEFAULT_UART_BUS_TX (&pin_GPIO_10)

View File

@ -0,0 +1,12 @@
USB_VID = 0x239A
USB_PID = 0x80E2
USB_PRODUCT = "Metro M7 1011"
USB_MANUFACTURER = "Adafruit"
CHIP_VARIANT = MIMXRT1011DAE5A
CHIP_FAMILY = MIMXRT1011
FLASH = W25Q16JV
# Include these Python libraries in the firmware
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_ESP32SPI
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests

View File

@ -0,0 +1,59 @@
#include "shared-bindings/board/__init__.h"
#include "boards/board.h"
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
// Analog
{ MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO_AD_02) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO_AD_01) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO_AD_00) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO_AD_05) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO_AD_10) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO_AD_08) },
// Digital
{ MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_09) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO_09) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO_10) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO_10) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO_13) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO_12) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO_SD_00) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO_SD_01) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO_SD_02) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_GPIO_11) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_GPIO_08) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO_07) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO_06) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO_05) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO_04) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13),MP_ROM_PTR(&pin_GPIO_03) },
// ESP control
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_CS), MP_ROM_PTR(&pin_GPIO_AD_14) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_GPIO0), MP_ROM_PTR(&pin_GPIO_SD_05) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_BUSY), MP_ROM_PTR(&pin_GPIO_AD_11) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_RESET), MP_ROM_PTR(&pin_GPIO_AD_07) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_TX), MP_ROM_PTR(&pin_GPIO_09) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_RX), MP_ROM_PTR(&pin_GPIO_10) },
// SPI
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO_AD_06) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO_AD_03) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO_AD_04) },
// UART
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO_10) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO_09) },
// I2C
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO_01) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO_02) },
{ MP_OBJ_NEW_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO_00) },
{ 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);

View File

@ -6,12 +6,8 @@
*/ */
#include "fsl_flexspi_nor_boot.h" #include "fsl_flexspi_nor_boot.h"
#include "fsl_flexspi_nor_config.h" #include "boards/board.h"
/* Component ID definition, used by tools. */
#ifndef FSL_COMPONENT_ID
#define FSL_COMPONENT_ID "platform.drivers.xip_device"
#endif
__attribute__((section(".boot_hdr.ivt"))) __attribute__((section(".boot_hdr.ivt")))
/************************************* /*************************************
@ -39,88 +35,145 @@ const BOOT_DATA_T boot_data = {
0xFFFFFFFF /* empty - extra data word */ 0xFFFFFFFF /* empty - extra data word */
}; };
// Config for W25Q16JV with QSPI routed.
__attribute__((section(".boot_hdr.conf"))) __attribute__((section(".boot_hdr.conf")))
// Values copied from https://github.com/PaulStoffregen/cores/blob/ddb23fa5d97dac763bc06e11b9b41f026bd51f0a/teensy4/bootdata.c#L39
const flexspi_nor_config_t qspiflash_config = { const flexspi_nor_config_t qspiflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 1u,
.csSetupTime = 2u,
// Enable DDR mode, Wordaddressable, Safe configuration, Differential clock
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz, // 03
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// (FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) |
// FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
// Read LUTs
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
0,
0,
0x24040405,
0,
0,
0,
0,
0,
0,
0,
0x00000406,
0,
0,
0,
0,
0,
0,
0,
0x08180420,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0x081804D8,
0,
0,
0,
0x08180402,
0x00002004,
0,
0,
0,
0,
0,
0,
0x00000460,
},
},
.pageSize = 256u, .pageSize = 256u,
.sectorSize = 4u * 1024u, .sectorSize = 4u * 1024u,
.ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz, .ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz,
.blockSize = 0x00010000, .blockSize = 0x00010000,
.isUniformBlockSize = false, .isUniformBlockSize = false,
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
.busyOffset = 0u, // Status bit 0 indicates busy.
.busyBitPolarity = 0u, // Busy when the bit is 1.
.deviceModeCfgEnable = 1u,
.deviceModeType = kDeviceConfigCmdType_QuadEnable,
.deviceModeSeq = {
.seqId = 4u,
.seqNum = 1u,
},
.deviceModeArg = 0x0200,
.configCmdEnable = 1u,
.configModeType[0] = kDeviceConfigCmdType_Generic,
.configCmdSeqs[0] = {
.seqId = 2u,
.seqNum = 1u,
},
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz,
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// The high 16 bits is command 1 and the low are command 0.
// Within a command, the top 6 bits are the opcode, the next two are the number
// of pads and then last byte is the operand. The operand's meaning changes
// per opcode.
// Indices with ROM should always have the same function because the ROM
// bootloader uses it.
// 0: ROM: Read LUTs
// Quad version
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB /* the command to send */,
RADDR_SDR, FLEXSPI_4PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 6 /* 6 dummy cycles, 2 for M7-0 and 4 dummy */,
READ_SDR, FLEXSPI_4PAD, 0x04),
// Single fast read version, good for debugging.
// FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x0B /* the command to send */,
// RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
// FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_1PAD, 8 /* 8 dummy clocks */,
// READ_SDR, FLEXSPI_1PAD, 0x04),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 1: ROM: Read status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05 /* the command to send */,
READ_SDR, FLEXSPI_1PAD, 0x02),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 2: Empty
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x35 /* the command to send */,
DUMMY_SDR, FLEXSPI_1PAD, 8),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 3: ROM: Write Enable
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06 /* the command to send */,
STOP, FLEXSPI_1PAD, 0x00),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 4: Config: Write Status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x01 /* the command to send */,
WRITE_SDR, FLEXSPI_1PAD, 0x02),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 5: ROM: Erase Sector
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 6: Empty
EMPTY_SEQUENCE,
// 7: Empty
EMPTY_SEQUENCE,
// 8: Block Erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 9: ROM: Page program
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04 /* data out */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 10: Empty
EMPTY_SEQUENCE,
// 11: ROM: Chip erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60 /* the command to send */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 12: Empty
EMPTY_SEQUENCE,
// 13: ROM: Read SFDP
EMPTY_SEQUENCE,
// 14: ROM: Restore no cmd
EMPTY_SEQUENCE,
// 15: ROM: Dummy
EMPTY_SEQUENCE
},
},
}; };

View File

@ -6,12 +6,8 @@
*/ */
#include "fsl_flexspi_nor_boot.h" #include "fsl_flexspi_nor_boot.h"
#include "fsl_flexspi_nor_config.h" #include "boards/board.h"
/* Component ID definition, used by tools. */
#ifndef FSL_COMPONENT_ID
#define FSL_COMPONENT_ID "platform.drivers.xip_device"
#endif
__attribute__((section(".boot_hdr.ivt"))) __attribute__((section(".boot_hdr.ivt")))
/************************************* /*************************************
@ -39,88 +35,135 @@ const BOOT_DATA_T boot_data = {
0xFFFFFFFF /* empty - extra data word */ 0xFFFFFFFF /* empty - extra data word */
}; };
// Config for W25Q64JV with QSPI routed.
__attribute__((section(".boot_hdr.conf"))) __attribute__((section(".boot_hdr.conf")))
// Values copied from https://github.com/PaulStoffregen/cores/blob/ddb23fa5d97dac763bc06e11b9b41f026bd51f0a/teensy4/bootdata.c#L39
const flexspi_nor_config_t qspiflash_config = { const flexspi_nor_config_t qspiflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 1u,
.csSetupTime = 2u,
// Enable DDR mode, Wordaddressable, Safe configuration, Differential clock
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz, // 03
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// (FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) |
// FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
// Read LUTs
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
0,
0,
0x24040405,
0,
0,
0,
0,
0,
0,
0,
0x00000406,
0,
0,
0,
0,
0,
0,
0,
0x08180420,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0x081804D8,
0,
0,
0,
0x08180402,
0x00002004,
0,
0,
0,
0,
0,
0,
0x00000460,
},
},
.pageSize = 256u, .pageSize = 256u,
.sectorSize = 4u * 1024u, .sectorSize = 4u * 1024u,
.ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz, .ipcmdSerialClkFreq = kFlexSpiSerialClk_30MHz,
.blockSize = 0x00010000, .blockSize = 0x00010000,
.isUniformBlockSize = false, .isUniformBlockSize = false,
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
.busyOffset = 0u, // Status bit 0 indicates busy.
.busyBitPolarity = 0u, // Busy when the bit is 1.
.deviceModeCfgEnable = 1u,
.deviceModeType = kDeviceConfigCmdType_QuadEnable,
.deviceModeSeq = {
.seqId = 4u,
.seqNum = 1u,
},
.deviceModeArg = 0x02,
.deviceType = kFlexSpiDeviceType_SerialNOR,
.sflashPadType = kSerialFlash_4Pads,
.serialClkFreq = kFlexSpiSerialClk_60MHz,
.sflashA1Size = FLASH_SIZE,
.lookupTable =
{
// FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1)
// The high 16 bits is command 1 and the low are command 0.
// Within a command, the top 6 bits are the opcode, the next two are the number
// of pads and then last byte is the operand. The operand's meaning changes
// per opcode.
// Indices with ROM should always have the same function because the ROM
// bootloader uses it.
// 0: ROM: Read LUTs
// Quad version
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB /* the command to send */,
RADDR_SDR, FLEXSPI_4PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 6 /* 6 dummy cycles, 2 for M7-0 and 4 dummy */,
READ_SDR, FLEXSPI_4PAD, 0x04),
// Single fast read version, good for debugging.
// FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x0B /* the command to send */,
// RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
// FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_1PAD, 8 /* 8 dummy clocks */,
// READ_SDR, FLEXSPI_1PAD, 0x04),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 1: ROM: Read status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05 /* the command to send */,
READ_SDR, FLEXSPI_1PAD, 0x01),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 2: Empty
EMPTY_SEQUENCE,
// 3: ROM: Write Enable
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06 /* the command to send */,
STOP, FLEXSPI_1PAD, 0x00),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 4: Config: Write Status
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x31 /* the command to send */,
WRITE_SDR, FLEXSPI_1PAD, 0x01),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 5: ROM: Erase Sector
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 6: Empty
EMPTY_SEQUENCE,
// 7: Empty
EMPTY_SEQUENCE,
// 8: Block Erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 9: ROM: Page program
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02 /* the command to send */,
RADDR_SDR, FLEXSPI_1PAD, 24 /* bits to transmit */),
FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04 /* data out */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 10: Empty
EMPTY_SEQUENCE,
// 11: ROM: Chip erase
SEQUENCE(FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60 /* the command to send */,
STOP, FLEXSPI_1PAD, 0),
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS,
TWO_EMPTY_STEPS),
// 12: Empty
EMPTY_SEQUENCE,
// 13: ROM: Read SFDP
EMPTY_SEQUENCE,
// 14: ROM: Restore no cmd
EMPTY_SEQUENCE,
// 15: ROM: Dummy
EMPTY_SEQUENCE
},
},
}; };

View File

@ -62,7 +62,6 @@ SECTIONS
KEEP(*(.isr_vector)) /* Startup code */ KEEP(*(.isr_vector)) /* Startup code */
*(EXCLUDE_FILE( *(EXCLUDE_FILE(
*flexspi_nor_flash_ops.o
*fsl_flexspi.o *fsl_flexspi.o
) .text*) /* .text* sections (code) */ ) .text*) /* .text* sections (code) */
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
@ -84,7 +83,6 @@ SECTIONS
{ {
. = ALIGN(4); . = ALIGN(4);
*(.data*) /* .data* sections */ *(.data*) /* .data* sections */
*flexspi_nor_flash_ops.o(.text*)
*fsl_flexspi.o(.text*) *fsl_flexspi.o(.text*)
. = ALIGN(4); . = ALIGN(4);
} > OCRAM AT> FLASH_FIRMWARE } > OCRAM AT> FLASH_FIRMWARE
@ -110,7 +108,6 @@ SECTIONS
.itcm : .itcm :
{ {
. = ALIGN(4); . = ALIGN(4);
*(.itcm.*) *(.itcm.*)
. = ALIGN(4); . = ALIGN(4);

View File

@ -9,23 +9,10 @@
#include "fsl_flexspi.h" #include "fsl_flexspi.h"
#include "internal_flash.h" #include "internal_flash.h"
#include "boards/board.h"
#include "supervisor/linker.h"
#define FLASH_QUAD_ENABLE 0x02 status_t PLACE_IN_ITCM(flexspi_nor_write_enable)(FLEXSPI_Type *base, uint32_t baseAddr)
#define FLASH_BUSY_STATUS_POL 1
#define FLASH_BUSY_STATUS_OFFSET 0
static inline void flexspi_clock_init(void)
{
/* Switch to PLL2 for XIP to avoid hardfault during re-initialize clock. */
CLOCK_InitSysPfd(kCLOCK_Pfd2, 24); /* Set PLL2 PFD2 clock 396MHZ. */
CLOCK_SetMux(kCLOCK_FlexspiMux, 0x2); /* Choose PLL2 PFD2 clock as flexspi source clock. */
CLOCK_SetDiv(kCLOCK_FlexspiDiv, 2); /* flexspi clock 133M. */
}
extern flexspi_device_config_t deviceconfig;
extern const uint32_t customLUT[CUSTOM_LUT_LENGTH];
status_t flexspi_nor_write_enable(FLEXSPI_Type *base, uint32_t baseAddr)
{ {
flexspi_transfer_t flashXfer; flexspi_transfer_t flashXfer;
status_t status; status_t status;
@ -35,14 +22,14 @@ status_t flexspi_nor_write_enable(FLEXSPI_Type *base, uint32_t baseAddr)
flashXfer.port = kFLEXSPI_PortA1; flashXfer.port = kFLEXSPI_PortA1;
flashXfer.cmdType = kFLEXSPI_Command; flashXfer.cmdType = kFLEXSPI_Command;
flashXfer.SeqNumber = 1; flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_WRITEENABLE; flashXfer.seqIndex = ROM_INDEX_WRITEENABLE;
status = FLEXSPI_TransferBlocking(base, &flashXfer); status = FLEXSPI_TransferBlocking(base, &flashXfer);
return status; return status;
} }
status_t flexspi_nor_wait_bus_busy(FLEXSPI_Type *base) status_t PLACE_IN_ITCM(flexspi_nor_wait_bus_busy)(FLEXSPI_Type *base)
{ {
/* Wait status ready. */ /* Wait status ready. */
bool isBusy; bool isBusy;
@ -54,7 +41,7 @@ status_t flexspi_nor_wait_bus_busy(FLEXSPI_Type *base)
flashXfer.port = kFLEXSPI_PortA1; flashXfer.port = kFLEXSPI_PortA1;
flashXfer.cmdType = kFLEXSPI_Read; flashXfer.cmdType = kFLEXSPI_Read;
flashXfer.SeqNumber = 1; flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_READSTATUSREG; flashXfer.seqIndex = ROM_INDEX_READSTATUSREG;
flashXfer.data = &readValue; flashXfer.data = &readValue;
flashXfer.dataSize = 1; flashXfer.dataSize = 1;
@ -66,72 +53,15 @@ status_t flexspi_nor_wait_bus_busy(FLEXSPI_Type *base)
{ {
return status; return status;
} }
if (FLASH_BUSY_STATUS_POL) size_t busyBit = readValue & (1U << qspiflash_config.memConfig.busyOffset);
{ isBusy = (qspiflash_config.memConfig.busyBitPolarity == 0 && busyBit != 0) ||
if (readValue & (1U << FLASH_BUSY_STATUS_OFFSET)) (qspiflash_config.memConfig.busyBitPolarity == 1 && busyBit == 0);
{
isBusy = true;
}
else
{
isBusy = false;
}
}
else
{
if (readValue & (1U << FLASH_BUSY_STATUS_OFFSET))
{
isBusy = false;
}
else
{
isBusy = true;
}
}
} while (isBusy); } while (isBusy);
return status; return status;
} }
status_t flexspi_nor_enable_quad_mode(FLEXSPI_Type *base) status_t PLACE_IN_ITCM(flexspi_nor_flash_erase_sector)(FLEXSPI_Type *base, uint32_t address)
{
flexspi_transfer_t flashXfer;
status_t status;
uint32_t writeValue = FLASH_QUAD_ENABLE;
/* Write enable */
status = flexspi_nor_write_enable(base, 0);
if (status != kStatus_Success)
{
return status;
}
/* Enable quad mode. */
flashXfer.deviceAddress = 0;
flashXfer.port = kFLEXSPI_PortA1;
flashXfer.cmdType = kFLEXSPI_Write;
flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_WRITESTATUSREG;
flashXfer.data = &writeValue;
flashXfer.dataSize = 1;
status = FLEXSPI_TransferBlocking(base, &flashXfer);
if (status != kStatus_Success)
{
return status;
}
status = flexspi_nor_wait_bus_busy(base);
/* Do software reset. */
FLEXSPI_SoftwareReset(base);
return status;
}
status_t flexspi_nor_flash_erase_sector(FLEXSPI_Type *base, uint32_t address)
{ {
status_t status; status_t status;
flexspi_transfer_t flashXfer; flexspi_transfer_t flashXfer;
@ -141,7 +71,7 @@ status_t flexspi_nor_flash_erase_sector(FLEXSPI_Type *base, uint32_t address)
flashXfer.port = kFLEXSPI_PortA1; flashXfer.port = kFLEXSPI_PortA1;
flashXfer.cmdType = kFLEXSPI_Command; flashXfer.cmdType = kFLEXSPI_Command;
flashXfer.SeqNumber = 1; flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_WRITEENABLE; flashXfer.seqIndex = ROM_INDEX_WRITEENABLE;
status = FLEXSPI_TransferBlocking(base, &flashXfer); status = FLEXSPI_TransferBlocking(base, &flashXfer);
@ -154,7 +84,7 @@ status_t flexspi_nor_flash_erase_sector(FLEXSPI_Type *base, uint32_t address)
flashXfer.port = kFLEXSPI_PortA1; flashXfer.port = kFLEXSPI_PortA1;
flashXfer.cmdType = kFLEXSPI_Command; flashXfer.cmdType = kFLEXSPI_Command;
flashXfer.SeqNumber = 1; flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_ERASESECTOR; flashXfer.seqIndex = ROM_INDEX_ERASESECTOR;
status = FLEXSPI_TransferBlocking(base, &flashXfer); status = FLEXSPI_TransferBlocking(base, &flashXfer);
if (status != kStatus_Success) if (status != kStatus_Success)
@ -170,7 +100,7 @@ status_t flexspi_nor_flash_erase_sector(FLEXSPI_Type *base, uint32_t address)
return status; return status;
} }
status_t flexspi_nor_flash_program(FLEXSPI_Type *base, uint32_t dstAddr, const uint32_t *src, uint32_t length) status_t PLACE_IN_ITCM(flexspi_nor_flash_page_program)(FLEXSPI_Type *base, uint32_t dstAddr, const uint32_t *src)
{ {
status_t status; status_t status;
flexspi_transfer_t flashXfer; flexspi_transfer_t flashXfer;
@ -188,48 +118,7 @@ status_t flexspi_nor_flash_program(FLEXSPI_Type *base, uint32_t dstAddr, const u
flashXfer.port = kFLEXSPI_PortA1; flashXfer.port = kFLEXSPI_PortA1;
flashXfer.cmdType = kFLEXSPI_Write; flashXfer.cmdType = kFLEXSPI_Write;
flashXfer.SeqNumber = 1; flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD; flashXfer.seqIndex = ROM_INDEX_PAGEPROGRAM;
flashXfer.data = (uint32_t *)src;
flashXfer.dataSize = length;
status = FLEXSPI_TransferBlocking(base, &flashXfer);
if (status != kStatus_Success)
{
return status;
}
status = flexspi_nor_wait_bus_busy(base);
/* Do software reset. */
#if defined(FSL_FEATURE_SOC_OTFAD_COUNT)
base->AHBCR |= FLEXSPI_AHBCR_CLRAHBRXBUF_MASK | FLEXSPI_AHBCR_CLRAHBTXBUF_MASK;
base->AHBCR &= ~(FLEXSPI_AHBCR_CLRAHBRXBUF_MASK | FLEXSPI_AHBCR_CLRAHBTXBUF_MASK);
#else
FLEXSPI_SoftwareReset(base);
#endif
return status;
}
status_t flexspi_nor_flash_page_program(FLEXSPI_Type *base, uint32_t dstAddr, const uint32_t *src)
{
status_t status;
flexspi_transfer_t flashXfer;
/* Write enable */
status = flexspi_nor_write_enable(base, dstAddr);
if (status != kStatus_Success)
{
return status;
}
/* Prepare page program command */
flashXfer.deviceAddress = dstAddr;
flashXfer.port = kFLEXSPI_PortA1;
flashXfer.cmdType = kFLEXSPI_Write;
flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD;
flashXfer.data = (uint32_t *)src; flashXfer.data = (uint32_t *)src;
flashXfer.dataSize = FLASH_PAGE_SIZE; flashXfer.dataSize = FLASH_PAGE_SIZE;
status = FLEXSPI_TransferBlocking(base, &flashXfer); status = FLEXSPI_TransferBlocking(base, &flashXfer);
@ -251,92 +140,3 @@ status_t flexspi_nor_flash_page_program(FLEXSPI_Type *base, uint32_t dstAddr, co
return status; return status;
} }
status_t flexspi_nor_get_vendor_id(FLEXSPI_Type *base, uint8_t *vendorId)
{
uint32_t temp;
flexspi_transfer_t flashXfer;
flashXfer.deviceAddress = 0;
flashXfer.port = kFLEXSPI_PortA1;
flashXfer.cmdType = kFLEXSPI_Read;
flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_READID;
flashXfer.data = &temp;
flashXfer.dataSize = 1;
status_t status = FLEXSPI_TransferBlocking(base, &flashXfer);
*vendorId = temp;
/* Do software reset. */
#if defined(FSL_FEATURE_SOC_OTFAD_COUNT)
base->AHBCR |= FLEXSPI_AHBCR_CLRAHBRXBUF_MASK | FLEXSPI_AHBCR_CLRAHBTXBUF_MASK;
base->AHBCR &= ~(FLEXSPI_AHBCR_CLRAHBRXBUF_MASK | FLEXSPI_AHBCR_CLRAHBTXBUF_MASK);
#else
FLEXSPI_SoftwareReset(base);
#endif
return status;
}
status_t flexspi_nor_erase_chip(FLEXSPI_Type *base)
{
status_t status;
flexspi_transfer_t flashXfer;
/* Write enable */
status = flexspi_nor_write_enable(base, 0);
if (status != kStatus_Success)
{
return status;
}
flashXfer.deviceAddress = 0;
flashXfer.port = kFLEXSPI_PortA1;
flashXfer.cmdType = kFLEXSPI_Command;
flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_ERASECHIP;
status = FLEXSPI_TransferBlocking(base, &flashXfer);
if (status != kStatus_Success)
{
return status;
}
status = flexspi_nor_wait_bus_busy(base);
return status;
}
void flexspi_nor_flash_init(FLEXSPI_Type *base)
{
flexspi_config_t config;
flexspi_clock_init();
/*Get FLEXSPI default settings and configure the flexspi. */
FLEXSPI_GetDefaultConfig(&config);
/*Set AHB buffer size for reading data through AHB bus. */
config.ahbConfig.enableAHBPrefetch = true;
config.ahbConfig.enableAHBBufferable = true;
config.ahbConfig.enableReadAddressOpt = true;
config.ahbConfig.enableAHBCachable = true;
#ifdef BOARD_USING_SECONDARY_QSPI_PINMUX
config.rxSampleClock = kFLEXSPI_ReadSampleClkLoopbackInternally;
#else
config.rxSampleClock = kFLEXSPI_ReadSampleClkLoopbackFromDqsPad;
#endif
FLEXSPI_Init(base, &config);
/* Configure flash settings according to serial flash feature. */
FLEXSPI_SetFlashConfig(base, &deviceconfig, kFLEXSPI_PortA1);
/* Update LUT table. */
FLEXSPI_UpdateLUT(base, 0, customLUT, CUSTOM_LUT_LENGTH);
/* Do software reset. */
FLEXSPI_SoftwareReset(base);
}

Some files were not shown because too many files have changed in this diff Show More