Linux for Embedded and Real-time Applications

Linux for Embedded and Real-time Applications

4th Edition - November 15, 2017
  • Author: Doug Abbott
  • eBook ISBN: 9780128112786
  • Paperback ISBN: 9780128112779

Purchase options

Purchase options
DRM-free (PDF, Mobi, EPub)
Available
Sales tax will be calculated at check-out

Institutional Subscription

Free Global Shipping
No minimum order

Description

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 concepts of building applications in a cross-development environment. Hands-on exercises focus on the popular open source BeagleBone Black board. New content includes graphical programming with QT as well as expanded and updated material on projects such as Eclipse, BusyBox – configuring and building, the U-Boot bootloader – what it is, how it works, configuring and building, and new coverage of the Root file system and the latest updates on the Linux kernel..

Key Features

  • Provides a hands-on introduction for engineers and software developers who need to get up to speed quickly on embedded Linux, its operation and capabilities
  • Covers the popular open source target boards, the BeagleBone and BeagleBone Black
  • Includes new and updated material that focuses on BusyBox, U-Boot bootloader and graphical programming with QT

Readership

Engineers and software developers involved in embedded computing development; Linux programmers; electrical and computer engineering students

Table of Contents

  • Chapter 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
     Free RTOS
     MicroC/OS
    Resources
    Chapter 2: Installing Linux
    Distributions
    Debian GNU/Linux
    Fedora
    CentOS
    SUSE
    Ubuntu
    Hardware Requirements
    Installation Scenarios
    Stand-Alone
    Dual-Booting
    Virtualization
    DVD or Live CD
    Installation Process
     Disk Partitioning
     Package Selection
    Resources
    Chapter 3: Introducing Linux
    Running Linux – KDE
     File Manager
     Shell Window
    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
    File System Hierarchy Standard
    “Pseudo” File Systems
     /proc
     /sys
    “Mounting” File Systems
    The Shell
    Getting Help
    man pages
    Google
    The Linux Documentation Project
    Resources
    Chapter 4: The Host Development Environment
    Cross Toolchains
    Getting  and Installing the Toolchain
     Building a Toolchain from Source—crosstool-NG
    Network Configuration
    Network Address
    NFS Server
    exports File
    The minicom Terminal Emulator
    The Target Root File System
    Resources
    Chapter 5: Eclipse
    Overview
     Plug-ins
     Workbench
    Obtaining and Installing Eclipse
    Starting 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
    Chapter 6: The Hardware
    The ARM Architecture
    Open Source Hardware
    BeagleBoard and Derivatives
    Raspberry PI and Derivatives
    Arduino
    MinnowBoard
    Setting Up the Beagle Bone
     Flash Memory and File Systems
    Boot the Board
    What can go wrong?
    Beagle Bone Capes
    The bootloader—u-boot
    Resources
    Part 2: Application Programming in a Cross-Development Environment
    Chapter 7: Accessing Hardware from User Space
    Review
    ARM I/O Architecture
    User LEDs
    Accessing I/O from Linux—Our First Program
    Creating a Yocto Project in Eclipse
    The Target Execution Environment
    The LED Program
     The Makefile
    A Data Acquisition Example
     Accessing the I2C bus
    Linux Device Drivers
    The Low level I/O API
    Resources
    Chapter 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
    Ad a Password for Root
    Configuring RSE
    Debugging with RSE
    Resources
    Chapter 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 Implementation
    Upgrading the Thermostat
     Changes Required in thermostat.c
    Debugging Multithreaded Programs
    Resources
    Chapter 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
    The boa Web Server
    A Web-enabled Thermostat
    Embedded email
    Other Application-level Protocols
    Resources
    Chapter 11: Graphics Programming with QT
    Part 3: Components and Tools
    Chapter 12: Integrated Build Environments
    The Problem
    Open Embedded
    Yocto
    Linaro
    Chapter 13: Configuring and Building the Kernel
    Getting Started
    Kernel Version Numbering
    “Upstream” vs “Downstream” kernels
    The Kernel Source Tree
    Kernel Makefile
    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
    Chapter 14: BusyBox and Linux Initialization
    Introducing BusyBox
    Configuring and Installing BusyBox
    BusyBox Settings
    Applets
    Building and Installing
    Using BusyBox
    System Initialization
    Stage 1 Boot Loader
    U-Boot
    Linux Kernel
    User Space Initialization
    sysinit
    systemd
    Resources
    Chapter 15: U-Boot Boot Loader and Getting Ready to Ship
    U-Boot
    Background
    Configuring and Installing U-Boot
    Testing a New U-Boot
    Barebox—the successor to u-Boot
    Creating a Flash File System
     Thoughts on Flash Partitions
     The Device Tree—Bringing Structure to Hardware Description
    Resources
    Chapter 16: Source Code Control—GIT
    Background
    Introducing Git
     File States and Life Cycle
     Branching and Merging
    Configuring Git
    Graphical Git—Eclipse
     Creaging a New Repository
    Resources
    Chapter 17: Real-time Linux
    What is Real-time
     Hard vs. Soft Real-time
    Why isn’t Linux Real-time?
    Preemption Improvement
    The Linux Scheduler
    PREEMPT_RT patch
    Interrupt Abstraction
    RTAI and RTLinux
    Xenomai
    ADEOS
    Wrap Up
    Resources

Product details

  • No. of pages: 304
  • Language: English
  • Copyright: © Newnes 2017
  • Published: November 15, 2017
  • Imprint: Newnes
  • eBook ISBN: 9780128112786
  • Paperback ISBN: 9780128112779

About the Author

Doug Abbott

Doug Abbott is a consultant with over thirty years’ experience, specializing in hardware and software for industrial and scientific data acquisition and embedded product applications. Doug is also a popular instructor and seminar leader, who teaches classes in PC technology and real-time programming for University of California Berkeley Extension. He has taught the techniques of real-time programming and multi-tasking operating systems to hundreds of professional engineers.

Doug Abbott is the principal of Intellimetrix, a consulting firm in Silver City, NM, specializing in hardware and software for industrial and scientific data acquisition and embedded product applications. Among his past and pre-sent clients are Agilent Technologies, Tektronix, Sandia National Laboratory and numerous smaller high-tech com-panies in Silicon Valley.

Mr. Abbott has over thirty years experience in various aspects of computer hardware and software design and has been an independent consultant for the past fifteen years. Prior to founding Intellimetrix, he managed software de-velopment for DSP Technology, Inc, a leading supplier of high-speed instrumentation.

Doug is also a popular instructor and seminar leader, who teaches classes in PC technology and real-time program-ming for University of California Berkeley Extension. He has taught the techniques of real-time programming and multi-tasking operating systems to hundreds of professional engineers. These classes can also be customized and made available for on-site presentation.

Mr. Abbott received an MSEE degree from the University of California at Berkeley.

Affiliations and Expertise

President, Intellimetrix, Inc., Silver City, NM, USA