.. _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 `_. 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:: ../../../../../../../../../zephyr/boards/arm/mm_swiftio/doc/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 :ref:`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//SWIFTIODBGR/``, where ```` is your login name. .. code-block:: console west build -b mm_swiftio samples/hello_world cp build/zephyr/zephyr.bin /media//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/