Build embedded linux systems

Building Embedded Linux Systems

Building Embedded Linux Systems

Read it now on the O’Reilly learning platform with a 10-day free trial.

O’Reilly members get unlimited access to books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.

Book description

Linux® is being adopted by an increasing number of embedded systems developers, who have been won over by its sophisticated scheduling and networking, its cost-free license, its open development model, and the support offered by rich and powerful programming tools. While there is a great deal of hype surrounding the use of Linux in embedded systems, there is not a lot of practical information. Building Embedded Linux Systems is the first in-depth, hard-core guide to putting together an embedded system based on the Linux kernel. This indispensable book features arcane and previously undocumented procedures for:

  • Building your own GNU development toolchain
  • Using an efficient embedded development framework
  • Selecting, configuring, building, and installing a target-specific kernel
  • Creating a complete target root filesystem
  • Setting up, manipulating, and using solid-state storage devices
  • Installing and configuring a bootloader for the target
  • Cross-compiling a slew of utilities and packages
  • Debugging your embedded system using a plethora of tools and techniques

Publisher resources

Table of contents

  1. Dedication
  2. Preface
    1. Audience of This Book
    2. Scope and Background Information
    3. Organization of the Material
    4. Hardware Used in This Book
    5. Software Versions
    6. Book Web Site
    7. Typographical Conventions
    8. Contact Information
    9. Acknowledgments
    1. 1.1. Definitions
      1. 1.1.1. What Is Linux?
      2. 1.1.2. What Is Embedded Linux?
      3. 1.1.3. What Is Real-Time Linux?
      1. 1.2.1. Types of Embedded Linux Systems
        1. 1.2.1.1. Size
        2. 1.2.1.2. Time constraints
        3. 1.2.1.3. Networkability
        4. 1.2.1.4. User interaction
        1. 1.2.2.1. Accelerator control
        2. 1.2.2.2. Computer-aided training system
        3. 1.2.2.3. Ericsson “blip”
        4. 1.2.2.4. SCADA protocol converter
        5. 1.2.2.5. Sharp Zaurus
        6. 1.2.2.6. Space vehicle control
        1. 1.2.4.1. Quality and reliability of code
        2. 1.2.4.2. Availability of code
        3. 1.2.4.3. Hardware support
        4. 1.2.4.4. Communication protocol and software standards
        5. 1.2.4.5. Available tools
        6. 1.2.4.6. Community support
        7. 1.2.4.7. Licensing
        8. 1.2.4.8. Vendor independence
        9. 1.2.4.9. Cost
        1. 1.2.5.1. Free software and open source community
        2. 1.2.5.2. Industry
        3. 1.2.5.3. Organizations
        4. 1.2.5.4. Resources
        1. 1.2.6.1. Textbook GPL
        2. 1.2.6.2. Pending issues
        3. 1.2.6.3. RTLinux patent
        1. 1.2.7.1. To use or not to use
        2. 1.2.7.2. How to choose a distribution
        3. 1.2.7.3. What to avoid doing with a distribution
        1. 1.3.1. General Architecture
        2. 1.3.2. Requirements of Each Component
          1. 1.3.2.1. Data acquisition module
          2. 1.3.2.2. Control module
          3. 1.3.2.3. System management module
          4. 1.3.2.4. User interface modules
          1. 1.4.1. Creating a Target Linux System
          2. 1.4.2. Setting Up and Using Development Tools
          3. 1.4.3. Developing for the Embedded
          4. 1.4.4. Networking
          1. 2.1. Types of Hosts
            1. 2.1.1. Linux Workstation
            2. 2.1.2. Unix Workstation
            3. 2.1.3. Windows (2000, NT, 98, etc.) Workstation
            1. 2.2.1. Linked Setup
            2. 2.2.2. Removable Storage Setup
            3. 2.2.3. Standalone Setup
            1. 2.6.1. Solid State Storage Media
            2. 2.6.2. Disk
            3. 2.6.3. Network
            1. 3.1. Processor Architectures
              1. 3.1.1. x86
              2. 3.1.2. ARM
              3. 3.1.3. IBM/Motorola PowerPC
              4. 3.1.4. MIPS
              5. 3.1.5. Hitachi SuperH
              6. 3.1.6. Motorola 68000
              1. 3.2.1. ISA
              2. 3.2.2. PCI
              3. 3.2.3. PCMCIA
              4. 3.2.4. PC/104
              5. 3.2.5. VME
              6. 3.2.6. CompactPCI
              7. 3.2.7. Parallel Port
              8. 3.2.8. SCSI
              9. 3.2.9. USB
              10. 3.2.10. IEEE1394 (FireWire)
              11. 3.2.11. GPIB
              12. 3.2.12. I2C
              1. 3.3.1. Serial Port
              2. 3.3.2. Parallel Port
              3. 3.3.3. Modem
              4. 3.3.4. Data Acquisition
              5. 3.3.5. Process Control
              6. 3.3.6. Home Automation
              7. 3.3.7. Keyboard
              8. 3.3.8. Mouse
              9. 3.3.9. Display
              10. 3.3.10. Sound
              11. 3.3.11. Printer
              1. 3.4.1. Memory Technology Devices
              2. 3.4.2. ATA-ATAPI (IDE)
              3. 3.4.3. SCSI
              1. 3.5.1. Ethernet
              2. 3.5.2. IrDA
              3. 3.5.3. IEEE 802.11 (Wireless)
              4. 3.5.4. Bluetooth
              1. 3.6.1. CAN
              2. 3.6.2. ARCnet
              3. 3.6.3. Modbus
              4. 3.6.4. A Word on the Other Industrial Networks
              1. 4.1. Using a Practical Project Workspace
              2. 4.2. GNU Cross-Platform Development Toolchain
                1. 4.2.1. GNU Toolchain Basics
                  1. 4.2.1.1. Component versions
                  2. 4.2.1.2. Build requirements
                  3. 4.2.1.3. Build overview
                  4. 4.2.1.4. Workspace setup
                  5. 4.2.1.5. Preparing the build-tools directory
                  6. 4.2.1.6. Resources
                  7. 4.2.1.7. A word on prebuilt cross-platform toolchains
                  1. 4.3.1. uClibc
                    1. 4.3.1.1. Library setup
                    2. 4.3.1.2. Usage
                    1. 4.3.2.1. Library setup
                    2. 4.3.2.2. Usage
                    1. 4.4.1. The Blackdown Project
                    2. 4.4.2. Open Source Virtual Machines
                    3. 4.4.3. The GNU Java Compiler
                    1. 4.5.1. Microperl
                    2. 4.5.2. Miniperl
                    1. 4.10.1. Accessing the Serial Port
                    2. 4.10.2. Minicom
                    3. 4.10.3. UUCP cu
                    4. 4.10.4. C-Kermit
                    1. 5.1. Selecting a Kernel
                    2. 5.2. Configuring the Kernel
                      1. 5.2.1. Configuration Options
                      2. 5.2.2. Configuration Methods
                      3. 5.2.3. Managing Multiple Configurations
                      4. 5.2.4. Using the EXTRAVERSION Variable
                      1. 5.3.1. Building Dependencies
                      2. 5.3.2. Building the Kernel
                      3. 5.3.3. Building the Modules
                      1. 5.4.1. Managing Multiple Kernel Images
                      2. 5.4.2. Installing Kernel Modules
                      1. 5.5.1. Dealing with Kernel Failure
                      1. 6.1. Basic Root Filesystem Structure
                      2. 6.2. Libraries
                        1. 6.2.1. glibc
                        2. 6.2.2. uClibc
                        1. 6.6.1. Complete Standard Applications
                        2. 6.6.2. BusyBox
                          1. 6.6.2.1. Setup
                          2. 6.6.2.2. Usage
                          1. 6.6.3.1. Setup
                          2. 6.6.3.2. Usage
                          1. 6.6.4.1. Setup
                          2. 6.6.4.2. Usage
                          1. 6.8.1. Standard System V init
                          2. 6.8.2. BusyBox init
                          3. 6.8.3. Minit
                          1. 7.1. MTD-Supported Devices
                            1. 7.1.1. MTD Usage Basics
                              1. 7.1.1.1. MTD /dev entries
                              2. 7.1.1.2. Configuring the kernel
                              3. 7.1.1.3. The MTD utilities
                              4. 7.1.1.4. Installing the MTD utilities for the host
                              5. 7.1.1.5. Installing the MTD utilities for the target
                              1. 7.1.2.1. Kernel configuration
                              2. 7.1.2.2. Partitioning
                              3. 7.1.2.3. Required /dev entries
                              4. 7.1.2.4. Erasing
                              5. 7.1.2.5. Writing and reading
                              1. 7.1.3.1. Preliminary manipulations
                              2. 7.1.3.2. Kernel configuration
                              3. 7.1.3.3. Required /dev entries
                              4. 7.1.3.4. Erasing
                              5. 7.1.3.5. Installing bootloader image
                              6. 7.1.3.6. NFTL formatting
                              7. 7.1.3.7. Partitioning
                              1. 7.2.1. CompactFlash
                              2. 7.2.2. Floppy Disk
                              3. 7.2.3. Hard Disk
                              1. 8.1. Selecting a Filesystem
                                1. 8.1.1. Characterizing Filesystems
                                2. 8.1.2. Guidelines for Filesystem Selection
                                3. 8.1.3. Filesystems for Disk Devices
                                1. 8.8.1. The rsync Utility
                                2. 8.8.2. Package Management Tools
                                3. 8.8.3. Ad Hoc Scripts
                                  1. 8.8.3.1. Installing the patch utility
                                  2. 8.8.3.2. Scripts for performing updates
                                  1. 9.1. Bootloaders Galore
                                    1. 9.1.1. LILO
                                    2. 9.1.2. GRUB
                                    3. 9.1.3. ROLO
                                    4. 9.1.4. loadlin
                                    5. 9.1.5. EtherBoot
                                    6. 9.1.6. LinuxBIOS
                                    7. 9.1.7. Compaq’s bootldr
                                    8. 9.1.8. blob
                                    9. 9.1.9. PMON
                                    10. 9.1.10. sh-Boot
                                    11. 9.1.11. U-Boot
                                    12. 9.1.12. RedBoot
                                    1. 9.2.1. Setting Up the DHCP Daemon
                                    2. 9.2.2. Setting Up the TFTP Daemon
                                    3. 9.2.3. Mounting a Root Filesystem on an NFS Server
                                    1. 9.4.1. Configuring and Building GRUB for the DOC
                                    2. 9.4.2. Installing GRUB on a DOC
                                    3. 9.4.3. Configuring GRUB to Boot from a DOC
                                    1. 9.5.1. Compiling and Installing
                                    2. 9.5.2. Booting with U-Boot
                                    3. 9.5.3. Using U-Boot’s Environment Variables
                                    4. 9.5.4. Creating Boot Scripts
                                    5. 9.5.5. Preparing Binary Images
                                    6. 9.5.6. Booting Using BOOTP/DHCP, TFTP, and NFS
                                    7. 9.5.7. Downloading Binary Images to Flash
                                    8. 9.5.8. Booting Using a RAM Disk
                                    9. 9.5.9. Booting from CompactFlash Devices
                                    10. 9.5.10. Updating U-Boot
                                    1. 10.1. The Internet Super-Server
                                      1. 10.1.1. inetd
                                      2. 10.1.2. xinetd
                                      1. 10.3.1. netkit-telnetd
                                      2. 10.3.2. utelnetd
                                      1. 10.4.1. OpenSSH
                                      2. 10.4.2. A Word on Other SSH Implementations
                                      1. 10.5.1. Boa
                                      2. 10.5.2. thttpd
                                      3. 10.5.3. A Word on Apache
                                      1. 11.1. Debugging Applications with gdb
                                        1. 11.1.1. Building and Installing gdb Components
                                        2. 11.1.2. Using the gdb Components to Debug Target Applications
                                        3. 11.1.3. Interfacing with a Graphical Frontend
                                        1. 11.2.1. Single Process Tracing
                                        2. 11.2.2. System Tracing
                                          1. 11.2.2.1. Preliminary manipulations
                                          2. 11.2.2.2. Patching the kernel
                                          3. 11.2.2.3. Building the trace daemon
                                          4. 11.2.2.4. Installing the visualization tool
                                          5. 11.2.2.5. Tracing the target and visualizing its behavior
                                          1. 11.3.1. Process Profiling
                                          2. 11.3.2. Code Coverage
                                          3. 11.3.3. System Profiling
                                            1. 11.3.3.1. Basic /proc figures
                                            2. 11.3.3.2. Complete profile using LTT
                                            1. 11.4.1. Electric Fence
                                            2. 11.4.2. MEMWATCH
                                            1. A.1. Project Identification
                                            2. A.2. Hardware Summary
                                            3. A.3. Development Tools
                                            4. A.4. Kernel
                                            5. A.5. Root filesystem
                                            6. A.6. Storage Device Organization
                                            7. A.7. Bootloader Configuration and Use
                                            8. A.8. Networking services
                                            9. A.9. Custom Project Software
                                            10. A.10. Debug Notes
                                            11. A.11. Additional Notes
                                            12. A.12. Embedded Linux Systems Worksheet
                                            1. B.1. Online
                                            2. B.2. Books
                                            3. B.3. Publications
                                            4. B.4. Organizations
                                            5. B.5. Linux and Open-Source-Oriented Hardware Projects
                                            1. C.1. Exclusion of User-Space Applications from Kernel’s GPL
                                            2. C.2. Notices on Binary Kernel Modules
                                              1. C.2.1. First Posting by Linus in Kernel Interface Thread
                                              2. C.2.2. Second Posting by Linus in Kernel Interface Thread
                                              3. C.2.3. Post by Alan Cox in Kernel Hooks Thread
                                              4. C.2.4. First Post by Linus in Security Hooks License Thread
                                              5. C.2.5. Second Post by Linus in Security Hooks License Thread

                                              Product information

                                              • Title: Building Embedded Linux Systems
                                              • Author(s): Karim Yaghmour
                                              • Release date: April 2003
                                              • Publisher(s): O’Reilly Media, Inc.
                                              • ISBN: 9780596002220

                                              Источник

                                              Читайте также:  Display server for linux
Оцените статью
Adblock
detector