Booting mx25 based device from SD and NOR
Sascha Hauer
s.hauer at pengutronix.de
Tue May 29 05:29:58 EDT 2012
On Tue, May 29, 2012 at 11:06:00AM +0200, Roberto Nibali wrote:
> Hi Eric
>
> > >
> > http://git.pengutronix.de/?p=barebox.git;a=blob;f=arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c;h=63e87c9551c440edab572f5252a503ba4d533161;hb=c48de4beee21c3a5573cec084123c33ae08f6f7a
> > > >
> > > >
> > > Now that piece certainly was missing, but how the heck did you find out
> > > those register values? Where did you get the information about writing to
> > > chip select 0 and selecting:
> > >
> > > CSCR0U: 0x00008F03
> > > CSCR0L: 0xA0330D01
> > > CSCR0A: 0x002208C0
> > >
> > you need the reference manual of the i.MX25 to know the meaning of
> > these registers and the datasheet of your flash to know it's timings
> > then you can calculate the value to put in the registers.
> >
> >
> I have found them in an old uboot tree a previous person patched to have
> working support for NOR on boot. The values are:
>
> { .ptr_type = 4, .addr = 0xB8002000, .val = 0x0000D003, },
> { .ptr_type = 4, .addr = 0xB8002004, .val = 0x00330D01, },
> { .ptr_type = 4, .addr = 0xB8002008, .val = 0x00220800, },
Do these values match the ones you read out of the registers using your
U-Boot?
>
> /* Set up 16bit NOR flash on WEIM CS0 */
> writel(0xB8002000, 0x0000D003);
> writel(0xB8002004, 0x00330D01);
> writel(0xB8002008, 0x00220800);
You mixed up the argument order.
>
> board_init_lowlevel_return();
> }
>
> Why can't I printf() from low_level?
Because the console hasn't been setup yet. That's exactly the reason why
I recommend doing only the absolutely necessary stuff in lowlevel_init.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list