Skip to content

SmartCGMS/ZeroMate

 
 

Repository files navigation

Raspberry Pi Zero Emulator

version C++20 License: MIT

CI Status
Build Ubuntu Windows MacOS
Static code analysis Codacy Badge
Test coverage codecov
Docs Doxygen Documentation

What is this project?

ZeroMate is an educational Raspberry Pi Zero emulator designed specifically as a debugging tool for operating system development. Its ultimate goal is to emulate KIV-RTOS (more information about the operating system itself can be found here). Please keep in mind that while using the emulator, certain features may be missing or limited as it is still under active development.

This project was originally developed by Jakub Silhavy as a diploma thesis project. Thank you!

Installation

The emulator was tested on both Windows and Linux using the MSVC, GCC, and Clang compilers. You can download a ready-to-use executable for both platforms from the latest release. Alternatively, if you are brave enough, you can attempt to build it yourself from the source code.

User manual

Once the emulator is successfully built or downloaded, the user manual can be used as a brief description of how the application is intended to be used.

Examples

The emulator comes with a couple of prebuilt examples that you are encouraged to try out to get an idea of what the emulator is capable of.

Capabilities

Feature Support Note
ARMv6 ISA The vast majority of ARM instructions are supported. However, there are still some missing.
System bus ✔️
Debugger Stepping through the source code, breakpoints, pause, reset, and play.
Searching functions by their names
RAM ✔️
Logging system ✔️
GPIO ✔️
Interrupt controller (IC) ✔️
ARM timer ✔️
Memory-mapped debug monitor ✔️ Debug purposes during development. Find out more information here.
TRNG (random number generator) ✔️
CPU exceptions ✔️
CPU modes (+ viewing of all banked CPU registers) ✔️
Paging Nested-level paging is not supported yet.
Support for external peripherals ✔️ External peripherals are loaded as shared libraries at runtime. For instance, an LED, DIP switch, 7-segment display, etc.
Loading of multiple ELF files (kernel + separately compiled processes) ✔️
Floating point unit (FPU) - single precision ✔️ VFPv2 (without rounding modes & exceptions)
Floating point unit (FPU) - double precision
I2C From the emulator's perspective, only the TX functionality was tested and fully implemented.
SPI
Mini UART ✔️
Simple logic analyzer ✔️ More information can be found here.
Statistical data collection Number of I/O operations, etc.

✔️ Fully implemented | ❌ Not supported yet | ⏳ Limited functionality

Screenshots

About

Raspberry Pi Zero Emulator

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 97.6%
  • CMake 1.9%
  • Python 0.3%
  • Makefile 0.1%
  • C 0.1%
  • Assembly 0.0%