[U-Boot] [patch] csb337 board support (ARM at91rm9200)

David Brownell david-b at pacbell.net
Mon Jun 29 08:20:51 CEST 2009


On Thursday 25 June 2009, Jean-Christophe PLAGNIOL-VILLARD wrote:
> On 14:58 Fri 12 Jun     , David Brownell wrote:
> > Add support for csb337, an older at91rm9200 board.  These boards
> > originally shipped with MicroMonitor, not U-Boot.  This config
> > supports boot from Ethernet, and talks over I2C and console.
> > 
> > Open issues:
> >   - Console refuses to start at 115200 baud, and misbehaves if it's
> >     later changed to that speed.  So, use 38400 (like MicroMonitor).
>
> A co-worker report me the same problem for the csb637 under uMON
> after trying U-Boot it's work fine
> I think there is a problem in the clock configuration
> I'll take a look later

Hmm, could be.  This replicates the original clock settings
and DRAM timings.  DRAM is underclocked -- could be another
20 MHz faster or so (use divide-by-3 not divide-by-4).  But
changing that would mean re-computing *all* memory timings.

And I don't think I have copies of that old Strataflash
stuff any more...


> >   - USB didn't work; the software wouldn't detect usb-storage devices.
> >     So it's not yet enabled.
>
> what is the power on the USB?

I don't understand the question.  5V of course.  Not switchable.

 
> >   - There seems to be some issue copying lots of data from NOR flash.
> >     It works OK in chunks of up to 512 KB or so, but copying a kernel
> >     (1.4 MB) failed ... copying *way* over 15 MBytes, and trashing
> >     the DRAM image of U-Boot that was running.  (Compiler issue?)
>
> Clock issue ot RAM timing issue

Doesn't quite make sense.  Something clobbered a termination
condition, which would be in a register, or at worst in cache.

How would RAM timing cause breakage?  The data copied was
correct, in smaller chunks, and the termination condition
wasn't stored in RAM.  Or a clock issue, considering all the
relevant cycles are inside the arm920t core?

I like the "compiler issue" theory better.  :(

 
> >  board/csb337/u-boot.lds  |   56 +++++++++++
>
> no need please remove

In mainline u-boot it seems to be needed.  Can you maybe push your
first set of patches to Wolfgang, which consolidate all
that stuff?


> > +#if defined(CONFIG_DRIVER_ETHER) && defined(CONFIG_CMD_NET)
> it will be better ot manage this in the config header

You mean by defining an otherwise needless symbol,
along the lines of CONFIG_SYS_AT91RM9200_LXT_PHY?

Probably simpler just always include those few lines,
and not support building without Ethernet.


> > +
> > +/* The AT91 lxt972 glue modified the original lxt971 code by
> > + * changing names and generalizing a bit.  So we use "lxt972"
> > + * names here even though the CSB337 has an lxt971 chip.
> > + */
> > +extern unsigned char lxt972_InitPhy(AT91S_EMAC *mac);
> > +extern unsigned lxt972_IsPhyConnected(AT91S_EMAC *mac);
> > +extern unsigned char lxt972_GetLinkSpeed(AT91S_EMAC *mac);
> > +extern unsigned char lxt972_AutoNegotiate(AT91S_EMAC *mac, int *status);
> :(
> please a header

I'll stick it in hardware.h ... you can remove similar decls
from other rm9200 boards then.

> > +
> > +#if 0
> please 
> if CONFIG_CMD_USB
> > +/* REVISIT:  USB failed to enumerate devices of any kind ... sw issues */

An #if 0 won't work without completely re-whacking things.

Right now the commands kick in *MUCH LATER* depending on
whether the driver is available.  And here, the driver
(CONFIG_USB_OHCI_NEW driver) and its support is disabled
since it's not working...

> > +
> > +/* allow loading from USB media */
> > +#define CONFIG_USB_OHCI_NEW
> > +#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	2
> > +#define CONFIG_SYS_USB_OHCI_REGS_BASE		AT91_USB_HOST_BASE
> > +#define CONFIG_SYS_USB_OHCI_SLOT_NAME		"at91-ohci"
> > +#define CONFIG_USB_STORAGE
> > +#endif
> > +
> > +/* I2C, RTC */
> > +#define CONFIG_HARD_I2C
> > +#define CONFIG_SYS_I2C_SPEED	100000
> > +#define CONFIG_SYS_I2C_SLAVE	0x08		/* SMBus host address */
> > +
> > +#define CONFIG_RTC_DS1307
> > +
> > +/* basic commands; and ones that need driver support */
> > +#include <config_cmd_default.h>

... and commands get configured starting here.



More information about the U-Boot mailing list