Hi all,
I am trying to run an ARM full system simulation with a BasicPioDevice added
onto the RealView Platform. I am interested in interfacing it via ioremap.
The device is set up like so in src/dev/arm/RealView.py (with the necessary C++
header/implementation files):
class CusDevice(BasicPioDevice):
type = ‘CusDevice’
cxx_header = "dev/arm/cus_device.hh”
pio_addr = Param.Addr(0x10020000, "Address for custom device.”)
I then added it to the list of off-chip devices in RealView.py so it would be
attached to the iobus, which is confirmed in the config.ini file:
[system.realview.cus_device]
type=CusDevice
…
pio_addr=268566528
pio_latency=100000
power_model=
system=system
pio=system.iobus.master[9]
Then to access this device, I am using a kernel module that calls ioremap on
the device’s address. Ideally I want to read/write from /dev/cus_device to
access it, but this is where I run into the fatal error:
root@aarch64-gem5:~/# echo h | /dev/cus_device
fatal: Unable to find destination for [0x10020000 : 0x10020000] on system.iobus
I have already confirmed that 0x10020000 is within an IO memory region (more
specifically, 0x10000000-0x13ffffff are reserved for gem5-specific peripherals
but only 0x10000000-0x1001ffff are actually used before adding the custom
device). In case it is relevant, I am using the Linux 5.4.0 kernel with an
Ubuntu 18.04 LTS image.
Accessing the custom device at address 0x10020000 on the iobus is the precise
goal, so given that writing to /dev/cus_device tries to write data to the
correct address on the iobus, and I know cus_device.pio is attached to the
iobus.master with the correct address, I am not sure why gem5 is unable to find
the destination. Any ideas on how to approach this issue would be greatly
appreciated.
Best regards,
Joshua Klein
_______________________________________________
gem5-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s