Linux for embedded and real-time applications
Linux for Embedded and Real-Time Applications, Fourth Edition, provides a practical introduction to the basics, covering the latest developments in this rapidly evolving technology. Ideal for those new to the use of Linux in an embedded environment, the book takes a hands-on approach that covers key...
Otros Autores: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Oxford, England ; Cambridge, Massachusetts :
Newness
2018.
|
Edición: | Fourth edition |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009630755206719 |
Tabla de Contenidos:
- Front Cover
- Linux for Embedded and Real-time Applications
- Copyright Page
- Dedication
- Contents
- Preface
- Audience and Prerequisites
- What's New in this Edition
- Personal Biases
- Organization
- I. Introduction
- 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
- Alternatives to Linux
- FreeRTOS
- MicroC/OS
- Resources
- 2 Installing linux
- Distributions
- Linux Mint
- Debian GNU/Linux
- Ubuntu
- Red Hat Enterprise Linux
- Fedora
- CentOS
- SUSE
- Hardware Requirements
- Installation Scenarios
- Stand-Alone
- Dual-Booting
- Virtualization
- Installing VirtualBox
- DVD or Live CD?
- Installation Process
- Resources
- 3 Introducing linux
- Running Linux-KDE
- File Manager
- Shell Window
- Linux Features
- Protected Mode Architecture
- Real Mode
- Protected Mode
- "Flat" Versus Segmented Memory Models
- Paging
- 64-Bit 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
- Gnu Compiler Collection
- Make
- Gnu DeBugger
- Getting and Installing the Software
- Install Cross-Tool Chain
- The Terminal Emulator, minicom
- Networking
- Network Address
- What About Wireless?
- Network File System
- Trivial File Transfer Protocol
- Resources
- 5 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
- Additional Plug-ins
- Summary
- Resources
- 6 The hardware
- The ARM Architecture
- Open Source Hardware
- BeagleBoard
- Specifications (Rev. C4)
- BeagleBoard-xM
- BeagleBone
- BeagleBone Black
- Gumstix
- Additional specifications
- Raspberry Pi
- Specifications
- Setting up the BeagleBone Black
- Flash Memory and File Systems
- BeagleBone Black Memory Configuration
- Preparing the Board
- Caveat
- The Boot Process
- Differences Between Version 7.4 and Version 8.7
- The Root File System Image
- Boot to the NFS File System
- What Can Go Wrong?
- Resources
- II. Application programming in a cross-development environment
- 7 Accessing hardware
- Review
- ARM I/O Architecture
- LEDs
- Accessing I/O From Linux: Our First Program
- Creating a Project
- The Target Execution Environment
- The led Program
- The Makefile
- A Data Acquisition Example
- Set Up the Hardware
- Accessing the Analog Subsystem
- 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
- Configuring Remote System Explorer
- Debugging With Remote System Explorer
- 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
- 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
- Try it Out
- 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
- "Real" Web Servers
- Apache
- Lighttpd
- Node.js
- Resources
- 11 Graphics programming with QT
- Getting and Installing QT
- QT Basics
- Signals and Slots
- A Simple Example
- QT Designer
- Putting QT on the ARM
- Build the Target Libraries
- Create Build Environment for Target Applications
- A Graphical Thermostat
- Resources
- III. Components and tools
- 12 Configuring and building the Linux kernel
- Getting Started
- Where's the Source Code? Upstream versus Downstream Kernels
- Kernel Version Numbering
- Additional Tools
- Getting and Installing the BeagleBone Kernel
- Patching the Kernel
- The Kernel Source Tree
- Kernel Makefile
- Configuring the Kernel: make config, menuconfig, xconfig
- Xconfig Options
- .config File
- A Problem
- Building the Kernel
- Workstation Digression
- Booting the New Kernel
- Behind the Scenes: What's Really Happening
- Resources
- 13 Integrated build environments
- The Problem
- Buildroot
- Open Embedded
- OE Metadata
- Testing the New Image: Quick EMUlator
- Personal Observations
- Yocto Project
- Application Development with Yocto: The Software Development Kit and Eclipse
- Personal Observations
- Resources
- 14 BusyBox and Linux initialization
- Introducing BusyBox
- Configuring and Installing BusyBox
- BusyBox Settings
- Applets.
- Building and Installing
- Using BusyBox
- User Space Initialization
- Stage 1 Boot Loader
- Stage 2 MLO
- U-Boot
- Linux Kernel
- Systemd
- User Space Initialization, the "Old Way"
- Resources
- 15 U-boot boot loader and getting ready to ship
- U-Boot
- Background
- Installing and Configuring U-Boot
- Testing a New U-Boot
- The "Sandbox"
- Device Trees
- Putting the Application in eMMC Flash
- Resources
- 16 Source code control - GIT
- Background
- Introducing git
- File states and life cycle
- Branching and merging
- Configuring git
- Graphical git
- Creating a new repository
- Resources
- 17 Linux and real-time
- Hard versus Soft Real-Time
- Why Linux is Not Real-Time
- Measuring Latency: Cyclictest
- Improving Linux Latency
- Two Approaches
- Preemption Improvement
- Interrupt Abstraction
- A Third Way: Xenomai
- Working With PREEMPT_RT
- Wrap Up
- Resources
- Appendix A: U-boot Commands
- Information Commands
- 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
- Back Cover.