On Wed, 31 Jul 2013 15:49:03 +0200, Jakub Klama wrote:
After looking in u-boot sources and qemu trace I've found the issue: u-boot relies on AMBA Plug&Play to locate peripherals registers windows and qemu lacks support for AMBA P&P. u-boot hangs in cpu/leon3/cpu_init.c:80 after
failing to find APB master P&P information.

* Trace output: http://wklej.org/hash/7079dfdf93a/txt/
* u-boot objdump part: http://wklej.org/hash/3d16120acf1/txt/

I think that the easiest (but not the best) way to actually run u-boot
on qemu is to modify u-boot code by hardcoding interrupt controller,
timers and UART addresses and completely remove parts of code related
to MCTRL and SDRAM controller initialization.

Update: I actually tried it:
* Commented out code related to AMBA P&P discovery and memory
  controllers initialization
* Hardcoded apbuart, gptimer and irqmp addresses
* Changed ASI 1 loads to plain loads in abpuart code
* Commented out cpu_wait_ticks() body

And it worked: http://wklej.org/hash/11c8d022d91/txt/

So, qemu is generally usable as development platform, but has
following shortcomings:

* No ASI 0x01 (ASI_CACHEMISS) support
* As previously stated, no AMBA P&P which is present on real
  hardware
* No support for other IP-Cores such as GRUSB, GRETH, mass
  storage controllers, etc.
* Different from real hardware.

I think that qemu is great debugging tool and it's desirable
to support qemu target, but it can't replace real hardware
completely in development process.

Jakub

_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/listinfo/helenos-devel

Reply via email to