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:

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 supports the hardware features listed below.

on-chip / on-board
Feature integrated in the SoC / present on the board.
2 / 2
Number of instances that are enabled / disabled.
Click on the label to see the first instance of this feature in the board/SoC DTS files.
vnd,foo
Compatible string for the Devicetree binding matching the feature.
Click on the link to view the binding documentation.

mm_swiftio/mimxrt1052 target

Type

Location

Description

Compatible

CPU

on-chip

ARM Cortex-M7 CPU1

arm,cortex-m7

ADC

on-chip

NXP MCUA 12B1MSPS SAR ADC2

nxp,mcux-12b1msps-sar

ARM architecture

on-chip

MCUX XBAR (Crossbar)3

nxp,mcux-xbar

CAN

on-chip

NXP FlexCAN controller2

nxp,flexcan

on-chip

NXP FlexCAN CANFD controller1

nxp,flexcan-fd

Clock control

on-chip

i.MX CCM (Clock Controller Module) IP node1

nxp,imx-ccm

on-chip

Generic fixed factor clock provider3

fixed-factor-clock

on-chip

i.MX CCM Fractional PLL1

nxp,imx-ccm-fnpll

on-chip

i.MX ANATOP (Analog Clock Controller Module) IP node1

nxp,imx-anatop

on-chip

Generic fixed-rate clock provider4

fixed-clock

Counter

on-chip

NXP MCUX Quad Timer (QTMR)4

nxp,imx-qtmr

on-chip

NXP MCUX Quad Timer Channel16

nxp,imx-tmr

on-chip

NXP Periodic Interrupt Timer (PIT)1

nxp,pit

on-chip

Child node for the Periodic Interrupt Timer node, intended for an individual timer channel4

nxp,pit-channel

Cryptographic accelerator

on-chip

NXP Data Co-Processor (DCP) Crypto accelerator1

nxp,mcux-dcp

Debug

on-chip

ARMv7 instrumentation trace macrocell1

arm,armv7m-itm

Display

on-chip

NXP i.MX eLCDIF (Enhanced LCD Interface) controller1

nxp,imx-elcdif

DMA

on-chip

NXP MCUX EDMA controller1

nxp,mcux-edma

on-chip

NXP PXP 2D DMA engine1

nxp,pxp

Ethernet

on-chip

NXP ENET IP Module1

nxp,enet

on-chip

NXP ENET MAC/L2 Device1

nxp,enet-mac

on-chip

NXP ENET PTP (Precision Time Protocol) Clock1

nxp,enet-ptp-clock

GPIO & Headers

on-chip

i.MX GPIO5

nxp,imx-gpio

I2C

on-chip

NXP LPI2C controller2 2

nxp,lpi2c

I2S

on-chip

NXP mcux SAI-I2S controller3

nxp,mcux-i2s

Interrupt controller

on-chip

ARMv7-M NVIC (Nested Vectored Interrupt Controller)1

arm,v7m-nvic

LED

on-board

Group of GPIO-controlled LEDs1

gpio-leds

MDIO

on-chip

NXP ENET MDIO Features1

nxp,enet-mdio

Memory controller

on-chip

NXP FlexRAM on-chip ram controller If the flexram,bank-spec property is specified, then the flexram will be dynamically reconfigured to the configuration specified at runtime1

nxp,flexram

on-chip

NXP Smart External Memory Controller (SEMC)1

nxp,imx-semc

Miscellaneous

on-chip

NXP FlexIO controller2

nxp,flexio

MMU / MPU

on-chip

ARMv7-M Memory Protection Unit (MPU)1

arm,armv7m-mpu

MTD

on-board

NXP FlexSPI NOR1

nxp,imx-flexspi-nor

Pin control

on-chip

This compatible binding should be applied to the device’s iomuxc DTS node1

nxp,imx-iomuxc

on-chip

The node has the ‘pinctrl’ node label set in MCUX RT SoC’s devicetree1

nxp,mcux-rt-pinctrl

on-chip

i.MX IOMUXC1

nxp,imx-gpr

PWM

on-chip

NXP eFLEX PWM module with mcux-pwm submodules4

nxp,flexpwm

on-chip

NXP MCUX PWM9 7

nxp,imx-pwm

RNG

on-chip

Kinetis TRNG (True Random Number Generator)1

nxp,kinetis-trng

RTC

on-chip

NXP SNVS LP/HP RTC1

nxp,imx-snvs-rtc

SDHC

on-chip

NXP imx USDHC controller1 1

nxp,imx-usdhc

Sensors

on-chip

NXP MCUX QDEC4

nxp,mcux-qdec

on-chip

NXP on-die temperature monitor1

nxp,tempmon

Serial controller

on-chip

NXP LPUART5 3

nxp,lpuart

SPI

on-chip

NXP FlexSPI controller1 1

nxp,imx-flexspi

on-chip

NXP LPSPI controller2 2

nxp,lpspi

Timer

on-chip

ARMv7-M System Tick1

arm,armv7m-systick

on-chip

NXP MCUX General-Purpose HW Timer (GPT)1

nxp,gpt-hw-timer

on-chip

NXP MCUX General-Purpose Timer (GPT)1

nxp,imx-gpt

USB

on-chip

NXP EHCI USB device mode1 1

nxp,ehci

on-chip

NXP USB high speed phy that is used on NXP RTxxxx, RTxxx, MCX, LPC and Kinetis platforms if high speed usb is supported on these platforms2

nxp,usbphy

Video

on-board

OV7725 CMOS video sensor1

ovti,ov7725

on-chip

NXP MCUX CMOS sensor interface1

nxp,imx-csi

Watchdog

on-chip

imxRT watchdog2

nxp,imx-wdog

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