Emul8: The Open Source Embedded Systems Emulator

Published:

Antmicro and Realtime Embedded are happy to announce the much awaited open source release of Emul8 – an embedded systems emulator that might just become a new favourite tool of the trade for professional developers in the industry.

The official launch took place at Embedded Conference Scandinavia, held in Stockholm over November 3rd-4th, 2015.

Emul8 logo

With embedded systems becoming more complex and challenging in terms of design, development and deployment, Emul8 comes in as an easy and readily-available solution for iterative development and continuous integration of devices or systems of devices in a fully controlled environment, even if the physical hardware is not yet available.

Emul8 was created by Antmicro as an internal tool in 2010 and soon afterwards the company teamed up with Realtime Embedded to develop what was to become the Emul8 project. The fact that both companies work in the field of embedded systems has provided ample opportunities for building a framework that answers the real needs of embedded software development teams. By making Emul8 open source, a broad audience of developers and companies can be reached and further tools, platforms and functionalities added on top of the already richly-featured project.

What exactly is Emul8?

Emul8, as the name suggests, is an emulator that targets various embedded systems, typically based on ARM CPUs and/or MCUs (there is also support for SPARC, PowerPC and x86). With Emul8 you can develop your system entirely in a virtual environment that runs within your PC.

Emul8 is an Instruction Set Simulator (ISS), meaning it offers functional simulation of an embedded device or set of devices at the instruction level, and it is built for speed necessary to do iterative software development without getting irritated. Typically, you can work with your code in Emul8 more effectively than you would on real hardware, with comparable execution times but without the overhead of e.g. reprogramming the device or rerunning to produce more debug output.

How is Emul8 useful?

Running embedded software in a PC abstracts out the physicality of a real embedded system – since you are working in a fully controlled environment, you can monitor and influence all the elements in the system, something that is difficult in typically constrained embedded device, where debug output is scarce and the real state of the system unknown and hard to trace.

Emul8 lets you create repeatable, scriptable, virtual devices or systems of devices that can execute your real code for the purpose of development, testing and debugging. If used in the right scenario, it can greatly improve your and your team’s productivity, by letting you create identical and controllable development environments which can be analysed and automated much easier than many hardware-based setups.

Will it replace my hardware?

Naturally, no. After all, you are probably developing a real embedded system, and Emul8 is meant to enhance the development process by increasing your possibilities of debugging, testing, continuous integration, but the final tests and deployment are always done on real hardware. The intention with Emul8 is to help you get there sooner and produce higher quality embedded software.

How do I get started?

Check out www.emul8.org to learn more about Emul8 and how it works; read our Get Started section and try it out for yourself. You can also follow us on Twitter, and – most importantly – grab the code on Github!