A Real-Time Multi-threaded Arduino API
For physical computing, the Internet-of-Things, real-time control, and beyond.
Qduino (or "Quest-Arduino") is a real-time multi-threaded
Arduino-compatible API for embedded devices running Quest. So far, the
Qduino library has been built for Quest running on the Intel
Galileo. Plans are underway to port both Quest and Qduino to other
Arduino-compatible devices such as the Intel Edison and Minnowboard
The Arduino API is widely used in physical computing domains because
of its ease of use and rapid prototyping capabilities. Traditional
Arduino devices have been based on MegaAVR microcontrollers from
Atmel, which lack memory management (MMU) or protection (MPU)
units. More sophisticated devices such as the Intel Galileo support
feature-rich operating systems such as Linux, but most of these are
not designed for use in real-time systems.
Our Quest operating system sits between the simple real-time OSes that
lack MMU/MPU support, and the more complex general purpose OSes that
are not real-time. Quest is a natural fit for an emerging class of
Arduino-compatible embedded devices, with added security to isolate
trusted system services from those of less trusted
applications. Moreover, devices such as the Intel Edison have support
for multiple cores and hardware virtualization, enabling us to run a
Quest-V separation kernel directly on the device. This provides an
opportunity to build embedded systems with mixed criticality levels,
such that non-timing-critical services can run on one core in a
sandbox, and be separated from more time-critical control
functionality on other cores.
Qduino is built on Quest and provides an extended Arduino API,
including support for multiple control loops (each assigned to a
separate time-budgeted thread of execution).
Qduino is designed for "smart devices" in the Internet-of-Things
(IoT). Future home automation networks, vehicle management systems,
robotics, and beyond will require the management and control of
networks of sensors and actuators. Enter Qduino -- the platform for
prototyping and developing third-party sketches for a future AppStore
for IoT. As with smartphones, users will be able to share and
download third-party apps for smart devices, to configure custom
control networks and so forth. The future of intelligent networked
systems is coming...
AcknowledgementThis work is funded in part by various grants, including: NSF #0615153 and #1117025.
Quest, still searching...