From the Back Cover
Fundamentals of Embedded Software: Where C and Assembly Meet is a refreshing alternative to the traditional sophomore text on computer organization and assembly language programming. The text approaches assembly the way it is commonly used in practice>to implement small, fast, or special-purpose routines called from a main program written in a high-level language such as C. By using an embedded software context, the text introduces multi-threaded programming, preemptive and non-preemptive systems, shared resources, and scheduling, thus providing a solid foundation for subsequent courses on operating systems, real-time systems, networking, and microprocessor-based design.
The text will help you:
* appreciate the often overlooked consequences and limitations of binary representation.
* implement fast real-number arithmetic using fixed-point reals instead of floating-point.
* reinforce your comprehension of scope, parameter passing, recursion, and memory allocation.
* employ features of C (such as bit-manipulation and variant access) commonly used in embedded software.
* write functions in Intel x86 protected mode assembly to be called from C.
* estimate maximum data rate and latency for various styles of I/O programming.
* manage multiple threads, shared resources, and critical sections.
* develop programming practices that avoid priority inversions, deadlocks, and shared memory problems.
Fundamentals of Embedded Software: Where C Read more...

From the Back Cover
Fundamentals of Embedded Software: Where C and Assembly Meet is a refreshing alternative to the traditional sophomore text on computer organization and assembly language programming. The text approaches assembly the way it is commonly used in practice>to implement small, fast, or special-purpose routines called from a main program written in a high-level language such as C. By using an embedded software context, the text introduces multi-threaded programming, preemptive and non-preemptive systems, shared resources, and scheduling, thus providing a solid foundation for subsequent courses on operating systems, real-time systems, networking, and microprocessor-based design.
The text will help you:
* appreciate the often overlooked consequences and limitations of binary representation.
* implement fast real-number arithmetic using fixed-point reals instead of floating-point.
* reinforce your comprehension of scope, parameter passing, recursion, and memory allocation.
* employ features of C (such as bit-manipulation and variant access) commonly used in embedded software.
* write functions in Intel x86 protected mode assembly to be called from C.
* estimate maximum data rate and latency for various styles of I/O programming.
* manage multiple threads, shared resources, and critical sections.
* develop programming practices that avoid priority inversions, deadlocks, and shared memory problems.
Fundamentals of Embedded Software: Where C Read more...

In an embedded system, firmware is the software that directly interfaces with the microcontroller, controlling the systems function. The major forces driving the embedded firmware development process today are reduced development times, increased complexity, and the need to handle multiple tasks simultaneously. These forces translate into strenuous design requirements for embedded engineers and programmers. Many low-level embedded microcontroller designs have insufficient memory and/or architectural limitations that make the use of a real-time operating system impractical. The techniques presented in this book allow the design of robust multitasking firmware through the use of interleaved state machines. This book presents a complete overview of multitasking terminology and basic concepts. Practical criteria for task selection and state machine design are also discussed.
Designing multitasking firmware is arduous, complex and fraught with potential for errors, and there is no one, standard way to do it. This book will present a complete and well-organized design approach with examples and sample source code that designers can follow.
* Covers every aspect of design from the system level to the component level, including system timing, communicating with the hardware, integration and testing.
* Accompanying CD-ROM contains the source code for the text examples and other useful design tools.
About the Author
Keith E. Curtis earned a BSEE from Montana State University. Read more...

In an embedded system, firmware is the software that directly interfaces with the microcontroller, controlling the systems function. The major forces driving the embedded firmware development process today are reduced development times, increased complexity, and the need to handle multiple tasks simultaneously. These forces translate into strenuous design requirements for embedded engineers and programmers. Many low-level embedded microcontroller designs have insufficient memory and/or architectural limitations that make the use of a real-time operating system impractical. The techniques presented in this book allow the design of robust multitasking firmware through the use of interleaved state machines. This book presents a complete overview of multitasking terminology and basic concepts. Practical criteria for task selection and state machine design are also discussed.
Designing multitasking firmware is arduous, complex and fraught with potential for errors, and there is no one, standard way to do it. This book will present a complete and well-organized design approach with examples and sample source code that designers can follow.
* Covers every aspect of design from the system level to the component level, including system timing, communicating with the hardware, integration and testing.
* Accompanying CD-ROM contains the source code for the text examples and other useful design tools.
About the Author
Keith E. Curtis earned a BSEE from Montana State University. Read more...

The author of this text illustrates how to implement control systems in your resource-limited embedded systems. Using C or C++, you will learn to design and test control systems to ensure a high level of performance and robustness.
Implement proven design techniques for control systems without having to master any advanced mathematics. Using an effective step-by-step approach, this book presents a number of control system design techniques geared toward readers of all experience le
Using the techniques and reusable code in Embedded Control Systems in C/C++, embedded systems developers can design control systems without the advanced calculus skills that are typically required.
About the Author
Jim Ledin, P.E., is an electrical engineer providing simulation-related consulting services. Over the past 18 years, he has worked on all phases of non-real-time and hardware-in-the-loop (HIL) simulation in support of the testing and evaluation of air-to-air and surface-to-air missile systems at the Naval Air Warfare Center in Point Mugu, Calif. He also served as the principal simulation developer for three HIL simulation laboratories for the NAWC. Jim has presented at ADI User Society international meetings and the Embedded Systems Conference, and has written for Embedded Systems Programming magazine and Dr. Dobb's Journal. He can be reached at jim@ledin.com or through the Ledin Engineering Web site at www.ledin.com.
Table of Contents
Embedded Control Systems in C/C+ Read more...

Create network communications software with a thorough understanding of the essential system-level design and implementation choices and how they affect the performance and maintainability of your embedded system. An examination of the OSI 7-layer model serves as a starting point for a logical partitioning of software functionality in a communications system. With this foundation, you explore a development model that addresses the complete range of issues in the design of embedded communications software, including real-time operating systems, hardware and software partitioning, layering, and protocol stacks.
Delve into the design techniques (state tables, upper- and lower-level interfaces, configuration techniques, buffer and timer management) that enable clean, understandable implementations of even complex protocols. Explore specialized design issues, including task and table management, as well as implementation issues that include:
- how device and network management capabilities should interact with the stack
- how to handle system startup and configuration
- what special requirements multi-board designs impose
Combine the recommended design and development processes-complete with a list of appropriate equipment and tools-with your newfound perspective to tackle your next project.
About the Author
T. Sridhar is CTO and vice president of engineering at FutureSoft where his work includes software architecture design for communications systems. Communica Read more...
