Introduction to Embedded Systems: Interfacing to the Freescale 9S12
Jonathan W. Valvano, Cengage Publishing, ISBN-10: 049541137X | ISBN-13: 9780495411376
Web videos of the Example lessons from the book
Readme movies about TExaS
Table of Contents
On-line
homework problems
Cengage Learning
Publisher's Website
Download starter files for the
tutorials at the end of each chapter
Preface
Embedded computer systems are electronic
systems that include a microcomputer to perform specific dedicated
tasks. The computer is hidden inside these products. Embedded systems
are ubiquitous. Every week millions of tiny computer chips come pouring
out of factories like Freescale, Microchip, Philips, Texas Instruments,
Silicon Labs, and Mitsubishi finding their way into our everyday
products. Our global economy, our production of food, our transportation
systems, our military defense, our communication systems, and even our
quality of life depend on the efficiency and effectiveness of these
embedded systems. Engineers play a major role in all phases of this
effort: planning, design, analysis, manufacturing, and marketing. This
book provides an introduction to embedded systems, including both
hardware interfacing and software fundamentals.
This book employs a bottom-up educational approach.
The overall educational objective is to allow students to discover how
the computer interacts with its environment. It will provide hands-on
experiences of how an embedded system could be used to solve Electrical
Engineering (EE) problems. The focus will be understanding and analysis,
with an introduction to design. The optical sensors, motors, sampling
ADCs and DACs are the chosen mechanism to bridge the Computer
Engineering (CE) and EE worlds. EE concepts include Ohms Law, LED
voltage/current, resistance measurement, and stepper motor control. CE
concepts include I/O device drivers, debugging, stacks, queues, local
variables and interrupts. This book is based on the Freescale 9S12.
This book can be used effectively with any of the 9S12 derivatives, such
as 9S12C32, 9S12DG256, 9S12DP512, and 9S12E128. The hardware
construction is performed on a breadboard and debugged using a
multimeter (students learn to measure voltage and resistance). Software
is developed in 9S12 assembly; labs may be simulated-only or first
simulated then run on the real 9S12 system. Software debugging occurs
during the simulation stage. Device testing occurs on the final product.
One way to sort the broad range of topics within EE
and CE is to group them into three categories: components, interfaces,
and systems. Electrical and Computer Engineering curriculi devote
considerable effort at teaching how to design the components within a
system. Components include physical devices, analog circuits, digital
circuits, power circuits, digital signal processing, data structures,
and software algorithms. Interfacing in general and this book in
specific address the important task of connecting these components
together. So, one effective way to educate engineering students is to
first teach them how to build components, then teach them how to connect
components together (this book). After the student learns how to build
things and connect them together, then the student can taught how to
build systems. Of course, once a system is complete it can be interfaced
with other systems to solve more complex problems.
The book is essentially organized into three parts.
Chapters 1 through 4 provide a basic introduction to computer
architecture, representation of information, and assembly language
programming. Parallel ports, switches and LEDs are presented early in
Chapter 2 so that students can write software that actually does
something. Chapters 5, 6, 7, and 10 provide an in-depth treatment of
software design as it applies to embedded systems. Interfacing and
applications of embedded systems are presented in Chapters 8, 9, and 11.
Objectives
The overall objective of this book is to present basic computer
architecture, teach assembly language programming, and present an
introduction to interfacing. Most universities teach assembly language
programming not because employers wish to hire engineers and scientists
ready to produce assembly code, but rather, because it affords a
concrete approach for teaching how software works. Furthermore, an
embedded system is an effective vehicle around which to introduce
architecture, programming and interfacing because the components are
simple and inexpensive. The book describes both general processes and
specific details involved in embedded system design. In particular,
detailed case studies are used to illustrate fundamental concepts, and
laboratory assignments are provided. The specific objectives of this
book include the understanding of:
• the basic procedures involved in hardware/software simulation,
• how information is represented on the computer,
• the basic arithmetic and logical operations performed by the
computer,
• the fundamental architecture of the 9S12 family microcomputers,
• the input/output operations and synchronization,
• assembly language programming: considering both function and
style,
• simple hardware interfaces, including
switches, keyboards, LEDs, LCDs, DC motors, DACs, ADCs, and
serial ports,
• debugging techniques
breakpoints, scanpoints, profiles, monitors, voltmeters,
oscilloscopes, logic analyzers.
• program structures with a comparison between assembly and C,
• modular programming,
• elementary data structures,
• interrupt programming.
This book does not discuss in detail every 9S12 instruction, but
rather presents some of the instructions and uses them to discuss the
general issues of representation of information, computer architecture,
and developing embedded systems. In contrast, the Freescale programming
reference guides do give details of each assembly instruction. In a
similar manner, the Freescale microcomputer technical reference manuals
explain all the I/O port functions. In other words, you will use this
book along with the manuals from Freescale. A web site
http://users.ece.utexas.edu/~valvano/
contains many reference documents for this book.
Prerequisites
This book is intended for an introductory laboratory course in
microcomputer programming and/or microcomputer interfacing. It is
assumed the student has some knowledge of programming, covering concepts
such as conditionals, for-loops, while-loops, functions, parameter
passing, and arrays. Specific knowledge of C is not required, but C
programs are presented throughout the book in an effort to explain the
assembly language programs. In addition, some prior knowledge about
digital logic is desired, but not necessary, covering topics such as not
gates, and gates, or gates and D flip-flops. Students will need a
fundamental knowledge of resistors, capacitors, and inductors, as
typically covered in a freshmen physics class on electromagnetics.
Calculus is not required for this book. For more advanced treatment of
microcomputer interfacing and embedded systems, see
Embedded Microcomputer Systems: Real Time
Interfacing Second Edition by Jonathan W. Valvano, published by
Thompson, copyright (c) 2006.
Special features
This book incorporates a number of special features specifically
designed for the beginning engineer. An effective educational approach
is to learn by doing. The first action component of the book is the use
of checkpoints, which can be found throughout the book. A checkpoint is
a short question meant as an immediate feedback mechanism for the reader
to evaluate his or her level of comprehension. Checkpoints should be
performed while reading the chapter. Answers to checkpoints are given in
Appendix 5. The second action component of the book is the examples.
Design examples are included within each chapter. The purpose of the
examples is to apply knowledge presented in that chapter to solve a
specific problem. The third action component is the tutorials. Each
tutorial includes a sequence of actions (specific things for the reader
to do) and a list of questions. Tutorials are meant to be performed
without supervision, and should be performed after reading the chapter,
but before attempting the labs or homework. Answers to the tutorial
questions are also given in Appendix 5. The most important action
components of the book are the laboratory assignments, which can be
found at the end of each chapter. Additional labs, and the
tutorials can
be found on the web site http://users.ece.utexas.edu/~valvano/. Each
laboratory solution can first be built and tested using the TExaS
simulator, then downloaded an run on an actual 9S12. Only by performing
the laboratory assignments can the reader truly assimilate the hardware
and software concepts introduced in this book. Laboratories are meant to
be performed under the supervision of an instructor, and involve the
classic engineering processes of design, construction, debugging, and
evaluation. Homework problems can also be found at the end of each
chapter. These problems are less detailed, and are intended to evaluate
the reader’s understanding of specific topics introduced in the chapter.
How to teach a course based on this book
The first step in the design of any course is to create a
list of educational objectives. This book along with the materials on
the book web site could be used to teach introductory microcomputer
programming and/or microcomputer interfacing. Specific educational
objectives that are supported in this book are microcomputer
architecture, number systems, assembly language programming, debugging,
I/O device interfacing, I/O device synchronization, subroutines, local
variables, elementary data structures, and interrupts.
The next important decision to make is the organization of the
student laboratory. The importance of practical "hands on" experience is
critical in the educational process. Unfortunately, space, staff, and
money constraints force all of us to compromise, doing the best we can.
On the other hand, the role of simulation is becoming increasingly
important as the race for technological superiority is run with shorter
and shorter design cycle times. Consequently, it is important to expose
our students to the all phases of engineering design including problem
specification, conceptualization, simulation, construction, and
analysis. Universities that adopt this book will be allowed to download,
rewrite, print out and distribute the laboratory assignments presented
in this book.
The first laboratory configuration is based entirely on material
included with book, and involves no extra costs. Each book allows the
student to download and install the TExaS application on a single
computer. Students, for the most part, work off campus and come to a TA
station for help or lab grading. In this configuration you can either
develop software in assembly using the TExaS assembler or develop C
programs using the special version of Metrowerks CodeWarrior for the
9S12. The simulator itself becomes the platform on which the lab
assignments are developed and tested.
A second laboratory configuration combines simulation with some real
microcomputer experiments. Labs can be first simulated, then run on a
real microcomputer. Students are given or loaned a 9S12 development
board like the Dragon12 board from Wytec (http://www.evbplus.com/index.html)
or the Adapt9S12 board from Technological Arts (http://www.technologicalarts.com).
Students can work off campus on the simulation aspects of the labs, then
come to a laboratory for access to test equipment such as voltmeters and
oscilloscopes. In this configuration, students first could write and
debug assembly software using the TExaS simulator, then use TExaS to
download and test on a real 9S12 board. TExaS can be used with any 9S12
that contains the Serial Monitor in protected EEPROM $F800 to $FFFF. The
special version of Metrowerks CodeWarrior for the 9S12 could also be
used to develop either assembly or C using either the serial monitor or
a background debug module (BDM) hardware pod. This is more expensive
than the first configuration because actual microcomputer hardware and
debugging systems are required.
What's on the Book Web site?
1) TExaS installer download. Each student purchasing a book can
download and install TExaS. TExaS is a complete editor, assembler, and
simulator for the Freescale 9S12 microcomputer. It simulates external
hardware, I/O ports, interrupts, memory, and program execution. It is
intended as a learning tool for embedded systems. This software is not
freeware, but the purchase of the book entitles the owner to install one
copy of the program. Once installed TExaS creates many subdirectories
with example applications. How to download and install TExaS
A) Go to Cengage site
http://www.cengage.com/engineering/valvano
B) Click Student Companion Site for Introduction to Embedded Systems:
Interfacing to the Freescale 9S12, 1st Edition
C) Click TExaS Software (on left)
D) Download 54 Meg zip file and unzip
E) Execute setup.exe in folder created by the zip file.
F) In Setup Type, choose Custom.
G) Select only 9S12DP (whatever microcontroller you will be using). The
GCC is a huge and not very efficient compiler, and the examples and
manuals on the web are more recent.
H) Delete zip file and the folder created containing the setup.exe.
2) There are multiple short video tutorials about developing assembly
language programs on TExaS. See
http://users.ece.utexas.edu/~valvano/Readme.htm
3) There is a directory containing data sheets in Adobe's pdf format.
This information does not need to be copied to your hard drive; you can
simply read the data sheets from the web itself. In particular there are
data sheets for microcomputers, digital logic, memory chips, op amps,
ADCs, DACs, timer chips and interface chips. See
http://users.ece.utexas.edu/~valvano/Datasheets/
4) There is a directory containing example applications. These examples
include circuit diagrams and software that can be downloaded and run on
the actual 9S12 board.
http://users.ece.utexas.edu/~valvano/Starterfiles/
5) There is a directory containing lecture notes and laboratory
assignments based on this book.
http://users.ece.utexas.edu/~valvano/EE319K/
6) Free web-based homework service, see
http://users.ece.utexas.edu/~valvano/homework/
and
https://hw.utexas.edu/overview.html
Last updated January 1, 2010 Send comments to: Jonathan W. Valvano .