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:
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