Fundamentals of Embedded Software: Where C and Assembly Meet
| 2001-11-13 00:00:00 | | 0 | Computer Engineering
For sophomore-level courses in Assembly Language Programming in Computer Science, Embedded Systems Design, Real-Time Analysis, Computer Engineering, or Electrical Engineering curricula. Requires prior knowledge of C, C++, or Java. This book is intended to provide a highly motivating context in which to learn procedural programming language. Using a non-product specific approach and a programming (versus hardware) perspective, this text lays a foundation that supports the multi-threaded style of programming and high-reliability requirements of embedded software. Reflecting current industrial applications and programming practice, it focuses on the more modern 32-bit protected mode processors and on C as the dominant programming language-with coverage of assembly and how it can be used in conjunction with, and support of, C.
User review
A very good book
I love this book because:
1- Very effective description on how to use C to interface to the Hardware environment that an embedded programmer has to deal with everday. Most of the book on C somehow just gloss over this area.
2- A fundamental introduction to real time OS and its potential problems in an embedded systems. The readers might want to check out the book `An Embedded Software Primer` by David Simon for more detailed treatment on this subject.
3- Its 11 programming excercices using the PC to practice what you learn in the book. This is very useful in building your confidence in the subject matters. You don't have to buy any kits to do the excercices.
Here is the thing that might give you trouble: Intel Assembly language.
This is a small book, 266 pages. It seems the author chose to trim down the section on Intel architecture & its assembly language to keep the book small. I went to the book website (this is another plus) and it looks like the author is using Intel manuals as the companion for this book to fill in the details on the Intel architecture.
If you are a student, having to digest all of this materials (plus other classes) in one quarter, probably, you will have a hard time. However, if you just want to:
1- know how to do embedded programming using C
2- know how real time OS works and how to use it
3- do some hands on excercises
4- can afford to gloss over the Intel architecture and not worrying about the grade.
then this book is for you
User review
A Practical Approach to Assembly Language Programming
I have been teaching X86 assembly language for 6 years as an undergraduate course in Computer Engineering in San Jose State University. The students have been always concerned about the value of this course after graduation. Many have the false perception that learning assembly is no longer needed since most of our programming is done nowadays with high level languages. Last semester I introduced assembly language as a tool to program embedded systems and I used the first few chapters of this book to demonstrate to students the fact that 98% of processors sold are embedded. As a result, most students selected their class project based on one of the embedded examples shown in this book. For students who needed more X86 details, I referred them to a complementary text book. But, for those who needed to understand the fundamental link between c/C++ and assembly, this book was very helpful. I would recommend this book for Juniors or Seniors who would like to have a better understanding of the high level and assembly language interface. To maximize the effectiveness of this book, I recommend the use of more complex real-life design examples, the use of commercial Assemblers, and more emphasis needs to be given for embedding assembly into high level language and vice versa.
User review
I can't believe it costed me $60 for this book
I'm a Santa Clara University student, and I'm in the class taught by the author of this book. I'm an experienced programmer who knows PHP, ASP, Java, VBA, and some C and C++, and I must say, this book is very confusing to follow. It offers very little examples and explinations; the accompanied cd-rom doesn't make it easier at all. You won't be able to understand half the slides presented on it without him physically explanining it in front of you; even if you were in his presence, you'll still have a big ? mark on the top of your forehead. For those who enjoy the 'hello world' approach, don't bother with this book; the only words you'll be seeing in the end are 'hello class repeat'. I'm very sure there are other books than this that can teach assembly more fluently.
User review
ahh, now i have log to throw on the fire
Put simply, this book is terrible. The lack of examples throughout the text keeps those without prior knowledge of the subject from fully grasping the concepts. Dr. Lewis failed miserably with this book. Please do not purchase it unless you would like very expensive fire wood.
User review
Great text for teachers and students.
There are two equally valid approaches to the art of `embedded systems programming`, top down and bottom up. Those who choose to use the top down approach will often find themselves at a loss to understand essential items like system initialization and boot loaders. Many developers, who find themselves involved in the realm of embedded systems, have never been exposed to the required low level concepts of instruction architecture, addressing modes, and assembly level data manipulation instructions.
This book provides a detailed discussion of these necessary low level topics as well as an excellent overview of the required elements of an embedded operating system. These elements include concurrency, scheduling, memory management, and shared memory.
The book is definitely targeted at the undergraduate level and provides numerous excellent examples and excersizes for developing and testing the skills of the student. Teachers will find this a well written and useful text for a basic course in embedded software.
While one may think that the exclusive use of X86 assembly and C is a bit restrictive, no one can deny it to be a convenience considering the ease of finding PC's.
The book also includes a CD-Rom containing many useful tools and excersizes for students as well as developers.
The author's excellent writing style should inspire him to consider a sequel to this book which addresses the top down approach to embedded software using UML tools as well as highlighting additional processors like ARM or Mips.