summaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAge
* stmhal: Move PY_SYS_PLATFORM config from board to general config file.Damien George2016-12-13
| | | | It can be overridden by a board if needed.
* stmhal: Add STM32F769DISC board files.Rami Ali2016-12-13
| | | | With minor changes to adc.c and storage.c to support the F769.
* stmhal/cmsis: Add CMSIS file stm32f769xx.h, V1.1.2.Rami Ali2016-12-13
|
* stmhal: Add NUCLEO_F767ZI board, with openocd config for stm32f7.Rami Ali2016-12-13
|
* stmhal/cmsis: Add CMSIS file stm32f767xx.h, V1.1.2.Rami Ali2016-12-13
|
* py/builtinimport: Support importing packages from compiled .mpy files.Damien George2016-12-13
| | | | | This patch ensures that __init__.mpy files are imported if their containing directory is imported as a package.
* tests/extmod: Improve moductypes test coverage.Rami Ali2016-12-12
|
* py/binary: Do zero extension when storing a value larger than word size.Damien George2016-12-12
|
* tests: Update for required byteorder arg for int.from_bytes()/to_bytes().Paul Sokolovsky2016-12-09
|
* py/objint: from_bytes, to_bytes: Require byteorder arg, require "little".Paul Sokolovsky2016-12-09
| | | | | CPython requires byteorder arg, make uPy compatible. As we support only "little", error out on anything else.
* py/asm: Fix x86 and ARM assemblers due to recent code refactoring.Damien George2016-12-09
|
* py/asm: Remove need for dummy_data when doing initial assembler passes.Damien George2016-12-09
| | | | | | | | For all but the last pass the assembler only needs to count how much space is needed for the machine code, it doesn't actually need to emit anything. The dummy_data just uses unnecessary RAM and without it the code is not any more complex (and code size does not increase for Thumb and Xtensa archs).
* py/emitinline: Move common code for end of final pass to compiler.Damien George2016-12-09
| | | | | | This patch moves some common code from the individual inline assemblers to the compiler, the code that calls the emit-glue to assign the machine code to the functions scope.
* py/emitinline: Move inline-asm align and data methods to compiler.Damien George2016-12-09
| | | | | These are generic methods that don't depend on the architecture and so can be handled directly by the compiler.
* py/emitinline: Embed entire asm struct instead of a pointer to it.Damien George2016-12-09
| | | | | | This reduces fragmentation, and memory use by 1 word. But more importantly it means the emit_inline_asm_t struct now "derives" from mp_asm_base.
* esp8266: Enable inline Xtensa assembler.Damien George2016-12-09
| | | | With this patch, @micropython.asm_xtensa can be used on the esp8266 port.
* py: Add inline Xtensa assembler.Damien George2016-12-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds the MICROPY_EMIT_INLINE_XTENSA option, which, when enabled, allows the @micropython.asm_xtensa decorator to be used. The following opcodes are currently supported (ax is a register, a0-a15): ret_n() callx0(ax) j(label) jx(ax) beqz(ax, label) bnez(ax, label) mov(ax, ay) movi(ax, imm) # imm can be full 32-bit, uses l32r if needed and_(ax, ay, az) or_(ax, ay, az) xor(ax, ay, az) add(ax, ay, az) sub(ax, ay, az) mull(ax, ay, az) l8ui(ax, ay, imm) l16ui(ax, ay, imm) l32i(ax, ay, imm) s8i(ax, ay, imm) s16i(ax, ay, imm) s32i(ax, ay, imm) l16si(ax, ay, imm) addi(ax, ay, imm) ball(ax, ay, label) bany(ax, ay, label) bbc(ax, ay, label) bbs(ax, ay, label) beq(ax, ay, label) bge(ax, ay, label) bgeu(ax, ay, label) blt(ax, ay, label) bnall(ax, ay, label) bne(ax, ay, label) bnone(ax, ay, label) Upon entry to the assembly function the registers a0, a12, a13, a14 are pushed to the stack and the stack pointer (a1) decreased by 16. Upon exit, these registers and the stack pointer are restored, and ret.n is executed to return to the caller (caller address is in a0). Note that the ABI for the Xtensa emitters is non-windowing.
* py: Allow inline-assembler emitter to be generic.Damien George2016-12-09
| | | | | This patch refactors some code so that it is easier to integrate new inline assemblers for different architectures other than ARM Thumb.
* esp8266: Enable native emitter for Xtensa arch.Damien George2016-12-09
| | | | | | | This patch allows esp8266 to use @micropython.native and @micropython.viper function decorators. By default the executable machine code is written to the space at the end of the iram1 region. The user can call esp.set_native_code_location() to make the code go to flash instead.
* py: Integrate Xtensa assembler into native emitter.Damien George2016-12-09
| | | | | | The config option MICROPY_EMIT_XTENSA can now be enabled to target the Xtensa architecture with @micropython.native and @micropython.viper decorators.
* py/asmxtensa: Add low-level Xtensa assembler.Damien George2016-12-09
|
* py/asmbase: Add MP_PLAT_COMMIT_EXEC option for handling exec code.Damien George2016-12-09
| | | | | | | If a port defines MP_PLAT_COMMIT_EXEC then this function is used to turn RAM data into executable code. For example a port may want to write the data to flash for execution. The function must return a pointer to the executable data.
* py: Move arch-specific assembler macros from emitnative to asmXXX.h.Damien George2016-12-09
|
* py/emit.h: Remove long-obsolete declarations for cpython emitter.Damien George2016-12-09
|
* extmod/modframebuf: Store underlying buffer object to prevent GC free.Damien George2016-12-09
|
* esp8266/mpconfigport_512k: Disable framebuf module for 512k build.Damien George2016-12-08
| | | | | | The 512k build recently overflowed because of the newly-enabled uselect module. uselect is arguable more important than framebuf for small devices so we disable framebuf to keep the 512k build within its limit.
* extmod/modframebuf: Make framebuf implement the buffer protocol.Damien George2016-12-08
| | | | | So that one can easily access the underlying data of the frame buffer, eg to write the data out to a display.
* esp8266: Refactor to use extmod implementation of software SPI class.Damien George2016-12-08
|
* stmhal: Refactor to use extmod implementation of software SPI class.Damien George2016-12-08
| | | | | | This is a pure refactoring (and simplification) of code so that stmhal uses the software SPI class provided in extmod, for the machine.SPI implementation.
* extmod/machine_spi: Provide reusable software SPI class.Damien George2016-12-08
| | | | | | So long as a port defines relevant mp_hal_pin_xxx functions (and delay) it can make use of this software SPI class without the need for additional code.
* stmhal/hal: Update HALCOMMITS due to change in f7 hal files.Damien George2016-12-07
|
* stmhal/boards/STM32F7DISC: Define LSE_STARTUP_TIMEOUT.Rami Ali2016-12-07
| | | | So it compiles with the latest F7 hal.
* stmhal: Declare and initialise PrescTables for F7 MCUs.Rami Ali2016-12-07
|
* stmhal: Port of f4 hal commit 1d7fb82 to updated f7 hal.Rami Ali2016-12-07
|
* stmhal: Port of f4 hal commit 09de030 to updated f7 hal.Rami Ali2016-12-07
|
* stmhal: Port of f4 hal commit c568a2b to updated f7 hal.Rami Ali2016-12-07
|
* stmhal/hal: Update ST32CubeF7 HAL files to V1.1.2.Rami Ali2016-12-07
| | | | | These files originate from the STM32Cube_FW_F7_V1.5.0 software package from ST. Newlines are unixified and trailing whitespace is removed.
* stmhal/cmsis: Update STM32F7 CMSIS device include files to V1.1.2.Rami Ali2016-12-07
|
* py/compile: Simplify configuration of native emitter.Damien George2016-12-07
|
* stmhal/uart: Add check that UART id is valid for the given board.Damien George2016-12-05
| | | | | | | | | | Previous to this patch trying to construct, but not init, a UART that didn't exist on the target board would actually succeed. Only when initialising the UART would it then raise an exception that the UART does not exist. This patch adds an explicit check that the constructed UART does in fact exist for the given board.
* stmhal/uart: Add support for UART7 and UART8 on F7 MCUs.Damien George2016-12-05
|
* stmhal: Refactor UART configuration to use pin objects.Rami Ali2016-12-05
| | | | | | This follows the pattern of other peripherals (I2C, SPI) to specify the pins using pin objects instead of a pair of GPIO port and pin number. It makes it easier to customise the UART pins for a particular board.
* esp8266: Move websocket_helper.py from scripts to modules for frozen BC.puuu2016-12-05
| | | | | | websocket_helper.py is used by webrepl. If webrepl is enabled and websocket_helper.py is not frozen bytecode it leads to heap fragmentation.
* tests/extmod/framebuf1: Add basics tests for hline, vline, rect, line.Damien George2016-12-05
|
* extmod/modframebuf: Add hline, vline, rect and line methods.Damien George2016-12-05
| | | | | | These are basic drawing primitives. They work in a generic way on all framebuf formats by calling the underlying setpixel or fill_rect C-level primitives.
* travis: Build STM32 F7 and L4 boards under Travis CI.Damien George2016-12-05
| | | | | | | The STM32 F7 and L4 boards use significantly different code to the F4 boards so it's important to test them with CI. To keep CI build times within a reasonable limit the STM32F4DISC board is no longer built, it's anyway very similar to the standard F4 build for PYBv1.0.
* stmhal/adc: Use constants from new HAL version.Damien George2016-12-05
|
* tests/extmod/btree1: Exercise btree.flush().Paul Sokolovsky2016-12-05
|
* extmod/modbtree: Rename "sync" method to "flush" for consistency.Paul Sokolovsky2016-12-05
| | | | | Rename recently introduced "sync" method to "flush" for consistency with usual files.
* zephyr: Switch to Zephyr 1.6 unified kernel API.Paul Sokolovsky2016-12-04
| | | | | In 1.6, Zephyr switched to "unified kernel" and new API set. Older kernel API is supported, but marked as deprecated and leads to warnings.