[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