Booting the Kernel

How the computer loads the operating system into memory and starts it is an issue that most software developers never have to think about. Most of us work on PCs or similar platforms that have a BIOS that does the dirty work of setting up the computer’s hardware and finding and loading the OS loader (for example, LILO or GRUB) into RAM so that the kernel can start. The most we ever have to think about is which OS loader to use and how to configure it properly.

Welcome to the world of embedded devices, where you may start with a manual that says only something like this:

“Hard Reset (HRESET)—Input” causes the hard reset exception to be taken and the physical address of the handler is always x‘FFF00100’.

PowerPC 601 RISC Microprocessor User’s Manual (IBM Corporation, 1993), p. 5-16.

It’s now up to you to write the assembly code to do the following:

  1. Initialize all of the hardware.

  2. Move the OS loader into memory from storage (or perhaps you just load the OS itself).

  3. Jump into the code you just loaded.

Fortunately, most development boards for the various microcontrollers and microprocessors come with ample documentation and sample code for startup. There are also many examples on the Internet for the many different processors that Linux supports.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.142.40.43