Linux for Embedded and Real-time Applications (3rd Edition)

This new edition of Linux for Embedded and Real-Time Applications provides a practical introduction to the basics and the latest developments in this rapidly evolving technology. Ideal for those new to using Linux in an embedded environment, it takes a hands-on approach and covers key concepts plus...

Celý popis

Uložené v:
Podrobná bibliografia
Hlavný autor: Abbott, Doug
Médium: E-kniha Kniha
Jazyk:English
Vydavateľské údaje: Waltham Elsevier 2013
Newnes
Elsevier Science & Technology
Vydanie:3
Predmet:
ISBN:9780124159969, 0124159966
On-line prístup:Získať plný text
Tagy: Pridať tag
Žiadne tagy, Buďte prvý, kto otaguje tento záznam!
Obsah:
  • Title Page Preface Table of Contents 1. The Embedded and Real-Time Space 2. Installing Linux 3. Introducing Linux 4. The Host Development Environment 5. The Hardware 6. Eclipse Integrated Development Environment 7. Accessing Hardware from User Space 8. Debugging Embedded Software 9. Posix Threads 10. Embedded Networking 11. Configuring and Building the Kernel 12. Kernel Modules and Device Drivers 13. BusyBox and Linux Initialization 14. U-Boot Boot Loader and Getting Ready to Ship 15. Source Code Control - GIT 16. Build Tools Appendices Index
  • Specifications -- Raspberry Pi -- Specifications -- Setting Up the Mini2440 -- Flash Memory and File Systems -- Flash Memory-NAND and NOR -- Root File System in Flash -- Preparing the Board -- Sample Code -- factory_images -- The Script Files -- mini_boot -- set-mini_boot -- *.sh -- The Procedure -- Final Steps -- What Can Go Wrong? -- The Boot Loader -- Resources -- Sites for Alternate Boards -- 6: Eclipse Integrated Development Environment -- Overview -- Plug-ins -- Workbench -- Installation -- Using Eclipse -- The C Development Environment-CDT -- Creating a New Project -- Adding Source Code to the Project -- Content Assist -- Code Templates -- Automatic Closing -- The Program -- Building the Project -- Debugging with CDT -- The Debug View -- Variables View -- Breakpoints View -- Memory View -- Finish Debugging -- Summary -- Resources -- 2: Application Programming in a Cross-Development Environment -- 7: Accessing Hardware from User Space -- Review -- ARM I/O Architecture -- LEDs and Pushbuttons -- Accessing I/O from Linux-Our First Program -- Creating a Project -- The Target Execution Environment -- The led Program -- The Makefile -- A Data Acquisition Example -- Resources -- 8: Debugging Embedded Software -- Remote Debugging with Eclipse -- Remote Debug Launch Configuration -- A Thermostat -- Host Workstation as Debug Environment -- Advanced Breakpoint Features -- Debugger Services Framework -- Installing SSH -- Add a Password for Root -- Configuring RSE -- Debugging with RSE -- Resources -- 9: Posix Threads -- Threads -- Thread Attributes -- Synchronization-Mutexes -- Mutex Attributes -- Problems with Solving the Resource Sharing Problem-Priority Inversion -- Communication-Condition Variables -- Condition Variable Attributes -- Thread Termination and Cancellation -- Cleanup Handlers -- Pthreads Implementations -- Upgrading the Thermostat
  • Linux Device Drivers -- The Low Level I/O API -- Changes Required in thermostat.c -- Debugging Multithreaded Programs -- Resources -- 10: Embedded Networking -- Sockets -- The Server Process -- The Client Process -- Socket Attributes -- A Simple Example -- The Server -- The Client -- A Remote Thermostat -- Multiple Monitor Threads -- Embedded Web Servers -- Background on HTTP -- A Web-Enabled Thermostat -- Dynamic Web Content -- Forms and the POST Method -- Build and Try it -- A "Real" Web Server-Boa -- Embedded E-mail -- Other Application-Level Protocols -- Resources -- 11: Configuring and Building the Kernel -- Getting Started -- Kernel Version Numbering -- The Kernel Source Tree -- Kernel Makefile -- Patching the Kernel -- Configuring the Kernel-make config, menuconfig, xconfig -- xconfig Options -- .config File -- Behind the Scenes-What's Really Happening -- Building the Kernel -- Workstation Digression -- Booting the New Kernel -- Resources -- 12: Kernel Modules and Device Drivers -- Kernel Modules -- A Module Example -- "Tainting" the Kernel -- Kernel Modules and the GPL -- Building Kernel Modules -- The Role of a Module -- What's a Device Driver Anyway? -- Linux Device Drivers -- The /dev Directory -- The Low-Level User Space I/O APIs -- Internal Driver Structure -- Driver Data Structures -- init() and exit() -- open() and release() -- read() and write() -- Building and Running the Driver -- Debugging Kernel Code -- printk -- /proc Files -- Handling Interrupts -- Registering an Interrupt Handler -- Probing for the Interrupt -- Deferred Processing-the "Bottom Half" -- Building Your Driver into the Kernel -- Resources -- 3: Components and Tools -- 13: BusyBox and Linux Initialization -- Introducing BusyBox -- Configuring and Installing BusyBox -- BusyBox Settings -- Applets -- Building and Installing -- Using BusyBox -- A Thermostat Display
  • Front Cover -- Linux for Embedded and Real-Time Applications -- Copyright Page -- Dedication -- Contents -- Preface -- Audience and Prerequisites -- Personal Biases -- Organization -- 1: Introduction and Getting Started -- 1: The Embedded and Real-Time Space -- What Is Embedded? -- What Is Real-Time? -- How and Why Does Linux Fit In? -- Open Source -- Portable and Scalable -- Where Is Linux Embedded? -- Open Source Licensing -- Legal Issues -- Resources -- 2: Installing Linux -- Distributions -- Debian GNU/Linux -- Fedora -- Red Hat Enterprise Linux -- SUSE -- Ubuntu -- Hardware Requirements -- Installation Scenarios -- Stand-Alone -- Dual-Booting -- Virtualization -- DVD or Live CD? -- Installation Process -- Disk Partitioning -- Package Selection -- Resources -- Specific Distribution Sites -- Other Resources -- 3: Introducing Linux -- Running Linux-KDE -- File Manager -- Shell Window -- Linux Features -- Protected Mode Architecture -- Real Mode -- Protected Mode -- "Flat" vs. Segmented Memory Models -- Paging -- The Linux Process Model -- The fork() Function -- The execve() Function -- The Linux File System -- File Permissions -- The "root" User -- The /proc File System -- The Filesystem Hierarchy Standard -- The /usr Hierarchy -- "Mounting" File Systems -- System Configuration -- The Shell -- Getting Help -- Resources -- 4: The Host Development Environment -- Cross-Development Tools-The GNU Tool Chain -- GCC -- Make -- GDB -- Install Software -- What's on the DVD? -- Install Cross-Tool Chain -- Install Root File System -- The Terminal Emulator, minicom -- Networking -- Network Address -- What About Wireless? -- Network File System -- Trivial File Transfer Protocol -- Resources -- 5: The Hardware -- Embedded Hardware -- ARM Single Board Computer -- Specifications -- What About Other Boards? -- BeagleBoard -- Specifications (Rev. C4) -- Gumstix
  • ANSI Terminal Escape Sequences -- Thermostat Display -- ncurses Library -- User Space Initialization -- Stage 1 Boot Loader -- U-Boot -- Linux Kernel -- Init Process -- Resources -- 14: U-Boot Boot Loader and Getting Ready to Ship -- U-Boot -- Background -- Installing and Configuring U-Boot -- Testing a New U-Boot -- "JTAGing" the NOR -- Creating a Flash File System -- More Thoughts on Flash Partitions -- The Flat Device Tree -- Resources -- 15: Source Code Control-GIT -- Background -- Introducing Git -- File States and Life Cycle -- Branching and Merging -- Configuring Git -- Graphical Git -- Creating a New Repository -- Resources -- 16: Build Tools -- Buildroot -- OpenEmbedded -- Getting Started -- Personal Observations -- Android -- Application Development -- Platform Development -- Wrap Up -- Resources -- Appendix A: U-Boot Commands -- Information Commands -- Memory Commands -- NOR Flash Memory Commands -- NAND Flash Memory Commands -- Execution Control Commands -- Download Commands -- Environment Variable Commands -- Environment Variables -- Appendix B: Why Software Should Not Have Owners -- Index