I get a panic in FdtHeader::verify() when using with QEMU and RISC-V virt machine:
called 'Result::unwrap()' on an 'Err' value: LastCompVersion
which occurs at line 60 while checking the header's minimum compatibility version. Note that this is the standard QEMU FDT for the RISC-V virt machine.
Version info:
- dtb-walker 0.1.0
- QEMU emulator version 6.0.0 (Debian 1:6.0+dfsg-2expubuntu1.2)
I run QEMU like this:
qemu-system-riscv64 -M virt -m 256M -nographic \
-bios ../opensbi/build/platform/generic/firmware/fw_jump.elf \
-kernel <path/to/my/binary>
My code looks like this:
pub fn dump(fdt: &*const u8) {
use dtb_walker::{Dtb, DtbObj, WalkOperation};
let dtb = unsafe { Dtb::from_raw_parts(*fdt) }.unwrap();
...
If I change it to:
pub fn dump(fdt: &*const u8) {
use dtb_walker::{Dtb, DtbObj, WalkOperation};
let dtb = unsafe { Dtb::from_raw_parts_unchecked(*fdt) };
...
It seems to work, since I get a dump of the FDT. Is it possible that this library is compatible with FDT versions older than 16? Maybe you can reduce the number?
If this library is compatible only with 16 or later, what parts don't work with older versions?
Thanks.
I get a panic in
FdtHeader::verify()when using with QEMU and RISC-V virt machine:called 'Result::unwrap()' on an 'Err' value: LastCompVersionwhich occurs at line 60 while checking the header's minimum compatibility version. Note that this is the standard QEMU FDT for the RISC-V
virtmachine.Version info:
I run QEMU like this:
My code looks like this:
If I change it to:
It seems to work, since I get a dump of the FDT. Is it possible that this library is compatible with FDT versions older than 16? Maybe you can reduce the number?
If this library is compatible only with 16 or later, what parts don't work with older versions?
Thanks.