HelpFeedback
RAJ KAMAL :Embedded Systems :
Information Center
Book Preface
Table of Contents
Salient Features
About the Author
Queries & Feedback
TMH Home
Buy the Book
Books by same Author


Student Edition
Instructor Edition
Embedded Systems : Architecture, Programming and Design

Raj Kamal

ISBN: 0070494703
Copyright year: 2003

Book Preface



Children need embedded systems to play smart video games and to operate automatic chocolate-vending machines! Young people need embedded systems to borrow smart cards from parents to see movies! Housewives need embedded systems for smart Internet-compliant home appliances, such as, microwave, television, music system, and so on. The driver needs it for automatic cruise control of car. Organisations require embedded systems for network systems and products. There are uncountable examples of the applications of embedded systems.

Three classics that not only influenced this author greatly but also provided a deep insight into the subject and fueled his interest in microprocessor- and microcontroller-based embedded systems are as follows: Foremost is the classic ‘Design with Microcontrollers and Microcomputers’ by J.B. Peatman, McGraw-Hill (1988). The second is ‘Microcontrollers Architecture, Implementation and Programming - HD44795, MC68HC11, MCS-51, 80960CA’ by Kenneth Hintz and Daniel Tabak, a McGraw-Hill International Edition (1992). The third is ‘Advanced Microprocessors’ by Daniel Tabak, a McGraw-Hill International Edition (1995).

In the early days, embedded systems were designed using microprocessors like 8085. Applications were simple, for example, temperature-monitoring systems, data acquisition systems using ADC and DAC, music systems using appropriate interface and simple robotic systems using stepper motor interface. These are now not even referred to as embedded systems.

Since the early eighties, small-scale embedded systems have used microcontrollers from General Instruments Corporation, using their late seventies microcontrollers PIC 16xxx, Motorola microcontrollers 68HC05 and 08, and Intel microcontrollers of 8031 families. The remote of a television, watches, washing machines, ovens, calculators, digital diaries and video games are all examples of the commonly used small scale embedded systems. The advent of microcontrollers of Intel 8051/52, Motorola 68HC11/12, Intel 80196 and 80960 families in the late eighties gave a new dimension to the use of embedded systems hardware.

The advent in last few years of technology that embeds low level and high level processing hardware elements and application-specific processors into a chip has given an added dimension to the embedded systems that are multiprocessor systems, on a single VLSI chip (called System-on-Chip) and are smart as well as highly sophisticated. A simple example is a smart card, and the latest, typical example of a sophisticated system is “Smart Cameras as Embedded Systems” developed at the Princeton University Embedded System Group and reported recently by Wayne Wolf and his team in IEEE Micro, IEEE Computer Society, September 2002 issue.

Embedded systems have definitions that vary with time as well as perception! An embedded system can be defined as one that has computer hardware with software embedded in it as one of its most important components. An embedded system is a dedicated, computer-based system for an application or product. It addresses the issue of the response time constraints of various tasks of the system. An embedded system may either be an independent system or a part of a larger system. Its software usually embeds in ROM(s) (Read Only Memory). It, thus, does not need secondary memories as in a computer.

While writing this book, the author had in his mind the graduate engineering students, readers and keen learners who are budding embedded system engineers of today and perhaps the master designers of these systems tomorrow. Also in mind were the young software engineers interested in working on embedded software and real-time programming projects. This book is intended as a textbook for the students and a reference for the engineers to explain the concepts necessary for designing high-performance response-time constrained sophisticated systems.

The author expects readers of this book to first learn about the embedded system architecture, its basic hardware and software elements, programming models and software engineering practices that are used during the system development process and then learn the software techniques to embed codes into the systems. The author expects them to develop systems that make optimum use of the available system resources: processor, memory, ports, devices and power. This book has been written to fulfill these expectations.

What is the range of topics, innovative technologies and tools for designing an embedded system, simple or complex? This book will help the readers to understand these with ease. Next, the students must develop useful projects on applications in the chosen area of their choice. Exemplary areas are networking, communication, automobile electronics, data acquisition and storing, serving, processing and securing information, smart robots, real-time control and tracking systems, biomedical systems and sounds, images and video real-time processing, filtering, compressing and encrypting systems.

The organization of the chapters is as follows:

Chapter 1 gives a detailed introduction to embedded systems. Embedded systems hardware consists of a processor, memory devices, I/O devices and basic hardware units—power supply, clock and reset circuit, I/O ports to access peripheral and other on-chip or off-chip units. Examples of physical devices are UART, modem, transceiver, timer-counter, keypad, keyboard, LED display unit, LCD display unit, DAC and ADC and pulse dialer. This chapter introduces these hardware units, embedded software, state-of-the-art embedded systems and RTOS. It also provides a number of exemplary applications.

Chapter 2 explains embedded system architecture by its processor and memory organization. The readers will learn about the structural units in a processor that provides processing power in an embedded system. They will also learn about memory devices. This chapter explains processor and memory selection methods for a given embedded system. The basis on which the memory blocks and segments are allocated to the data structures is also explained. Memory map concepts and DMA concepts are described. How the memories, devices, IO devices and processor interface is also answered.

Chapter 3 describes the devices—parallel and serial port devices, timing devices, devices for synchronous, iso-synchronous and asynchronous communications and important buses for networking these. Also described are the sophisticated interfacing features in device ports. This chapter also gives a description of I2C, CAN, USB, advanced serial high speed buses, ISA, PCI, PCIX, advanced parallel high-speed buses.

Chapter 4 concentrates on device drivers. These are important service routines in an embedded system. Use of Linux internals as device drivers and for network functions is also described. Device drivers are explained with examples. An understanding of interrupt servicing and handling mechanism is essential for an embedded system designer. This chapter fulfills that need. It explains thoroughly the concept of interrupt latencies and deadlines. This concept is helpful for real-time programming for an embedded system.

Chapter 5 explains the programming concepts and source code engineering tools for embedded system programming in embedded C/C++/Java. It thoroughly explains the use of pointers and data structures in embedded software. Important concepts explained are—use of multiple function calls in cyclic order and use of the function pointers, function queues and queues of interrupt service routines (thus also device drivers), and data structures; queues, stacks and lists. Object oriented programming concepts in C++ and Java are also described in this chapter. Memory optimization is critical in an embedded system. How is it done? This chapter has the answer.

Chapter 6 teaches program modeling concepts during the single and multi-processor systems software development process. The uses of data flow and control data flow graphs are explained. Program models during real-time programming and uses of FSM and Petri Nets are described. This chapter answers the important question: How do we model multiprocessors, and schedule and synchronize the processing of instructions on these?

Chapter 7 is for learning software engineering practices and approaches in system development processes. Explained are the concepts of uses of linear sequential model, RAD (Rapid Development Phase) model and other important models including the use of component-based (object-oriented) software development process models. Software requirement analysis, design, implementation, testing, debugging and validating strategies are described in this chapter. Also described is the UML language, which has emerged as an important design language.

Chapter 8 covers the most important aspect of real-time programming, namely, inter-process communications. It first explains the concept of the processes, tasks and threads. Next, it describes the use of semaphores. This chapter also explains thoroughly the use of the signals, mutex, message queues, mailboxes, pipes, virtual (logical) sockets and remote procedure calls.

Chapter 9 describes RTOS concepts. It first describes the OS structure and kernel functions. It then explains the process, memory, devices, files and IO subsystem management functions. It describes schedule management for multiple tasks by an RTOS. It further explains how the scheduling is done for multiple tasks in real time by periodic, cyclic, preemptive, time slicing and other scheduling models. IEEE standards are described for the RTOS functions. A highlight of this chapter is description of a fifteen-point strategy for synchronization between the processes.

Chapter 10 describes the two most important RTOS tools, MUC/OS-II and VxWorks thoroughly with examples of the use of functions in these RTOSs.

Chapter 11 describes four case studies of programming with RTOS. These are automatic chocolate vending machine system, TCP/IP network system, adaptive cruise control system in a car and smart card.

Chapter 12 details hardware and software designing and integration methods and tools. It explains the embedded system development process action plan. Uses of target system, emulator, ICE, use of device programmer for downloading the finalized codes into ROM, uses of code generation tools (assembler, compiler, loader and linker), simulator, exemplary prototype development tools and IDE are explained. Use of hardware testing tools is also described in this chapter.

Appendices give in brief the gist of CISC and RISC processor architectures, addressing modes and instruction sets, embedded high performance processors, ARM7, ARM9, ARM11 and IBM PowerPC 750. Also given is the overview of microcontroller architectures. DSPs are used in systems for imaging, video and convergent technology products. Triple media (data, voice and video) processors are new innovative processors for real-time video, streaming networks and data networks. Appendix covers these too. Serial and parallel buses for interconnecting distributed devices and device hardware units in the embedded systems are also covered in brief. Embedded system topics are being introduced in the graduate and undergraduate programs. To guide the course designers and teachers, the suggested units in these courses are given in appendix.

Also given are over one hundred references of published books, websites and journal papers. This will enable the readers to carry out further in-depth study of the topics related to Embedded Systems.

The seven Salient Features of the book are:
1. Well structured, systematic coverage, and logical sequencing of topics.

2. Thorough explanation of embedded system programming concepts, OS, RTOS functions and inter-process synchronization.

3. Special coverage of modeling of programs and use of software engineering practices during software development process for single as well as multiprocessor systems.

4. Thorough explanation of ports, devices, buses for networking devices and device drivers

5. Innovative case studies of RTOS programming in consumer electronics, communications, automobile electronics and secure transaction systems-on-chip.

6. Simultaneous coverage of two RTOSs, MUC/OS-II and VxWorks, together to focus on finer points in applications of functions in the RTOSs.

7. Lucid presentation with strong emphasis on examples, well-designed figures and tables, list of keywords and their definitions followed by chapter-end review questions and practice exercises.

Every effort has been made to give correct information and exemplary codes and tools in the book. However, errors might have crept in despite utmost care. The author will be grateful to the readers for pointing out these to him.

Learned teachers, scholars, software and system engineers will be obliging the author if they send their valuable suggestions for further improvement of this textbook. Suggestions and student queries will be heartily welcomed at the author’s e-mail, professor@rajkamal.org and website http://www.rajkamal.org.

RAJ KAMAL


To obtain a lecturer login to the Online Learning Centres, ask your local sales representative. If you're a lecturer thinking about adopting this textbook, request a complimentary copy for review.