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:

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

SPI0

SPI_4

P7

GPIO_B0_02

D7

GPIO2_IO02

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

SPI1

SPI_3

P15

GPIO_AD_B1_14

D15

GPIO1_IO30

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 Building an Application for more details).

Configuring a Debug Probe

This board is configured by default to use the OpenSDA DAPLink Onboard Debug Probe, however the 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 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.

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:

***** Booting Zephyr OS v2.1.0-rc1 *****
Hello World! mm_swiftio