Raspberry Pi Zero Emulator
CI | Status |
---|---|
Build | |
Static code analysis | |
Test coverage | |
Docs |
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!
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.
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.
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.
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