Merge pull request #31 from adafruit/main

Update from adafruit/main
This commit is contained in:
DavePutz 2020-10-14 12:26:14 -05:00 committed by GitHub
commit 5f3ef9f7c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
152 changed files with 3731 additions and 1558 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"
@ -243,6 +244,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

6
.gitmodules vendored
View File

@ -144,12 +144,12 @@
[submodule "frozen/Adafruit_CircuitPython_BLE_Apple_Notification_Center"] [submodule "frozen/Adafruit_CircuitPython_BLE_Apple_Notification_Center"]
path = frozen/Adafruit_CircuitPython_BLE_Apple_Notification_Center path = frozen/Adafruit_CircuitPython_BLE_Apple_Notification_Center
url = https://github.com/adafruit/Adafruit_CircuitPython_BLE_Apple_Notification_Center url = https://github.com/adafruit/Adafruit_CircuitPython_BLE_Apple_Notification_Center
[submodule "ports/esp32s2/esp-idf"]
path = ports/esp32s2/esp-idf
url = https://github.com/tannewt/esp-idf.git
[submodule "frozen/Adafruit_CircuitPython_RFM9x"] [submodule "frozen/Adafruit_CircuitPython_RFM9x"]
path = frozen/Adafruit_CircuitPython_RFM9x path = frozen/Adafruit_CircuitPython_RFM9x
url = https://github.com/adafruit/Adafruit_CircuitPython_RFM9x.git url = https://github.com/adafruit/Adafruit_CircuitPython_RFM9x.git
[submodule "frozen/Adafruit_CircuitPython_RFM69"] [submodule "frozen/Adafruit_CircuitPython_RFM69"]
path = frozen/Adafruit_CircuitPython_RFM69 path = frozen/Adafruit_CircuitPython_RFM69
url = https://github.com/adafruit/Adafruit_CircuitPython_RFM69.git url = https://github.com/adafruit/Adafruit_CircuitPython_RFM69.git
[submodule "ports/esp32s2/esp-idf"]
path = ports/esp32s2/esp-idf
url = https://github.com/espressif/esp-idf.git

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

@ -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) {
if (vfs->flags & FSUSER_NATIVE) {
bool (*f)(size_t, mp_int_t*) = (void*)(uintptr_t)vfs->u.ioctl[2];
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[2] = MP_OBJ_NEW_SMALL_INT(bp_op);
vfs->u.ioctl[3] = MP_OBJ_NEW_SMALL_INT(0); // unused vfs->u.ioctl[3] = MP_OBJ_NEW_SMALL_INT(0); // unused
ret = mp_call_method_n_kw(2, 0, vfs->u.ioctl); 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 2a1ba8fa4753b2bcb158c9b17351cf18eade0d2b 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-10 23:49-0700\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"
@ -1019,7 +1030,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 ""
@ -1218,34 +1230,35 @@ 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/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "Tidak ada DAC (Digital Analog Converter) di dalam chip" msgstr "Tidak ada DAC (Digital Analog Converter) di dalam chip"
@ -1258,12 +1271,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 +1294,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 +1310,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 +1323,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 +1339,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 +1347,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 +1378,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 +1392,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 +1415,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 +1424,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 +1437,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 +1476,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 +1489,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 +1518,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 +1528,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 +1577,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 +1585,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 +1593,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 +1620,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 +1637,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 +1662,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 +1677,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 +1685,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 +1701,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"
@ -3178,6 +3206,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 +3214,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 +3483,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

@ -8,7 +8,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-10 23:49-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -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"
@ -285,6 +293,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 ""
@ -892,6 +901,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 ""
@ -928,7 +938,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 ""
@ -998,7 +1009,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 ""
@ -1225,6 +1237,7 @@ msgid "No CCCD for this Characteristic"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "" msgstr ""
@ -1421,6 +1434,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
@ -3144,6 +3158,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
@ -3151,6 +3166,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 ""
@ -3418,6 +3434,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-10 23:49-0700\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 ""
@ -1002,7 +1013,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 ""
@ -1229,6 +1241,7 @@ msgid "No CCCD for this Characteristic"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
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
@ -3148,6 +3162,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 +3170,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 +3438,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-10 23:49-0700\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"
@ -1019,7 +1030,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 ""
@ -1248,6 +1260,7 @@ msgid "No CCCD for this Characteristic"
msgstr "Kein CCCD für diese Charakteristik" msgstr "Kein CCCD für diese Charakteristik"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "Kein DAC im Chip vorhanden" msgstr "Kein DAC im Chip vorhanden"
@ -1450,6 +1463,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
@ -3229,6 +3243,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 +3251,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 +3522,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-10 23:49-0700\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 ""
@ -997,7 +1008,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 ""
@ -1224,6 +1236,7 @@ msgid "No CCCD for this Characteristic"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "" msgstr ""
@ -1420,6 +1433,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
@ -3143,6 +3157,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 +3165,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 +3433,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-10 23:49-0700\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"
@ -1020,7 +1031,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"
@ -1247,6 +1259,7 @@ msgid "No CCCD for this Characteristic"
msgstr "No hay CCCD para esta característica" msgstr "No hay CCCD para esta característica"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "El chip no tiene DAC" msgstr "El chip no tiene DAC"
@ -1451,6 +1464,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 +1723,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 ""
@ -3219,6 +3233,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 +3241,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 +3512,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 +3624,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-10 23:49-0700\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 ""
@ -1012,7 +1023,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 ""
@ -1239,6 +1251,7 @@ msgid "No CCCD for this Characteristic"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "Walang DAC sa chip" msgstr "Walang DAC sa chip"
@ -1439,6 +1452,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
@ -3194,6 +3208,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 +3216,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 +3488,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-10 23:49-0700\n"
"PO-Revision-Date: 2020-09-16 13:47+0000\n" "PO-Revision-Date: 2020-10-12 21:00+0000\n"
"Last-Translator: Hugo Dahl <hugo@code-jedi.com>\n" "Last-Translator: Noel Gaetan <gaetan.noel@viacesi.fr>\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"
@ -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"
@ -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"
@ -971,7 +982,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 +1036,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,7 +1051,7 @@ 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/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
@ -1089,7 +1101,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 +1224,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."
@ -1252,6 +1264,7 @@ msgid "No CCCD for this Characteristic"
msgstr "Pas de CCCD pour cette caractéristique" msgstr "Pas de CCCD pour cette caractéristique"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "Pas de DAC sur la puce" msgstr "Pas de DAC sur la puce"
@ -1324,11 +1337,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 +1349,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 +1373,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 +1471,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
@ -3237,6 +3251,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 +3259,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 +3530,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 +3613,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-10 23:49-0700\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 ""
@ -997,7 +1008,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 ""
@ -1224,6 +1236,7 @@ msgid "No CCCD for this Characteristic"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "" msgstr ""
@ -1420,6 +1433,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
@ -3143,6 +3157,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 +3165,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 +3433,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-10 23:49-0700\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 ""
@ -1012,7 +1023,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 ""
@ -1243,6 +1255,7 @@ msgid "No CCCD for this Characteristic"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "Nessun DAC sul chip" msgstr "Nessun DAC sul chip"
@ -1448,6 +1461,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
@ -3201,6 +3215,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 +3223,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 +3495,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-10 23:49-0700\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 "ハードウェアビジー。代替のピンを試してください"
@ -1012,7 +1023,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ピン選択"
@ -1239,6 +1251,7 @@ msgid "No CCCD for this Characteristic"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "チップにDACがありません" msgstr "チップにDACがありません"
@ -1438,6 +1451,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
@ -3175,6 +3189,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 +3197,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 +3466,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,14 +6,16 @@ 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-10 23:49-0700\n"
"PO-Revision-Date: 2019-05-06 14:22-0700\n" "PO-Revision-Date: 2020-10-05 12:12+0000\n"
"Last-Translator: \n" "Last-Translator: Michal Čihař <michal@cihar.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ko\n" "Language: ko\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"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.3-dev\n"
#: main.c #: main.c
msgid "" msgid ""
@ -156,7 +158,7 @@ msgstr "'%s' 에는 라벨이 필요합니다"
#: py/emitinlinethumb.c py/emitinlinextensa.c #: py/emitinlinethumb.c py/emitinlinextensa.c
#, c-format #, c-format
msgid "'%s' expects a register" msgid "'%s' expects a register"
msgstr "'%s%' 에는 레지스터가 필요합니다" msgstr "'%s' 에는 레지스터가 필요합니다"
#: py/emitinlinethumb.c #: py/emitinlinethumb.c
#, c-format #, c-format
@ -246,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' 는 함수 외부에 존재합니다"
@ -271,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"
@ -285,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 ""
@ -894,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 ""
@ -930,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 ""
@ -1000,7 +1013,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 ""
@ -1227,6 +1241,7 @@ msgid "No CCCD for this Characteristic"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "" msgstr ""
@ -1423,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
@ -3147,6 +3163,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
@ -3154,6 +3171,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 ""
@ -3421,6 +3439,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-10 23:49-0700\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"
@ -1014,7 +1025,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"
@ -1241,6 +1253,7 @@ msgid "No CCCD for this Characteristic"
msgstr "Geen CCCD voor deze Characteristic" msgstr "Geen CCCD voor deze Characteristic"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "Geen DAC op de chip" msgstr "Geen DAC op de chip"
@ -1446,6 +1459,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
@ -3204,6 +3218,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 +3226,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 +3496,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-10 23:49-0700\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"
@ -1012,7 +1023,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 ""
@ -1240,6 +1252,7 @@ msgid "No CCCD for this Characteristic"
msgstr "" msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "Brak DAC" msgstr "Brak DAC"
@ -1436,6 +1449,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
@ -3167,6 +3181,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 +3189,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 +3458,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-10 23:49-0700\n"
"PO-Revision-Date: 2020-10-01 14:20+0000\n" "PO-Revision-Date: 2020-10-13 17:11+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"
@ -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"
@ -1023,7 +1034,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"
@ -1250,6 +1262,7 @@ msgid "No CCCD for this Characteristic"
msgstr "Não há nenhum CCCD para esta característica" msgstr "Não há nenhum CCCD para esta característica"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "Nenhum DAC no chip" msgstr "Nenhum DAC no chip"
@ -1455,6 +1468,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
@ -1717,7 +1731,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 "O comprimento dos rgb_pins devem ser 6, 12, 18, 24, ou 30"
#: supervisor/shared/safe_mode.c #: supervisor/shared/safe_mode.c
msgid "" msgid ""
@ -3234,6 +3248,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 +3256,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 +3526,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"
@ -3618,7 +3638,7 @@ msgstr "o tempo limite do watchdog deve ser maior que 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 "a largura deve ser maior que zero"
#: shared-bindings/_bleio/Adapter.c #: shared-bindings/_bleio/Adapter.c
msgid "window must be <= interval" msgid "window must be <= interval"

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-10 23:49-0700\n"
"PO-Revision-Date: 2020-10-01 21:24+0000\n" "PO-Revision-Date: 2020-10-02 22:53+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 ""
#: 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 ""
#: 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"
@ -1012,7 +1023,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"
@ -1240,6 +1252,7 @@ msgid "No CCCD for this Characteristic"
msgstr "Ingen CCCD för denna karaktäristik" msgstr "Ingen CCCD för denna karaktäristik"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "Ingen DAC på chipet" msgstr "Ingen DAC på chipet"
@ -1443,6 +1456,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
@ -1702,7 +1716,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 "Längden på rgb_pins vara 6, 12, 18, 24 eller 30"
#: supervisor/shared/safe_mode.c #: supervisor/shared/safe_mode.c
msgid "" msgid ""
@ -3201,6 +3215,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 +3223,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 +3493,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 ""
#: 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"
@ -3585,7 +3605,7 @@ msgstr "watchdog timeout måste vara större än 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 "width måste vara större än noll"
#: shared-bindings/_bleio/Adapter.c #: shared-bindings/_bleio/Adapter.c
msgid "window must be <= interval" msgid "window must be <= interval"

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-10 23:49-0700\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"
@ -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"
@ -976,7 +988,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 +1021,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,7 +1036,7 @@ 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/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied" msgid "Invalid DAC pin supplied"
@ -1073,7 +1086,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 +1209,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."
@ -1236,6 +1249,7 @@ msgid "No CCCD for this Characteristic"
msgstr "Zhège tèzhēng méiyǒu CCCD" msgstr "Zhège tèzhēng méiyǒu CCCD"
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c #: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/esp32s2/common-hal/analogio/AnalogOut.c
#: ports/stm/common-hal/analogio/AnalogOut.c #: ports/stm/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip" msgid "No DAC on chip"
msgstr "Méiyǒu DAC zài xīnpiàn shàng de" msgstr "Méiyǒu DAC zài xīnpiàn shàng de"
@ -1308,11 +1322,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 +1334,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 +1358,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 +1376,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 +1394,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 +1419,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 +1452,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 +1494,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 +1504,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 +1568,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"
@ -1625,11 +1641,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 +1660,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 +1708,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 +1839,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 +1870,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 +1962,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 +1983,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"
@ -2145,7 +2162,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 +2422,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 +2481,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 +2698,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"
@ -2877,7 +2895,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 +2955,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 +3133,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 +3146,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 +3186,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 +3204,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 +3212,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 +3222,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 +3269,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 +3349,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 +3482,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 +3594,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"

40
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.
if (safe_mode == NO_SAFE_MODE) {
autoreload_enable(); 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

@ -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

@ -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

@ -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

@ -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

@ -41,9 +41,6 @@ typedef struct canio_can_obj {
mp_obj_base_t base; mp_obj_base_t base;
Can *hw; Can *hw;
canio_can_state_t *state; canio_can_state_t *state;
volatile uint32_t error_warning_state_count;
volatile uint32_t error_passive_state_count;
volatile uint32_t bus_off_state_count;
int baudrate; int baudrate;
uint8_t rx_pin_number:8; uint8_t rx_pin_number:8;
uint8_t tx_pin_number:8; uint8_t tx_pin_number:8;

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

@ -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

@ -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

@ -73,30 +73,37 @@ INC += -I./peripherals
INC += -I../../lib/mp-readline INC += -I../../lib/mp-readline
INC += -I../../lib/tinyusb/src INC += -I../../lib/tinyusb/src
INC += -I../../supervisor/shared/usb INC += -I../../supervisor/shared/usb
INC += -Iesp-idf/components/freertos/include/freertos
INC += -Iesp-idf/components/freertos/xtensa/include INC += -isystem esp-idf
INC += -Iesp-idf/components/esp32s2/include INC += -isystem esp-idf/components/driver/include
INC += -Iesp-idf/components/xtensa/esp32s2/include INC += -isystem esp-idf/components/freertos/include/freertos
INC += -Iesp-idf/components/esp_common/include INC += -isystem esp-idf/components/freertos/xtensa/include
INC += -Iesp-idf/components/esp_event/include INC += -isystem esp-idf/components/esp32s2/include
INC += -Iesp-idf/components/esp_netif/include INC += -isystem esp-idf/components/xtensa/esp32s2/include
INC += -Iesp-idf/components/esp_ringbuf/include INC += -isystem esp-idf/components/esp_common/include
INC += -Iesp-idf/components/esp_rom/include INC += -isystem esp-idf/components/esp_event/include
INC += -Iesp-idf/components/esp_wifi/include INC += -isystem esp-idf/components/esp_netif/include
INC += -Iesp-idf/components/xtensa/include INC += -isystem esp-idf/components/esp_ringbuf/include
INC += -Iesp-idf/components/esp_timer/include INC += -isystem esp-idf/components/esp_rom/include
INC += -Iesp-idf/components/mbedtls/mbedtls/include INC += -isystem esp-idf/components/esp_wifi/include
INC += -Iesp-idf/components/mbedtls/port/include/ INC += -isystem esp-idf/components/xtensa/include
INC += -Iesp-idf/components/newlib/platform_include INC += -isystem esp-idf/components/esp_timer/include
INC += -Iesp-idf/components/lwip/lwip/src/include INC += -isystem esp-idf/components/mbedtls/mbedtls/include
INC += -Iesp-idf/components/lwip/port/esp32/include INC += -isystem esp-idf/components/mbedtls/port/include/
INC += -Iesp-idf/components/lwip/include/apps/sntp INC += -isystem esp-idf/components/newlib/platform_include
INC += -Iesp-idf/components/soc/include INC += -isystem esp-idf/components/lwip/lwip/src/include
INC += -Iesp-idf/components/soc/src/esp32s2/include INC += -isystem esp-idf/components/lwip/port/esp32/include
INC += -Iesp-idf/components/soc/soc/include INC += -isystem esp-idf/components/lwip/include/apps/sntp
INC += -Iesp-idf/components/soc/soc/esp32s2/include INC += -isystem esp-idf/components/hal/include
INC += -Iesp-idf/components/heap/include INC += -isystem esp-idf/components/hal/esp32s2/include
INC += -Iesp-idf/components/esp_system/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/src/esp32s2/include
INC += -isystem esp-idf/components/soc/soc/include
INC += -isystem esp-idf/components/soc/soc/esp32s2/include
INC += -isystem esp-idf/components/heap/include
INC += -isystem esp-idf/components/esp_system/include
INC += -I$(BUILD)/esp-idf/config INC += -I$(BUILD)/esp-idf/config
CFLAGS += -DHAVE_CONFIG_H \ CFLAGS += -DHAVE_CONFIG_H \
@ -262,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)
@ -277,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

@ -29,7 +29,7 @@
#include "bindings/espidf/__init__.h" #include "bindings/espidf/__init__.h"
#include "esp-idf/components/heap/include/esp_heap_caps.h" #include "components/heap/include/esp_heap_caps.h"
//| """Direct access to a few ESP-IDF details. This module *should not* include any functionality //| """Direct access to a few ESP-IDF details. This module *should not* include any functionality
//| that could be implemented by other frameworks. It should only include ESP-IDF specific //| that could be implemented by other frameworks. It should only include ESP-IDF specific

View File

@ -35,5 +35,5 @@
#define AUTORESET_DELAY_MS 500 #define AUTORESET_DELAY_MS 500
#define MICROPY_HW_APA102_MOSI (&pin_GPIO40) // #define MICROPY_HW_APA102_MOSI (&pin_GPIO40)
#define MICROPY_HW_APA102_SCK (&pin_GPIO45) // #define MICROPY_HW_APA102_SCK (&pin_GPIO45)

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)
@ -34,5 +34,5 @@
#define AUTORESET_DELAY_MS 500 #define AUTORESET_DELAY_MS 500
#define MICROPY_HW_APA102_MOSI (&pin_GPIO40) // #define MICROPY_HW_APA102_MOSI (&pin_GPIO40)
#define MICROPY_HW_APA102_SCK (&pin_GPIO45) // #define MICROPY_HW_APA102_SCK (&pin_GPIO45)

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

@ -28,7 +28,7 @@
#include "py/mperrno.h" #include "py/mperrno.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "driver/i2c.h" #include "components/driver/include/driver/i2c.h"
#include "shared-bindings/microcontroller/__init__.h" #include "shared-bindings/microcontroller/__init__.h"
#include "shared-bindings/microcontroller/Pin.h" #include "shared-bindings/microcontroller/Pin.h"

View File

@ -29,7 +29,7 @@
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "esp-idf/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

@ -266,7 +266,7 @@ bool common_hal_busio_spi_configure(busio_spi_obj_t *self,
self->bits = bits; self->bits = bits;
self->target_frequency = baudrate; self->target_frequency = baudrate;
self->hal_context.timing_conf = &self->timing_conf; self->hal_context.timing_conf = &self->timing_conf;
esp_err_t result = spi_hal_get_clock_conf(&self->hal_context, esp_err_t result = spi_hal_cal_clock_conf(&self->hal_context,
self->target_frequency, self->target_frequency,
128 /* duty_cycle */, 128 /* duty_cycle */,
self->connected_through_gpio, self->connected_through_gpio,

View File

@ -29,9 +29,9 @@
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "esp-idf/components/driver/include/driver/spi_common_internal.h" #include "components/driver/include/driver/spi_common_internal.h"
#include "esp-idf/components/soc/include/hal/spi_hal.h" #include "components/hal/include/hal/spi_hal.h"
#include "esp-idf/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

@ -27,7 +27,7 @@
#include "shared-bindings/microcontroller/__init__.h" #include "shared-bindings/microcontroller/__init__.h"
#include "shared-bindings/busio/UART.h" #include "shared-bindings/busio/UART.h"
#include "driver/uart.h" #include "components/driver/include/driver/uart.h"
#include "mpconfigport.h" #include "mpconfigport.h"
#include "lib/utils/interrupt_char.h" #include "lib/utils/interrupt_char.h"

View File

@ -29,7 +29,7 @@
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "esp-idf/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

@ -28,9 +28,9 @@
#include "py/runtime.h" #include "py/runtime.h"
#include "supervisor/shared/translate.h" #include "supervisor/shared/translate.h"
#include "driver/gpio.h" #include "components/driver/include/driver/gpio.h"
#include "esp-idf/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

@ -31,8 +31,8 @@
#include "py/mphal.h" #include "py/mphal.h"
#include "esp-idf/components/driver/include/driver/gpio.h" #include "components/driver/include/driver/gpio.h"
#include "esp-idf/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

@ -34,7 +34,7 @@
#include "soc/efuse_reg.h" #include "soc/efuse_reg.h"
#include "esp-idf/components/driver/esp32s2/include/driver/temp_sensor.h" #include "components/driver/esp32s2/include/driver/temp_sensor.h"
float common_hal_mcu_processor_get_temperature(void) { float common_hal_mcu_processor_get_temperature(void) {
float tsens_out; float tsens_out;

View File

@ -43,8 +43,8 @@
#include "py/mphal.h" #include "py/mphal.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "shared-bindings/neopixel_write/__init__.h" #include "shared-bindings/neopixel_write/__init__.h"
#include "driver/rmt.h" #include "components/driver/include/driver/rmt.h"
#include "rmt.h" #include "peripherals/rmt.h"
#define WS2812_T0H_NS (350) #define WS2812_T0H_NS (350)
#define WS2812_T0L_NS (1000) #define WS2812_T0L_NS (1000)

View File

@ -30,8 +30,8 @@
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "py/obj.h" #include "py/obj.h"
#include "driver/rmt.h" #include "components/driver/include/driver/rmt.h"
#include "rmt.h" #include "peripherals/rmt.h"
typedef struct { typedef struct {
mp_obj_base_t base; mp_obj_base_t base;

View File

@ -28,8 +28,8 @@
#define MICROPY_INCLUDED_ESP32S2_COMMON_HAL_PULSEIO_PULSEOUT_H #define MICROPY_INCLUDED_ESP32S2_COMMON_HAL_PULSEIO_PULSEOUT_H
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "driver/rmt.h" #include "components/driver/include/driver/rmt.h"
#include "rmt.h" #include "peripherals/rmt.h"
#include "py/obj.h" #include "py/obj.h"

View File

@ -28,7 +28,7 @@
#include "common-hal/pwmio/PWMOut.h" #include "common-hal/pwmio/PWMOut.h"
#include "shared-bindings/pwmio/PWMOut.h" #include "shared-bindings/pwmio/PWMOut.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "driver/ledc.h" #include "components/driver/include/driver/ledc.h"
#define INDEX_EMPTY 0xFF #define INDEX_EMPTY 0xFF

View File

@ -28,7 +28,7 @@
#define MICROPY_INCLUDED_ESP32S2_COMMON_HAL_PWMIO_PWMOUT_H #define MICROPY_INCLUDED_ESP32S2_COMMON_HAL_PWMIO_PWMOUT_H
#include "common-hal/microcontroller/Pin.h" #include "common-hal/microcontroller/Pin.h"
#include "driver/ledc.h" #include "components/driver/include/driver/ledc.h"
typedef struct { typedef struct {
mp_obj_base_t base; mp_obj_base_t base;

View File

@ -28,7 +28,7 @@
#include "py/obj.h" #include "py/obj.h"
#include "py/runtime.h" #include "py/runtime.h"
#include "soc/rtc_periph.h" #include "components/soc/soc/include/soc/rtc_periph.h"
#include "shared-bindings/rtc/RTC.h" #include "shared-bindings/rtc/RTC.h"
void common_hal_rtc_get_time(timeutils_struct_time_t *tm) { void common_hal_rtc_get_time(timeutils_struct_time_t *tm) {

View File

@ -32,7 +32,7 @@
#include "common-hal/socketpool/SocketPool.h" #include "common-hal/socketpool/SocketPool.h"
#include "common-hal/ssl/SSLContext.h" #include "common-hal/ssl/SSLContext.h"
#include "esp-idf/components/esp-tls/esp_tls.h" #include "components/esp-tls/esp_tls.h"
typedef struct { typedef struct {
mp_obj_base_t base; mp_obj_base_t base;

View File

@ -29,7 +29,7 @@
#include "py/runtime.h" #include "py/runtime.h"
#include "shared-bindings/wifi/__init__.h" #include "shared-bindings/wifi/__init__.h"
#include "esp-idf/components/lwip/lwip/src/include/lwip/netdb.h" #include "components/lwip/lwip/src/include/lwip/netdb.h"
#include "bindings/espidf/__init__.h" #include "bindings/espidf/__init__.h"

View File

@ -29,7 +29,7 @@
#include "py/obj.h" #include "py/obj.h"
#include "esp-idf/components/esp-tls/esp_tls.h" #include "components/esp-tls/esp_tls.h"
typedef struct { typedef struct {
mp_obj_base_t base; mp_obj_base_t base;

View File

@ -26,7 +26,7 @@
#include "shared-bindings/ssl/SSLContext.h" #include "shared-bindings/ssl/SSLContext.h"
#include "esp-idf/components/mbedtls/esp_crt_bundle/include/esp_crt_bundle.h" #include "components/mbedtls/esp_crt_bundle/include/esp_crt_bundle.h"
void common_hal_ssl_create_default_context(ssl_sslcontext_obj_t* self) { void common_hal_ssl_create_default_context(ssl_sslcontext_obj_t* self) {
memset(&self->ssl_config, 0, sizeof(esp_tls_cfg_t)); memset(&self->ssl_config, 0, sizeof(esp_tls_cfg_t));

View File

@ -29,7 +29,7 @@
#include "py/obj.h" #include "py/obj.h"
#include "esp-idf/components/esp_wifi/include/esp_wifi_types.h" #include "components/esp_wifi/include/esp_wifi_types.h"
typedef struct { typedef struct {
mp_obj_base_t base; mp_obj_base_t base;

View File

@ -35,8 +35,8 @@
#include "shared-bindings/wifi/ScannedNetworks.h" #include "shared-bindings/wifi/ScannedNetworks.h"
#include "shared-module/ipaddress/__init__.h" #include "shared-module/ipaddress/__init__.h"
#include "esp-idf/components/esp_wifi/include/esp_wifi.h" #include "components/esp_wifi/include/esp_wifi.h"
#include "esp-idf/components/lwip/include/apps/ping/ping_sock.h" #include "components/lwip/include/apps/ping/ping_sock.h"
static void start_station(wifi_radio_obj_t *self) { static void start_station(wifi_radio_obj_t *self) {
if (self->sta_mode) { if (self->sta_mode) {

View File

@ -29,7 +29,7 @@
#include "py/obj.h" #include "py/obj.h"
#include "esp-idf/components/esp_event/include/esp_event.h" #include "components/esp_event/include/esp_event.h"
#include "shared-bindings/wifi/ScannedNetworks.h" #include "shared-bindings/wifi/ScannedNetworks.h"

View File

@ -37,7 +37,7 @@
#include "shared-bindings/wifi/Radio.h" #include "shared-bindings/wifi/Radio.h"
#include "shared-bindings/wifi/ScannedNetworks.h" #include "shared-bindings/wifi/ScannedNetworks.h"
#include "esp-idf/components/esp_wifi/include/esp_wifi.h" #include "components/esp_wifi/include/esp_wifi.h"
static void wifi_scannednetworks_done(wifi_scannednetworks_obj_t *self) { static void wifi_scannednetworks_done(wifi_scannednetworks_obj_t *self) {
self->done = true; self->done = true;

View File

@ -35,7 +35,7 @@
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "freertos/event_groups.h" #include "freertos/event_groups.h"
#include "esp-idf/components/esp_wifi/include/esp_wifi_types.h" #include "components/esp_wifi/include/esp_wifi_types.h"
typedef struct { typedef struct {
mp_obj_base_t base; mp_obj_base_t base;

View File

@ -31,13 +31,14 @@
#include "py/runtime.h" #include "py/runtime.h"
#include "esp-idf/components/esp_wifi/include/esp_wifi.h" #include "components/esp_wifi/include/esp_wifi.h"
#include "esp-idf/components/heap/include/esp_heap_caps.h" #include "components/heap/include/esp_heap_caps.h"
wifi_radio_obj_t common_hal_wifi_radio_obj; wifi_radio_obj_t common_hal_wifi_radio_obj;
#include "esp_log.h" #include "components/log/include/esp_log.h"
static const char* TAG = "wifi"; static const char* TAG = "wifi";
static void event_handler(void* arg, esp_event_base_t event_base, static void event_handler(void* arg, esp_event_base_t event_base,

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

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

@ -31,8 +31,8 @@
#include "py/mpstate.h" #include "py/mpstate.h"
#include "py/gc.h" #include "py/gc.h"
#include "esp-idf/components/xtensa/include/esp_debug_helpers.h" #include "components/xtensa/include/esp_debug_helpers.h"
#include "esp-idf/components/esp_rom/include/esp32s2/rom/ets_sys.h" #include "components/esp_rom/include/esp32s2/rom/ets_sys.h"
void mp_hal_delay_us(mp_uint_t delay) { void mp_hal_delay_us(mp_uint_t delay) {
ets_delay_us(delay); ets_delay_us(delay);

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 "esp-idf/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

@ -24,7 +24,7 @@
* THE SOFTWARE. * THE SOFTWARE.
*/ */
#include "rmt.h" #include "peripherals/rmt.h"
#include "py/runtime.h" #include "py/runtime.h"
bool rmt_reserved_channels[RMT_CHANNEL_MAX]; bool rmt_reserved_channels[RMT_CHANNEL_MAX];

View File

@ -28,7 +28,7 @@
#define MICROPY_INCLUDED_ESP32S2_PERIPHERALS_RMT_H #define MICROPY_INCLUDED_ESP32S2_PERIPHERALS_RMT_H
#include "py/mphal.h" #include "py/mphal.h"
#include "driver/rmt.h" #include "components/driver/include/driver/rmt.h"
#include <stdint.h> #include <stdint.h>
void esp32s2_peripherals_rmt_reset(void); void esp32s2_peripherals_rmt_reset(void);

View File

@ -37,7 +37,7 @@
#include "py/runtime.h" #include "py/runtime.h"
#include "lib/oofatfs/ff.h" #include "lib/oofatfs/ff.h"
#include "esp-idf/components/spi_flash/include/esp_partition.h" #include "components/spi_flash/include/esp_partition.h"
#include "supervisor/usb.h" #include "supervisor/usb.h"

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"
@ -46,8 +47,8 @@
#include "shared-bindings/rtc/__init__.h" #include "shared-bindings/rtc/__init__.h"
#include "peripherals/rmt.h" #include "peripherals/rmt.h"
#include "esp-idf/components/heap/include/esp_heap_caps.h" #include "components/heap/include/esp_heap_caps.h"
#include "esp-idf/components/soc/soc/esp32s2/include/soc/cache_memory.h" #include "components/soc/soc/esp32s2/include/soc/cache_memory.h"
#define HEAP_SIZE (48 * 1024) #define HEAP_SIZE (48 * 1024)
@ -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

@ -29,10 +29,12 @@
#include "lib/utils/interrupt_char.h" #include "lib/utils/interrupt_char.h"
#include "lib/mp-readline/readline.h" #include "lib/mp-readline/readline.h"
#include "esp-idf/components/soc/soc/esp32s2/include/soc/usb_periph.h" #include "components/soc/soc/esp32s2/include/soc/usb_periph.h"
#include "esp-idf/components/driver/include/driver/periph_ctrl.h" #include "components/driver/include/driver/periph_ctrl.h"
#include "esp-idf/components/driver/include/driver/gpio.h" #include "components/driver/include/driver/gpio.h"
#include "esp-idf/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

@ -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

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);

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