2025-03-15 - San Raimundo de Fitero y otros... |      623029155    info@evainformatica.es  Contacta

Embedded Linux Primer: A Practical, Real-World Approach

https://evainformatica.es/biblioteca_virtual/manuales/img/embedded_linux_primer_a_practical_real_world_approach.png

Formato: chm

Tamaño: 3.4 MB

idioma: en

Descargar

In the pages of this book, you will learn how the build system works and how to incorporate into the Linux kernel your own custom changes that are required for your own projects.

Embedded Linux Primer: A Practical, Real-World Approach

Chapter 1. Introduction
Section 1.1. Why Linux?
Section 1.2. Embedded Linux Today
Section 1.3. Open Source and the GPL
Section 1.4. Standards and Relevant Bodies
Section 1.5. Chapter Summary

Chapter 2. Your First Embedded Experience
Section 2.1. Embedded or Not?
Section 2.2. Anatomy of an Embedded System
Section 2.3. Storage Considerations
Section 2.4. Embedded Linux Distributions
Section 2.5. Chapter Summary

Chapter 3. Processor Basics
Section 3.1. Stand-alone Processors
Section 3.2. Integrated Processors: Systems on Chip
Section 3.3. Hardware Platforms
Section 3.4. Chapter Summary

Chapter 4. The Linux KernelA Different Perspective
Section 4.1. Background
Section 4.2. Linux Kernel Construction
Section 4.3. Kernel Build System
Section 4.4. Obtaining a Linux Kernel
Section 4.5. Chapter Summary

Chapter 5. Kernel Initialization
Section 5.1. Composite Kernel Image: Piggy and Friends
Section 5.2. Initialization Flow of Control
Section 5.3. Kernel Command Line Processing
Section 5.4. Subsystem Initialization
Section 5.5. The init Thread
Section 5.6. Chapter Summary

Chapter 6. System Initialization
Section 6.1. Root File System
Section 6.2. Kernel's Last Boot Steps
Section 6.3. The Init Process
Section 6.4. Initial RAM Disk
Section 6.5. Using initramfs
Section 6.6. Shutdown
Section 6.7. Chapter Summary

Chapter 7. Bootloaders
Section 7.1. Role of a Bootloader
Section 7.2. Bootloader Challenges
Section 7.3. A Universal Bootloader: Das U-Boot
Section 7.4. Porting U-Boot
Section 7.5. Other Bootloaders
Section 7.6. Chapter Summary

Chapter 8. Device Driver Basics
Section 8.1. Device Driver Concepts
Section 8.2. Module Utilities
Section 8.3. Driver Methods
Section 8.4. Bringing It All Together
Section 8.5. Device Drivers and the GPL
Section 8.6. Chapter Summary

Chapter 9. File Systems
Section 9.1. Linux File System Concepts
Section 9.2. ext2
Section 9.3. ext3
Section 9.4. ReiserFS
Section 9.5. JFFS2
Section 9.6. cramfs
Section 9.7. Network File System
Section 9.8. Pseudo File Systems
Section 9.9. Other File Systems
Section 9.10. Building a Simple File System
Section 9.11. Chapter Summary

Chapter 10. MTD Subsystem
Section 10.1. Enabling MTD Services
Section 10.2. MTD Basics
Section 10.3. MTD Partitions
Section 10.4. MTD Utilities
Section 10.5. Chapter Summary

Chapter 11. BusyBox
Section 11.1. Introduction to BusyBox
Section 11.2. BusyBox Configuration
Section 11.3. BusyBox Operation
Section 11.4. Chapter Summary

Chapter 12. Embedded Development Environment
Section 12.1. Cross-Development Environment
Section 12.2. Host System Requirements
Section 12.3. Hosting Target Boards
Section 12.4. Chapter Summary

Chapter 13. Development Tools
Section 13.1. GNU Debugger (GDB)
Section 13.2. Data Display Debugger
Section 13.3. cbrowser/cscope
Section 13.4. Tracing and Profiling Tools
Section 13.5. Binary Utilities
Section 13.6. Miscellaneous Binary Utilities
Section 13.7. Chapter Summary

Chapter 14. Kernel Debugging Techniques
Section 14.1. Challenges to Kernel Debugging
Section 14.2. Using KGDB for Kernel Debugging
Section 14.3. Debugging the Linux Kernel
Section 14.4. Hardware-Assisted Debugging
Section 14.5. When It Doesn't Boot
Section 14.6. Chapter Summary

Chapter 15. Debugging Embedded Linux Applications
Section 15.1. Target Debugging
Section 15.2. Remote (Cross) Debugging
Section 15.3. Debugging with Shared Libraries
Section 15.4. Debugging Multiple Tasks
Section 15.5. Additional Remote Debug Options
Section 15.6. Chapter Summary

Chapter 16. Porting Linux
Section 16.1. Linux Source Organization
Section 16.2. Custom Linux for Your Board
Section 16.3. Platform Initialization
Section 16.4. Putting It All Together
Section 16.5. Chapter Summary

Chapter 17. Linux and Real Time
Section 17.1. What Is Real Time?
Section 17.2. Kernel Preemption
Section 17.3. Real-Time Kernel Patch
Section 17.4. Debugging the Real-Time Kernel
Section 17.5. Chapter Summary

Appendix A. GNU Public License
   - Preamble
   - Terms and Conditions for Copying, Distribution and Modification
   - No Warranty

Appendix B. U-Boot Configurable Commands

Appendix C. BusyBox Commands

Appendix D. SDRAM Interface Considerations
Section D.1. SDRAM Basics
Section D.2. Clocking
Section D.3. SDRAM Setup
Section D.4. Summary

Appendix E. Open Source Resources
   - Source Repositories and Developer Information
   - Mailing Lists
   - Linux News and Developments
   - Open Source Insight and Discussion

Appendix F. Sample BDI-2000 Configuration File


Organization of the book

Chapter 1, "Introduction," provides a brief look at the factors driving the rapid adoption of Linux in the embedded environment. Several important standards and organizations relevant to embedded Linux are introduced.

Chapter 2, "Your First Embedded Experience," introduces the reader to many concepts related to embedded Linux upon which we build in later chapters.

In Chapter 3, "Processor Basics," we present a high-level look at the more popular processors and platforms that are being used to build embedded Linux systems. We examine selected products from many of the major processor manufacturers. All of the major architecture families are represented.

Chapter 4, "The Linux Kernel: A Different Perspective," examines the Linux kernel from a slightly different perspective. Instead of kernel theory or internals, we look at its structure, layout, and build construction so you can begin to learn your way around this large software project and, more important, learn where your own customization efforts must be focused. This includes detailed coverage of the kernel build system.

Chapter 5, "Kernel Initialization," details the Linux kernel's initialization process. You will learn how the architecture- and bootloader-specific image components are concatenated to the image of the kernel proper for downloading to Flash and booting by an embedded bootloader. The knowledge gained here will help you customize the Linux kernel to your own embedded application requirements.

Chapter 6, "System Initialization," continues the detailed examination of the initialization process. When the Linux kernel has completed its own initialization, application programs continue the initialization process in a predetermined manner. Upon completing Chapter 6, you will have the necessary knowledge to customize your own userland application startup sequence.

Chapter 7, "Bootloaders," is dedicated to the booloader and its role in an embedded Linux system. We examine the popular open-source bootloader U-Boot and present a porting example. We briefly introduce additional bootloaders in use today so you can make an informed choice about your particular requirements.

Chapter 8, "Device Driver Basics," introduces the Linux device driver model and provides enough background to launch into one of the great texts on device drivers, listed as "Suggestions for Additional Reading" at the end of the chapter.

Chapter 9, "File Systems," presents the more popular file systems being used in embedded systems today. We include coverage of the JFFS2, an important embedded file system used on Flash memory devices. This chapter includes a brief introduction on building your own file system image, one of the more difficult tasks the embedded Linux developer faces.

Chapter 10, "MTD Subsystem," explores the Memory Technology Devices (MTD) subsystem. MTD is an extremely useful abstraction layer between the Linux file system and hardware memory devices, primarily Flash memory.

Chapter 11, "BusyBox," introduces BusyBox, one of the most useful utilities for building small embedded systems. We describe how to configure and build BusyBox for your particular requirements, along with detailed coverage of system initialization unique to a BusyBox environment. Appendix C, "BusyBox Commands," lists the available BusyBox commands from a recent BusyBox release.

Chapter 12, "Embedded Development Environment," takes a detailed look at the unique requirements of a typical cross-development environment. Several techniques are presented to enhance your productivity as an embedded developer, including the powerful NFS root mount development configuration.

Chapter 13, "Development Tools," examines many useful development tools. Debugging with gdb is introduced, including coverage of core dump analysis. Many more tools are presented and explained, with examples including strace, ltrace, top, and ps, and the memory profilers mtrace and dmalloc. The chapter concludes with an introduction to the more important binary utilities, including the powerful readelf utility.

Chapter 14, "Kernel Debugging Techniques," provides a detailed examination of many debugging techniques useful for debugging inside the Linux kernel. We introduce the use of the kernel debugger KGDB, and present many useful debugging techniques using the combination of gdb and KGDB as debugging tools. Included is an introduction to using hardware JTAG debuggers and some tips for analyzing failures when the kernel won't boot.

Chapter 15, "Debugging Embedded Linux Applications," moves the debugging context from the kernel to your application programs. We continue to build on the gdb examples from the previous two chapters, and we present techniques for multithreaded and multiprocess debugging.

Chapter 16, "Porting Linux," introduces the issues related to porting Linux to your custom board. We walk through a simple example and highlight the steps taken to produce a working Linux kernel on a custom PowerPC board. Several important concepts are presented that have trapped many newcomers to Linux kernel porting. Together with the techniques presented in Chapters 13 and 14, you should be ready to tackle your own custom board port after reading this chapter.

Chapter 17, "Linux and Real Time," provides an introduction to one of the more exciting developments in embedded Linux: configuring for real time via the CONFIG_RT option. We cover the features available with RT and how they can be used in a design. We also present techniques for measuring latency in your application configuration.

The appendixes cover the GNU Public License, U-Boot Configurable Commands, BusyBox Commands, SDRAM Interface Considerations, resources for the open source developer, and a sample configuration file for one of the more popular hardware JTAG debuggers, the BDI-2000