[PATCH] Added -j option to kwboot to allow just sending the boot preamble
Matthew Minter
matthew_minter at xyratex.com
Thu Nov 21 10:58:47 EST 2013
Hi,
Apologies if there are any mistake in the following, this is the first
time I have used git to provide a patch (I generally use different SCM
software) but I hope everything is correct.
This patch provides an additional feature to the kwboot script,
specifically adding the -j option to send the boot preamble then exit
so that another Xmodem program can send a boot image.
This has a number of uses where special features are needed in the
xmodem software, in my case this is specifically because the
transmission is going through a non transparent serial switch which
causes the Xmodem data to become damaged (though is fine for normal
serial communications and the boot preamble), however I have software
to work around this but that software cannot be used with the built in
kwboot Xmodem software and has it's own Xmodem capability. I would not
remotely expect kwboot to cover this or any other edge case as it is
very nice having the code simple and readable but this feature
provides a good compromise to allow the feature to be provided
externally.
Patch follows (appologies for the bogus time stamp, the real time
clock in my computer is acting up):
>From 7b4c084251897f8bd571890d4a877680ad7debdb Mon Sep 17 00:00:00 2001
From: Matthew Minter <matthew_minter at xyratex.com>
Date: Thu, 21 Nov 2013 15:43:18 +0000
Subject: [PATCH] Added -j option to kwboot to allow just sending the
boot preamble
---
scripts/kwboot.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/scripts/kwboot.c b/scripts/kwboot.c
index 33c94b3..e62c242 100644
--- a/scripts/kwboot.c
+++ b/scripts/kwboot.c
@@ -587,13 +587,15 @@ static void
kwboot_usage(FILE *stream, char *progname)
{
fprintf(stream,
- "Usage: %s [-d | -b <image> | -D <image> ] [ -t ] [-B <baud>
] <TTY>\n",
+ "Usage: %s [-d | -b <image> | -D <image> | -j ] [ -t ] [-B
<baud> ] <TTY>\n",
progname);
fprintf(stream, "\n");
fprintf(stream,
" -b <image>: boot <image> with preamble (Kirkwood, Armada
370/XP)\n");
fprintf(stream,
" -D <image>: boot <image> without preamble (Dove)\n");
+ fprintf(stream,
+ " -j: just send the boot preamble but do not send
any image\n");
fprintf(stream, " -d: enter debug mode\n");
fprintf(stream, "\n");
fprintf(stream, " -t: mini terminal\n");
@@ -626,7 +628,7 @@ main(int argc, char **argv)
kwboot_verbose = isatty(STDOUT_FILENO);
do {
- int c = getopt(argc, argv, "hb:dtB:D:");
+ int c = getopt(argc, argv, "jhb:dtB:D:");
if (c < 0)
break;
@@ -636,6 +638,10 @@ main(int argc, char **argv)
imgpath = optarg;
break;
+ case 'j':
+ bootmsg = kwboot_msg_boot;
+ break;
+
case 'D':
bootmsg = NULL;
imgpath = optarg;
--
1.7.1
On 21 November 2013 14:01, Thomas Petazzoni
<thomas.petazzoni at free-electrons.com> wrote:
> Dear Matthew Minter,
>
> Cc'ing Sebastian Hesselbarth, who has also worked on kwboot.
>
> On Tue, 19 Nov 2013 16:48:25 +0000, Matthew Minter wrote:
>
>> I was not sure this is the correct list to send this to, however when
>> using the included kwboot utility to bootstrap a Marvell Armada XP
>> board I quickly noticed it was missing a useful feature, the ability
>> to send the boot preamble without sending a boot image afterwards.
>> This was useful to me as my configuration required an xmodem program
>> with special features, not available in the useful but very light
>> included one.
>>
>> As such I have written a patch which adds the -j option. This allows
>> behaviour similar to the -b option except kwboot exits just before the
>> actual xmodem transfer, allowing another xmodem program to take over
>> and send the boot file.
>>
>> I think this may be of use to others bootstrapping Armada XP based
>> systems so attach this patch to the end of my post.
>
> The feature looks ok to me. Can you submit a proper patch (i.e a git
> patch, with description and Signed-off-by line) ?
>
> Just curious, which features does your xmodem program provides that
> this light tool doesn't? It might be interesting to know that, just to
> see what use cases kwboot isn't covering.
>
> Thanks!
>
> Thomas
>
>> --- barebox/scripts/kwboot.c.old 2013-11-19 16:37:04.717255752
>> +0000 +++ barebox/scripts/kwboot.c 2013-11-19 16:38:36.573351680
>> +0000 @@ -587,13 +587,15 @@
>> kwboot_usage(FILE *stream, char *progname)
>> {
>> fprintf(stream,
>> - "Usage: %s [-d | -b <image> | -D <image> ] [ -t ] [-B <baud>
>> ] <TTY>\n",
>> + "Usage: %s [-d | -b <image> | -D <image> | -j ] [ -t ] [-B
>> <baud> ] <TTY>\n",
>> progname);
>> fprintf(stream, "\n");
>> fprintf(stream,
>> " -b <image>: boot <image> with preamble (Kirkwood, Armada
>> 370/XP)\n");
>> fprintf(stream,
>> " -D <image>: boot <image> without preamble (Dove)\n");
>> + fprintf(stream,
>> + " -j: just send the boot preamble but do not send
>> any image\n");
>> fprintf(stream, " -d: enter debug mode\n");
>> fprintf(stream, "\n");
>> fprintf(stream, " -t: mini terminal\n");
>> @@ -626,7 +628,7 @@
>> kwboot_verbose = isatty(STDOUT_FILENO);
>>
>> do {
>> - int c = getopt(argc, argv, "hb:dtB:D:");
>> + int c = getopt(argc, argv, "jhb:dtB:D:");
>> if (c < 0)
>> break;
>>
>> @@ -636,6 +638,10 @@
>> imgpath = optarg;
>> break;
>>
>> + case 'j':
>> + bootmsg = kwboot_msg_boot;
>> + break;
>> +
>> case 'D':
>> bootmsg = NULL;
>> imgpath = optarg;
>>
>
>
>
> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com
--
------------------------------
For additional information including the registered office and the treatment of Xyratex confidential information please visit www.xyratex.com
------------------------------
More information about the barebox
mailing list