Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
dev:devmanual [2006/07/16 09:35] stockholm |
dev:devmanual [2006/07/16 09:37] stockholm |
||
---|---|---|---|
Line 237: | Line 237: | ||
===== Writing an EtherBoot Driver ===== | ===== Writing an EtherBoot Driver ===== | ||
+ | |||
==== Preliminaries ==== | ==== Preliminaries ==== | ||
+ | So Etherboot does not have a driver for your network adapter and you want to write one. You should have a good grasp of C, especially with respect to bit operations. You should also understand hardware interfacing concepts, such as the fact that the x86 architecture has a separate I/O space and that peripherals are commanded with ''out'' instructions and their status read with ''in'' instructions. A microprocessor course such as those taught in engineering or computer science curricula would have given you the fundamentals. (Note to educators and students in computer engineering: An Etherboot driver should be feasible as a term project for a final year undergraduate student. I estimate about 40 hours of work is required. I am willing to be a source of technical advice.) | ||
+ | |||
+ | Next you need a development machine. This can be your normal Linux machine. You need another test machine, networked to the development machine. This should be a machine you will not feel upset rebooting very often. So the reset button should be in working condition. :-) It should have a floppy drive on it but does not need a hard disk, and in fact a hard disk will slow down rebooting. Alternatively, it should have another network adapter which can netboot; see discussion further down. Needless to say, you need a unit of the adapter you are trying to write a driver for. You should gather all the documentation you can find for the hardware, from the manufacturer and other sources. | ||
+ | |||
==== Background information ==== | ==== Background information ==== | ||
==== Structure of the code ==== | ==== Structure of the code ==== |