[][src]Crate rvemu

RISC-V emulator core implementation.

How to use

Create an Emulator object, place a binary data in DRAM and set the program counter to DRAM_BASE. The binary data must contain no headers for now. The example is here:

use rvemu::bus::DRAM_BASE;
use rvemu::emulator::Emulator;

fn main() {
    // Create a dummy binary data.
    let data = vec![
        0x93, 0x0f, 0xa0, 0x02, // addi x31, x0, 42
    ];

    let mut emu = Emulator::new(); // Create an emulator object.
    emu.set_dram(data); // Place the binary data in the beginning of DRAM.
    emu.set_pc(DRAM_BASE); // Set the program counter to 0x8000_0000, which is the
    address DRAM starts.
    emu.start();

    assert_eq!();
}

See the example usage in rvemu/lib/rvemu-cli/src/main.rs.

Modules

bus

The bus module contains the system bus which can access the memroy or memory-mapped peripheral devices.

cpu

The cpu module contains the privileged mode, registers, and CPU.

csr

The csr module contains all the control and status registers.

devices

The devices module contains peripheral devices.

emulator

The emulator module represents an entire computer.

exception

The exception module contains all the exception kinds and the function to handle exceptions.

memory

The memory module contains the memory structure and implementation to read/write the memory.