diff options
author | Stefan Reinauer <stepan@openbios.org> | 2004-02-10 17:30:04 +0000 |
---|---|---|
committer | Stefan Reinauer <stepan@openbios.org> | 2004-02-10 17:30:04 +0000 |
commit | f69f7e252f1cca6a891dcaffcad763e91189e7b8 (patch) | |
tree | c8b3b1bb1f646a8123607e3d9ae7a1b74d6b4ed8 | |
parent | c0f4e2aecbec701d5e6d7f21c29c7deec6bfdf03 (diff) | |
download | coreboot-f69f7e252f1cca6a891dcaffcad763e91189e7b8.tar.xz |
add option rom section
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1374 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rw-r--r-- | documentation/LinuxBIOS-AMD64.tex | 149 |
1 files changed, 140 insertions, 9 deletions
diff --git a/documentation/LinuxBIOS-AMD64.tex b/documentation/LinuxBIOS-AMD64.tex index 455f6d3065..c1007fdda0 100644 --- a/documentation/LinuxBIOS-AMD64.tex +++ b/documentation/LinuxBIOS-AMD64.tex @@ -32,7 +32,7 @@ \title{LinuxBIOS on AMD64} \author{Stefan Reinauer $<$stepan@openbios.org$>$} -\date{November 18, 2003} +\date{February 10th, 2004} \begin{document} @@ -59,7 +59,19 @@ find errors in the following descriptions, contact % -% 2 What is LinuxBIOS +% 2 Changes +% + +\section{Changes} + \begin{itemize} + \item 2003/11/18 initial release + \item 2004/02/10 acpi and option rom updates + \end{itemize} + + + +% +% 3 What is LinuxBIOS % \section{What is LinuxBIOS?} @@ -78,7 +90,7 @@ Systems can be booted with LinuxBIOS, including embedded systems, Desktop PCs and Servers. % -% 3 Build Requirements +% 4 Build Requirements % \section{Build Requirements} @@ -98,7 +110,7 @@ The following toolchain is recommended: \newpage % -% 4 Getting the Sources +% 5 Getting the Sources % \section{Getting the Sources} @@ -140,7 +152,7 @@ when finished. Most x86 hardware is currently only supported by the LinuxBIOS 1.0 tree. % -% 5 LinuxBIOS configuration overview +% 6 LinuxBIOS configuration overview % \section{LinuxBIOS configuration overview} @@ -173,6 +185,10 @@ basically any point. This document describes different approaches of changing and configuring the LinuxBIOS source tree when building for AMD64. +% +% 7 Building LinuxBIOS +% + \section{Building LinuxBIOS} One of the design goals for building LinuxBIOS was to keep object files out of the source tree in a seperate place. This is mandatory for @@ -210,6 +226,10 @@ The LinuxBIOS image filename is specified in the firmware image specific configuration file. The default filename for AMD's Solo motherboard is \texttt{solo.rom}. +% +% 8 Programming LinuxBIOS to flash memory +% + \section{Programming LinuxBIOS to flash memory} The image resulting from a LinuxBIOS build can be directly programmed to a flash device, either using a hardware flash programmer or by using the @@ -224,6 +244,10 @@ software flash programming, find detailed information: \newpage +% +% 9 LinuxBIOS configuration +% + \section{LinuxBIOS configuration} The following chapters will cope with configuring LinuxBIOS. All configuration files share some basic rules @@ -787,9 +811,11 @@ decompression is needed). \newpage + % -% 9. Tweaking the source code +% 10. Tweaking the source code % + \section{Tweaking the source code} Besides configuring the existing code it is sometimes necessary or wished to tweak certain parts of LinuxBIOS by direct changes to the @@ -1225,7 +1251,7 @@ implementation. \newpage % -% 10. LinuxBIOS Internals +% 11. LinuxBIOS Internals % \section{LinuxBIOS Internals} @@ -1382,7 +1408,112 @@ the \texttt{tftp} server. \newpage % -% 11 Glossary +% 12. Advanced Device Initialization Mechanisms +% + +\section{Advanced Device Initialization Mechanisms} + +Like software, today's hardware is getting more and more complex. To +stay flexible many hardware vendors start breaking hardware +compatibility to old standards as VGA. Thus, VGA is still supported by +most cards, but emulation has to be enabled by the firmware for the +device to operate properly. Also, many expansion cards are small +discrete systems that have to initialize attached ram, download +controller firmware and similar. Without this initialization, an +operating system can not take advantage of the hardware, so there needs +to be a way to address this issue. There are several alternatives: + +\subsection{Native LinuxBIOS Support} + +For some devices (ie Trident Cyberblade 3d) there is native LinuxBIOS +support This means there is a small driver bound to the PCI id of the +device that is called after PCI device ressources are allotted. + +PROs: + \begin{itemize} + \item open source + \item minimal driver + \item early control + \end{itemize} + +CONs: + \begin{itemize} + \item need an additional driver + \item viable for onboard devices only + \item not flexible for pci cards + \end{itemize} + +\subsection{Using Native Linux Support} + +A simple way of getting a whole lot of drivers available for LinuxBIOS +is to reuse Linux drivers by putting a Linux kernel to flash. This +works, because no drivers are needed to get the Linux kernel (as opposed +to store the kernel on a harddisk connected to isa/scsi/raid storage) + +PROs: + \begin{itemize} + \item large number of open source drivers + \end{itemize} + +CONs: + \begin{itemize} + \item need Linux in Flash (BLOAT!) + \item drivers expect devices to be initialized (LSI1020/1030) + \item Linux only + \item large flash needed (4MBit minimum, normal operations 8+ MBit) + \end{itemize} + + +\subsection{Running X86 Option ROMs} + +Especially SCSI/RAID controllers and graphics adapters come with a +special option rom. This option rom usually contains x86 binary code +that uses a legacy PCBIOS interface for device interaction. If this code +gets executed, the device becomes operable in Linux and other operating +systems. + +PROs: + \begin{itemize} + \item really flexible + \item no need for additional drivers on firmware layer + \item large number of supported devices + \end{itemize} + +CONs: + \begin{itemize} + \item non-x86 platforms need complex emulation + \item x86 platforms need legacy API + \item outdated concept + \end{itemize} + + +\subsection{Running Open Firmware Option ROMs} + +Some PCI devices come with open firmware option roms. These devices are +normally found in computers from SUN, Apple or IBM. Open Firmware is a +instruction set architecture independent firmware standard that allows +device specific initialization using simple, small, but flexible +bytecode that runs with minimal footprint on all architectures that have +an Open Firmware implementation. + +There is a free Open Firmware implementation available, called OpenBIOS, +that runs on top of LinuxBIOS. See www.openbios.org + +PROs: + \begin{itemize} + \item architecture independence + \item small footprint + \item clean concept, less bugs + \end{itemize} + +CONs: + \begin{itemize} + \item only small number of devices come with OpenFirmware capable option roms + \end{itemize} + + +% +% 13 Glossary % \section{Glossary} @@ -1404,7 +1535,7 @@ ROMs they can be electronically erased and reprogrammed. \newpage % -% 12 Bibliography +% 14 Bibliography % \section{Bibliography} |