summaryrefslogtreecommitdiff
path: root/README.rst
diff options
context:
space:
mode:
Diffstat (limited to 'README.rst')
-rw-r--r--README.rst243
1 files changed, 243 insertions, 0 deletions
diff --git a/README.rst b/README.rst
new file mode 100644
index 000000000..7e234331e
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,243 @@
+Adafruit CircuitPython
+======================
+
+|Build Status| |Doc Status| |Discord|
+
+`Status <#status>`__ \| `Supported Boards <#supported-boards>`__
+\| `Download <#download>`__ \|
+`Documentation <#documentation>`__ \|
+`Contributing <#contributing>`__ \| `Differences from
+Micropython <#differences-from-micropython>`__ \| `Project
+Structure <#project-structure>`__
+
+**CircuitPython** is an *education friendly* open source derivative of
+`MicroPython <https://micropython.org>`_. CircuitPython supports use
+on educational development boards designed and sold by
+`Adafruit <https://adafruit.com>`_. Adafruit CircuitPython features
+unified Python core APIs and a growing list of Adafruit libraries and
+drivers of that work with it.
+
+Status
+------
+
+This project is stable. Most APIs should be stable going forward. Those
+that change will change on major version numbers such as 2.0.0 and
+3.0.0.
+
+Supported Boards
+----------------
+
+Designed for CircuitPython
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- `Adafruit CircuitPlayground
+ Express <https://www.adafruit.com/product/3333>`__
+- `Adafruit Feather M0
+ Express <https://www.adafruit.com/product/3403>`__
+- `Adafruit Metro M0 Express <https://www.adafruit.com/product/3505>`__
+- `Adafruit Gemma M0 <https://www.adafruit.com/product/3501>`__
+
+Other
+~~~~~
+
+- `Adafruit Feather HUZZAH <https://www.adafruit.com/products/2821>`__
+- `Adafruit Feather M0
+ Basic <https://www.adafruit.com/products/2772>`__
+- `Adafruit Feather M0 Bluefruit
+ LE <https://www.adafruit.com/products/2995>`__ (uses M0 Basic
+ binaries)
+- `Adafruit Feather M0
+ Adalogger <https://www.adafruit.com/product/2796>`__ (MicroSD card
+ supported using the `Adafruit CircuitPython SD
+ library <https://github.com/adafruit/Adafruit_CircuitPython_SD>`__)
+- `Arduino Zero <https://www.arduino.cc/en/Main/ArduinoBoardZero>`__
+
+Download
+--------
+
+Official binaries are available through the `latest GitHub
+releases <https://github.com/adafruit/circuitpython/releases>`__.
+Continuous (one per commit) builds are available
+`here <https://adafruit-circuit-python.s3.amazonaws.com/index.html?prefix=bin>`__
+and includes experimental hardware support.
+
+Documentation
+-------------
+
+Guides and videos are available through the `Adafruit Learning
+System <https://learn.adafruit.com/>`__ under the `CircuitPython
+category <https://learn.adafruit.com/category/circuitpython>`__ and
+`MicroPython
+category <https://learn.adafruit.com/category/micropython>`__. An API
+reference is also available on `Read the
+Docs <http://circuitpython.readthedocs.io/en/latest/?>`__.
+
+Contributing
+------------
+
+See
+`CONTRIBUTING.md <https://github.com/adafruit/circuitpython/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/circuitpython/blob/master/CODE_OF_CONDUCT.md>`__.
+Contributors who follow the `Code of
+Conduct <https://github.com/adafruit/circuitpython/blob/master/CODE_OF_CONDUCT.md>`__
+are welcome to submit pull requests and they will be promptly reviewed
+by project admins. Please join the `Gitter
+chat <https://gitter.im/adafruit/circuitpython>`__ or
+`Discord <https://discord.gg/nBQh6qu>`__ too.
+
+--------------
+
+Differences from `MicroPython <https://github.com/micropython/micropython>`__
+-----------------------------------------------------------------------------
+
+CircuitPython:
+
+- includes a port for Atmel SAMD21 (Commonly known as M0 in Adafruit
+ product names.)
+- supports only Atmel SAMD21 and ESP8266 ports.
+- tracks MicroPython's releases (not master).
+
+Behavior
+~~~~~~~~
+
+- The order that files are run and the state that is shared between
+ them. CircuitPython's goal is to clarify the role of each file and
+ make each file independent from each other.
+- ``boot.py`` (or ``settings.py``) runs only once on start up before
+ USB is initialized. This lays the ground work for configuring USB at
+ startup rather than it being fixed. Since serial is not available,
+ output is written to ``boot_out.txt``.
+- ``code.py`` (or ``main.py``) is run after every reload until it
+ finishes or is interrupted. After it is done running, the vm and
+ hardware is reinitialized. **This means you cannot read state from
+ ``code.py`` in the REPL anymore.** CircuitPython's goal for this
+ change includes reduce confusion about pins and memory being used.
+- After ``code.py`` the REPL can be entered by pressing any key. It no
+ longer shares state with ``code.py`` so it is a fresh vm.
+- Autoreload state will be maintained across reload.
+- Adds a safe mode that does not run user code after a hard crash or
+ brown out. The hope is that this will make it easier to fix code that
+ causes nasty crashes by making it available through mass storage
+ after the crash. A reset (the button) is needed after its fixed to
+ get back into normal mode.
+
+API
+~~~
+
+- Unified hardware APIs: `audioio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/audioio/__init__.html>`_, `analogio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/analogio/__init__.html>`_, `busio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/busio/__init__.html>`_, `digitalio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/digitalio/__init__.html>`_, `pulseio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/pulseio/__init__.html>`_, `touchio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/touchio/__init__.html>`_, `microcontroller <https://circuitpython.readthedocs.io/en/latest/shared-bindings/microcontroller/__init__.html>`_, `board <https://circuitpython.readthedocs.io/en/latest/shared-bindings/board/__init__.html>`_, `bitbangio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/bitbangio/__init__.html>`_
+- No ``machine`` API on Atmel SAMD21 port.
+
+Modules
+~~~~~~~
+
+- No module aliasing. (``uos`` and ``utime`` are not available as
+ ``os`` and ``time`` respectively.) Instead ``os``, ``time``, and
+ ``random`` are CPython compatible.
+- New ``storage`` module which manages file system mounts.
+ (Functionality from ``uos`` in MicroPython.)
+- Modules with a CPython counterpart, such as ``time``, ``os`` and
+ ``random``, are strict
+ `subsets <https://circuitpython.readthedocs.io/en/latest/shared-bindings/time/__init__.html>`__
+ of their `CPython
+ version <https://docs.python.org/3.4/library/time.html?highlight=time#module-time>`__.
+ Therefore, code from CircuitPython is runnable on CPython but not
+ necessarily the reverse.
+- tick count is available as
+ `time.monotonic() <https://circuitpython.readthedocs.io/en/latest/shared-bindings/time/__init__.html#time.monotonic>`__
+
+atmel-samd21 features
+~~~~~~~~~~~~~~~~~~~~~
+
+- RGB status LED
+- Auto-reload after file write over mass storage. (Disable with
+ ``samd.disable_autoreload()``)
+- Wait state after boot and main run, before REPL.
+- Main is one of these: ``code.txt``, ``code.py``, ``main.py``,
+ ``main.txt``
+- Boot is one of these: ``settings.txt``, ``settings.py``, ``boot.py``,
+ ``boot.txt``
+
+--------------
+
+Project Structure
+-----------------
+
+Here is an overview of the top-level source code directories.
+
+Core
+~~~~
+
+The core code of
+`MicroPython <https://github.com/micropython/micropython>`__ is shared
+amongst ports including CircuitPython:
+
+- ``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.
+- ``shared-bindings`` Shared definition of Python modules, their docs
+ and backing C APIs. Ports must implement the C API to support the
+ corresponding module.
+- ``shared-module`` Shared implementation of Python modules that may be
+ based on ``common-hal``.
+- ``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.
+- ``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.
+
+CircuitPython 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.
+
+`⬆ back to top <#adafruit-circuitpython>`__
+
+.. |Build Status| image:: https://travis-ci.org/adafruit/circuitpython.svg?branch=master
+ :target: https://travis-ci.org/adafruit/circuitpython
+.. |Doc Status| image:: https://readthedocs.org/projects/circuitpython/badge/?version=latest
+ :target: http://circuitpython.readthedocs.io/
+.. |Discord| image:: https://img.shields.io/discord/327254708534116352.svg
+ :target: https://discord.gg/nBQh6qu