[U-Boot] Strange / Unreadable console output
Markus Hubig
mhubig at imko.de
Mon Aug 13 13:17:39 CEST 2012
On Sat, Aug 11, 2012 at 08:15:43AM -0400, Jerry Van Baren wrote:
> On 07/27/2012 05:16 AM, Markus Hubig wrote:
> > one minor Problem I often read about in this list is some crappy / unreadable
> > console output at beginning of the U-Boot start procedure. Now I have the same
> > "visual" Problem.
> >
> > | H�NAND: 128 MiB
> > | *** Warning - bad CRC, using default environment
> > |
> > | In: serial
> > | Out: serial
> > | Err: serial
> > | Net: macb0
> > | macb0: Starting autonegotiation...
> > | macb0: Autonegotiation timed out (status=0x7849)
> > | macb0: link down (status: 0x7849)
> > | Hit any key to stop autoboot: 0
> > | ...
> >
> > Sometimes I get a good readable output, which looks like so:
> >
> > | U-Boot 2012.04.01-00003-gab465ef-dirty (Jul 23 2012 - 14:44:29)
> > |
> > | U-Boot code: 23F00000 -> 23F30464 BSS: -> 23F72128
> > | CPU: AT91SAM9G20
> > | Crystal frequency: 18.432 MHz
> > | CPU clock : 396.288 MHz
> > | Master clock : 132.096 MHz
> > | RAM Configuration:
> > | Bank #0: 20000000 64 MiB
> > | WARNING: Caches not enabled
> > | NAND: 128 MiB
> > | ...
> >
> > Has anyone an idea how to fix this?
>
> No. :-)
Damn! :-)
> > Or what's the cause of it?
>
> The UART is being mishandled, either directly or indirectly, e.g. due to
> caching issues or maybe the UART block isn't configured properly.
>
> > Is it even related to u-boot or is it something at91bootstrap is
> > doing wrong?
>
> Yes. :-)
>
> Questions / observations:
> 1) When the output is garbled, is it always associated with the line
> "*** Warning - bad CRC, using default environment" and not garbled if
> the environment is OK? That would indicate it is a configuration issue
> with the default environment. It could also indicate a caching problem
> (see next), where your environment is obscured by an enabled cache.
No. I get the CRC Warning only after I completly delete the NAND. After
a 'saveenv' this warning is gone but my output is garbled.
> 2) The line before the garbled output becomes readable is "WARNING:
> Caches not enabled". Does (your) at91bootstrap enable caches? If so,
> does it disable them before jumping to u-boot? When the output is
> garbled, does it say "WARNING: Caches not enabled" or is that line
> missing???
Hmm the only reverence I found related to caches in the at91bootstrap
code I use (https://bitbucket.org/imko/at91bootstrap) is in crt0_gnu.S.
There are some lines disabling the cache but only if I enable Thump
support, which I don't ... but I'll try this.
> A classic way for UARTs to be garbled is to inadvertently cache their
> registers. This shows up on start up because typically caching is "all
> or nothing" until the MMU is fully configured (MMU configuration is
> complex).
OK. But is enabling the caches in context of u-boot/bootstrap generally
a good thing to do?
> When your program reads the "TxReady" flag, in this scenario it gets a
> cached value of the status register that a always says "ready" even
> though the hardware isn't ready at all. The result is all bytes get
> immediately crammed into the Tx register, overwriting the previous byte
> and garbling it.
>
> If you get lucky and the UART status register isn't cached (or is cached
> "not ready" but the Tx routine has a timeout so it writes the byte to
> the Tx register anyway), the UART works properly and the output isn't
> garbled.
OK good to know, I'm running a bit out of time at the moment course of
my thesis, but I'll definitely will have a look at this in detail when
I'm finished.
Cheers, Markus
More information about the U-Boot
mailing list