03/16/2009 1:23 AM
i.MX31PDK IPL and MMU initialisation for MBX (3D acceleration).
I am posting this query in the graphics forum and it is a continuation of the thread I started on the BSP forum:
To give some background I will repeat most of the information from the above mentioned thread.
I have been writing my own IPL for the i.MX31PDK booting out of NAND flash. I have based my code on mostly the i.MX31
Linux UBOOT code and the Redboot code, together with the i.MX21 and i.MX35 QNX BSP IPL.
So far the IPL can find the QNX image in NAND, load it into RAM and execute it. QNX itself starts successfully without
any errors and everything runs well, however I cannot run any graphics applications that utilise the MBX/3D hardware
accelerator of the i.MX31.
After QNX has started, I try running egl-gear and get the following response:
gf_dev_attach(): No error
Examining SLOG there is the following error message:
Time Sev Major Minor Args
Jan 01 00:00:06 6 8 0 MMU didn't initialize! (0)
Now to confirm that the problem it is in relation to the MBX core I tried replacing the graphics driver with a version
that does not utilise the hardware acceleration (a modified copy of the i.MX35 graphics driver) and ran the graphics
demo egl-gears-lite and it ran successfully.
My IPL does not perform any MMU initialisation (as per the i.MX35 IPL) and I have changed the QNX startup program to
force MMU initialisation, plus I have hard-coded the startup program to reserve memory for the MBX core by adding the
following line to init_system_private.c:
jtag_reserve_memory(0x86000000, 0x02000000, 1);
This should be the same as passing the startup parameter "-r0x86000000,0x02000000,1"
Also I am starting the binary mx31pdk_lcd_init within my bootup script so that should be fine. If I replace just my IPL
with Redboot in NAND (...maintaining the same copy of the QNX OS image) then everything works well, including egl-gears
It has been mentioned that another customer observed a similar problem when writing an IPL for the Logic PD iMX31 Lite-
Kit and traced it back to lack of configuring the WEIM. Following this lead I have noticed that Redboot typically sets
up the WEIM controller for CS5, while the U-Boot (NAND-Boot) bootloader configures the WEIM for CS4.
Additionally the RealView ICE JTAG script provided by Freescale for the ADS & PDK boards configures the WEIM controller
for CS5 however with different values. So far I have tried all combinations however my problem still remains (starting
egl-gears generates the MMU not initialised error). I am not sure what parameters the Logic bootloader uses to try that
Does anyone know why egl-gears throws a MMU not initialised error and what the IPL may need to set-up to fix this? Any
help or suggestions on what to try next would be greatly appreciated.