Linux for PowerPC Embedded Systems HOWTO

Boas Betzler, 21 August 2001


Table of Contents
1. Introduction
1.1. Copyright
1.2. Updates
1.3. Credits
2. Resources
2.1. Home Page
2.2. FTP site
2.3. Mailing List
2.4. Home of the linux/ppc port
2.5. PowerPC Programming
2.6. Usenet Groups
2.7. Other Useful Resources
3. Target Hardware
3.1. CPU
3.1.1. 4xx
3.1.2. IBM 405GP
3.1.3. 7xx
3.1.4. Motorola 8xx
3.1.4.1. 823
3.1.4.2. 850/855/860
3.1.5. 603e
3.1.6. Motorola 82xx
3.1.6.1. 8240
3.1.6.2. 8260
3.1.7. AltiVec
3.2. RAM and ROM space
3.3. Commercially available boards
3.3.1. Embedded Planet
3.3.1.1. Linux Planet
3.3.1.2. CLLF
3.3.2. Bright Star Engineering
3.3.3. Simple Network Magic Corporation
3.3.4. QS850 QuickStack Network Interface/Network Management Module
3.3.5. TQComponents
3.3.6. MicroSys
3.3.7. Motorola Computer Group
3.3.7.1. MBX
3.3.7.2. PowerPlus SBC
3.3.7.3. MVME2600
3.3.8. AG Electronics
3.3.9. Force Computers
3.3.10. Actis Computer - VSBC-6862
3.3.11. Total Impact - the briQ
3.3.12. Motorola Semiconductor
3.3.12.1. Family Application Development System
3.3.12.2. Sandpoint
3.3.12.3. Yellowknife
3.3.13. WindRiver (formerly EST Corporation)
3.3.14. Haedong Information & Communications
3.3.15. Cogent Computer Systems
4. Host Development Platform
4.1. PowerPC
4.2. x86
5. Compiler Toolset
5.1. Building the toolchain
5.1.1. Instructions
5.1.2. Build Scripts
5.1.3. SPARC/Solaris Hosted
5.1.4. Getting Help
5.2. gcc
5.3. binutils
5.3.1. Official GNU binutils
5.3.2. H. J. Lu's "Linux binutils"
5.4. Precompiled/Prepackaged Kits
5.4.1. MontaVista Software Hard Hat Linux
5.4.2. QuickStack Linux
5.4.3. Denx Software Engineering
5.4.3.1. ftp site
5.4.3.2. CD-ROMs
5.4.3.3. Boards
5.4.4. The Embedded Debian Project
5.4.5. Bright Star Engineering
5.4.6. Lineo Embedix
5.4.7. Red Hat Embedded DevKit
6. Programming the Target
6.1. BDM/JTAG Downloading
6.2. TFTP
6.3. Flash/EPROM Programmers
7. Boot Sequence
8. ROM Monitor
8.1. PPCBOOT
8.2. LiMon
8.3. PMON/2000
8.4. PPCForth
8.5. DINK32
8.6. 8xxROM
8.7. FADSROM
9. Boot Loader
9.1. bugboot
9.2. mbxboot
10. Kernel
10.1. Series
10.1.1. Stable
10.1.1.1. Montavista
10.1.1.2. Denx Software Engineering
10.1.2. Development
10.2. Memory Map
10.3. Porting
10.4. Patches
10.5. Contributing
10.6. Submitting Patches
10.7. Coding Style
11. Device Drivers
11.1. Examples
11.2. Flash memory
11.2.1. Flash Device Driver
11.2.2. QSLinux Flash Driver
11.2.3. Memory Technology Device (MTD) Subsystem
11.2.4. M-Systems Disk-On-Chip
11.3. PCMCIA Cards
11.4. IDE/ATA Disk Drives
11.5. PCI Bridge
11.6. Watchdog
11.7. USB for MPC850/823
11.8. A/D and D/A
11.9. VME
11.10. HDLC/PPP
11.11. SPI
11.12. Linux STREAMS (LiS)
12. Runtime Library
12.1. glibc
12.2. sglibc
12.3. uClibc
12.4. dietlibc
12.5. newlib
12.6. libc5
13. Root Filesystem
13.1. NFS Mounted
13.2. Initial Ramdisk: initrd
13.2.1. Examples
13.2.2. Using a ramdisk
13.2.3. Using the loop device
13.3. ROMFS Flash Filesystem
13.4. cramfs
13.5. ramfs
13.6. Journaling Flash FileSystem(JFFS)
14. Floating Point
14.1. Software
14.2. Hardware
14.3. Mixed
15. Realtime Response
15.1. Soft
15.2. Hard
15.2.1. Interrupt Latency
15.2.2. RTLinux - Real-Time Linux
15.2.3. RTAI - Real Time Application Interface
16. Threads
17. Applications
17.1. Standard GNU tools
17.2. Standalone Shell
17.3. BusyBox
17.4. Web Servers
17.4.1. Boa
17.4.2. thttpd, mini_httpd, micro_httpd
17.5. Graphical User Interface
17.5.1. Microwindows
17.5.2. PicoGUI
17.6. Java Virtual Machine(JVM)
18. Debugging
18.1. BDM
18.1.1. MMU Support
18.1.2. GDB on BDM
18.1.2.1. BDM4GDB
18.1.2.2. MPCBDM
18.1.2.3. PPCBDM
18.1.2.4. Abatron
18.1.2.5. Avocet Systems (formerly Huntsville Microsystems)
18.1.2.6. Macraigor Systems
18.1.2.7. RISCWatch Debugger for PowerPC Processors
18.1.2.8. WindRiver (formerly EST Corporation)
18.1.3. Other debuggers
18.1.3.1. Mentor (X-ray)
18.1.3.2. Avocet Systems (SourceGate)
18.1.3.3. Tasking (CrossView Pro)
18.1.3.4. WindRiver (SingleStep)
18.1.3.5. Applied Microsystems (PowerTap)
18.1.3.6. Lauterbach
18.2. Serial Console
18.3. GDB
18.3.1. gdbserver
18.3.2. rproxy
18.3.3. native
18.4. Kernel
18.5. Oops Messages
18.6. printk
19. Performance
19.1. CPU core
19.1.1. Cache
19.1.2. BogoMIPS
19.2. Profiling
19.2.1. /proc/profile
19.2.2. Linux Trace Toolkit
19.2.3. gprof
19.2.4. kernprof
19.3. IDMA
19.4. Network
19.5. Optimization
20. Common Mistakes and Problems
20.1. Changing KERNELBASE/KERNELLOAD
20.2. Leaving the Watchdog enabled
20.3. Mixing code compiled for software and hardware floating point
20.4. Using an unmodified glibc
20.5. "Kernel Mode Software FPU Emulation" panic
20.6. NFS gives "neighbour table overflow"
20.7. "Kernel panic: No init found..." on startup
21. Alternatives
21.1. eCos - Embedded Configurable Operating System
21.2. RTEMs - Real Time Executive for Multiprocessor Systems
22. Glossary
A. GNU Free Documentation License
0. PREAMBLE
1. APPLICABILITY AND DEFINITIONS
2. VERBATIM COPYING
3. COPYING IN QUANTITY
4. MODIFICATIONS
5. COMBINING DOCUMENTS
6. COLLECTIONS OF DOCUMENTS
7. AGGREGATION WITH INDEPENDENT WORKS
8. TRANSLATION
9. TERMINATION
10. FUTURE REVISIONS OF THIS LICENSE
How to use this License for your documents

A distillation of the collective wisdom from the linuxppc-embedded mailing list on how to build an embedded PowerPC-based Linux system.