aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-01-30tools: Remove obsolete upip bootstrap script.stijn
The upip module is frozen into ports supporting it, and it is included in the source tree, so there is no need to get it from PyPi. Moreover the PyPi package referred to is an out-of-date version of upip which is basically unrelated to our upip.py because the source is taken from a fork of micropython-lib instead of this repository.
2021-01-30docs/esp8266/quickref: Add warning block about NeoPixel timing.Christopher Tse
2021-01-30esp8266/modules/neopixel.py: Add timing param to NeoPixel constructor.Christopher Tse
This matches the esp32 port.
2021-01-30nrf/README: Add use of "make submodules" in alternative build paragraph.Chris Hemingway
Add "make submodules" to commands when building for the first time. Otherwise, on a first time build, the submodules have not been checked out and a lot of `fatal error: nrfx.h: No such file or directory` errors are printed.
2021-01-30tools/makemanifest.py: Add check that freeze path is a directory.Jim Mussared
Avoids accidentally writing freeze("path/to/file.py") and getting unexpected results.
2021-01-30docs,stm32: Fix minor typos in RTC docs, and->an.Andrew Scheller
2021-01-30github/workflows: Add workflow to verify commit message format.stijn
Using the new tools/verifygitlog.py script.
2021-01-30tools/verifygitlog.py: Add script for verifying commit message format.stijn
The main rules enforced are: - At most 72 characters in the subject line, with a ": " in it. - At most 75 characters per line in the body. - No "noreply" email addresses.
2021-01-30lib/utils/pyexec: Remove obsolete LCD initialization.stijn
This was added a long time ago in 75abee206d1a575aa98a486d043c94d64df432c1 when USB host support was added to the stm (now stm32) port, and when this pyexec code was actually part of the stm port. It's unlikely to work as intended anymore. If it is needed in the future then generic hook macros can be added in pyexec.
2021-01-30py/qstr.h: Remove QSTR_FROM_STR_STATIC macro.stijn
It practically does the same as qstr_from_str and was only used in one place, which should actually use the compile-time MP_QSTR_XXX form for consistency; qstr_from_str is for runtime strings only.
2021-01-30extmod/nimble: Improve the flow control for l2cap recv path.Jim Mussared
If the _IRQ_L2CAP_RECV handler does the actual consumption of the incoming data (i.e. via l2cap_recvinto), rather than setting a flag for non-scheduler-context to handle it later, then two things can happen: - It can starve the VM (i.e. the scheduled task never terminates). This is because calling l2cap_recvinto will empty the rx buffer, which will grant more credits to the channel (an HCI command), meaning more data can arrive. This means that the loop in hal_uart.c that keeps reading HCI data from the uart and executing NimBLE events as they are created will not terminate, preventing other VM code from running. - There's no flow control (i.e. data will arrive too quickly). The channel shouldn't be given credits until after we return from scheduler context. It's preferable that no work is done in scheduler/IRQ context. But to prevent this being a problem this commit changes l2cap_recvinto so that if it is called in IRQ context, and the Python handler empties the rx buffer, then don't grant credits until the Python handler is complete. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-01-30stm32/rfcore: Fix flow control for IPCC RX IRQ.Jim Mussared
Don't clear the IPCC channel flag until we've actually handled the incoming data, or else the wireless firmware may clobber the IPCC buffer if more data arrives. This requires masking the IRQ until the data is handled. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-01-30github/workflows: Add CI workflow for rp2 port.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2021-01-30rp2: Add new port to Raspberry Pi RP2 microcontroller.Damien George
This commit adds a new port "rp2" which targets the new Raspberry Pi RP2040 microcontroller. The build system uses pure cmake (with a small Makefile wrapper for convenience). The USB driver is TinyUSB, and there is a machine module with most of the standard classes implemented. Some examples are provided in the examples/rp2/ directory. Work done in collaboration with Graham Sanderson. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29lib/pico-sdk: Add new pico-sdk submodule, for the rp2 port.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2021-01-29extmod/modonewire: Use pin_od_high/pin_od_low instead of pin_write.Damien George
The pin is configured in open-drain mode so these od_high/od_low methods should be used. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29py/emitnative: Support binary ops on ARMv6M without use of ite instr.graham sanderson
2021-01-29extmod/modframebuf: Change int to unsigned int in format methods args.Damien George
These args are already bounds checked and clipped, and using unsigned ints can be more efficient. It also eliminates possible issues and compiler warnings with shifting of signed integers. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29lib/timeutils: Provide simple impl of extra funcs when Epoch is 1970.Damien George
Dates/times must be post 2000/1/1 to work correctly with these simple implementations. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29py/emitinlinethumb: Exclude code using #if when ARMV7M disabled.Damien George
So there are no references to undeclared asm_thumb_mov_reg_i16(). Signed-off-by: Damien George <damien@micropython.org>
2021-01-29tests: Move native for test from pybnative to micropython.Damien George
And make it generic so it can be run on any target. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29py/emitnative: Ensure encoding to load prelude_offset doesn't change sz.Damien George
Based on change made by Graham Sanderson. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29py/asmthumb: Add support for ARMv6M in native emitter.graham sanderson
Adds a new compile-time option MICROPY_EMIT_THUMB_ARMV7M which is enabled by default (to get existing behaviour) and which should be disabled (set to 0) when building native emitter support (@micropython.native) on ARMv6M targets.
2021-01-29tools/mpy-tool.py: List frozen modules in MICROPY_FROZEN_LIST_ITEM.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2021-01-29py/objfun: Support fun.__globals__ attribute.Damien George
This returns a reference to the globals dict associated with the function, ie the global scope that the function was defined in. This attribute is read-only but the dict itself is modifiable, per CPython behaviour. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29tools/ci.sh: For ci_code_size_setup, update apt to install gcc-multilib.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2021-01-29stm32/main: Introduce MICROPY_HW_FLASH_MOUNT_AT_BOOT config option.Damien George
It's enabled by default to retain the existing behaviour. A board can disable this option if it manages mounting the filesystem itself, for example in frozen code. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29stm32/mboot/fwupdate.py: Refactor update_mpy with support for STATUS.Damien George
Changes are: - refactor to use new _create_element function - support extended version of MOUNT element with block size - support STATUS element Signed-off-by: Damien George <damien@micropython.org>
2021-01-29stm32/mboot: Introduce MBOOT_ERRNO_xxx constants and use them.Damien George
So that a failed update via fsload can be more easily diagnosed. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29stm32/mboot: Add ELEM_TYPE_STATUS element so application can get status.Damien George
This new element takes the form: (ELEM_TYPE_STATUS, 4, <address>). If this element is present in the mboot command then mboot will store to the given address the result of the filesystem firmware update process. The address can for example be an RTC backup register. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29stm32/mboot: Don't auto-detect littlefs block size.Damien George
Instead it is now passed in as an optional parameter to the ELEM_MOUNT element, with a compile-time configurable default. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29stm32/main: Check block 0 and 1 when auto-detecting littlefs.Damien George
The superblock for littlefs is in block 0 and 1, but block 0 may be erased or partially written, so block 1 must be checked if block 0 does not have a valid littlefs superblock in it. Prior to this commit, if block 0 did not contain a valid littlefs superblock (but block 1 did) then the auto-detection would fail, mounting a FAT filesystem would also fail, and the system would reformat the flash, even though it may have contained a valid littlefs filesystem. This is now fixed. Signed-off-by: Damien George <damien@micropython.org>
2021-01-29extmod/vfs: Check block 0 and 1 when auto-detecting littlefs.Damien George
The superblock for littlefs is in block 0 and 1, but block 0 may be erased or partially written, so block 1 must be checked if block 0 does not have a valid littlefs superblock in it. Prior to this commit, the mount of a block device which auto-detected the filysystem type would fail for littlefs if block 0 did not contain a valid superblock. That is now fixed. Signed-off-by: Damien George <damien@micropython.org>
2021-01-27docs/develop: Add MicroPython Internals chapter.nanjekyejoannah
This commit adds many new sections to the existing "Developing and building MicroPython" chapter to make it all about the internals of MicroPython. This work was done as part of Google's Season of Docs 2020.
2021-01-24tools/ci.sh: For code size build, fetch history of master branch only.Damien George
It's not necessary to fetch all branches. Signed-off-by: Damien George <damien@micropython.org>
2021-01-24github/workflows: Fix code-size CI workflow.Damien George
Changes are: - Use ubuntu-20.04 so that gcc-multilib installs without error. - Use "fetch-depth: 100" to get history prior to pull request. Signed-off-by: Damien George <damien@micropython.org>
2021-01-23cc3200: Fix debug build.Vincent Duvert
* Fix a typo in the Makefile that prevented the debug build to be actually enabled when BTYPE=debug is used. * Add a missing header in modmachine.c that is used when a debug build is created.
2021-01-23cc3200/ftp: Add quotes to PWD response and allow FEAT prior to login.Vincent Duvert
This commit improves some FTP implementation details for better compatibility with FTP clients: * The PWD command now puts quotes around the directory name before returning it. This fixes BBEdit’s FTP client, which performs a PWD after each CWD and gets confused if the returned directory path is not surrounded by quotes. * The FEAT command is now allowed before logging in. This fixes the lftp client, which send FEAT first and gets confused (tries to use TLS) if the server responds with 332.
2021-01-23unix/modtime: Fix time() precision on unix ports with non-double floats.Oliver Joos
With MICROPY_FLOAT_IMPL_FLOAT the results of utime.time(), gmtime() and localtime() change only every 129 seconds. As one consequence tests/extmod/vfs_lfs_mtime.py will fail on a unix port with LFS support. With this patch these functions only return floats if MICROPY_FLOAT_IMPL_DOUBLE is used. Otherwise they return integers.
2021-01-23tests/extmod: Add test for the precision of utime functions.Oliver Joos
According to documentation time() has a precision of at least 1 second. This test runs for 2.5 seconds and calls all utime functions every 100ms. Then it checks if they returned enough different results. All functions with sub-second precision will return ~25 results. This test passes with 15 results or more. Functions that do not exist are skipped silently.
2021-01-23esp32/modnetwork: Synchronize WiFi AUTH_xxx constants with IDF values.IhorNehrutsa
2021-01-23zephyr: Add basic UART functionality to machine module.Yonatan Schachter
Currently supports only polling read and write. Signed-off-by: Yonatan Schachter <yonatan.schachter@gmail.com>
2021-01-22extmod/modbluetooth: Add ble.hci_cmd(ogf, ocf, req, resp) function.Jim Mussared
This allows sending arbitrary HCI commands and getting the response. The return value of the function is the status of the command. This is intended for debugging and not to be a part of the public API, and must be enabled via mpconfigboard.h. It's currently only implemented for NimBLE bindings. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2021-01-18stm32/Makefile: Use MBOOT_PACK_KEYS_FILE as depedency of .pack.dfu.Damien George
To match the definition of GENERATE_PACK_DFU, so a board can customise the location/name of this file if needed. Signed-off-by: Damien George <damien@micropython.org>
2021-01-18tools/ci.sh: Pip install pyhy for stm32 builds.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2021-01-18stm32/boards/NUCLEO_WB55: Enable MBOOT with packing mode.Damien George
To have at least one board configured with MBOOT_ENABLE_PACKING, for CI testing purposes and demonstration of the feature. Signed-off-by: Damien George <damien@micropython.org>
2021-01-18stm32/mboot: Add support for signed and encrypted firmware updates.Damien George
This commit adds support to stm32's mboot for signe, encrypted and compressed DFU updates. It is based on inital work done by Andrew Leech. The feature is enabled by setting MBOOT_ENABLE_PACKING to 1 in the board's mpconfigboard.mk file, and by providing a header file in the board folder (usually called mboot_keys.h) with a set of signing and encryption keys (which can be generated by mboot_pack_dfu.py). The signing and encryption is provided by libhydrogen. Compression is provided by uzlib. Enabling packing costs about 3k of flash. The included mboot_pack_dfu.py script converts a .dfu file to a .pack.dfu file which can be subsequently deployed to a board with mboot in packing mode. This .pack.dfu file is created as follows: - the firmware from the original .dfu is split into chunks (so the decryption can fit in RAM) - each chunk is compressed, encrypted, a header added, then signed - a special final chunk is added with a signature of the entire firmware - all chunks are concatenated to make the final .pack.dfu file The .pack.dfu file can be deployed over USB or from the internal filesystem on the device (if MBOOT_FSLOAD is enabled). See #5267 and #5309 for additional discussion. Signed-off-by: Damien George <damien@micropython.org>
2021-01-18stm32/mboot/gzstream: Fix lost data decompressing final part of file.Damien George
Prior to this fix, the final piece of data in a compressed file may have been lost when decompressing. Signed-off-by: Damien George <damien@micropython.org>
2021-01-18lib/libhydrogen: Add new libhydrogen submodule.Damien George
This library is a small and easy-to-use cryptographic library which is well suited to embedded systems. Signed-off-by: Damien George <damien@micropython.org>
2020-12-23extmod/nimble: Don't assert on save-IRK failure.Jim Mussared