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