hermes

a hypervisor for realtime microcontrollers
Get Started

huh?

Hermes is a hypervisor for MCU-based systems with real-time requirements. The goal of Hermes is to manage tradeoffs between performance and flexibility in software that runs on embedded systems. Bare-metal software often has the best performance—low I/O latency, less CPU and memory overhead, etc. RTOS-based software has comparatively higher flexibility in terms of its ability to share resources and manage multiple jobs, but often sacrifices latency. Hermes aims to provide software developers with the option to run some portions of code in a bare-metal like environment with minimal latency while allowing other jobs to run within a more flexible RTOS.

try it out

prereqs

  1. Get Atmel Studio 7 and install it on your Windows machine
  2. Get the source code archive and unzip it on your Windows machine. This contains all the source code for FreeRTOS v9.0.0 (patched for Hermes) plus project files for the Atmel SAME70 microcontroller.
  3. Remove the hermes directory inside the source code archive (it's old) and check out the most updated version from BitBucket in its place.
  4. Use Atmel Studio to open up the RTOSDemo_Consolidated project from the source code archive.
  5. Build and run the code! NOTE: Atmel studio is quirky when running FreeRTOS. There's a trick to attaching the Atmel Studio IDE to the debugger so you can step through code. This video explains how to do that.

News


Status Update Neil Klingensmith

Working on installing Hermes on FitBit. See blog for details about how to connect a debugger to the FitBit Charge.

Status Update Neil Klingensmith

Implemented virtualized IO for chip-specific peripherals (Timer/Counter, Ethernet, etc.). Get Atmel Software Pack v1.5 and patch with the Hermes patch. Checkout Hermes from the Bitbucket repo inside the examples_ethernet/gmac_uip_helloworld/ directory, add to the Atmel Studio project and build.

Tested on the Atmel Software Framework Ethernet 'Hello World' Demo, and found that Hermes adds about 2ms to ping round trip times (compared to 0.2 ms for VirtualBox running on an x86 Core i7). There are a lot of optimizations to be made, but we're happy with those results for now.

Status Update Neil Klingensmith

Hermes now working with multiple guests! In the BitBucket repo, v0.2 is the tagged version with multiple guests enabled. The newest source code repo comes with v0.2 and a multi-guest demo.

Status Update Neil Klingensmith

Emulating privileged instructions and memory accesses. Blinky demo works in full emulation mode!

Status Update Neil Klingensmith

FreeRTOS "Blinky" demo now running on Atmel SAME70XPLAINED board. Check out the video. Also see the Hermes setup video that explains how to download Hermes source code and get it running for the first time on an embedded board.