Porting Linux to a custom board based on a Linux-supported CPU can be relatively straightforward. There is no substitute for experience and knowledge of the Linux code base and your hardware platform.
Starting from a working reference configuration based on a hardware platform already supported provides an excellent basis for your own modifications.
Understanding the flow of initialization code is the key to an easy porting effort. We made every effort to leave all generic kernel code untouched and to modify only those files necessary for the platform itself. A significant part of this chapter is devoted to this early flow of control related to platform initialization.
Make doubly certain that your low-level hardware platform initialization is correct before proceeding. If you find yourself debugging in some obscure part of the Linux slab allocator, for example, it's a good bet you've messed something up with your hardware memory initialization.
This chapter focused primarily on the PowerPC architecture branch of the Linux kernel. Learning the details of one architecture paves the way for understanding the rest.
16.5.1. Suggestions for Additional Reading
Programming Environments Manual for 32-Bit Implementations of the PowerPC Architecture MPCFPE32B/AD 12/2001 REV 2 Freescale Semiconductor, Inc.
MPC5200 User's Guide MPC5200UG Rev 3 01/22005 Freescale Semiconductor, Inc.