diff --git a/README.md b/README.md index 60123ca6bd..c9658f8aa3 100644 --- a/README.md +++ b/README.md @@ -1,152 +1,64 @@ -[![Build Status][travis-img]][travis-repo] [![Coverage Status][coveralls-img]][coveralls-repo] -[travis-img]: https://travis-ci.org/micropython/micropython.png?branch=master -[travis-repo]: https://travis-ci.org/micropython/micropython -[coveralls-img]: https://coveralls.io/repos/micropython/micropython/badge.png?branch=master -[coveralls-repo]: https://coveralls.io/r/micropython/micropython?branch=master +# Adafruit MicroPython -The MicroPython project -======================= -

- MicroPython Logo -

+This is an open source derivative of [MicroPython](http://www.micropython.org) +for use on educational development boards designed and sold by Adafruit +including the [Arduino Zero](https://www.arduino.cc/en/Main/ArduinoBoardZero), [Adafruit Feather M0 Basic](https://www.adafruit.com/products/2772), [Adafruit Feather HUZZAH](https://www.adafruit.com/products/2821) and +[Adafruit Feather M0 Bluefruit LE](https://www.adafruit.com/products/2995). -This is the MicroPython project, which aims to put an implementation -of Python 3.x on microcontrollers and small embedded systems. -You can find the official website at [micropython.org](http://www.micropython.org). +As a MicroPython derivative, this implements Python 3.x on microcontrollers such +as the SAMD21 and ESP8266. -WARNING: this project is in beta stage and is subject to changes of the -code-base, including project-wide name changes and API changes. +## Project Status +This project is in beta and the APIs will change in the near future. -MicroPython implements the entire Python 3.4 syntax (including exceptions, -"with", "yield from", etc., and additionally "async" keyword from Python 3.5). -The following core datatypes are provided: str (including basic Unicode -support), bytes, bytearray, tuple, list, dict, set, frozenset, array.array, -collections.namedtuple, classes and instances. Builtin modules include sys, -time, and struct. Note that only subset of Python 3.4 functionality -implemented for the data types and modules. +## Documentation -See the repository www.github.com/micropython/pyboard for the Micro -Python board, the officially supported reference electronic circuit board. +Guides and videos are available through the [Adafruit Learning System](https://learn.adafruit.com/) under the [MicroPython category](https://learn.adafruit.com/category/micropython). An API reference is also available on [Read the Docs](http://adafruit-micropython.readthedocs.io/en/latest/?). -Major components in this repository: -- py/ -- the core Python implementation, including compiler, runtime, and +## Contributing +See [CONTRIBUTING.md](https://github.com/adafruit/micropython/blob/master/CONTRIBUTING.md) +for full guidelines but please be aware that by contributing to this project you +are agreeing to the +[Code of Conduct](https://github.com/adafruit/micropython/blob/master/CODE_OF_CONDUCT.md). +Contributors who follow the +[Code of Conduct](https://github.com/adafruit/micropython/blob/master/CODE_OF_CONDUCT.md) +are welcome to submit pull requests and they will be promptly reviewed by +project admins. + +## Project Structure +Here is an overview of the top-level directories. + +### Core +The core of MicroPython is code shared amongst ports. +- `docs` High level user documentation in Sphinx reStructuredText format. +- `drivers` External device drivers written in Python. +- `examples` A few example Python scripts. +- `extmod` Shared C code used in multiple ports' modules. +- `lib` Shared core C code including externally developed libraries such as FATFS. +- `logo` The MicroPython logo. +- `mpy-cross` A cross compiler that converts Python files to byte code prior to being run in MicroPython. Useful for reducing library size. +- `py` Core Python implementation, including compiler, runtime, and core library. -- unix/ -- a version of MicroPython that runs on Unix. -- stmhal/ -- a version of MicroPython that runs on the MicroPython board - with an STM32F405RG (using ST's Cube HAL drivers). -- minimal/ -- a minimal MicroPython port. Start with this if you want +- `shared-bindings` Shared definition of Python modules, their docs and backing C APIs. Ports must implement the C API to support the corresponding module. +- `tests` Test framework and test scripts. +- `tools` Various tools, including the pyboard.py module. + +### Ports +Ports include the code unique to a microcontroller line and also variations +based on the board. +- `atmel-samd` Support for SAMD21 based boards such as [Arduino Zero](https://www.arduino.cc/en/Main/ArduinoBoardZero), [Adafruit Feather M0 Basic](https://www.adafruit.com/products/2772), and +[Adafruit Feather M0 Bluefruit LE](https://www.adafruit.com/products/2995). +- `bare-arm` A bare minimum version of MicroPython for ARM MCUs. +- `cc3200` Support for boards based [CC3200](http://www.ti.com/product/CC3200) from TI such as the [WiPy 1.0](https://www.pycom.io/solutions/py-boards/wipy1/). +- `esp8266` Support for boards based on ESP8266 WiFi modules such as the [Adafruit Feather HUZZAH](https://www.adafruit.com/products/2821). +- `minimal` A minimal MicroPython port. Start with this if you want to port MicroPython to another microcontroller. -- tests/ -- test framework and test scripts. -- docs/ -- user documentation in Sphinx reStructuredText format. +- `pic16bit` Support for 16-bit PIC microcontrollers. +- `qemu-arm` Support for ARM emulation through [QEMU](https://qemu.org). +- `stmhal` Support for boards based on STM32 microcontrollers including the MicroPython flagship [PyBoard](https://store.micropython.org/store/#/products/PYBv1_1). +- `teensy` Support for the Teensy line of boards such as the [Teensy 3.1](https://www.pjrc.com/teensy/teensy31.html). +- `unix` Support for UNIX. +- `windows` Support for [Windows](https://www.microsoft.com/en-us/windows/). +- `zephyr` Support for [Zephyr](https://www.zephyrproject.org/), a real-time operating system by the Linux Foundation. -Additional components: -- bare-arm/ -- a bare minimum version of MicroPython for ARM MCUs. Used - mostly to control code size. -- teensy/ -- a version of MicroPython that runs on the Teensy 3.1 - (preliminary but functional). -- pic16bit/ -- a version of MicroPython for 16-bit PIC microcontrollers. -- cc3200/ -- a version of MicroPython that runs on the CC3200 from TI. -- esp8266/ -- an experimental port for ESP8266 WiFi modules. -- tools/ -- various tools, including the pyboard.py module. -- examples/ -- a few example Python scripts. - -The subdirectories above may include READMEs with additional info. - -"make" is used to build the components, or "gmake" on BSD-based systems. -You will also need bash and Python (at least 2.7 or 3.3). - -The Unix version ----------------- - -The "unix" port requires a standard Unix environment with gcc and GNU make. -x86 and x64 architectures are supported (i.e. x86 32- and 64-bit), as well -as ARM and MIPS. Making full-featured port to another architecture requires -writing some assembly code for the exception handling and garbage collection. -Alternatively, fallback implementation based on setjmp/longjmp can be used. - -To build (see section below for required dependencies): - - $ cd unix - $ make axtls - $ make - -Then to give it a try: - - $ ./micropython - >>> list(5 * x + y for x in range(10) for y in [4, 2, 1]) - -Use `CTRL-D` (i.e. EOF) to exit the shell. -Learn about command-line options (in particular, how to increase heap size -which may be needed for larger applications): - - $ ./micropython --help - -Run complete testsuite: - - $ make test - -Unix version comes with a builtin package manager called upip, e.g.: - - $ ./micropython -m upip install micropython-pystone - $ ./micropython -m pystone - -Browse available modules on -[PyPI](https://pypi.python.org/pypi?%3Aaction=search&term=micropython). -Standard library modules come from -[micropython-lib](https://github.com/micropython/micropython-lib) project. - -External dependencies ---------------------- - -Building Unix version requires some dependencies installed. For -Debian/Ubuntu/Mint derivative Linux distros, install `build-essential` -(includes toolchain and make), `libffi-dev`, and `pkg-config` packages. - -Other dependencies can be built together with MicroPython. Oftentimes, -you need to do this to enable extra features or capabilities. To build -these additional dependencies, first fetch git submodules for them: - - $ git submodule update --init - -Use this same command to get the latest versions of dependencies, as -they are updated from time to time. After that, in `unix/` dir, execute: - - $ make deplibs - -This will build all available dependencies (regardless whether they -are used or not). If you intend to build MicroPython with additional -options (like cross-compiling), the same set of options should be passed -to `make deplibs`. To actually enabled use of dependencies, edit -`unix/mpconfigport.mk` file, which has inline descriptions of the options. -For example, to build SSL module (required for `upip` tool described above), -set `MICROPY_PY_USSL` to 1. - -In `unix/mpconfigport.mk`, you can also disable some dependencies enabled -by default, like FFI support, which requires libffi development files to -be installed. - -The STM version ---------------- - -The "stmhal" port requires an ARM compiler, arm-none-eabi-gcc, and associated -bin-utils. For those using Arch Linux, you need arm-none-eabi-binutils and -arm-none-eabi-gcc packages. Otherwise, try here: -https://launchpad.net/gcc-arm-embedded - -To build: - - $ cd stmhal - $ make - -You then need to get your board into DFU mode. On the pyboard, connect the -3V3 pin to the P1/DFU pin with a wire (on PYBv1.0 they are next to each other -on the bottom left of the board, second row from the bottom). - -Then to flash the code via USB DFU to your device: - - $ make deploy - -This will use the included `tools/pydfu.py` script. If flashing the firmware -does not work it may be because you don't have the correct permissions, and -need to use `sudo make deploy`. -See the README.md file in the stmhal/ directory for further details. +This derivative only maintains the `atmel-samd` and `esp8266` ports. The rest are here to maintain compatibility with the [MicroPython](https://github.com/micropython/micropython) parent project. diff --git a/atmel-samd/README.md b/atmel-samd/README.md index 5979014b72..235203e57a 100644 --- a/atmel-samd/README.md +++ b/atmel-samd/README.md @@ -1,21 +1,17 @@ # SAMD21x18 -This port is intended to be a full featured MicroPython port for SAMD21x18 based -development boards including the Arduino Zero, Adafruit Feather M0 and Adafruit -M0 BLE. +This port brings MicroPython to SAMD21x18 based development boards including the +Arduino Zero, Adafruit Feather M0 and Adafruit M0 BLE. ## Building -The Makefile has the ability to build for a SAMD21x18, and by default -includes some start-up code and also enables a UART for communication. To -build: +To build for the Arduino Zero: - make CROSS=1 + make -It will build for the Arduino Zero by default. You may change it by setting -`BOARD`. For example: +To build for other boards you must change it by setting `BOARD`. For example: - make CROSS=1 BOARD=feather_m0_ble + make BOARD=feather_m0_ble Board names are the directory names in the `boards` folder. @@ -50,6 +46,9 @@ In another terminal from `micropython/atmel-samd`: (gdb) continue ## Connecting + +### Serial + All boards are currently configured to work over USB rather than UART. To connect to it from OSX do something like this: @@ -57,3 +56,8 @@ connect to it from OSX do something like this: You may not see a prompt immediately because it doesn't know you connected. To get one either hit enter to get `>>>` or do CTRL-B to get the full header. + +### Mass storage + +All boards will also show up as a mass storage device. Make sure to eject it +before referring to any files.