Built to help you Learn
Open Source Swift Language with Hardware
MadMachine is a lean and effective implementation of the Swift programming language, which includes a small subset of the Swift standard library and is optimised for running on microcontrollers and in restricted environments.
SwiftIO - the microcontroller board with Swift
Now you can write Swift source code on Windows, Linux and Mac.
i.MX RT1052 Crossover Processor with Arm® Cortex®-M7 core @600MHz
Micro SD card slot, supporting standard and high capacity SD cards
Micro USB connector for power
On-board USB to UART for serial communication
46 GPIO on left and right edges
On-board GRB LED
2x 12-bit digital to analog (DAC) converters
3x 12-bit analog to digital (ADC) converters, available on 16 pins, 4 with analog ground shielding
4 UART, 2 CAN, 2 IIC and 2 SPI
7 Paired PWM controller
Capacity with Arduino with Arduino Shield
Many additional advanced features to meet the needs of advanced users
MadMachine SwiftIO Board
Now You can use Swift to control Physical World
Swift is an awesome language for an newbie, and also a powerful language that could run in microcontrollers directly.
Swift is one of the few modern languages that are extremely suitable for MCU devices.
The native Swift compiler does not support generating Cortex-M machine instructions, but thanks to the modular architecture of the LLVM framework, it only takes a little hack to add a ready-made Cortex-M backend to it. After getting the machine instructions of the Cortex-M platform, the code can run on the platform. Many advanced features of Swift still need the underlying basic libraries and basic algorithms (such as heap management, thread management) to stand by. In practice, we chose Zephyr, an open-source RTOS project hosted by the Linux Foundation under the Apache 2.0 license.
Swift can be seamlessly connected to C. What we have done is to drive Zephyr and package the API in C language. We call this layer of API framework SwiftIO. At this point, developers only need to import SwiftIO in the code (similar to the #include of the C language), and then they can use the API to conveniently operate the underlying hardware.