Porting the Linux Kernel to a New ARM Platform
Over the last few years, ARM processors running Linux have been appearing in a variety of applications including but not limited to consumer electronics, telematics, industrial control, and network processing. As the demand for ARM-based applications has increased, the Linux community has been flooded with questions from those porting the kernel to new systems for the first time due to a lack of clear step-by-step HOWTO explaining how the task is done. While there is no silver bullet and there is much to learn from simply attempting a new board port, in this presentation I will provide an overview of the steps needed to get a kernel booting on a new board to the point that you can get a login prompt. Topics covered will include bootloader requirements, IRQ setup, configuring memory, writing an MTD driver, PCI configuration on ARM platforms, required platform-level hooks, MMU setup, system timers, and other issues that need to be dealt with during the porting process.
Deepak Saxena is a software engineer at MontaVista Software whose main role is porting and maintaining the Linux kernel on various ARM platforms. Before working on ARM, he was at Intel and worked on the I2O stack for Linux and unfortunately had to write some drivers for some closed-source operating systems. He has been using Linux since 1993 and playing with the kernel since 1998. His favorite editor is vim and his favorite email program is mutt. When not sitting in front of his computers, he's usually cooking, out on a bike ride, or hunting down new beers to quench his thirst.