NodeMach, the RISC-V 64 virtual environment for NodeNet
NodeMach is a virtual environment standard for running the operating system NodeNet. It acts as a layer between devices, like the CPU or the network adapter, that translates the access protocols into simpler, more versatile versions. It is essentially a RISC-V emulator virtual machine used for running NodeNet.
A network based operating system based on the idea that everything is a node and can be connected to another node provided the nodes are compatible. (ex. /path/to/image -> /path/to/framebuffer)
- Complete rv64i implementation
- Incomplete rv64m implementation
- Incomplete rv64a implementation
- Dual hart CPU
- Basic 39bit paging
- Hacky device support
- Basic PLIC
- No CLINT
- Basic CSR support
Building
Dependencies: clang, make
make
cp /path/to/your/payload.elf build/payload.elf
make run
cp /path/to/your/payload.elf build/payload.elf
make run-update
Debugging
^C (Ctrl + C) or send the process a SIGINT to pull up the debugger.
| Command | Description |
|---|---|
| show | Show command buffer(used for debugging of the debugger) |
| step | Step one CPU cycle |
| stepto <addr> | Run the CPU until the program counter is equal to <addr> |
| read32 <addr> | Read 4x 32bit values from <addr> |
| read64 <addr> | Read 4x 64bit values from <addr> |
| ls | List CPU registers |
| resume | Exit debugger, continuing to run the payload |
| exit | Exit the debugger, exiting the program |
Official NodeNet website: NodeNet.work