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 在 硬件支持
每月下载量3,440次
在 4 个crate中(3个直接使用) 使用
205KB
146 行
包含 (ELF可执行文件/库, 640KB) tests/riscv64_virt/fw_jump.elf
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);
文献
作者
- @andre-richter Andre Richter
- @Skallwar Esteban Blanc
许可证
根据您的选择,许可如下
- Apache许可证2.0版本 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
请参阅THIRD_PARTY_NOTICES.md以获取有关所使用第三方项目和它们各自许可证的更多信息。
贡献
除非您明确说明,否则您根据Apache-2.0许可证定义的任何有意提交以包含在工作中的贡献,将按上述方式双重授权,不附加任何额外条款或条件。