Sophie

Sophie

distrib > Mandriva > 2010.0 > x86_64 > by-pkgid > b6e7ac7a80024d68ad96f898b3218a45 > files > 261

etherboot-5.4.4-4mdv2010.0.x86_64.rpm

<HTML
><HEAD
><TITLE
>Making an Etherboot EPROM or EEPROM</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Booting DOS"
HREF="x216.html"><LINK
REL="NEXT"
TITLE="Troubleshooting tips"
HREF="x248.html"></HEAD
><BODY
CLASS="sect1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x216.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x248.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN225"
></A
>Making an Etherboot EPROM or EEPROM</H1
><P
>&#13;Assuming you have satisfactorily set up your server environment, you may
now wish to put the Etherboot onto an EPROM or EEPROM. Naturally this
assumes access to hardware to program (and possibly erase) EPROMs.
Access to a friendly electronics engineer and/or lab is one way to
program and erase EPROMs. Otherwise you can look at the <A
HREF="http://www.etherboot.org/clinks.html"
TARGET="_top"
>commercial links page</A
>
for places you can buy programmed EPROMs from.

</P
><P
>&#13;Some high-end network cards, for example the 3Com 905B, have a socket
for an EEPROM which can be programmed in situ with the right utilities.
See any release notes accompanying Etherboot for more information.

</P
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="AEN230"
></A
>Choosing the EPROM</H2
><P
>&#13;Most network cards come with a blank (E)EPROM socket even though it is
seldom used. When it is used, it is typically filled with a proprietary
EPROM from the network card manufacturer. You can put an Etherboot EPROM
there instead.

</P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="AEN233"
></A
>Enabling the EPROM</H2
><P
>&#13;First you must discover how to enable the EPROM socket on your
card. Typically the EPROM is not enabled from the factory and a jumper
or a software configuration program is used to enable it.

</P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="AEN236"
></A
>Size and speed of the EPROM</H2
><P
>&#13;Secondly, you must discover what size and speed of EPROM is needed. This
can be difficult as network card manufacturers often neglect to provide
this information.

</P
><P
>&#13;The smallest EPROM that is accepted by network cards is an 8k EPROM
(2764). 16kB (27128), 32kB (27256), 64kB (27512) or even 128kB (27010)
EPROMs are possible. (You will often see a C after the 27, e.g.
27C256. This indicates a CMOS EPROM, which is equivalent to the non-C
version and is a good thing because of lower power consumption.) You
want to use the smallest EPROM you can so that you don't take up more of
the upper memory area than needed as other extensions BIOSes may need
the space.  However you also want to get a good price for the EPROM.
Currently the 32kB and 64kB EPROMs (27256 and 27512) seem to be the
cheapest per unit. Smaller EPROMs appear to be more expensive because
they are out of mainstream production.

</P
><P
>&#13;If you cannot find out from the documentation what capacity of EPROM your
card takes, for ISA NICs only, you could do it by trial and error. (PCI
NICs do not enable the EPROM until the BIOS tells the NIC to.)  Take a ROM
with some data on it (say a character generator ROM) and plug it into the
socket. Be careful not to use an extension BIOS for this test because it
may be detected and activated and prevent you from booting your computer.
Using the debug program under DOS, dump various regions of the memory
space. Say you discover that you can see the data in a memory window
from CC00:0 to CC00:3FFF (= 4000 hex = 16384 decimal locations). This
indicates that a 16kB EPROM is needed. However if you see an alias in
parts of the memory space, say the region from CC00:0 to CC00:1FFF is
duplicated in CC00:2000 to CC00:3FFF, then you have put an 8kB EPROM
into a 16kB slot and you need to try a larger EPROM.

</P
><P
>&#13;Note that because pinouts for 28 pin EPROMs are upward compatible after a
fashion, you can probably use a larger capacity EPROM in a slot intended
for a smaller one. The higher address lines will probably be held high
so you will need to program the image in the upper half or upper quarter
of the larger EPROM, as the case may be. However you should double check
the voltages on the pins armed with data sheet and a meter because CMOS
EPROMs don't like floating pins.

</P
><P
>&#13;If the ROM is larger than the size of the image, for example, a 32
kB ROM containing a 16 kB image, then you can put the image in either
half of the ROM. You will sometimes see advice to put two copies of the
image in the ROM. This will work but is not recommended because the ROM
will be activated twice if it's a legacy ROM and may not work at all
if it's a PCI/PnP ROM.  It is tolerated by Etherboot because the code
checks to see if it's been activated already and the second activation
will do nothing. The recommended method is to fill the unused half with
blank data.  All ones data is recommended because it is the natural state
of the EPROM and involves less work for the PROM programmer. Here is a
Unix command line that will generate 16384 bytes of 0xFF and combine it
with a 16 kB ROM into a 32 kB image for your PROM programmer.

<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="programlisting"
>&#13;	(perl -e 'print "\xFF" x 16384'; cat bin/3c509.zrom) &#62; 32kbimage
</PRE
></TD
></TR
></TABLE
>

The speed of the EPROM needed depends on how it is connected to the
computer bus.  If the EPROM is directly connected to the computer bus,
as in the case of many cheap NE2000 clones, then you will probably have
to get an EPROM that is at least as fast as the ROMs used for the main
BIOS. This is typically 120-150 ns. Some network cards mediate access to
the EPROM via circuitry and this may insert wait states so that slower
EPROMs can be used. Incidentally the slowness of the EPROM doesn't
affect Etherboot execution speed much because Etherboot copies itself to
RAM before executing.

</P
><P
>&#13;If you have your own EPROM programming hardware, there is a nice
collection of EPROM file format conversion utilities <A
HREF="http://srecord.sourceforge.net/index.html"
TARGET="_top"
>here</A
>. The files
produced by the Etherboot build process are plain binary. A simple
binary to Intel hex format converter can be found at the Etherboot web
site <A
HREF="http://www.etherboot.org/bin2intelhex.c"
TARGET="_top"
>here</A
>.

</P
><P
>&#13;Etherboot is believed to make PnP compliant ROMs for PCI NICs. A
long-standing bug in the headers has been tracked down. However some
faulty old BIOSes are out there so I have written a Perl script
swapdevids.pl to switch the header around if necessary. You'll have to
experiment with it both ways to find out which works. Or you could dump
a ROM image that works (e.g. RPL, PXE ROM) using the Perl script
disrom.pl. The fields to look at are Device (base, sub, interface) Type.
It should be 02 00 00, but some BIOSes want 00 00 02 due to ambiguity in
the original specification.

</P
></DIV
></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="x216.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x248.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Booting DOS</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Troubleshooting tips</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>