That’s great!
FYI, overriding the getAddrRanges is not strictly needed if the BasicPioDevice
is correctly initialised. That basically means initialising pioAddr and pioSize
member variables:
https://github.com/gem5/gem5/blob/stable/src/dev/io_device.cc#L81
I am telling you this as while you
Hi Giacomo,
Thanks again for the suggestion. I was able to solve the issue -- it turns out
I forgot to implement getAddrRanges!
For the record (and in case someone in the future runs into the same issue), I
had to add the following in cus_device.hh under the class definition:
Yes apologies, I now realize your range was already covered in the existing
_off_chip_ranges list
I’d recommend you to debug with gdb what is returned by the
CusDevice::getAddrRanges method. It gets called by the xbar and it effectively
registers the device pio range in the interconnect map.
Hi Giacomo,
Thank you for the suggestion. I added the address range to the
_off_chip_devices list as suggested, and confirmed the address range is present
in the config.ini:
[system.bridge]
type=Bridge
…
ranges=201326592:268566527 268566528:268570624 268570625:536870912
788529152:2147483647
Hi Joshua.
You probably need to add the physical address range of your device to the
_off_chip_ranges list [1]. This will be assigned to the membus->iobus bridge so
that when the membus receives the cpu packet, it knows it must forward it to
the io bridge
Let me know if this works
Kind