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 |
|
ADC |
on-chip |
NXP MCUA 12B1MSPS SAR ADC2 |
|
ARM architecture |
on-chip |
MCUX XBAR (Crossbar)3 |
|
CAN |
on-chip |
NXP FlexCAN controller2 |
|
on-chip |
NXP FlexCAN CANFD controller1 |
||
Clock control |
on-chip |
i.MX CCM (Clock Controller Module) IP node1 |
|
on-chip |
Generic fixed factor clock provider3 |
||
on-chip |
i.MX CCM Fractional PLL1 |
||
on-chip |
i.MX ANATOP (Analog Clock Controller Module) IP node1 |
||
on-chip |
Generic fixed-rate clock provider4 |
||
Counter |
on-chip |
NXP MCUX Quad Timer (QTMR)4 |
|
on-chip |
NXP MCUX Quad Timer Channel16 |
||
on-chip |
NXP Periodic Interrupt Timer (PIT)1 |
||
on-chip |
Child node for the Periodic Interrupt Timer node, intended for an individual timer channel4 |
||
Cryptographic accelerator |
on-chip |
NXP Data Co-Processor (DCP) Crypto accelerator1 |
|
Debug |
on-chip |
ARMv7 instrumentation trace macrocell1 |
|
Display |
on-chip |
NXP i.MX eLCDIF (Enhanced LCD Interface) controller1 |
|
DMA |
on-chip |
NXP MCUX EDMA controller1 |
|
on-chip |
NXP PXP 2D DMA engine1 |
||
Ethernet |
on-chip |
NXP ENET IP Module1 |
|
on-chip |
NXP ENET MAC/L2 Device1 |
||
on-chip |
NXP ENET PTP (Precision Time Protocol) Clock1 |
||
GPIO & Headers |
on-chip |
i.MX GPIO5 |
|
I2C |
on-chip |
||
I2S |
on-chip |
NXP mcux SAI-I2S controller3 |
|
Interrupt controller |
on-chip |
ARMv7-M NVIC (Nested Vectored Interrupt Controller)1 |
|
LED |
on-board |
Group of GPIO-controlled LEDs1 |
|
MDIO |
on-chip |
NXP ENET MDIO Features1 |
|
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 |
|
on-chip |
NXP Smart External Memory Controller (SEMC)1 |
||
Miscellaneous |
on-chip |
NXP FlexIO controller2 |
|
MMU / MPU |
on-chip |
ARMv7-M Memory Protection Unit (MPU)1 |
|
MTD |
on-board |
NXP FlexSPI NOR1 |
|
Pin control |
on-chip |
This compatible binding should be applied to the device’s iomuxc DTS node1 |
|
on-chip |
The node has the ‘pinctrl’ node label set in MCUX RT SoC’s devicetree1 |
||
on-chip |
i.MX IOMUXC1 |
||
PWM |
on-chip |
NXP eFLEX PWM module with mcux-pwm submodules4 |
|
on-chip |
|||
RNG |
on-chip |
Kinetis TRNG (True Random Number Generator)1 |
|
RTC |
on-chip |
NXP SNVS LP/HP RTC1 |
|
SDHC |
on-chip |
||
Sensors |
on-chip |
NXP MCUX QDEC4 |
|
on-chip |
NXP on-die temperature monitor1 |
||
Serial controller |
on-chip |
||
SPI |
on-chip |
||
on-chip |
|||
Timer |
on-chip |
ARMv7-M System Tick1 |
|
on-chip |
NXP MCUX General-Purpose HW Timer (GPT)1 |
||
on-chip |
NXP MCUX General-Purpose Timer (GPT)1 |
||
USB |
on-chip |
||
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 |
||
Video |
on-board |
OV7725 CMOS video sensor1 |
|
on-chip |
NXP MCUX CMOS sensor interface1 |
||
Watchdog |
on-chip |
imxRT watchdog2 |
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