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