67b6d9d499
The integration with Zephyr is fairly clean but as MicroPython Hardware API requires pin ID to be a single value, but Zephyr operates GPIO in terms of ports and pins, not just pins, a "hierarchical" ID is required, using tuple of (port, pin). Port is a string, effectively a device name of a GPIO port, per Zephyr conventions these are "GPIO_0", "GPIO_1", etc.; pin is integer number of pin with the port (supposed to be in range 0-31). Example of pin initialization: pin = Pin(("GPIO_1", 21), Pin.OUT) (an LED on FRDM-K64F's Port B, Pin 21). There is support for in/out pins and pull up/pull down but currently there is no interrupt support. Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@linaro.org> Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org> |
||
---|---|---|
.. | ||
src | ||
Kbuild | ||
Makefile | ||
Makefile.zephyr | ||
README.md | ||
help.c | ||
machine_pin.c | ||
main.c | ||
modmachine.c | ||
modmachine.h | ||
modutime.c | ||
mpconfigport.h | ||
mphalport.h | ||
prj.conf | ||
prj.mdef | ||
uart_core.c | ||
z_config.mk |
README.md
MicroPython port to Zephyr RTOS
This is an initial port of MicroPython to Zephyr RTOS (http://zephyrproject.org).
The port integrates well with Zephyr build system, using the latest features which will be available in 1.6.0, and thus requires Zephyr master to build against. All boards supported by Zephyr should be supported (but not all were tested).
At this time, only basic interactive prompt (REPL) over UART connection is supported. Over time, bindings for various Zephyr subsystems may be added.
Building
Follow to Zephyr web site for Getting Started instruction of installing Zephyr SDK, getting Zephyr source code, and setting up development environment. (Direct link: https://www.zephyrproject.org/doc/getting_started/getting_started.html). You may want to build Zephyr's own sample applications to make sure your setup is correct.
To build MicroPython port, in the port subdirectory (zephyr/), run:
make BOARD=<board>
If you don't specify BOARD, the default is qemu_x86
(x86 target running
in QEMU emulator). Consult Zephyr documentation above for the list of
supported boards.
Running
To run the resulting application in QEMU (for BOARDs like qemu_x86, qemu_cortex_m3):
make qemu
For deploying/flashing the application on a real board, follow Zephyr documentation for a given board.