This is the mail archive of the
mailing list for the eCos project.
Re: RedBoot patches regarding redboot_getc_terminate
- From: David Vrabel <dvrabel at arcom dot com>
- To: "Doyle, Patrick" <Patrick_Doyle at dtccom dot com>
- Cc: 'Andrew Lunn' <andrew at lunn dot ch>, "'ecos-devel at sources dot redhat dot com'" <ecos-devel at sources dot redhat dot com>, 'Andrew Dyer' <adyer at righthandtech dot com>
- Date: Thu, 18 May 2006 15:59:53 +0100
- Subject: Re: RedBoot patches regarding redboot_getc_terminate
- References: <F7F756E5ED50F345959AE893AD2F15660A222D@dtcsrvr09.dtccom.com>
Doyle, Patrick wrote:
>> What happens to TFTP transfers with your change? Are they terminated
>> gracefully? Or do they hang around until the server times out and
>> kills them?
> Unfortunately, I don't have any means to check that. Which is why I brought
> it up as a topic for discussion. Then I realized that it would be easier to
> discuss if somebody who _did_ have a means to check that checked that, which
> led to me posting the patch :-)
> IIRC, a TFTP server will keep spewing out packets until it has sent the
> whole file, and will retry and retransmit if the client stops responding.
> So, it guess it depends on what the TFTP transport stream (implemented in
> code somewhere in RedBoot) does when it gets a "terminate" call that isn't
> an abort...
> Hmmm... looking at the code, I see something that looks like:
> if (abort)
> which looks to me like TFTP folks would be getting some sort of similar
> error message for TFTP transfers.
> I wonder why I'm the only one whose noticed this? (he asks in a plaintive,
> "why do these things always happen to me" voice)
No. I noticed (or rather a customer did) but didn't have time to really
look at it or implement a solution. I guess I should have a least
mentioned it though. Sorry.
I don't think your patch does the correct thing wrt TFTP transfers since
we're back to the original situation of TFTP connections remaining open
Here's a snippet from our internal bug tracker wrt lingering TFTP
"When loading ELF images using TFTP RedBoot fails to ACK the last
received data block. This causes the server to timeout and retransmit
the last data block several times. See attached packet captures for details.
This can cause problems with lame TFTP servers (like tftpd32 for
Windows) that can only handle one transfer at a time.
The ELF image used in testing had a trailing .comment section which
RedBoot isn't interested in so it stopped reading data from the TFTP
stream and hence didn't ack subsequent data blocks (I don't think it
even reads them from the network).
I'd suggest stripping unneeded sections from eCos/RedBoot ELF images. e.g.,
$ arm-elf-string --remove-section=.comment foo.elf
I'm not entirely happy with the fix. It terminates the download when all
the relevant bits of the ELF have been transferred. The causes the
sender to think that the file transfer has failed which causes some
I think a better solution would be for the downloader to continue to
transfer the remaining portions of the ELF image and just throw them away."
Perhaps it's best to revert the fix for the lingering TFTP connections
and note instead that ELFs really need all unneccesary sections stripped
before transferring to the target? At least until a complete solution
(e.g., my suggested solution in the paragraph above) has been implemented.
ps. If possible, attach patches as text/plain so people can easily read
them in their mail readers. Thanks. Sticking a .txt extension at the
end of the file name may do the trick if you're using a lame mail client
that doesn't recognize patches as text/plain.
David Vrabel, Design Engineer
Arcom, Clifton Road Tel: +44 (0)1223 411200 ext. 3233
Cambridge CB1 7EA, UK Web: http://www.arcom.com/