Hi,
I am trying to get Linux on an OMAP-based board developed inhouse, and immediately ran into a problem when trying to get the boot steps x-loader+u-boot into place.
I have adapted them and can run both of them via Lauterbach, but I am having a problem with one line in the x-loader code that I don't really understand. I have taken x-loader from the omapzoom wiki, and figured it should be easy enough to run this on our board.
However, when I step through the initial code in the x-loader using Lauterbach the program always crashes in the same place. In the routine cpu_init_crit in cpu/omap3/start.S there is a cryptical statement which makes the processor crash every time I pass it:
----------------------------------------------------------------------------------------
cpu_init_crit:
/*
* Invalidate L1 I/D
*/
mov r0, #0 /* set up for MCR */
mcr p15, 0, r0, c8, c7, 0 /* invalidate TLBs */
mcr p15, 0, r0, c7, c5, 1 /* invalidate icache */
/* Invalide L2 cache (gp device call point)
* - warning, this may have issues on EMU/HS devices
* this call can corrupt r0-r5
*/
mov r12, #0x1 @ set up to invalide L2
smi: .word 0xE1600070 @ Call SMI monitor <---- Crash statement
/*
* disable MMU stuff and caches
*/
----------------------------------------------------------------------------------------
As I understand this statement it has something to do with L2-cache. If I skip this statement in Lauterbach the rest of the loader runs fine.
Does anyone have any idea why this crashes for me? My CPU is a OMAP3430 ES2.0.
Could this be related to Lauterbach only? I was planning to boot from SD card but haven't been able to try these steps out yet.
Thanks!
-Magnus