375 lines
6.7 KiB
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
|
|
> |