GRiSP-Base — Specially designed for Erlang

GRiSP: Dive into a New Experience of Building Wireless Embedded Systems

Create amazing Internet of Things designs without soldering or dropping down to C. Right out of the box, GRiSP-Base boots into Erlang VM running on real bare metal. It features on-board wireless networking 802.11b/g/n WLAN and connectors for standard PMod sensor and actuator modules.

Sign up for email updates about GRiSP availability, or scroll down for all the Facts and Features. All early email subscribers will be entered into a draw for 1 of 10 GRiSP-Base boards from the first production batch.

Emails will be infrequent, around once per month, and you can unsubscribe any time; see our privacy policy for details. The raffle is open to anyone who subscribes by 15 September 2016 with a name and valid email. The winning boards will be delivered as part of the first production shipment.

All the facts and figures…


How much can you fit on a board that fits in your hand? Quite a lot, actually…

  • CPU
    • Atmel SAM V71 (SAMV71Q21ES3)
    • Core: ARM Cortex M7
    • Running at up to 300MHz
    • Single- and double-precision hardware Floating Point Unit (FPU)
  • Internal memory
    • Flash: 2048 Kbytes (used for Bootloader)
    • SRAM: 384 Kbytes
  • External memory
    • SDRAM: 64 MBytes
    • MicroSD Socket for standard MicroSD cards
    • EEPROM: 2 KBit
  • Network
    • 802.11b/g/n WLAN
  • User Interface
    • Two RGB LEDs
    • 5 DIP switches
    • Reset Key
  • I/O
    • Dallas 1-Wire via 3-pin connector
    • Digilent Pmod compatible I2C interface
    • Two Digilent Pmod Type 1 interfaces (GPIO)
    • One Digilent Pmod Type 2 interface (SPI)
    • One Digilent Pmod Type 2A interface (expanded SPI with interrupts)
    • One Digilent Pmod Type 4 interface (UART)
  • Debug & Supply
    • Serial port via Micro USB for console (Erlang Shell connects to this)
    • On-board JTAG debugger via Micro USB
    • JTAG / Trace connection for connecting external debuggers
    • Supply via Micro USB connector
    • Only one USB cable needed for power, console and on-board JTAG

Real-time embedded operating system

RTEMS + Erlang = GRiSP

Erlang is a programming language designed for creating scalable, networked software systems. It has built-in support for concurrency, distribution, and falult tolerance. Why not integrate it with hardware devices?

RTEMS is a hard real-time embedded “operating system”. Actually its not like a conventional operating system, but rather a library which is linked to an application. An image boots directly on the target, often right from hardware reset. Unlike in conventional operating systems, there is usually no memory protection or kernel mode. From the application side, it looks like a single Unix process which is able to run some threads.

There is a choice of drivers and network stacks: a minimal one for very small systems, a traditional BSD Unix-derived system, or a port of the current FreeBSD TCP stack supporting SMP and all kinds of modern architecture.

Speaking of symmetric multiprocessing: even though GRiSP-Base is so minimal, it features support for SMP hardware.

When Erlang is running on RTEMS there is very little latency between something happening on the hardware and a reaction on the Erlang level. There is strict control over what can pre-empt the Erlang VM: only hardware interrupts allowed. In practice, this means Erlang’s soft real-time is not as soft as on normal operating systems.

For the future, we plan to provide hard real-time processes on the Erlang level; GRiSP-Base will be the main test platform for this.

Use GRiSP with off-the-shelf hardware

Digilent PMod-Compatible

The connectors on Grisp-Base are compatible with Digilent PMod accessories, providing access to dozens of affordable, ready-to-run expansion modules with sensors (accelerometer, gyro, compass, several temperature, general A/D, and even a GPS module) and actuators (motor drivers, RC-servos, audio out).

This gives us the opportunity to provide high-level Erlang drivers for most of those PMods. Since there will be port-drivers or native-implemented functions (NIFs) for the basic protocols, most of these drivers can be written in Erlang. Dropping down to C is very rarely necessary.

Compatible modules provide an easy entry point to small hardware development projects. The modular hardware you create would be reusable with future GRiSP versions, and other PMod-compatible boards.

I/O Simplicity

1-Wire Bus

At the one wire connector you can connect many 1-Wire compatible sensors and actuators, literally with 1-Wire. (That’s actually a lie, you need a ground wire too!) 1-Wire is a bus and is built to support longer wires, so you could, for example, wire several digital temperature sensors all over an experiment, or a room, to this one connector. Also very conveniently all 1-Wire chips have a built-in worldwide unique ID so you can always distinguish your sensors.

In addition to all the I/O options with 1-Wire, there are many modules containing memory, from simple memory to security memory with cryptographic primitives built in. This opens up access control and other security applications. There are tokens for these applications which really only need to touch the connector so in this case, it really does work with one wire only!

Of course we will provide the necessary low-level C drivers. 1-Wire applications can also be written in Erlang.