boards/madmachine/mm_swiftio/doc/index.rst
.. zephyr:board:: mm_swiftio
Overview
The SwiftIO board, designed by MadMachine is the world's first board
designed with support for the modern Swift language <https://docs.swift.org/swift-book/>_. Zephyr provides basic
low-level capabilities for the SwiftIO board. Swift application would
run on top of Zephyr. More information about the board can be found
at:
MadMachine Homepage_SwiftIO API Reference_Hardware
.. zephyr:board-supported-hw::
Note: The following SwiftIO pinout diagram is used for Swift programming. The Swift ID is not the same as the Zephyr driver ID.
+-----------+---------------+----------+---------------+--------------------------+ | Name | GPIO | Other peripherals | +===========+===============+==========+===============+==========+===============+ | Swift ID | Pin name | Swift ID | Zephyr driver | Swift ID | Zephyr driver | +-----------+---------------+----------+---------------+----------+---------------+ | P0 | GPIO_AD_B1_03 | D0 | GPIO1_IO19 | | | +-----------+---------------+----------+---------------+ UART0 | UART_2 | | P1 | GPIO_AD_B1_02 | D1 | GPIO1_IO18 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P2 | GPIO_AD_B0_03 | D2 | GPIO1_IO03 | | | +-----------+---------------+----------+---------------+ UART1 | UART_6 | | P3 | GPIO_AD_B0_02 | D3 | GPIO1_IO02 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P4 | GPIO_B1_14 | D4 | GPIO2_IO30 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P5 | GPIO_B1_15 | D5 | GPIO2_IO31 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P6 | GPIO_B0_03 | D6 | GPIO2_IO03 | | | +-----------+---------------+----------+---------------+ | | | P7 | GPIO_B0_02 | D7 | GPIO2_IO02 | | | +-----------+---------------+----------+---------------+ SPI0 | SPI_4 | | P8 | GPIO_B0_01 | D8 | GPIO2_IO01 | | | +-----------+---------------+----------+---------------+ | | | P9 | GPIO_B0_00 | D9 | GPIO2_IO00 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P10 | GPIO_B1_03 | D10 | GPIO2_IO19 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P11 | GPIO_B1_02 | D11 | GPIO2_IO18 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P12 | GPIO_B1_01 | D12 | GPIO2_IO17 | | | +-----------+---------------+----------+---------------+ UART2 | UART_4 | | P13 | GPIO_B1_00 | D13 | GPIO2_IO16 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P14 | GPIO_AD_B1_15 | D14 | GPIO1_IO31 | | | +-----------+---------------+----------+---------------+ | | | P15 | GPIO_AD_B1_14 | D15 | GPIO1_IO30 | | | +-----------+---------------+----------+---------------+ SPI1 | SPI_3 | | P16 | GPIO_AD_B1_13 | D16 | GPIO1_IO29 | | | +-----------+---------------+----------+---------------+ | | | P17 | GPIO_AD_B1_12 | D17 | GPIO1_IO28 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P18 | GPIO_AD_B1_11 | D18 | GPIO1_IO27 | | | +-----------+---------------+----------+---------------+ UART3 | UART_8 | | P19 | GPIO_AD_B1_10 | D19 | GPIO1_IO26 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P20 | GPIO_AD_B1_09 | D20 | GPIO1_IO25 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P21 | GPIO_AD_B1_08 | D21 | GPIO1_IO24 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P22 | GPIO_AD_B1_05 | D22 | GPIO1_IO21 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P23 | GPIO_AD_B1_04 | D23 | GPIO1_IO20 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P24 | GPIO_AD_B0_15 | D24 | GPIO1_IO15 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P25 | GPIO_AD_B0_14 | D25 | GPIO1_IO14 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P26 | GPIO_B0_04 | D26 | GPIO2_IO04 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P27 | GPIO_B0_05 | D27 | GPIO2_IO05 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P28 | GPIO_B0_06 | D28 | GPIO2_IO06 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P29 | GPIO_B0_07 | D29 | GPIO2_IO07 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P30 | GPIO_B0_08 | D30 | GPIO2_IO08 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P31 | GPIO_B0_09 | D31 | GPIO2_IO09 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P32 | GPIO_B0_10 | D32 | GPIO2_IO10 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P33 | GPIO_B0_11 | D33 | GPIO2_IO11 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P34 | GPIO_B0_12 | D34 | GPIO2_IO12 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P35 | GPIO_B0_13 | D35 | GPIO2_IO13 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P36 | GPIO_B0_14 | D36 | GPIO2_IO14 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P37 | GPIO_B0_15 | D37 | GPIO2_IO15 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P38 | GPIO_B1_11 | D38 | GPIO2_IO27 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P39 | GPIO_B1_10 | D39 | GPIO2_IO26 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P40 | GPIO_B1_9 | D40 | GPIO2_IO25 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P41 | GPIO_B1_8 | D41 | GPIO2_IO24 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P42 | GPIO_B1_7 | D42 | GPIO2_IO23 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P43 | GPIO_B1_6 | D43 | GPIO2_IO22 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P44 | GPIO_B1_5 | D44 | GPIO2_IO21 | | | +-----------+---------------+----------+---------------+----------+---------------+ | P45 | GPIO_B1_4 | D45 | GPIO2_IO20 | | | +-----------+---------------+----------+---------------+----------+---------------+ | | GPIO_AD_B1_07 | | | | | +-----------+---------------+----------+---------------+ I2C0 | I2C_3 | | | GPIO_AD_B1_06 | | | | | +-----------+---------------+----------+---------------+----------+---------------+ | | GPIO_AD_B1_00 | | | | | +-----------+---------------+----------+---------------+ I2C1 | I2C_1 | | | GPIO_AD_B1_01 | | | | | +-----------+---------------+----------+---------------+----------+---------------+
Programming and Flashing
.. zephyr:board-supported-runners::
Build applications as usual (see :ref:build_an_application for more details).
This board is configured by default to use the :ref:opensda-daplink-onboard-debug-probe,
however the :ref:pyocd-debug-host-tools do not yet support programming the
external flashes on this board so you must flash the device by copying files
Regardless of your choice in debug probe, we will use the OpenSDA microcontroller as a USB-to-serial adapter for the serial console.
Connect a USB cable from your PC to Serial of SwiftIO.
Use the following settings with your serial terminal of choice (minicom, putty, etc.):
Here is an example for the :zephyr:code-sample:hello_world application.
Connect a USB cable from your PC to "Serial" port of SwiftIO.
On Ubuntu, DAPLink debug probes appear on the host
computer as a USB disk mounted to /media/<user>/SWIFTIODBGR/,
where <user> is your login name.
.. code-block:: console
west build -b mm_swiftio samples/hello_world
cp build/zephyr/zephyr.bin /media/<user>/SWIFTIODBGR/
Open a serial terminal, reset the board (press the "reset" button), and you should see the following message in the terminal:
.. code-block:: console
***** Booting Zephyr OS v2.1.0-rc1 ***** Hello World! mm_swiftio
.. _MadMachine Homepage: https://madmachine.io
.. _SwiftIO API Reference: https://madmachineio.github.io/SwiftIO/documentation/swiftio/