summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-01-16docs/reference/isr_rules: Describe issue with hard ISRs and globals.peterhinch
Signed-off-by: Damien George <damien@micropython.org>
2025-01-16stm32/boards: Reserve SPI bus when it's used for external flash storage.iabdalkader
Reserve SPI flash bus used for storage or XIP. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-01-16stm32/spi: Retain the state of special SPI buses on soft reboot.iabdalkader
Reserved and static SPI buses must remain initialized during a soft reboot as they may be used for SPI flash storage or XIP. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-01-16stm32/mpconfigboard_common: Add MICROPY_HW_SPI_IS_STATIC macro.iabdalkader
A board should make this return true if the specified SPI instances should not be deinitialized on soft-reboot. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-01-16qemu/boards/SABRELITE.mk: Remove exception for omitted tests.Alessandro Gatti
This commit re-introduces `tests/extmod/vfs_rom.py` and `tests/float/math_domain.py` to the test suite, as the issues that made them fail have now been addressed. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-16py/asmarm: Fix halfword loads with larger offsets.Alessandro Gatti
This commit fixes code generation for loading halfwords using an offset greater than 255. The old code blindly encoded the offset into a `LDRH Rd, [Rn, #imm]` opcode, but only the lowest 8 bits would be put into the opcode itself. This commit instead generates a two-opcodes sequence, a constant load into R8, and then `LDRH Rd, [Rn, R8]`. This fixes `tests/extmod/vfs_rom.py` for the qemu/SABRELITE board. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-16py/asmarm: Fix locals address loading code generation with large imm.Alessandro Gatti
This commit fixes code generation for loading a local's address if its index is greater than 63. The old code blindly encoded the offset into an `ADD Rd, Rn, #imm` opcode, but only the lowest 8 bits would be put into the opcode itself. This commit instead generates a two-opcodes sequence, a constant load into R8, and then an `ADD Rd, Rn, R8` opcode. This fixes `tests/float/math_domain.py` for the qemu/SABRELITE board. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-16qemu/Makefile: Increase GC heap size to 140KiB.Alessandro Gatti
This commit increases the GC heap size from 120KiB to 140KiB, as it is needed to make the full test suite pass on SABRELITE when ran through the armv6 native emitter. This is needed as the code output by the armv6 native emitter is limited to 4-bytes opcodes and thus takes more space than other ARM emitters. To keep things aligned, the RV32 port also got its heap size increased even though it is not needed on that platform right now. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-16qemu: Disable native emitter for the MICROBIT board.Alessandro Gatti
The Micro:Bit machine definition in Qemu has soft MMU support enabled, which is currently not compatible with the way MicroPython generates code that needs to call back into non-emitted code. As a stop-gap solution, the native code emitter for the MICROBIT board is turned off. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-16qemu/mcu/arm: Dump exception cause and registers on machine error.Alessandro Gatti
When a CPU exception is raised when emulating a Thumb-capable processor, the default exception handler would simply enter in an endless loop without providing any further information. This commit adds a more complete exception handler that dumps to STDOUT the exception cause and the status of the registers at the moment of the exception. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-16tools/pyboard.py: Wait a bit before accessing the PTY serial port.Alessandro Gatti
Some PTY targets, namely `NETDUINO2` and `MICROBIT` under Qemu, take a bit more time to present a REPL than usual. The pyboard tool is a bit too impatient and would bail out before any of those targets had a chance to respond to the raw REPL request. Co-authored-by: Damien George <damien@micropython.org> Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-15tools/autobuild: Don't allow a board to change its ID.Damien George
All board IDs are now the board directory name. Signed-off-by: Damien George <damien@micropython.org>
2025-01-15esp32/boards: Remove remaining "id" entries from board.json.Damien George
This entry was originally used to override the firmware filenames generated by the build server, but these days all filenames should match the board directory name. So, remove the "id" entry and let the default be used. This is a follow-up to 1a99f74063569df0927e1ada0256059fcdef128c (these three boards were added after that change). Signed-off-by: Damien George <damien@micropython.org>
2025-01-15rp2/boards/SPARKFUN_THINGPLUS_RP2350: Add SparkFun Thing Plus RP2350.Dryw Wade
Signed-off-by: Dryw Wade <dryw.wade@sparkfun.com>
2025-01-15tests/extmod/re_sub.py: Fix test execution on Python 3.13.Alessandro Gatti
This commit fixes a test failure for `extmod/re_sub.py` where the code, whilst being correct, would not make the test pass due to a newer Python version than expected. On Python 3.13, running `tests/extmod/re_sub.py` would yield a deprecation warning about `re.sub` not providing the match count as a keyword parameter. This warning would be embedded in the expected test result and thus the test would always fail. Co-authored-by: stijn <stijn@ignitron.net> Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-14tests/multi_net: Update TLS test certificates and keys.Damien George
They expired in early January 2025. Signed-off-by: Damien George <damien@micropython.org>
2025-01-14tests/README: Update TLS certificate generation instructions.Damien George
Fix the command that converts `ec_key.pem` to `ec_key.der`, and increase the certificate validity to 10 years. Signed-off-by: Damien George <damien@micropython.org>
2025-01-14github/workflows: Use ubuntu-22.04 for unix qemu CI.Damien George
To use an older version of libffi. Signed-off-by: Damien George <damien@micropython.org>
2025-01-14github/workflows: Use Python 3.11 for unix settrace jobs.Damien George
GitHub Actions has updated ubuntu-latest to 24.04, which now defaults CPython to 3.12, which has a known regression with settrace. Fix that by explicitly using CPython 3.11. Signed-off-by: Damien George <damien@micropython.org>
2025-01-11rp2/boards/SPARKFUN_PROMICRO_RP2350: Add SparkFun Pro Micro RP2350.Dryw Wade
Signed-off-by: Dryw Wade <dryw.wade@sparkfun.com>
2025-01-11rp2/machine_bitstream: Tweak MP_HAL_BITSTREAM_NS_OVERHEAD for RP2350.Dryw Wade
See https://github.com/micropython/micropython/issues/16190#issuecomment-2466155919 Signed-off-by: Dryw Wade <dryw.wade@sparkfun.com>
2025-01-11rp2/mphalport: Fix mp_hal_pin_low/high() for pin>=32.Dryw Wade
Fixes issue #16190. Signed-off-by: Dryw Wade <dryw.wade@sparkfun.com>
2025-01-06tools/ci.sh: Run test_full for qemu port CI.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-01-06qemu/Makefile: Add test_full target to run a comprehensive test suite.Damien George
The tests now include `--via-mpy` and `--via-mpy --emit native`, which will test more cases of the native emitter under both ARM and RISC-V. Signed-off-by: Damien George <damien@micropython.org>
2025-01-06qemu/boards: Exclude Thumb2 tests and tests failing with native emitter.Damien George
The `asmbcc`, `asmbitops`, `asmconst` and `asmit` tests fail to compile with mpy-cross on armv6 architecture (used by SABRELITE), so explicitly exclude them. The `math_domain` and `vfs_rom` tests fail when compiled to native machine code, so also exclude those unconditionally. Signed-off-by: Damien George <damien@micropython.org>
2025-01-06tests/extmod/vfs_rom.py: Import errno for test.Damien George
It's needed by the test. This previously passed because the compiler (actually parser) optimises away errno constants. Signed-off-by: Damien George <damien@micropython.org>
2025-01-06tests/run-tests.py: Implement getcwd on __FS hook filesystem.Damien George
This method is needed by tests like `extmod/vfs_rom.py`. Signed-off-by: Damien George <damien@micropython.org>
2025-01-06py/asmarm: Allow function state to be larger than 255.Damien George
Co-authored-by: Alessandro Gatti <a.gatti@frob.it> Signed-off-by: Damien George <damien@micropython.org>
2025-01-06py/asmarm: Fix asm_arm_ldrh_reg_reg_offset to emit correct machine code.Damien George
Prior to this fix, the assembler generated `LDRH Rd, [Rn, #imm]!`, so the second `LDRH` from the same origin would load from the wrong base. Co-authored-by: Alessandro Gatti <a.gatti@frob.it> Signed-off-by: Damien George <damien@micropython.org>
2025-01-06tests/run-tests.py: Set __main__ module to __injected_test.Damien George
When using unittest (for example) with injected mpy files, not only does the name of the main test module need to be `__main__`, but also the `__main__` module should correspond to this injected module. Otherwise the unittest test won't be detected. Signed-off-by: Damien George <damien@micropython.org>
2025-01-02py/obj: Make literals unsigned in float get/new functions.Yoctopuce
Fixes gcc warning when -Wsign-conversion is on. Signed-off-by: Yoctopuce <dev@yoctopuce.com>
2025-01-02py/obj: Cast float literals to 64-bit to prevent overflow warning.Yoctopuce
Fixes compilation warning C4307: '+': integral constant overflow. Signed-off-by: Yoctopuce <dev@yoctopuce.com>
2025-01-02extmod/moddeflate: Add missing size_t cast.Yoctopuce
To prevent compiler warnings. Signed-off-by: Yoctopuce <dev@yoctopuce.com>
2025-01-02extmod/modsocket: Add missing static in private function definitions.Yoctopuce
Signed-off-by: Yoctopuce <dev@yoctopuce.com>
2025-01-02shared/timeutils: Add missing mp_uint_t casts.Yoctopuce
To prevent compiler warnings. Signed-off-by: Yoctopuce <dev@yoctopuce.com>
2025-01-02stm32/mboot: Add mboot version string.Victor Rajewski
Adds a configurable version string to a known location at the end of mboot flash section. Also stores the options mboot was built with, eg usb and which filesystems are supported. A board can override the defaults, or disable the version string entirely by setting MBOOT_VERSION_ALLOCATED_BYTES=0. Signed-off-by: Victor Rajewski <victor@allumeenergy.com.au>
2025-01-02tests/run-tests.py: Detect inlineasm support and add tests if needed.Alessandro Gatti
This commit implements a method to detect at runtime if inline assembler support is enabled, and if so which platform it targets. This allows clean test runs even on modified version of ARM-based ports where inline assembler support is disabled, running inline assembler tests on ports that have such feature not enabled by default and manually enabled, and allows to always run the correct inlineasm tests for ports that support more than one architecture (esp32, qemu, rp2). Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-02rp2/mpconfigport: Enable RV32 inline assembly support.Alessandro Gatti
This commit enables by default inline assembly support for the RP2 target when it is operating in RISC-V mode. This brings the feature set when in RISC-V mode to parity with what's available in ARM mode. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-02qemu/main: Make GC heap size configurable on a per-arch basis.Alessandro Gatti
In certain circumstances depending on the code size, the `deflate_decompress` test fails on both ARM and RV32 with a memory allocation failure error. The issue is mitigated by having a larger GC heap, in this case around 20 KBytes more than the original 100 KBytes default. This commit makes the GC heap size configurable on a per-arch basis, with both ARM and RV32 using the enlarged 120 KBytes heap. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-02py/emitinlinerv32: Add inline assembler support for RV32.Alessandro Gatti
This commit adds support for writing inline assembler functions when targeting a RV32IMC processor. Given that this takes up a bit of rodata space due to its large instruction decoding table and its extensive error messages, it is enabled by default only on offline targets such as mpy-cross and the qemu port. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-01py/misc: Add a popcount(uint32_t) implementation.Alessandro Gatti
This makes the existing popcount(uint32_t) implementation found in the RV32 emitter available to the rest of the codebase. This version of popcount will use intrinsic or builtin implementations if they are available, falling back to a generic implementation if that is not the case. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2025-01-01tests/inlineasm: Make room for RV32IMC inline asm tests.Alessandro Gatti
Thumb/Thumb2 tests are now into their own subdirectory, as RV32IMC-specific tests will be added as part of the RV32 inline assembler support. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2024-12-23tests/extmod: Add VfsRom test.Damien George
Provides full coverage of the VfsRom driver. Signed-off-by: Damien George <damien@micropython.org>
2024-12-23qemu/mpconfigport: Enable VfsRom.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2024-12-23unix: Enable VfsRom on standard and coverage variants.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2024-12-23py/persistentcode: Add support for loading .mpy files from a ROM reader.Damien George
This adds an optimisation for loading .mpy files from a reader that points to ROM. In such a case qstr, str and bytes data, along with bytecode, are all referenced in-place in ROM. Signed-off-by: Damien George <damien@micropython.org>
2024-12-23extmod/vfs_reader: Add support for opening a memory-mappable file.Damien George
If the file can be memory mapped (because it responds to the buffer protocol) then return a memory-reader that directly references the ROM data of the file. Signed-off-by: Damien George <damien@micropython.org>
2024-12-23py/reader: Provide mp_reader_try_read_rom() function.Damien George
This allows accessing data directly in ROM if the reader supports it. Signed-off-by: Damien George <damien@micropython.org>
2024-12-23py/qstr: Add qstr_from_strn_static() helper function.Damien George
Allows an interned string to reference static/ROM data, instead of allocating it on the GC heap. Signed-off-by: Damien George <damien@micropython.org>
2024-12-23extmod/vfs_rom: Add VfsRom filesystem object.Damien George
This commit defines a new ROMFS filesystem for storing read-only files that can be memory mapped, and a new VfsRom driver. Files opened from this filesystem support the buffer protocol. This allows naturally getting the memory-mapped address of the file using: - memoryview(file) - uctypes.addressof(file) Furthermore, if these files are .mpy files then their content can be referenced in-place when importing. Such imports take up a lot less RAM than importing from a normal filesystem. This is essentially dynamically frozen .mpy files, building on the revamped v6 .mpy file format. Signed-off-by: Damien George <damien@micropython.org>