13个版本 (8个稳定版)

3.0.2 2023年7月12日
3.0.1 2022年1月15日
3.0.0 2021年12月17日
2.0.1 2021年7月6日
0.1.0 2019年12月3日

#55硬件支持

Download history 666/week @ 2024-04-20 479/week @ 2024-04-27 408/week @ 2024-05-04 761/week @ 2024-05-11 561/week @ 2024-05-18 676/week @ 2024-05-25 796/week @ 2024-06-01 832/week @ 2024-06-08 730/week @ 2024-06-15 503/week @ 2024-06-22 572/week @ 2024-06-29 493/week @ 2024-07-06 712/week @ 2024-07-13 964/week @ 2024-07-20 957/week @ 2024-07-27 708/week @ 2024-08-03

每月下载量3,440次
4 个crate中(3个直接使用) 使用

MIT/Apache

205KB
146

包含 (ELF可执行文件/库, 640KB) tests/riscv64_virt/fw_jump.elf

crates.io crates.io Build Test

qemu-exit

使用用户定义的代码退出QEMU。

使用QEMU进行单元或集成测试时,退出正在运行的QEMU会话,并使用用户定义的退出代码。非常有用。

TL;DR

use qemu_exit::QEMUExit;

#[cfg(target_arch = "aarch64")]
let qemu_exit_handle = qemu_exit::AArch64::new();

// addr: The address of sifive_test.
#[cfg(target_arch = "riscv64")]
let qemu_exit_handle = qemu_exit::RISCV64::new(addr);

// io_base:             I/O-base of isa-debug-exit.
// custom_exit_success: A custom success code; Must be an odd number.
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
let qemu_exit_handle = qemu_exit::X86::new(io_base, custom_exit_success);

qemu_exit_handle.exit(1337);
qemu_exit_handle.exit_success();
qemu_exit_handle.exit_failure();

架构特定配置

AArch64

在QEMU调用时传递-semihosting参数,例如。

qemu-system-aarch64 -M raspi3 -serial stdio -semihosting -kernel kernel8.img

RISCV64

您需要选择一个具有sifive_test设备的机器,例如-M virt

qemu-system-riscv64 -M virt -nographic -monitor none -serial stdio -kernel kernel.elf

x86/x86_64

通过传递标志添加特殊的ISA调试退出设备

-device isa-debug-exit,iobase=0xf4,iosize=0x04

实例化句柄时,iobase必须作为第一个参数提供。

第二个参数必须是您选择的EXIT_SUCCESS代码,它是一个奇数,即零位必须是1。这是必需的,因为在QEMU中,提供的代码在内部与0x1进行二进制OR运算。这是硬编码的,因此,使用isa-debug-exit,无法让QEMU调用exit(0)

let qemu_exit_handle = qemu_exit::X86::new(io_base, custom_exit_success);

文献

作者

许可证

根据您的选择,许可如下

请参阅THIRD_PARTY_NOTICES.md以获取有关所使用第三方项目和它们各自许可证的更多信息。

贡献

除非您明确说明,否则您根据Apache-2.0许可证定义的任何有意提交以包含在工作中的贡献,将按上述方式双重授权,不附加任何额外条款或条件。

无运行时依赖