Embedded Software, 2nd Edition

Book description

As the embedded world expands, developers must have a strong grasp of many complex topics in order to make faster, more efficient and more powerful microprocessors to meet the public’s growing demand. Embedded Software: The Works covers all the key subjects embedded engineers need to understand in order to succeed, including Design and Development, Programming, Languages including C/C++, and UML, Real Time Operating Systems Considerations, Networking, and much more. New material on Linux, Android, and multi-core gives engineers the up-to-date practical know-how they need in order to succeed.

Colin Walls draws upon his experience and insights from working in the industry, and covers the complete cycle of embedded software development: its design, development, management, debugging procedures, licensing, and reuse. For those new to the field, or for experienced engineers looking to expand their skills, Walls provides the reader with detailed tips and techniques, and rigorous explanations of technologies.

Key features include:

  • New chapters on Linux, Android, and multi-core – the cutting edge of embedded software development!
  • Introductory roadmap guides readers through the book, providing a route through the separate chapters and showing how they are linked

About the Author

Colin Walls has over twenty-five years experience in the electronics industry, largely dedicated to embedded software. A frequent presenter at conferences and seminars and author of numerous technical articles and two books on embedded software, he is a member of the marketing team of the Mentor Graphics Embedded Software Division. He writes a regular blog on the Mentor website (blogs.mentor.com/colinwalls).

  • New chapters on Linux, Android, and multi-core – the cutting edge of embedded software development!
  • Introductory roadmap guides readers through the book, providing a route through the separate chapters and showing how they are linked

Table of contents

  1. Cover image
  2. Title page
  3. Content
  4. Copyright
  5. Dedication
  6. Foreword
  7. Preface to the First Edition
  8. Preface to the Second Edition
  9. Whats on the Website
  10. Roadmap to Embedded Software Development
  11. Chapter 1. Embedded Software
    1. 1.1 What Makes an Embedded Application Tick?
    2. 1.2 Memory in Embedded Systems
    3. 1.3 Memory Architectures
    4. 1.4 How Software Influences Hardware Design
    5. 1.5 Migrating Your Software to a New Processor Architecture
    6. 1.6 Embedded Software for Transportation Applications
    7. 1.7 How to Choose a CPU for Your System on Chip Design
    8. 1.8 An Introduction to USB Software
    9. 1.9 Toward USB 3.0
    10. Further Reading
  12. Chapter 2. Design and Development
    1. 2.1 Emerging Technology for Embedded Systems Software Development
    2. 2.2 Making Development Tool Choices
    3. 2.3 Eclipse—Bringing Embedded Tools Together
    4. 2.4 A Development System That Crosses RTOS Boundaries
    5. 2.5 Embedded Software and UML
    6. 2.6 User Interface Development
    7. 2.7 Software and Power Consumption
  13. Chapter 3. Programming
    1. 3.1 Programming for Exotic Memories
    2. 3.2 Self-Testing in Embedded Systems
    3. 3.3 A Command-Line Interpreter
    4. 3.4 Traffic Lights: An Embedded Software Application
  14. Chapter 4. C Language
    1. 4.1 C Common
    2. 4.2 Using C Function Prototypes
    3. 4.3 Interrupt Functions and ANSI Keywords
    4. 4.4 Bit by Bit
    5. 4.5 Programming Floating-Point Applications
    6. 4.6 Looking at C—A Different Perspective
    7. 4.7 Reducing Function Call Overhead
    8. 4.8 Structure Layout—Become an Expert
    9. 4.9 Memory and Programming in C
    10. 4.10 Pointers and Arrays in C and C++
    11. 4.11 Using Dynamic Memory in C and C++
  15. Chapter 5. C++
    1. 5.1 C++ in Embedded Systems—A Management Perspective
    2. 5.2 Why Convert from C to C++?
    3. 5.3 Clearing the Path to C++
    4. 5.4 C++ Templates—Benefits and Pitfalls
    5. 5.5 Exception Handling in C++
    6. 5.6 Looking at Code Size and Performance with C++
    7. 5.7 Write-Only Ports in C++
    8. 5.8 Using Nonvolatile RAM with C++
    9. Further Reading
  16. Chapter 6. Real Time
    1. 6.1 Real-Time Systems
    2. 6.2 Visualizing Program Models of Embedded Systems
    3. 6.3 Event Handling in Embedded Systems
    4. 6.4 Programming for Interrupts
  17. Chapter 7. Real-Time Operating Systems
    1. 7.1 Debugging Techniques with an RTOS
    2. 7.2 A Debugging Solution for a Custom Real-Time Operating System
    3. 7.3 Debugging—Stack Overflows
    4. 7.4 Bring in the Pros—When to Consider a Commercial RTOS
    5. 7.5 On the Move
    6. 7.6 Introduction to RTOS Driver Development
    7. 7.7 Scheduling Algorithms and Priority Inversion
    8. 7.8 Time Versus Priority Scheduling
    9. 7.9 An Embedded File System
    10. 7.10 OSEK—An RTOS Standard
  18. Chapter 8. Networking
    1. 8.1 What’s Wi-Fi?
    2. 8.2 Who Needs a Web Server?
    3. 8.3 Introduction to SNMP
    4. 8.4 IPv6—The Next Generation Internet Protocol
    5. 8.5 The Basics of DHCP
    6. 8.6 NAT Explained
    7. 8.7 PPP—Point-to-Point Protocol
    8. 8.8 Introduction to SSL
    9. 8.9 DHCP Debugging Tips
    10. 8.10 IP Multicasting
  19. Chapter 9. Open Source, Embedded Linux, and Android
    1. 9.1 GNU Toolchain for Embedded Development: Build or Buy
    2. 9.2 Introduction to Linux for Embedded Systems
    3. 9.3 Android Architecture and Deployment
    4. 9.4 Android, MeeGo, and Embedded Linux in Vertical Markets
  20. Chapter 10. Multicore Embedded Systems
    1. 10.1 Introduction to Multicore
    2. 10.2 Multiple Cores: Multiple Operating Systems
    3. 10.3 Selecting Multiple Operating Systems for Multiple Cores
    4. 10.4 CPU to CPU Communication: MCAPI
  21. Afterword
    1. Great Expectations
  22. Index

Product information

  • Title: Embedded Software, 2nd Edition
  • Author(s): Colin Walls
  • Release date: May 2012
  • Publisher(s): Newnes
  • ISBN: 9780124159693