Skip to content

Commit

Permalink
kwboot: Boot Marvell Kirkwood SoCs over a serial link.
Browse files Browse the repository at this point in the history
The kwboot program boots boards based on Marvell's Kirkwood platform
via Xmodem over their integrated UART.

Signed-off-by: Daniel Stodden <daniel.stodden@googlemail.com>
  • Loading branch information
Daniel Stodden committed Apr 22, 2012
1 parent 2790bf6 commit b5cd810
Show file tree
Hide file tree
Showing 3 changed files with 840 additions and 0 deletions.
84 changes: 84 additions & 0 deletions doc/kwboot.1
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
.TH KWBOOT 1 "2012-03-05"

.SH NAME
kwboot \- Boot Marvell Kirkwood SoCs over a serial link.
.SH SYNOPSIS
.B kwboot
.RB [ "-b \fIimage\fP" ]
.RB [ "-t" ]
.RB [...]
.RB [\fITTY\fP]
.SH "DESCRIPTION"

The
.B kwboot
program boots boards based on Marvell's Kirkwood platform over their
integrated UART. Boot image files will typically contain a second
stage boot loader, such as U-Boot. The image file must conform to
Marvell's BootROM firmware image format (\fIkwbimage\fP), created
using a tool such as
.B mkimage.

Following power-up or a system reset, system BootROM code polls the
UART for a brief period of time, sensing a handshake message which
initiates an image upload. This program sends this boot message until
it receives a positive acknowledgement. The image is transfered using
Xmodem.

Additionally, this program implements a minimal terminal mode, which
can be used either standalone, or entered immediately following boot
image transfer completion. This is often useful to catch early boot
messages, or to manually interrupt a default boot procedure performed
by the second-stage loader.

.SH "OPTIONS"

.TP
.BI "\-b \fIimage\fP"
Handshake; then upload file \fIimage\fP over \fITTY\fP.

Note that for the encapsulated boot code to be executed, \fIimage\fP
must be of type "UART boot" (0x69). Boot images of different types,
such as backup images of vendor firmware downloaded from flash memory
(type 0x8B), will not work (or not as expected). See \fB-p\fP for a
workaround.

This mode writes handshake status and upload progress indication to
stdout.

.TP
.BI "\-p"
In combination with \fB-b\fP, patches the header in \fIimage\fP prior
to upload, to "UART boot" type.

This option attempts on-the-fly conversion of some none-UART image
types, such as images which were originally formatted to be stored in
flash memory.

Conversion is performed in-core. The contents of \fIimage\fP will not
be altered.

.TP
.BI "\-t"
Run a terminal program, connecting standard input and output to
.RB \fITTY\fP.

If used in combination with \fB-b\fP, terminal mode is entered
immediately following a successful image upload.

If standard I/O streams connect to a console, this mode will terminate
after receiving 'ctrl-\\' followed by 'c' from console input.

.TP
.BI "\-B \fIbaudrate\fP"
Adjust the baud rate on \fITTY\fP. Default rate is 115200.

.SH "SEE ALSO"
.PP
\fBmkimage\fP(1)

.SH "AUTHORS"

Daniel Stodden <daniel.stodden@gmail.com>


6 changes: 6 additions & 0 deletions tools/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ BIN_FILES-$(CONFIG_CMD_LOADS) += img2srec$(SFX)
BIN_FILES-$(CONFIG_XWAY_SWAP_BYTES) += xway-swap-bytes$(SFX)
BIN_FILES-y += mkenvimage$(SFX)
BIN_FILES-y += mkimage$(SFX)
BIN_FILES-y += kwboot$(SFX)
BIN_FILES-$(CONFIG_SMDK5250) += mksmdk5250spl$(SFX)
BIN_FILES-$(CONFIG_MX28) += mxsboot$(SFX)
BIN_FILES-$(CONFIG_NETCONSOLE) += ncb$(SFX)
Expand Down Expand Up @@ -101,6 +102,7 @@ OBJ_FILES-$(CONFIG_NETCONSOLE) += ncb.o
NOPED_OBJ_FILES-y += os_support.o
OBJ_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1.o
NOPED_OBJ_FILES-y += ublimage.o
OBJ_FILES-y += kwboot.o

# Don't build by default
#ifeq ($(ARCH),ppc)
Expand Down Expand Up @@ -234,6 +236,10 @@ $(obj)ncb$(SFX): $(obj)ncb.o
$(obj)ubsha1$(SFX): $(obj)os_support.o $(obj)sha1.o $(obj)ubsha1.o
$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^

$(obj)kwboot$(SFX): $(obj)kwboot.o
$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
$(HOSTSTRIP) $@

# Some of the tool objects need to be accessed from outside the tools directory
$(obj)%.o: $(SRCTREE)/common/%.c
$(HOSTCC) -g $(HOSTCFLAGS_NOPED) -c -o $@ $<
Expand Down
Loading

0 comments on commit b5cd810

Please sign in to comment.