[U-Boot] Need FTP client support in U-Boot

Antony Pavlov antonynpavlov at gmail.com
Fri Oct 31 09:35:18 CET 2014


On Thu, 30 Oct 2014 08:08:44 +0100
Gilles Chanteperdrix <gilles.chanteperdrix at xenomai.org> wrote:

> On Wed, Oct 29, 2014 at 03:49:15PM +0100, Wolfgang Denk wrote:
> > Dear Madhu,
> > 
> > In message <23c3598d8b87452eb6a3d1f52afb8a34 at SG2PR01MB0394.apcprd01.prod.exchangelabs.com> you wrote:
> > > 
> > > We are looking for FTP client command in U-boot commands, So that, we
> > > can boot the O.S kernel-image through ftp-client(instead of tftpboot
> > > over network).
> > 
> > It would have been usful if you had told us whyyou thing the existing
> > network protocols (TFTP, NFS) are not sufficient for your use cases?
> 
> Hi Wolfgang,
> 
> if you do not mind me interfering, I have started using HTTP with
> pxelinux recently, and I can answer this question: for large files
> (such as large initramfs files,  which are practical nowadays since
> even some embedded boards have gigabytes of RAM), TCP based
> protocols are much, much faster than TFTP. That is because TFTP is a
> request/response protocol, which takes one round trip time for every
> packet asked. TCP based protocols, on the other hand benefit from
> sending several packets before getting an acknowledge, which means
> there is a "pipelining" effect.

Hmm.

low speed of TFTP protocol in U-boot is not a problem of TFTP protocol itself,
but problem of TFTP protocol setup.

Here is a trivial 16 MiB file transfer benchmark via GbE network.
I use tftp client from busybox package on my linux host. 

$ time busybox tftp -g -r antony/16M -l 16M tftpserver
antony/16M           100% |******************************************| 16384k  0:00:00 ETA

real    0m6.724s
user    0m0.076s
sys     0m0.532s

$ time busybox tftp -g -r antony/16M -l 16M berta -b 64000
antony/16M           100% |******************************************| 16384k  0:00:00 ETA

real    0m0.229s
user    0m0.000s
sys     0m0.040s

$ ls -la 16M 
-rw-r--r-- 1 antony antony 16777216 Oct 31 12:17 16M

So default busybox tftp setup give us only  2.3 MiB
while huge transfer block setup give us nearly 70 MiB!

> 
> > 
> > > Why doesn't the U-boot support FTP client ?
> > 
> > FTP is based on TCP/IP, but U-Boot implements just a very minimal set
> > of UDP based protocols.
> > 
> > > Can we implement/add the FTP client protocol code to U-boot sources
> > > and customize. if so, how much work activity involved in this ?
> > > 
> > > Is this just need to write a small ftp-client program file by using
> > > TCP stream sockets (as like in Linux) ? Or do we need to write up
> > > anything more like TCP/IP network stack..
> > 
> > Right, in the first step you would need to implement a full-blown
> > TCP/IP stack, which would most probably require some other deep-goig
> > changes (keep for example in mind that U-Boot is [intentionally]
> > strictly single-threaded; many implementations don't even support
> > interrupts).
> > 
> > The big question is: why should we do that?  U-Boot is a boot loader.
> > If you need OS functionality like a full-blown network stack, than
> > just boot an OS ...
> 
> It seems some bootloader or x86 PXE (I do not know where it is
> implemented) have TCP support. So, that may not be that uncommon
> after all, and there is maybe even some code to take from these
> implementations, because they are also most probably single threaded
> and not using interrupts.
> 
> Regards.
> 
> -- 
> 					    Gilles.
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot


-- 
-- 
Best regards,
  Antony Pavlov


More information about the U-Boot mailing list