Re: kernel startup
From: Wolfgang Denk <hidden>
Date: 2006-02-11 01:20:29
In message [ref] you wrote:
Not much choice with IMMR as it can be 0x0 or 0x00f00000 or 0xFF000000 Or 0xFFF00000.
Initially. But you can change it.
Flash is from 0xfe000000 thru 0xffffffff. Now on POR, Processor goes to offset 0x100 on CS0. So, if IMMR is overlapping with flash, it might not boot.
Just fix your memory map.
On 870, it seems that reset value for BR0/OR0 is undefined.
Please RTFM. The steps how the processor comes up from reset are documented in great detail. Especially the handling of the boot device chip select.
Data fetch goes on CS0 and then in cpu_init_f BR0 & OR0 Are remapped. So, I could put flash at a non-standard address like 0xDE000000 and move IMMR to 0xFF000000.
There is no such thing as a "non-standard" address, as there is no "standard" address either.
The problem this creates is that I can set IIP to 0 or 1. So, exception Vector prefix can be 0 or 0xfff. Since no flash at 0xfff00000 base Address I cannot have any exceptions in my code till the u-boot code has relocated to RAM. Which should be acceptable as what can I do if there is exception so early in the system.
In most cases it is useful to configure a system for low-boot, i. e.
let it start at 0x0100. Then just set up your memory map as you
like...
Best regards,
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
You don't need a weatherman to know which way the wind blows.
- Bob Dylan