Hi,

I am trying to run ARM FS with ruby. The error I have now is the following:

gem5.debug: build/ARM/mem/ruby/system/RubyPort.cc:418: virtual void
RubyPort::M5Port::recvFunctional(PacketPtr): Assertion
`ruby_port->pio_port.isConnected()' failed.
Program aborted at cycle 0
Aborted

Clearly I messed up some port connection, but I can't find it. I was having
problem in hooking up a dma device, then I think I don't have to use a dma
device (do I?). The following is the class that create an ARM system with
ruby. Can someone please help point out what goes wrong? Thank you.

def makeArmRubySystem(mem_mode, machine_type, mdesc = None, bare_metal =
False):
assert machine_type

if bare_metal:
    self = ArmSystem()
 else:
    self = LinuxArmSystem()

if not mdesc:
    # generic system
    mdesc = SysConfig()

self.readfile = mdesc.script()
 # Create pio bus to connect all device pio ports to rubymem's pio port
 self.piobus = Bus(bus_id=0)

self.mem_mode = mem_mode
 if machine_type == "RealView_PBX":  #default
    self.realview = RealViewPBX()
elif machine_type == "RealView_EB":
    self.realview = RealViewEB()
elif machine_type == "VExpress_ELT":
    self.realview = VExpress_ELT()
else:
    print "Unknown Machine Type"
    sys.exit(1)
    print machine_type

 self.cf0 = CowIdeDisk(driveID='master')
self.cf0.childImage(mdesc.disk())
 # default to an IDE controller rather than a CF one
# assuming we've got one
 try:
    self.realview.ide.disks = [self.cf0]
 except:
    self.realview.cf_ctrl.disks = [self.cf0]

if bare_metal:
    # EOT character on UART will end the simulation
    self.realview.uart.end_on_eot = True
    self.physmem = PhysicalMemory(range = AddrRange(Addr(mdesc.mem())),
      zero = True)
else:
    self.kernel = binary('vmlinux.smp.mouse.arm')
    self.machine_type = machine_type
    if convert.toMemorySize(mdesc.mem()) > int(self.realview.max_mem_size):
print "The currently implemented ARM platforms only support 256MB of DRAM"
 sys.exit(1) # can be removed to explore more memory space
     boot_flags = 'earlyprintk console=ttyAMA0 lpj=19988480 norandmaps ' + \
'rw loglevel=8 mem=%s root=/dev/sda1' % mdesc.mem()

    self.physmem = PhysicalMemory(range =
AddrRange(self.realview.mem_start_addr, size = mdesc.mem()), zero = True)

    self.nvmem = PhysicalMemory(range = AddrRange(Addr('2GB'), size =
'64MB'), zero = True)
    self.nvmem.port = self.piobus.master
    self.boot_loader = binary('boot.arm')
    self.boot_loader_mem = self.nvmem

    self.gic_cpu_addr = self.realview.gic.cpu_addr
    self.flags_addr = self.realview.realview_io.pio_addr + 0x30

    if mdesc.disk().count('android'): # with lower()???
 boot_flags += "init=/init "
    self.boot_osflags = boot_flags

self.physmem.port = self.piobus.master
 # Attach I/ O devices that are on chip
self.realview.gic.pio = self.piobus.master
 self.realview.l2x0_fake.pio = self.piobus.master
self.realview.a9scu.pio = self.piobus.master
 self.realview.local_cpu_timer.pio = self.piobus.master

self.realview.attachIO(self.piobus)
 self.intrctrl = IntrControl()
 self.terminal = Terminal()
self.vncserver = VncServer()
 #self.system_port = self.piobus.slave  # we need this???
 return self

-Tony
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to