On Thu, 30 Oct 2014 08:08:44 +0100 Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> wrote:
> On Wed, Oct 29, 2014 at 03:49:15PM +0100, Wolfgang Denk wrote: > > Dear Madhu, > > > > In message > > <23c3598d8b87452eb6a3d1f52afb8...@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@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot -- -- Best regards, Antony Pavlov _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot