mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
edc43201db
This should not change any generated binary
88 lines
2.4 KiB
Plaintext
88 lines
2.4 KiB
Plaintext
/**
|
|
* @defgroup pkg_micropython MicroPython RIOT port
|
|
* @ingroup pkg
|
|
* @brief MicroPython - Python for microcontrollers
|
|
*
|
|
* # MicroPython RIOT package
|
|
*
|
|
* "MicroPython is a lean and efficient implementation of the Python 3
|
|
* programming language that includes a small subset of the Python standard
|
|
* library and is optimised to run on microcontrollers and in constrained
|
|
* environments."
|
|
*
|
|
* @see https://micropython.org
|
|
*
|
|
* ## Status
|
|
*
|
|
* MicroPython on RIOT has to be considered experimental. While the basic
|
|
* interpreter works fairly well on native and Cortex-M, it has not seen much
|
|
* testing.
|
|
*
|
|
* ## Configuration options
|
|
*
|
|
* Use the following environment variables in the application Makefile
|
|
* or from the command line to configure MicroPython:
|
|
*
|
|
* MP_RIOT_HEAPSIZE: heap size for MicroPython, in bytes. Defaults to 16KiB.
|
|
*
|
|
* Example on the command line:
|
|
* ```
|
|
* MP_RIOT_HEAPSIZE=2048 make -C examples/micropython
|
|
* ```
|
|
*
|
|
* ## Implementation details
|
|
*
|
|
* The RIOT port of MicroPython currently resides in a fork at
|
|
* https://github.com/kaspar030/micropython (in branch add_riot_port). It is
|
|
* based on Micropython's "ports/minimal" with some extra modules enabled.
|
|
* It reuses the gc_collect code from ports/unix, which has special support
|
|
* for i386 and Cortex-M. On other platforms, it uses setjmp() to collect
|
|
* registers.
|
|
*
|
|
* ## MicroPython's test suite
|
|
*
|
|
* It is possible to run MicroPython's test suite for testing this port.
|
|
*
|
|
* Steps:
|
|
*
|
|
* 1. make -Cexamples/micropython flash
|
|
* 2. cd examples/micropython/bin/pkg/${BOARD}/micropython
|
|
* 3. git apply ports/riot/slow_uart_writes.patch
|
|
* 4. cd tests
|
|
* 5. ./run-tests --target pyboard --device ${PORT}
|
|
*
|
|
* ## MicroPython modules
|
|
*
|
|
* Currently, the port enables only a subset of the available MycroPython
|
|
* modules. See "ports/riot/mpconfigport.h" for details.
|
|
*
|
|
* For now, the utime module has RIOT specific code and should work as expected.
|
|
*
|
|
* ## RIOT specific modules
|
|
*
|
|
* Currently, these are implemented:
|
|
*
|
|
* ### thread_getpid()
|
|
*
|
|
* >>> import riot
|
|
* >>> print(riot.thread_getpid())
|
|
|
|
* ### xtimer
|
|
*
|
|
* >>> import xtimer
|
|
* >>>
|
|
* >>> a = 0
|
|
* >>> def inc_a():
|
|
* >>> global a
|
|
* >>> a += 1
|
|
* >>>
|
|
* >>> t = xtimer.xtimer(inc_a)
|
|
* >>> t.set(100000)
|
|
* >>> print(a)
|
|
*
|
|
* ## How to use
|
|
*
|
|
* See examples/micropython for example code.
|
|
*
|
|
*/
|