old-www/HOWTO/Remote-Serial-Console-HOWTO/advice-bootloader.html

375 lines
6.7 KiB
HTML

<HTML
><HEAD
><TITLE
>Advice for boot loader authors</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Remote Serial Console HOWTO"
HREF="index.html"><LINK
REL="UP"
TITLE="Gratuitous advice for developers"
HREF="advice.html"><LINK
REL="PREVIOUS"
TITLE="Gratuitous advice for developers"
HREF="advice.html"><LINK
REL="NEXT"
TITLE="Advice for BIOS authors"
HREF="advice-bios.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Remote Serial Console HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="advice.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Appendix F. Gratuitous advice for developers</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="advice-bios.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="ADVICE-BOOTLOADER"
></A
>F.1. Advice for boot loader authors</H1
><P
>Serial console support in a boot loader is very useful.
Thank you for supporting it.</P
><P
>The boot loader should support the
<SPAN
CLASS="PRODUCTNUMBER"
>8250A</SPAN
> <SPAN
CLASS="ACRONYM"
>UART</SPAN
> and
its programming-compatible <SPAN
CLASS="PRODUCTNUMBER"
>82510</SPAN
>,
<SPAN
CLASS="PRODUCTNUMBER"
>16450</SPAN
>,
<SPAN
CLASS="PRODUCTNUMBER"
>16550</SPAN
> and
<SPAN
CLASS="PRODUCTNUMBER"
>16750</SPAN
> descendants. The serial chip
used in the <SPAN
CLASS="PRODUCTNAME"
>IBM PC/XT</SPAN
>, the
<SPAN
CLASS="PRODUCTNUMBER"
>8250</SPAN
> (no A), and its
<SPAN
CLASS="PRODUCTNUMBER"
>8250B</SPAN
> descendant need not be
supported. The <SPAN
CLASS="PRODUCTNUMBER"
>8250A</SPAN
> data sheet is
<A
HREF="http://www.intersil.com/data/FN/FN2/FN2958/FN2958.pdf"
TARGET="_top"
><I
CLASS="CITETITLE"
><SPAN
CLASS="PRODUCTNUMBER"
>82C50A</SPAN
>
<SPAN
CLASS="PRODUCTNAME"
>CMOS Asynchronous Communications
Element</SPAN
></I
></A
> and is updated by Intel's
errata <A
HREF="http://support.intel.com/support/controllers/peripheral/7513.htm"
TARGET="_top"
><I
CLASS="CITETITLE"
><SPAN
CLASS="PRODUCTNUMBER"
>82510</SPAN
>
PC Software Compatibility</I
></A
>. The
<SPAN
CLASS="PRODUCTNUMBER"
>16550</SPAN
> data sheet is <A
HREF="http://www.national.com/ds/PC/PC16550D.pdf"
TARGET="_top"
><I
CLASS="CITETITLE"
><SPAN
CLASS="PRODUCTNUMBER"
>PC16550D</SPAN
>
<SPAN
CLASS="PRODUCTNAME"
>Universal Asynchronous Receiver/Transmitter with
FIFOs</SPAN
></I
></A
>.</P
><P
>To set the serial port and serial parameters, most
<SPAN
CLASS="ACRONYM"
>Linux</SPAN
> boot loaders use a syntax modeled upon the
kernel's <TT
CLASS="LITERAL"
>console</TT
> parameter. It would be nice to
retain this consistency, since the user needs to learn the kernel
syntax in any case.</P
><P
>The default value should be 9600<SPAN
CLASS="ABBREV"
>bps</SPAN
>, 8 data
bits, no parity, 1 stop bit and
<SPAN
CLASS="ACRONYM"
>CTS</SPAN
>/<SPAN
CLASS="ACRONYM"
>RTS</SPAN
> flow control. This
gives the maximum interoperability with the other programs that use
the serial console.</P
><P
>Please do not ignore the lower speeds, as remote serial
console is at its most valuable when the computer is located three
days walk up a mountain in the New Guinea highlands. It is
difficult to get more than 75<SPAN
CLASS="ABBREV"
>bps</SPAN
> from
<SPAN
CLASS="ACRONYM"
>HF</SPAN
> radio under adverse sky conditions.</P
><P
>Be conservative in your use of the modem status lines. Even
if you are ignoring incoming status (<SPAN
CLASS="ACRONYM"
>DSR</SPAN
>,
<SPAN
CLASS="ACRONYM"
>DCD</SPAN
>) and handshaking lines (<SPAN
CLASS="ACRONYM"
>RTS</SPAN
>)
at least assert the outgoing status (<SPAN
CLASS="ACRONYM"
>DTR</SPAN
>) and
handshaking (<SPAN
CLASS="ACRONYM"
>CTS</SPAN
>) lines. Correctly configured
modems will not receive calls with <SPAN
CLASS="ACRONYM"
>DTR</SPAN
> low, and
dropping <SPAN
CLASS="ACRONYM"
>DTR</SPAN
> will cause the modem to hang
up.</P
><P
>Consider that the <SPAN
CLASS="ACRONYM"
>BIOS</SPAN
> may have already
initialised the <SPAN
CLASS="ACRONYM"
>UART</SPAN
> and provide a configuration
option to allow the boot loader to be informed of that. When the
boot loader initialises the <SPAN
CLASS="ACRONYM"
>UART</SPAN
>,
<SPAN
CLASS="ACRONYM"
>DTR</SPAN
> will fall and the line will hang up. In some
scenarios each hang up requires the satelite circuit to be
re-booked before another call can be placed. </P
><P
>Cater for line noise. Imagine the boot loader starting and
then being sent nonsensical characters every few seconds. Although
this is certainly wrong, a fault in a modem is difficult to
remotely diagnose and correct if the machine is left stranded at
the boot loader prompt. A solution is to boot the default image
upon the expiry of a timer; the boot occurring even if the user (or
line noise) has started to type. For example the boot loader
configuration could say:</P
><DIV
CLASS="INFORMALFIGURE"
><A
NAME="AEN4174"
></A
><P
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="PROGRAMLISTING"
># Start the machine regardless after 30 minutes
# 30 * 60 seconds per minute * units of tenths of seconds
<B
CLASS="COMMAND"
>lifetime 18000</B
></PRE
></FONT
></TD
></TR
></TABLE
><P
></P
></DIV
><P
>The default should be no life timer. The timer is also
useful in high availability applications: when a machine is used in
environments with an planned availability of 99.999% the lifetime
value should be configured to three minutes or less.</P
><P
>Check information read from the BIOS for reasonablness. For
example, if the BIOS's Extended Data Area suggests 0x000 as the
address for the serial port's registers then don't try to
initialise the registers.</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="advice.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="advice-bios.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Gratuitous advice for developers</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="advice.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Advice for <SPAN
CLASS="ACRONYM"
>BIOS</SPAN
> authors</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>