TIENE EN SU CESTA DE LA COMPRA
en total 0,00 €
Features
Instills a holistic understanding of the embedded software development process
Emphasizes open-source software components currently gaining in popularity
Includes real code fragments and FreeRTOS references throughout the text
Summary
Embedded Software Development: The Open-Source Approach delivers a practical introduction to embedded software development, with a focus on open-source components. This programmer-centric book is written in a way that enables even novice practitioners to grasp the development process as a whole.
Incorporating real code fragments and explicit, real-world open-source operating system references (in particular, FreeRTOS) throughout, the text:
Defines the role and purpose of embedded systems, describing their internal structure and interfacing with software development tools
Examines the inner workings of the GNU compiler collection (GCC)-based software development system or, in other words, toolchain
Presents software execution models that can be adopted profitably to model and express concurrency
Addresses the basic nomenclature, models, and concepts related to task-based scheduling algorithms
Shows how an open-source protocol stack can be integrated in an embedded system and interfaced with other software components
Analyzes the main components of the FreeRTOS Application Programming Interface (API), detailing the implementation of key operating system concepts
Discusses advanced topics such as formal verification, model checking, runtime checks, memory corruption, security, and dependability
Embedded Software Development: The Open-Source Approach capitalizes on the authors' extensive research on real-time operating systems and communications used in embedded applications, often carried out in strict cooperation with industry. Thus, the book serves as a springboard for further research.
Table of Contents
Introduction
BASICS OF EMBEDDED SOFTWARE DEVELOPMENT
Embedded Applications and Their Requirements
Role and Purpose of Embedded Systems
Microcontrollers and Their Internal Structure
General-Purpose Processors versus Microcontrollers
Embedded Software Development Process
Summary
GCC-Based Software Development Tools
Overview
Compiler Driver Workflow
C Preprocessor Workflow
The Linker
The C Runtime Library
Configuring and Building Open-Source Software
Build Process Management: GNU Make
Summary
Execution Models for Embedded Systems
The Cyclic Executive
Major and Minor Cycles
Task Splitting and Secondary Schedules
Task-Based Scheduling
Task State Diagram
Race Conditions in Task-Based Scheduling
Summary
Concurrent Programming Techniques
Task Management
Time and Delays
Semaphores
Message Passing
Summary
Scheduling Algorithms and Analysis
Scheduling Algorithms for Real-Time Execution
Scheduling Analysis
Summary
Configuration and Usage of Open-Source Protocol Stacks
Introduction to the LwIP Protocol Stack
Operating System Adaptation Layer
Configuration Options
Netconn Interface
Network Buffer Management
POSIX Networking Interface
Summary
Device Driver Development
General Structure of a Device Driver
Interrupt Handling
Device Driver Interfaces
Synchronization Issues
Example: Ethernet Device Driver
Summary
Portable Software
Portability in Embedded Software Development
Portability Issues in C-Language Development
Application Programming Interfaces
GCC Extensions to the C Language
Summary
The FreeRTOS Porting Layer
General Information
Basic Data Types
Time Representation and Architectural Details
Context Switch
Interrupt Handling and Critical Regions
Task Stack Initialization
Tick Timer
Architecture-Dependent Scheduler Startup
Summary
Performance and Footprint at the Toolchain Level
Overview of the GCC Workflow and Optimizations
Optimization-Related Compiler Options
Architecture-Dependent Compiler Options
Source-Level Optimization: A Case Study
Summary
Example: A Modbus TCP Device
Toolchain and Operating System
General Firmware Structure
Modbus Slave Protocol Stack
USB-Based Filesystem
Application Code
Performance and Footprint
Summary
ADVANCED TOPICS
Model Checking of Distributed and Concurrent Systems
Introduction
The SPIN Model Checker
The Promela Modeling Language
Property Specification
Performance Hints
Summary
Model Checking: An Example
Introduction
Distributed Master Election Protocol
Formal Promela Protocol Model
Formal Verification Results
Summary
Memory Protection Techniques
Memory Management Units (MMUS)
Memory Protection Units (MPUS)
MPUS versus MMUS
Memory Checksumming
CRC Calculation
Data Structure Marking
Stack Management and Overflow Detection
Summary
Security and Dependability Aspects
Introduction to Splint
Basic Checks
Memory Management
Buffer Overflows
Function Interface Annotations
Summary
References