Linux for Embedded and Real-time Applications - 4th Edition - ISBN: 9780128112779

Linux for Embedded and Real-time Applications

4th Edition

Authors: Doug Abbott
Paperback ISBN: 9780128112779
Imprint: Newnes
Published Date: 1st December 2017
Page Count: 300
Tax/VAT will be calculated at check-out

Institutional Access


Description

This new edition of Linux for Embedded and Real-Time Applications provides a practical introduction to the basics and covers 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 specific applications.

New content includes:

  • Yocto projects, including BusyBox – configuring and building, the U-Boot bootloader – what it is, how it works, configuring and building
  • New coverage of the Root file system
  • The latest updates on 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 its capabilities
  • Covers the popular target boards, the BeagleBone and BeagleBone Black
  • New material will focusing on the Yocto project, BusyBox and U-Boot bootloaders

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

Details

No. of pages:
300
Language:
English
Copyright:
© Newnes 2018
Published:
Imprint:
Newnes
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