236 lines
12 KiB
ReStructuredText
236 lines
12 KiB
ReStructuredText
.. _mm_swiftio:
|
|
|
|
MadMachine 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`_
|
|
|
|
|
|
|
|
.. image:: mm_swiftio.jpg
|
|
:align: center
|
|
:alt: SwiftIO Board
|
|
|
|
Hardware
|
|
********
|
|
|
|
- i.MX RT1052 Cortex-M7 processor at 600MHz
|
|
- 8MB QSPI Flash, 32MB SDRAM
|
|
- On-board DAPLink debugger with serial port
|
|
- User RGB LED, USB 2.0 Connector, microSD slot
|
|
|
|
|
|
|
|
Supported Features
|
|
==================
|
|
|
|
The mm_swiftio board configuration supports the following hardware
|
|
features:
|
|
|
|
+-----------+------------+-------------------------------------+
|
|
| Interface | Controller | Driver/Component |
|
|
+===========+============+=====================================+
|
|
| NVIC | on-chip | nested vector interrupt controller |
|
|
+-----------+------------+-------------------------------------+
|
|
| SYSTICK | on-chip | systick |
|
|
+-----------+------------+-------------------------------------+
|
|
| DISPLAY | on-chip | display |
|
|
+-----------+------------+-------------------------------------+
|
|
| GPIO | on-chip | gpio |
|
|
+-----------+------------+-------------------------------------+
|
|
| I2C | on-chip | i2c |
|
|
+-----------+------------+-------------------------------------+
|
|
| SPI | on-chip | spi |
|
|
+-----------+------------+-------------------------------------+
|
|
| UART | on-chip | serial port-polling; |
|
|
| | | serial port-interrupt |
|
|
+-----------+------------+-------------------------------------+
|
|
| USB | on-chip | USB device |
|
|
+-----------+------------+-------------------------------------+
|
|
|
|
|
|
|
|
Connections and IOs
|
|
===================
|
|
|
|
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 Flash
|
|
*************************
|
|
|
|
Build applications as usual (see :ref:`build_an_application` for more details).
|
|
|
|
Configuring a Debug Probe
|
|
=========================
|
|
|
|
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
|
|
|
|
Configuring a Console
|
|
=====================
|
|
|
|
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.):
|
|
|
|
- Speed: 115200
|
|
- Data: 8 bits
|
|
- Parity: None
|
|
- Stop bits: 1
|
|
|
|
Flashing
|
|
========
|
|
|
|
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/
|