The engineers' research exposed them to kernel ports, tool chain ports, development/product single-board computers, various ongoing embedded Linuxprojects, software repositories, commercial and open-source embedded Linux distributions, and the advantages of using kernel version 2.4. The engineers were able to summarize all their research and develop a strategic direction consisting of three areas: kernel porting, source code, and kernel version.
Kernel ports must exist for all CPU architectures under consideration. The Trailblazer engineers don't have the expertise or time to port the kernel to a new architecture. Several architectures' ports exist and can be found within the kernel source tree. Checking the kernel version 2.4.0 source, the engineers found port information in the arch directory for the following processors: Alpha, ARM, i386, IA-64, m68k, MIPS, MIPS64, PA-RISC, PowerPC, S390, SuperH, SPARC, and SPARC64.
Wherever possible, the engineers wanted to use and compile open-source codefor the kernel, applications, and tools. Embedded Linux is a new industry. In the coming years, the current landscape will change due to mergers, buyouts, and failures. Adopting a product or distribution introduces a potential risk if support becomes unavailable in the future. By learning how to compile the tools, the kernel, and the applications from their open-source code repositories, the developer and projects become immune to changes in the industry. Compiling open-source code promotes a better understanding of Linux including its kernel, the boot process, necessary applications, and library interaction.
Learning to compile open-source code protects your projects from changes in the embedded Linux industry.
Linux kernel version 2.4.0, released in January 2001, represents a major technological leap forward.4,5 Developers are pushing Linux into new areas and concentrating their efforts on 2.4 code. No reason exists to consider using an older kernel version. Project Trailblazer requires the following version 2.4 technologies: improved process scheduler, memory technology devices (support for ROM and Flash memory devices), and universal serial bus (USB) support.
Developing this three-area strategic direction allowed the engineers to take a couple steps toward choosing hardware. They required off-the-shelf boards with processors that have kernel 2.4.x or greater ports. They also required open-source code availability for the kernel, applications, and tools. Hardware and software selection remained wide open for the engineers. Should they select the popular x86 or look at other processors, such as ARM, PowerPC, or MIPS? Should they use a commercial open-source product, a noncommercial open-source embedded Linux distribution, or downloaded source code? Should they buy a support package? These were tough questions, each of which had answers that imply different levels of risk, development time, and cost. Time was ticking away.
After much research and thought, as well as conversations with board suppliers and software distribution suppliers, the engineers decided on architecture, boards, and software.
The engineers chose the following hardware architectures and vendors/boards:
For the software kernel, the engineers chose Version 2.4 or greater. They decided to go with the GNU Tool chain, including the compiler, assembler, libraries, debugger, and utilities.
While waiting for their hardware to arrive, the engineers constructed their development workstation, called tbdev1. They planned to use this workstation to compile the tools, kernel, and applications for the x86, PowerPC, and ARM processors.
The remaining sections of this chapter address tbdev1 configuration for x86 compiling and PowerPC and ARM processor cross-compiling. The engineers want to use tbdev1 to compile the kernel, applications, and libraries for the Trailblazer target platforms. Chapter 4, "Booting Linux," addresses unique configuration and booting of the target platforms. Chapter 5, "Debugging," covers remote debugging of helloworld on each board.