[Buildroot] TFTP performance with U-Boot running under QEMU

Jim Thomas jimthomasembedded at yahoo.com
Sun Mar 7 20:28:20 UTC 2010


I think I can help you with a couple of issues here:

  > I have to complain even more:

  > VersatilePB # tftp uImage
  > SMC91111: PHY auto-negotiate timed out
  > SMC91111: MAC 52:54:00:12:34:56
  > Using SMC91111-0 device
  > TFTP from server 192.168.0.10; our IP address is 192.168.0.150
  > Filename 'uImage'.
  > Load address: 0x7fc0
  > Loading: #T T T #T T T T #T T T 
  > Retry count exceeded; starting again
  > SMC91111: PHY auto-negotiate timed out
  > SMC91111: MAC 52:54:00:12:34:56
  > Using SMC91111-0 device
  > TFTP from server 192.168.0.10; our IP address is 192.168.0.150
  > Filename 'uImage'.
  > Load address: 0x7fc0
  > Loading: #T T T #T T T T #T T T 
  > Retry count exceeded; starting again

I encountered both issues last night.

First, the 'PHY auto-negotiate timed out' adds an annoying
delay at startup.  The solution for that is to change a U-Boot
#undef to #define in ./u-boot-2009.11/include/configs/versatile.h:

  #define CONFIG_SMC91111_EXT_PHY

With that change, U-Boot blows right past the PHY at startup.
No delay, and no timeout logged to the console.

Second, the excessive timeouts '#T T T #T T T T # T T T' are exactly
what I observed until long past midnight.  This one took me a while
to figure out, and I had to get lucky just trying things -- I don't
really understand the workaround that seems to solve it.

The IP address of my Ubuntu VM hosting the TFTP server is
192.168.32.133.  When I configured U-Boot to use that IP address, I
got the timeout pattern above and it never ran to completion.  Running
tcpdump on the Ubuntu VM, I could see lots of associated packet activity.

At some point, just trying things, I configured U-Boot to use
192.168.32.140 instead, and suddenly the timeouts went away and the
TFTP download was successful (albeit requiring 80 seconds to complete).

What is 192.168.32.140?  It is the IP address of the TUN interface that
I configure for QEMU in qemu-ifup.sh.  I don't understand (yet) why that
works, whereas using the actual IP address of the Ubuntu VM times out
(although a few TFTP packets get through).

I will include my initial setup notes below.  These are rough-cut.  I
will revise them and repost to the mailing list if I come up with a better
procedure, or a workaround for the slow TFTP transfer from QEMU/U-Boot.

Please note that the procedure below uses an ARM cross-toolchain created
using crosstools-ng.  You should be able to use your own equivalent
toolchain.  (My objective is to get Mark Lindner's commonc++ POSIX framework
library working on Buildroot.  Since commonc++ requires aio.h, and uClibc
does not support async I/O, I am moving towards a crosstools-ng glibc based
toolchain.  I am looking forward to the next Buildroot release where the
roadmap mentions improved support for external crosstools-ng toolchains
for an integrated environment.  In the meantime, I got crosstools-ng and
commonc++ built -- but have not tried a commonc++ hello world program yet.
Ran out of weekend.)

Thanks.

Jim

Sat 6 Mar 2010 / Sun 7 Mar 2010

On the Ubuntu 9.10 Server VM:

  $ sudo apt-get install xinetd
  $ sudo apt-get install tftpd
  $ sudo apt-get install tftp

Create the file /etc/xinetd.d/tftp as root:

  service tftp
  {
    protocol    = udp
    port        = 69
    socket_type = dgram
    wait        = yes
    user        = nobody
    server      = /usr/sbin/in.tftpd
    server_args = -s /tftpboot
    disable     = no
  }

Create tftpboot directory:

  $ sudo mkdir /tftpboot
  $ sudo chmod 777 /tftpboot
  $ sudo chown nobody /tftpboot/

  $ ls -ld /tftpboot
  drwxrwxrwx 2 nobody root 4096 2010-03-06 17:45 /tftpboot

  $ grep nobody /etc/passwd
  nobody:x:65534:65534:nobody:/nonexistent:/bin/sh

Start tftpd using xinetd:

  $ sudo /etc/init.d/xinetd restart
   * Stopping internet superserver xinetd  [ OK ] 
   * Starting internet superserver xinetd  [ OK ] 

Use Buildroot 'make menuconfig' and 'make' to select and build Linux
kernel 'uImage' for U-Boot instead of the usual 'zImage'.  Copy the
new uImage to the /tftpboot directory:

  /tftpboot

  -rw-r--r-- 1 jthomas swdev 1473140 2010-03-07 10:01 uImage

Verify that tftpd is functional by copying uImage to a local tmp directory:

  /home/jthomas/tmp

  $ tftp 192.168.32.133
  tftp> binary
  tftp> get uImage
  Received 1473140 bytes in 0.2 seconds
  tftp> quit

  $ ls -l
  -rw-r--r-- 1 jthomas swdev 1473140 2010-03-07 10:47 uImage

Create a standalone U-Boot build environment independent of Buildroot:

  /home/jthomas/work

  -rw-r--r-- 1 jthomas swdev 8856614 2010-03-07 10:23 u-boot-2009.11.tar.bz2

  $ tar xfj u-boot-2009.11.tar.bz2 

NOTE:  *_EXT_PHY below is to avoid lengthy delay and timeout at U-Boot startup
due to there being no PHY in the QEMU execution environment.

NOTE:  The hard-coded IP addresses below are inflexible, but very convenient
since the U-Boot environment variables need not be manually entered each time.

Customize the U-Boot source for the Versatile platform:

  /home/jthomas/work/u-boot-2009.11/include/configs/versatile.h 

  Modify:

    #define CONFIG_SMC91111_EXT_PHY

    #define CONFIG_BOOTFILE   "uImage"

    #define CONFIG_BOOTARGS   "console=ttyAMA0 mem=128M " \
      "root=/dev/nfs rw nfsroot=192.168.32.133:/home/jthomas/arm-vm/rfs " \
      "ip=192.168.32.150:192.168.32.133:192.168.32.2:255.255.255.0"

  Add:

    #define CONFIG_IPADDR    192.168.32.150
    #define CONFIG_NETMASK   255.255.255.0
    #define CONFIG_SERVERIP  192.168.32.140

Set PATH to toolchain built using crosstools-ng:

  $ export PATH=$PATH:/home/jthomas/x-tools/arm-unknown-linux-gnueabi/bin

Build U-Boot:

  /home/jthomas/work/u-boot-2009.11

  $ make versatile

The build completes in ~2 minutes, and creates:

  /home/jthomas/work/u-boot-2009.11

  -rwxr-xr-x 1 jthomas swdev 91580 2010-03-07 10:36 u-boot.bin

Create script to run U-Boot in QEMU:

  /home/jthomas/arm-vm/run-uboot.sh 

  #!/bin/sh

  TARGET=versatilepb

  CONSOLE=ttyAMA0

  SCRIPT=qemu-ifup.sh

  RFS=~/arm-vm/rfs

  UBOOT=/home/jthomas/work/u-boot-2009.11/u-boot.bin

  QEMU=~/arm-vm/qemu-0.12.3/arm-softmmu/qemu-system-arm

  sudo $QEMU -M $TARGET -nographic \
    -net nic,vlan=0 -net tap,ifname=tap0,script=$SCRIPT \
    -append "console=$CONSOLE" \
    -kernel $UBOOT

Run U-Boot and boot Linux in QEMU VM:

  /home/jthomas/arm-vm

  $ ./run-uboot.sh 

  U-Boot 2009.11 (Mar 07 2010 - 10:34:48)

  DRAM:   0 kB
  ## Unknown FLASH on Bank 1 - Size = 0x00000000 = 0 MB
  Flash:  0 kB
  *** Warning - bad CRC, using default environment

  In:    serial
  Out:   serial
  Err:   serial
  Net:   SMC91111-0
  VersatilePB # 

  VersatilePB # printenv

  bootargs=console=ttyAMA0 mem=128M root=/dev/nfs rw 
    nfsroot=192.168.32.133:/home/jthomas/arm-vm/rfs 
    ip=192.168.32.150:192.168.32.133:192.168.32.2:255.255.255.0
  bootdelay=2
  baudrate=38400
  ipaddr=192.168.32.150
  serverip=192.168.32.140
  netmask=255.255.255.0
  bootfile="uImage"
  stdin=serial
  stdout=serial
  stderr=serial
  verify=n
  ethact=SMC91111-0
  Environment size: 341/8188 bytes

  VersatilePB # tftpboot

  SMC91111: MAC 52:54:00:12:34:56
  Using SMC91111-0 device
  TFTP from server 192.168.32.140; our IP address is 192.168.32.150
  Filename 'uImage'.
  Load address: 0x7fc0
  Loading: #################################################################
           #################################################################
           #################################################################
           #################################################################
           ############################
  done
  Bytes transferred = 1473140 (167a74 hex)

  VersatilePB # bootm

  ## Booting kernel from Legacy Image at 00007fc0 ...
     Image Name:   Linux-2.6.32.9
     Image Type:   ARM Linux Kernel Image (uncompressed)
     Data Size:    1473076 Bytes =  1.4 MB
     Load Address: 00008000
     Entry Point:  00008000
     Loading Kernel Image ... OK
  OK

  Starting kernel ...

  Uncompressing Linux................................... done, booting the kernel.
  Linux version 2.6.32.9 (jthomas at pangaea) (gcc version 4.3.4 (Buildroot 2010.02) )
    #2 Sun Mar 7 09:46:53 CST 2010
  CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00093177
  CPU: VIVT data cache, VIVT instruction cache
  Machine: ARM-Versatile PB
  Memory policy: ECC disabled, Data cache writeback
  Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
  Kernel command line: console=ttyAMA0 mem=128M root=/dev/nfs rw 
    nfsroot=192.168.32.133:/home/jthomas/arm-vm/rfs 
    ip=192.168.32.150:192.168.32.133:192.168.32.2:255.255.255.0
  PID hash table entries: 512 (order: -1, 2048 bytes)
  Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
  Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
  Memory: 128MB = 128MB total
  Memory: 126748KB available (2596K code, 227K data, 108K init, 0K highmem)
  Hierarchical RCU implementation.
  NR_IRQS:192
  VIC @f1140000: id 0x00041190, vendor 0x41
  Console: colour dummy device 80x30
  Calibrating delay loop... 197.83 BogoMIPS (lpj=989184)
  Mount-cache hash table entries: 512
  CPU: Testing write buffer coherency: ok
  NET: Registered protocol family 16
  Serial: AMBA PL011 UART driver
  dev:f1: ttyAMA0 at MMIO 0x101f1000 (irq = 12) is a AMBA/PL011
  console [ttyAMA0] enabled
  dev:f2: ttyAMA1 at MMIO 0x101f2000 (irq = 13) is a AMBA/PL011
  dev:f3: ttyAMA2 at MMIO 0x101f3000 (irq = 14) is a AMBA/PL011
  fpga:09: ttyAMA3 at MMIO 0x10009000 (irq = 38) is a AMBA/PL011
  bio: create slab <bio-0> at 0
  Switching to clocksource timer3
  NET: Registered protocol family 2
  IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
  TCP established hash table entries: 4096 (order: 3, 32768 bytes)
  TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
  TCP: Hash tables configured (established 4096 bind 4096)
  TCP reno registered
  NET: Registered protocol family 1
  RPC: Registered udp transport module.
  RPC: Registered tcp transport module.
  RPC: Registered tcp NFSv4.1 backchannel transport module.
  Installing knfsd (copyright (C) 1996 okir at monad.swb.de).
  JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
  ROMFS MTD (C) 2007 Red Hat, Inc.
  msgmni has been set to 247
  Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
  io scheduler noop registered
  io scheduler anticipatory registered (default)
  io scheduler deadline registered
  io scheduler cfq registered
  CLCD: unknown LCD panel ID 0x00001000, using VGA
  CLCD: Versatile hardware, VGA display
  Console: switching to colour frame buffer device 80x60
  brd: module loaded
  smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico at fluxnic.net>
  eth0: SMC91C11xFD (rev 1) at c8800000 IRQ 25 [nowait]
  eth0: Ethernet addr: 52:54:00:12:34:56
  mice: PS/2 mouse device common for all mice
  TCP cubic registered
  NET: Registered protocol family 17
  VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 0
  input: AT Raw Set 2 keyboard as /devices/fpga:06/serio0/input/input0
  input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:07/serio1/input/input1
  eth0: link up
  IP-Config: Complete:
       device=eth0, addr=192.168.32.150, mask=255.255.255.0, gw=192.168.32.2,
       host=192.168.32.150, domain=, nis-domain=(none),
       bootserver=192.168.32.133, rootserver=192.168.32.133, rootpath=
  Looking up port of RPC 100003/2 on 192.168.32.133
  Looking up port of RPC 100005/1 on 192.168.32.133
  VFS: Mounted root (nfs filesystem) on device 0:11.
  Freeing init memory: 108K
  mount: mounting none on /dev failed: Invalid argument
  mkdir: cannot create directory '/dev/pts': File exists
  mount: mounting tmpfs on /tmp failed: Invalid argument
  mount: mounting configfs on /config failed: No such device
  Initializing random number generator... done.
  Starting network...
  ifup: interface lo already configured
  Getting initial time via ntp.
  Starting network time protocol daemon: ntpd.
  Starting sshd: OK

  Welcome to Buildroot
  buildroot login: root

  # date
  Sun Mar  7 09:56:10 MST 2010

  # halt
  The system is going down NOW!
  Sending SIGTERM to all processes
  Sending SIGKILL to all processes
  Requesting system halt
  System halted.

Enter Ctrl-a-x to exit QEMU:

  QEMU: Terminated
  jthomas at pangaea:~/arm-vm$ 

Modify U-Boot to boot Linux without manual U-Boot command entry.

Customize the U-Boot source for the Versatile platform:

  /home/jthomas/work/u-boot-2009.11/include/configs/versatile.h 

  Modify:

    #define CONFIG_BOOTDELAY  5

  Add:

    #define CONFIG_BOOTCOMMAND "tftpboot; bootm"

Set PATH to toolchain built using crosstools-ng:

  $ export PATH=$PATH:/home/jthomas/x-tools/arm-unknown-linux-gnueabi/bin

Build U-Boot:

  /home/jthomas/work/u-boot-2009.11

  $ make versatile

The build completes in ~2 minutes, and creates:

  /home/jthomas/work/u-boot-2009.11

  -rwxr-xr-x 1 jthomas swdev 91604 2010-03-07 11:13 u-boot.bin

Run U-Boot and boot Linux in QEMU VM.  Verify keyboard intercept counts
down from '5', and U-Boot is intercepted when spacebar is pressed:

  /home/jthomas/arm-vm

  $ ./run-uboot.sh 

  U-Boot 2009.11 (Mar 07 2010 - 11:10:57)

  DRAM:   0 kB
  ## Unknown FLASH on Bank 1 - Size = 0x00000000 = 0 MB
  Flash:  0 kB
  *** Warning - bad CRC, using default environment

  In:    serial
  Out:   serial
  Err:   serial
  Net:   SMC91111-0
  Hit any key to stop autoboot:  0 
  VersatilePB # 

  <Ctrl-a-x>

  QEMU: Terminated
  $

Run U-Boot and boot Linux in QEMU VM.  Verify Linux boots automatically,
without manual entry of U-Boot commands:

  /home/jthomas/arm-vm

  $ ./run-uboot.sh 

  U-Boot 2009.11 (Mar 07 2010 - 11:10:57)

  DRAM:   0 kB
  ## Unknown FLASH on Bank 1 - Size = 0x00000000 = 0 MB
  Flash:  0 kB
  *** Warning - bad CRC, using default environment

  In:    serial
  Out:   serial
  Err:   serial
  Net:   SMC91111-0
  Hit any key to stop autoboot:  0 
  SMC91111: MAC 52:54:00:12:34:56
  Using SMC91111-0 device
  TFTP from server 192.168.32.140; our IP address is 192.168.32.150
  Filename 'uImage'.
  Load address: 0x7fc0
  Loading: #################################################################
           #################################################################
           #################################################################
           #################################################################
           ############################
  done
  Bytes transferred = 1473140 (167a74 hex)
  ## Booting kernel from Legacy Image at 00007fc0 ...
     Image Name:   Linux-2.6.32.9
     Image Type:   ARM Linux Kernel Image (uncompressed)
     Data Size:    1473076 Bytes =  1.4 MB
     Load Address: 00008000
     Entry Point:  00008000
     Loading Kernel Image ... OK
  OK

  Starting kernel ...

  Uncompressing Linux................................... done, booting the kernel.
  Linux version 2.6.32.9 (jthomas at pangaea) (gcc version 4.3.4 (Buildroot 2010.02) )
    #2 Sun Mar 7 09:46:53 CST 2010
  CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00093177
  CPU: VIVT data cache, VIVT instruction cache
  Machine: ARM-Versatile PB
  Memory policy: ECC disabled, Data cache writeback
  Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
  Kernel command line: console=ttyAMA0 mem=128M root=/dev/nfs rw 
    nfsroot=192.168.32.133:/home/jthomas/arm-vm/rfs 
    ip=192.168.32.150:192.168.32.133:192.168.32.2:255.255.255.0
  PID hash table entries: 512 (order: -1, 2048 bytes)
  Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
  Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
  Memory: 128MB = 128MB total
  Memory: 126748KB available (2596K code, 227K data, 108K init, 0K highmem)
  Hierarchical RCU implementation.
  NR_IRQS:192
  VIC @f1140000: id 0x00041190, vendor 0x41
  Console: colour dummy device 80x30
  Calibrating delay loop... 234.29 BogoMIPS (lpj=1171456)
  Mount-cache hash table entries: 512
  CPU: Testing write buffer coherency: ok
  NET: Registered protocol family 16
  Serial: AMBA PL011 UART driver
  dev:f1: ttyAMA0 at MMIO 0x101f1000 (irq = 12) is a AMBA/PL011
  console [ttyAMA0] enabled
  dev:f2: ttyAMA1 at MMIO 0x101f2000 (irq = 13) is a AMBA/PL011
  dev:f3: ttyAMA2 at MMIO 0x101f3000 (irq = 14) is a AMBA/PL011
  fpga:09: ttyAMA3 at MMIO 0x10009000 (irq = 38) is a AMBA/PL011
  bio: create slab <bio-0> at 0
  Switching to clocksource timer3
  NET: Registered protocol family 2
  IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
  TCP established hash table entries: 4096 (order: 3, 32768 bytes)
  TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
  TCP: Hash tables configured (established 4096 bind 4096)
  TCP reno registered
  NET: Registered protocol family 1
  RPC: Registered udp transport module.
  RPC: Registered tcp transport module.
  RPC: Registered tcp NFSv4.1 backchannel transport module.
  Installing knfsd (copyright (C) 1996 okir at monad.swb.de).
  JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
  ROMFS MTD (C) 2007 Red Hat, Inc.
  msgmni has been set to 247
  Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
  io scheduler noop registered
  io scheduler anticipatory registered (default)
  io scheduler deadline registered
  io scheduler cfq registered
  CLCD: unknown LCD panel ID 0x00001000, using VGA
  CLCD: Versatile hardware, VGA display
  Console: switching to colour frame buffer device 80x60
  brd: module loaded
  smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico at fluxnic.net>
  eth0: SMC91C11xFD (rev 1) at c8800000 IRQ 25 [nowait]
  eth0: Ethernet addr: 52:54:00:12:34:56
  mice: PS/2 mouse device common for all mice
  TCP cubic registered
  NET: Registered protocol family 17
  VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 0
  input: AT Raw Set 2 keyboard as /devices/fpga:06/serio0/input/input0
  input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:07/serio1/input/input1
  eth0: link up
  IP-Config: Complete:
       device=eth0, addr=192.168.32.150, mask=255.255.255.0, gw=192.168.32.2,
       host=192.168.32.150, domain=, nis-domain=(none),
       bootserver=192.168.32.133, rootserver=192.168.32.133, rootpath=
  Looking up port of RPC 100003/2 on 192.168.32.133
  Looking up port of RPC 100005/1 on 192.168.32.133
  VFS: Mounted root (nfs filesystem) on device 0:11.
  Freeing init memory: 108K
  mount: mounting none on /dev failed: Invalid argument
  mkdir: cannot create directory '/dev/pts': File exists
  mount: mounting tmpfs on /tmp failed: Invalid argument
  mount: mounting configfs on /config failed: No such device
  Initializing random number generator... done.
  Starting network...
  ifup: interface lo already configured
  Getting initial time via ntp.
  Starting network time protocol daemon: ntpd.
  Starting sshd: OK

  Welcome to Buildroot
  buildroot login: root

  # date
  Sun Mar  7 10:20:42 MST 2010

  # halt
  The system is going down NOW!
  Sending SIGTERM to all processes
  Sending SIGKILL to all processes
  Requesting system halt
  System halted.

  <Ctrl-a-x>

  QEMU: Terminated

It works.  Can run U-Boot in the QEMU VM, and U-Boot loads the Linux kernel
using TFTP and executes it without manual intervention.

However -- The TFTP transfer of the Linux kernel is very time consuming, at
around 80 seconds.  Why so slow?

The QEMU VM is running in the same Ubuntu VM that operates the TFTP server.

Can see in 'top' on the Ubuntu VM that the QEMU process consumes 99% of the
CPU when U-Boot is running in the QEMU VM.  That is probably to be expected,
since U-Boot is a low-level boot loader that runs superloop.

The 99% superloop overhead induced by U-Boot/QEMU probably greatly reduces
the CPU cycles available for TFTP on the Ubuntu VM to respond quickly.

Tried running QEMU/U-Boot with various 'nice' values, without improvement.

Need to explore this further.  Will ask for guidance at the Buildroot mailing
list.






________________________________
From: Drasko DRASKOVIC <drasko.draskovic at gmail.com>
To: Jim Thomas <jimthomasembedded at yahoo.com>
Sent: Sun, March 7, 2010 1:21:15 PM
Subject: Re: [Buildroot] TFTP performance with U-Boot running under QEMU




On Sun, Mar 7, 2010 at 7:19 PM, Jim Thomas <jimthomasembedded at yahoo.com> wrote:
I currently hard-code a few U-Boot environment variables in
>./include/configs/versatile.h.  That is inflexible, but very
>convenient since it eliminates having to manually re-enter the
>IP addresses, kernel parameters, and boot commands manually
>each
> time the QEMU VM and U-Boot are restarted.

Cool idea, and very close to reality. I tried to do the same thing (I saw your very nice instructions, thanks!) 


>
>>It works:
>
>
>  $ ./run-uboot.sh 
>
>
>  U-Boot 2009.11 (Mar 07 2010 - 11:10:57)
>  DRAM:   0 kB
>  ## Unknown FLASH on Bank 1 - Size = 0x00000000 = 0 MB
>>  Flash:  0 kB
>  *** Warning - bad CRC, using default environment
>  In:    serial
>  Out:   serial
>  Err:   serial
>  Net:   SMC91111-0
>  Hit any key to stop autoboot:  0 
>  SMC91111: MAC 52:54:00:12:34:56
>  Using SMC91111-0 device
>  TFTP from server 192.168.32.140; our IP address is 192.168.32.150
>  Filename 'uImage'.
>  Load address:
> 0x7fc0
>  Loading: #################################################################
>           #################################################################
>           #################################################################
>           #################################################################
>           ############################
>  done
But the problem is, the TFTP transfer of
> the 1.4 MB Linux kernel
>takes a full 80 seconds (!) to complete


I have to complain even more:

VersatilePB # tftp uImage
SMC91111: PHY auto-negotiate timed out
SMC91111: MAC 52:54:00:12:34:56
Using SMC91111-0 device
TFTP from server 192.168.0.10; our IP address is 192.168.0.150
Filename 'uImage'.
Load address: 0x7fc0
Loading: #T T T #T T T T #T T T 
Retry count exceeded; starting again
SMC91111: PHY auto-negotiate timed out
SMC91111: MAC 52:54:00:12:34:56
Using SMC91111-0 device
TFTP from server 192.168.0.10; our IP address is 192.168.0.150
Filename 'uImage'.
Load address: 0x7fc0
Loading: #T T T #T T T T #T T T 
Retry count exceeded; starting again
 
 

>
>When U-Boot is idling at the U-Boot prompt in the QEMU VM, I can
>see by running 'top' in another terminal session in the Ubuntu VM
>that hosts the QEMU VM that the QEMU VM is consuming 99% of the CPU.

Same thing here... Even ping takes 20 seconds. Something is fishy in NetLoop.
 

>
>Have you observed this same slow TFTP file transfer under QEMU?
>Is there any known
> workaround?

I would like to know this also. 


      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20100307/aec3dc4e/attachment.html>


More information about the buildroot mailing list