1 From: "Paolo Marini" <paolom@prisma-eng.it>
2 Subject: Etherboot on bare metal
3 Date: Tue, 10 Apr 2001 23:19:19 +0200
4 Organization: Prisma Engineering srl
7 I have ported Etherboot on an embedded, biosless platform and would like
8 to contribute the code.
10 Essentially, the hardware I was running Etherboot is a Pentium based
11 embedded system, with an Intel Chipset, *but* without serial, VGA,
12 keyboard etc., only an 82559 Intel (custom) Ethernet controller (I debug
13 it with the etheral Ethernet packet analyser and an emulator).
17 a.. integrate the init.s file within the firmware, with GDT
18 (re)initialisation (a simple and single entry point taking control of
20 b.. provide some stupid BIOS stubs in order to let the OS boot and
21 still belive that an INT10 call goes to the BIOS
22 c.. provide some basic functions to Etherboot, like timer (I used the
23 Pentium TSC internal counter)
24 d.. hardwire in the code information about the RAM size
25 The BIOS stubs are enough to boot Linux, pSOS and QNX with bootp. QNX is
26 somewhat difficult to load, because the i82559 driver tries to find the
27 component using the BIOS32 calls, so I had to patch it.
29 what i I got from the original firmware is the PCI initialisation and
30 resource (I/O, interrupts, memory) allocation.
32 I send you what I changed, that is, the initialisation code and the
33 misc.c file containing the timer, and the makefile (I don't remember
34 exactly the options I used to compile all).
36 Of course, it is only a good starting point for anyone wanting to
37 implement a bootp client on a biosless platform; some integration work
38 still needs to be done.
43 And in a subsequent email:
45 I worked with version 4.6.12, but the real modifications involve the
46 init.S file, which I think is quite sstable between releases. I forgot
47 to say that my entry point (symbol _start in init.s) assumes the
48 processor is already in protected mode.
50 [The only difference between main.c and misc.c from those in Etherboot
51 4.6.12 seems to be the deletion of eth_reset(). This may be of use to
52 others trying to make these changes work on more recent releases. Ken]