[U-Boot] Ethernet persistence
Scott Wood
scottwood at freescale.com
Fri Feb 28 18:33:15 CET 2014
On Fri, 2014-02-28 at 07:24 -0700, Simon Glass wrote:
> Hi Anthony,
>
> On 27 February 2014 09:09, Anthony Mahar <anthony.j.mahar at gmail.com> wrote:
>
> > How can I make the ethernet connection persistent (after first use), rather
> > than reconnecting/re initializing on each reuse?
> >
> > I'm working with a Xilinx Zynq zc706 board and am up and running u-boot
> > quite successfully. My main use case is to store u-boot in on-board flash,
> > and have u-boot tftp get / boot the bitstream, kernel image, devicetree,
> > and
> > ramdisk image. The following script functions well:
> > "qspiboot=echo Configure PL and booting Linux from TFTP... && " \
> > "fpga info 0;"
> > \
> > "tftp 0x1000000 system.bin;"
> > \
> > "fpga load 0 0x1000000 cb44bc;" \
> > "tftp 0x3000000 ${kernel_image};" \
> > "tftp 0x2A00000 ${devicetree_image};" \
> > "tftp 0x2000000 ${ramdisk_image};" \
> > "bootm 0x3000000 0x2000000 0x2A00000\0" \
> >
> >
> > The ethernet (Zynq's gem.e000b000) will get initialized on first use, as
> > appropriate, however the Ethernet is reinitialized and auto negotiated
> > again
> > for each subsequent tftp request which shouldn't be necessary. A snippet
> > is
> > listed below. Each 'reconnection' takes several seconds... a few to auto
> > negotiate, then a few more for the Windows based TFTP server to recognize
> > the connection and allow connections to the server. Multiply this by the
> > number of transfers and it takes a very long time to transfer a very little
> > amount of data.
> >
>
> Yes as Michal says you should use FIT and put everything in one file, or
> less than 4. I'm not sure if we have a command to load your FPGA image from
> FIT though. We could add one fairly easily now that we have
> fit_image_load().
FIT is not particularly convenient when repeatedly updating a single
component, and requires more work to assemble. I thought it was meant
to replace old-style multi-image, not to deprecate individual images.
> Also take a look at asix_init() in drivers/usb/eth, which does not re-init
> the link if it is already up. This speeds things up.
So the question is why other ethernet drivers don't do this...
-Scott
More information about the U-Boot
mailing list