1 |
dashley |
140 |
%$Header$ |
2 |
|
|
% |
3 |
|
|
%------------------------------------------------------------------------------------------------------------------ |
4 |
|
|
%This file isn't used directly--instead, the Tcl script CP_SCRIPT.TCL inserts it into the the main .TEX volume. |
5 |
|
|
%In this process, the <mv> and <sv> tags on some lines are processed. <mv> lines go only to the multi-volume |
6 |
|
|
%work, and <sv> lines to only to the single-volume work. |
7 |
|
|
% |
8 |
|
|
%For the multi-volume work, the symbolic patchup is near perfect. But for the single-volume work, the parts |
9 |
|
|
%are numbered manually, which is a process open to human error. This preface must be checked when chapters |
10 |
|
|
%are moved, added, or deleted. |
11 |
|
|
%------------------------------------------------------------------------------------------------------------------ |
12 |
|
|
\chapter{Preface} |
13 |
|
|
|
14 |
|
|
In 1998, I began work on the |
15 |
|
|
interrupt latency compatibility problem. As I searched |
16 |
|
|
for prior work, I was |
17 |
|
|
surprised to discover the paucity |
18 |
|
|
of research available on practical embedded software |
19 |
|
|
problems. Textbooks were also not very helpful, |
20 |
|
|
as I found that almost none |
21 |
|
|
of the hard |
22 |
|
|
problems that occur in practice |
23 |
|
|
were addressed. |
24 |
|
|
|
25 |
|
|
In 1999, I decided to compose my own book, |
26 |
|
|
maintained on the Web, |
27 |
|
|
to collect useful |
28 |
|
|
research results, solutions to practical problems, |
29 |
|
|
unsolved problems, and directions for future |
30 |
|
|
research and refinement. |
31 |
|
|
\LaTeX{} was chosen as the text-processing |
32 |
|
|
tool, as it was |
33 |
|
|
recognized immediately |
34 |
|
|
that size could become an issue and that the book |
35 |
|
|
would have a substantial mathematical content. |
36 |
|
|
The freedom from any practical length |
37 |
|
|
limitation |
38 |
|
|
means that I am |
39 |
|
|
free to include as many topics |
40 |
|
|
in as much detail as I'd like.\footnote{My readers will |
41 |
|
|
be consuming \emph{their} toner cartridges, not mine.} |
42 |
|
|
|
43 |
|
|
In 2001, this book was moved to |
44 |
|
|
\index{SourceForge}\emph{SourceForge}\footnote{\emph{SourceForge} |
45 |
|
|
(\texttt{http://www.sourceforge.net}), to whom I am very grateful, |
46 |
|
|
is an organization that hosts open-source projects.} and |
47 |
|
|
combined with a tool |
48 |
|
|
set for microcontroller software work |
49 |
|
|
(\emph{The Iju Tool Set}). |
50 |
|
|
|
51 |
|
|
In 2002, the collective set of materials (the tool set and this book) |
52 |
|
|
was renamed \emph{The ESRG Tool Set}\footnote{\emph{ESRG} |
53 |
|
|
is an acronym for \emph{E}mbedded \emph{S}ystems \emph{R}esearch \emph{G}roup.}, |
54 |
|
|
and placed under a different |
55 |
|
|
project at \emph{SourceForge}. |
56 |
|
|
|
57 |
|
|
\emph{The ESRG Tool Set}, which is fully open-source and |
58 |
|
|
available for free from \emph{SourceForge} at the URL |
59 |
|
|
\texttt{http://esrg.sourceforge.net}, contains |
60 |
|
|
these materials: |
61 |
|
|
|
62 |
|
|
\begin{itemize} |
63 |
|
|
\item A \texttt{.PDF} copy of the most recent released |
64 |
|
|
version of this book. |
65 |
|
|
|
66 |
|
|
\item The packaged \LaTeX{} source code and graphics |
67 |
|
|
for the most recent released |
68 |
|
|
version of this book. |
69 |
|
|
|
70 |
|
|
\item The most recent (unreleased) source code for this book |
71 |
|
|
(available from the CVS version control archives). |
72 |
|
|
|
73 |
|
|
\item The most recent released version of |
74 |
|
|
\emph{The ESRG Tool Set}, packaged as an installation |
75 |
|
|
for Windows 95/98/ME/NT/2000/XP. This installation also |
76 |
|
|
contains web pages with helpful URLs, and supplemental |
77 |
|
|
materials (such as spreadsheets to demonstrate techniques, |
78 |
|
|
other documents and standards maintained as part of this |
79 |
|
|
effort, |
80 |
|
|
Java applets, etc.). |
81 |
|
|
|
82 |
|
|
\item The packaged source code for the most recent released |
83 |
|
|
version of \emph{The ESRG Tool Set}. |
84 |
|
|
|
85 |
|
|
\item The most recent (unreleased) source code of |
86 |
|
|
\emph{The ESRG Tool Set} (available from the CVS |
87 |
|
|
version control arvhives). |
88 |
|
|
|
89 |
|
|
\item The most recent (unreleased) versions of the non-tool |
90 |
|
|
materials maintained with \emph{The ESRG Tool Set}, including |
91 |
|
|
spreadsheets to demonstrate techniques, other |
92 |
|
|
documents and standards maintained as part of this |
93 |
|
|
effort, Java applets, etc. (available from the CVS version control |
94 |
|
|
archives). |
95 |
|
|
\end{itemize} |
96 |
|
|
|
97 |
|
|
|
98 |
|
|
I have produced this set of works with the following four goals. |
99 |
|
|
\marginpar{\textbf{Goals of This Work}} |
100 |
|
|
\begin{itemize} |
101 |
|
|
\item \textbf{To share results and coordinate work |
102 |
|
|
with researchers.} I have |
103 |
|
|
found that there is a disconnect between practitioners |
104 |
|
|
(those who have exposure to difficult problems) and |
105 |
|
|
researchers (those who often have the ability to solve these |
106 |
|
|
difficult problems). A large work is required to |
107 |
|
|
explain the design challenges present in practical embedded software |
108 |
|
|
work, and to place the most difficult unsolved problems in the hands |
109 |
|
|
of researchers. |
110 |
|
|
\item \textbf{To share results and coordinate work with practitioners.} |
111 |
|
|
Many of the problems and solutions presented in this work apply |
112 |
|
|
to almost all applications of embedded software, and in many cases |
113 |
|
|
are inherent to \emph{all} software. These problems and solutions |
114 |
|
|
will be useful to software practitioners. I also expect |
115 |
|
|
that practitioners have strong solutions to contribute to this |
116 |
|
|
work.\footnote{With less jubilation, I also expect that |
117 |
|
|
practitioners have new hard problems to contribute. |
118 |
|
|
With any luck, I will obtain more new solutions than new problems.} |
119 |
|
|
\item \textbf{To enrich the educational experience for students.} |
120 |
|
|
All of the material contained in this set of works is free\footnote{Subject |
121 |
|
|
to license restrictions. The license under which this book may be used |
122 |
|
|
is included later in this preface. Software tools are licensed under the GPL.} (which, |
123 |
|
|
from a student's point of view, is the best price). |
124 |
|
|
For example, this book can be used by instructors as |
125 |
|
|
free supplemental |
126 |
|
|
material for a course. |
127 |
|
|
\item \textbf{To guide tool vendors.} The design of tools |
128 |
|
|
is very much like the design of software, in that one must have |
129 |
|
|
a nearly complete understanding of the requirements |
130 |
|
|
in order to produce a useful product. I have often found that |
131 |
|
|
tool vendors are unaware of the actual needs of embedded |
132 |
|
|
software developers. By clearly enumerating requirements and |
133 |
|
|
lessons learned, I strive to give tool vendors the information |
134 |
|
|
and insight |
135 |
|
|
necessary to better support embedded software developers. |
136 |
|
|
\end{itemize} |
137 |
|
|
|
138 |
|
|
In \marginpar{\textbf{\emph{Small} Defined}} |
139 |
|
|
the title of this book, I've indicated that this book is |
140 |
|
|
about \index{small microcontroller system}\emph{small} microcontroller work. By |
141 |
|
|
\emph{small microcontroller work}, I mean the development |
142 |
|
|
and production of small |
143 |
|
|
embedded |
144 |
|
|
software/hardware |
145 |
|
|
systems such as are found |
146 |
|
|
in consumer electronics and the automobile industry. Although |
147 |
|
|
it is difficult to specify precisely what is and is not a |
148 |
|
|
\emph{small} microcontroller system, the systems |
149 |
|
|
I have in mind generally meet |
150 |
|
|
the following criteria. |
151 |
|
|
|
152 |
|
|
\begin{itemize} |
153 |
|
|
\item They |
154 |
|
|
involve a single-chip control solution (the address and data busses of |
155 |
|
|
the microcontroller are not extended outside the package). |
156 |
|
|
\item They |
157 |
|
|
involve ROM and RAM sizes of under 1M.\footnote{But usually much less--256K or less of ROM and 24K |
158 |
|
|
or less of RAM would be typical for my definition of \emph{small}.} |
159 |
|
|
\item They frequently involve non-preemptive scheduling. In the systems I would |
160 |
|
|
classify as \emph{small}, pre-emptive scheduling and/or commercial |
161 |
|
|
RTOSs are relatively uncommon. |
162 |
|
|
\item They involve a software |
163 |
|
|
program that cannot easily be changed (either because the program |
164 |
|
|
is lithographically masked into the microcontroller or because special |
165 |
|
|
equipment or special access to the microcontroller is required).\footnote{A consequence of the |
166 |
|
|
software unchangeability |
167 |
|
|
combined with high production volumes is |
168 |
|
|
that software mistakes are very, very expensive.} |
169 |
|
|
\item They exist in an unstable electrical environment, |
170 |
|
|
characterized by supply voltage fluctuations, |
171 |
|
|
electrical transients, and spurious resets. |
172 |
|
|
\end{itemize} |
173 |
|
|
|
174 |
|
|
I use the term \index{hard problem}\emph{hard problem} throughout this book. |
175 |
|
|
I define a |
176 |
|
|
\marginpar{\textbf{\emph{Hard Problem} Defined}} |
177 |
|
|
\emph{hard} problem as a problem that |
178 |
|
|
meets the following two criteria. |
179 |
|
|
\begin{itemize} |
180 |
|
|
\item \textbf{The problem is \emph{hard}.} |
181 |
|
|
The time to solve the problem is measured in |
182 |
|
|
months or years, rather than hours or days; and furthermore, |
183 |
|
|
the problem may be beyond the analytical ability of |
184 |
|
|
most practicing embedded software engineers. In practice, this means that |
185 |
|
|
an embedded software engineer cannot solve the problem in the time |
186 |
|
|
available during a product development cycle. |
187 |
|
|
\item \textbf{A solution to the problem is necessary for |
188 |
|
|
reliable software or for ease of software construction.} |
189 |
|
|
Generally, I would wish to exclude from consideration |
190 |
|
|
problems which are difficult but which have no practical implications |
191 |
|
|
for software reliability or ease of software construction |
192 |
|
|
if they are not solved. |
193 |
|
|
\end{itemize} |
194 |
|
|
|
195 |
|
|
Clearly, if an embedded software engineer is to be productive and |
196 |
|
|
produce a reliable embedded product, the number of unsolved |
197 |
|
|
\emph{hard} problems s/he encounters during a career must |
198 |
|
|
be fairly small. However, the reality is that a practicing |
199 |
|
|
embedded software engineer encounters unsolved hard problems |
200 |
|
|
on a daily basis. |
201 |
|
|
|
202 |
|
|
In this work I take a special but not exclusive interest in |
203 |
|
|
\emph{hard} problems---those that are relevant and necessary |
204 |
|
|
but |
205 |
|
|
so difficult and time-consuming that a software engineer cannot |
206 |
|
|
solve them in the time available during the product development |
207 |
|
|
cycle. I also have some interest in paradigms (ways of |
208 |
|
|
thinking about software systems and problems), and in |
209 |
|
|
best and worst practices (practices that are likely to to |
210 |
|
|
avert problems and practices that are nearly suicidal, |
211 |
|
|
respectively). It is noteworthy that I do not |
212 |
|
|
have much interest in established |
213 |
|
|
mathematical results that are available in |
214 |
|
|
textbooks my readers probably already own. |
215 |
|
|
For example, I have very limited interest in |
216 |
|
|
reprinting the mathematical results surrounding |
217 |
|
|
sampled control systems, but |
218 |
|
|
I might be very interested in results predicting what |
219 |
|
|
could and could not happen if such a |
220 |
|
|
sampled control system is implemented on |
221 |
|
|
a microcontroller using economical but lossy |
222 |
|
|
multiplication and integration (to the best of my |
223 |
|
|
knowledge, this insight does not exist anywhere). |
224 |
|
|
|
225 |
|
|
<mv>\textbf{Volume \vconzeroroman{}: \vconzerotitle{}} |
226 |
|
|
<sv>\textbf{Part I: Concepts} |
227 |
|
|
\marginpar{\textbf{Book Contents}} |
228 |
|
|
contains an introduction to the challenges of small microcontroller work. |
229 |
|
|
\begin{itemize} |
230 |
|
|
\item \textbf{Chapter\;\ref{cint0}, \cintzerotitle{}} explains the scope of the book |
231 |
|
|
and what is meant by \emph{small microcontroller work}. |
232 |
|
|
\item \textbf{Chapter\;\ref{chgr0}, \chgrzerotitle{}} provides my personal |
233 |
|
|
interpretation of the |
234 |
|
|
Holy Grail of embedded real-time software---that is, what is |
235 |
|
|
desirable and undesirable and what fundamental goals |
236 |
|
|
exist. In this chapter, I deal primarily in paradigms of |
237 |
|
|
thought and |
238 |
|
|
unattainable goals. |
239 |
|
|
\end{itemize} |
240 |
|
|
|
241 |
|
|
<mv>\textbf{Volume \vmfrzeroroman{}: \vmfrzerotitle{}} |
242 |
|
|
<sv>\textbf{Part II: Mathematical Frameworks} |
243 |
|
|
contains key mathematical frameworks and |
244 |
|
|
results that are divorced from any specific problem. |
245 |
|
|
\begin{itemize} |
246 |
|
|
\item \textbf{Chapter\;\ref{cpri0}, \cprizerotitle{}} presents results surrounding |
247 |
|
|
properties of integers and prime and composite numbers. |
248 |
|
|
\item \textbf{Chapter\;\ref{cfry0}, \cfryzerotitle{}} presents results surrounding |
249 |
|
|
the \index{Farey series}Farey series. The Farey series, which is the |
250 |
|
|
ordered set of rational numbers with a certain maximum denominator, |
251 |
|
|
forms the basis for some techniques of rational approximation. |
252 |
|
|
\item \textbf{Chapter\;\ref{ccfr0}, \ccfrzerotitle{}} presents results surrounding |
253 |
|
|
\index{continued fractions}continued fractions. The apparatus of continued |
254 |
|
|
fractions provides the best algorithm for finding Farey neighbors and hence |
255 |
|
|
best rational approximations. |
256 |
|
|
\item \textbf{Chapter\;\ref{cbal0}, \cbalzerotitle{}} presents results surrounding |
257 |
|
|
Boolean algebra. Traditionally, Boolean algebra and the study of Boolean |
258 |
|
|
functions is associated with digital hardware design, but results and |
259 |
|
|
algorithms involving the simplification of Boolean functions also have |
260 |
|
|
application to the simplification of software control flow constructs. |
261 |
|
|
\item \textbf{Chapter\;\ref{cqua0}, \cquazerotitle{}} presents results surrounding |
262 |
|
|
the analysis of calculation error introduced by \emph{quantization}, the |
263 |
|
|
unavoidable mapping from $\vworkrealset{}$ to $\vworkintset{}$ that must occur |
264 |
|
|
as signals from the external world, which are usually continuous in nature, |
265 |
|
|
are converted and processed by a microcontroller, which can inherently manipulate |
266 |
|
|
only integers. |
267 |
|
|
\item \textbf{Chapter\;\ref{cmtn0}, \cmtnzerotitle{}} presents miscellaneous results |
268 |
|
|
from number theory which are useful or interesting, but awkward to |
269 |
|
|
categorize. |
270 |
|
|
\end{itemize} |
271 |
|
|
|
272 |
|
|
|
273 |
|
|
<mv>\textbf{Volume \vcswzeroroman{}: \vcswzerotitle{}} |
274 |
|
|
<sv>\textbf{Part III: Construction Of Embedded Software} |
275 |
|
|
details the way embedded systems are (or should be) |
276 |
|
|
constructed in practice. |
277 |
|
|
\begin{itemize} |
278 |
|
|
\item \textbf{Chapter\;\ref{cpco0}, \cpcozerotitle{}} outlines many aspects of |
279 |
|
|
the way that embedded software is constructed (or should be constructed) |
280 |
|
|
in practice. |
281 |
|
|
|
282 |
|
|
\item \textbf{Chapter\;\ref{csoc0}, \csoczerotitle{}} treats issues specific to |
283 |
|
|
the support of peripherals that are usually located on the same silicon |
284 |
|
|
die as the microcontroller, such as hardware watchdogs or EEPROM. |
285 |
|
|
|
286 |
|
|
\item \textbf{Chapter\;\ref{csoc1}, \csoconetitle{}} treats issues specific to |
287 |
|
|
the support of peripherals that are usually separate from the microcontroller, |
288 |
|
|
such as transducers and actuators. |
289 |
|
|
|
290 |
|
|
\item \textbf{Chapter\;\ref{csnc0}, \csnczerotitle{}} discusses the support |
291 |
|
|
of communication protocols and networks. |
292 |
|
|
|
293 |
|
|
\item \textbf{Chapter\;\ref{csfo0}, \csfozerotitle{}} discusses requirements |
294 |
|
|
that tend to occur in many different types of embedded software, |
295 |
|
|
such as the need to calibrate an embedded product or diagnose it |
296 |
|
|
via a communication link. |
297 |
|
|
|
298 |
|
|
\item \textbf{Chapter\;\ref{crta0}, \crtazerotitle{}} discusses the real-time |
299 |
|
|
analysis of embedded software; that is, how embedded software can be |
300 |
|
|
analyzed to be sure that it will always meet its real-time constraints. |
301 |
|
|
\end{itemize} |
302 |
|
|
|
303 |
|
|
|
304 |
|
|
<mv>\textbf{Volume \valgzeroroman{}: \valgzerotitle{}} |
305 |
|
|
<sv>\textbf{Part IV: Embedded System Algorithms And Techniques} |
306 |
|
|
presents algorithms which are used in a target embedded system. |
307 |
|
|
|
308 |
|
|
\begin{itemize} |
309 |
|
|
\item \textbf{Chapter\;\ref{ccil0}, \ccilzerotitle{}} presents |
310 |
|
|
classical and simple\footnote{Here \emph{classical} is used |
311 |
|
|
in the same sense as Knuth uses it in \cite[p. 265]{bibref:b:knuthclassic2ndedvol2}.} |
312 |
|
|
integer algorithms and techniques which |
313 |
|
|
are used in embedded systems. Because integer and fixed point algorithms |
314 |
|
|
are the dominant paradigm of arithmetic in small microcontroller |
315 |
|
|
systems, this chapter is the backbone of most arithmetic in these systems. |
316 |
|
|
|
317 |
|
|
\item \textbf{Chapter\;\ref{crat0}, \cratzerotitle{}} develops techniques |
318 |
|
|
and results surrounding rational approximation; that is, arpproximating a real number |
319 |
|
|
$r_I$ by a rational number $h/k$. |
320 |
|
|
|
321 |
|
|
\item \textbf{Chapter\;\ref{cdta0}, \cdtazerotitle{}} presents algorithms |
322 |
|
|
for use in discrete time (such as integration and differentiation), |
323 |
|
|
and also more sophisticated integer algorithms. |
324 |
|
|
|
325 |
|
|
\item \textbf{Chapter\;\ref{cnnu0}, \cnnuzerotitle{}} presents miscellaneous |
326 |
|
|
non-numerical algorithms for use in target embedded systems. |
327 |
|
|
\end{itemize} |
328 |
|
|
|
329 |
|
|
|
330 |
|
|
<mv>\textbf{Volume \vpaczeroroman{}: \vpaczerotitle{}} |
331 |
|
|
<sv>\textbf{Part V: Practical, Administrative, Incidental, And Miscellaneous Topics} |
332 |
|
|
discusses topics that are non-technical, only peripherally related to embedded system |
333 |
|
|
software development, |
334 |
|
|
or difficult to categorize elsewhere. |
335 |
|
|
|
336 |
|
|
\begin{itemize} |
337 |
|
|
\item \textbf{Chapter\;\ref{cmpd0}, \cmpdzerotitle{}} discusses practical technqiues for |
338 |
|
|
the management of materials produced during the product development process. |
339 |
|
|
|
340 |
|
|
\item \textbf{Chapter\;\ref{cpit0}, \cpitzerotitle{}} provides designs and some |
341 |
|
|
analysis of circuits that are useful in microcontroller software |
342 |
|
|
development---either in microcontroller products themselves or in |
343 |
|
|
test fixtures. |
344 |
|
|
|
345 |
|
|
\item \textbf{Chapter\;\ref{cbma0}, \cbmazerotitle{}} discusses |
346 |
|
|
bad management and unpleasant work situations, provides paradigms |
347 |
|
|
and strategies for dealing with unpleasant work situations, and provides |
348 |
|
|
guidance in finding employment. |
349 |
|
|
|
350 |
|
|
\item \textbf{Chapter\;\ref{cpxf0}, \cpxfzerotitle{}} describes software and |
351 |
|
|
hardware products which are exceptionally useful in embedded product development. |
352 |
|
|
|
353 |
|
|
\item \textbf{Chapter\;\ref{corq0}, \corqzerotitle{}} describes open research |
354 |
|
|
questions, i.e. problems I am aware of but do not know how to solve. |
355 |
|
|
|
356 |
|
|
\item \textbf{Chapter\;\ref{cisk0}, \ciskzerotitle{}} contains reverse analyses of |
357 |
|
|
embedded product defects, and the lessons to be learned from these |
358 |
|
|
defects.\footnote{The word \emph{Insektengericht} (``insect court'', in German) |
359 |
|
|
comes from a page in a \emph{Beavis and Butthead} comic book purchsed in |
360 |
|
|
the M\"unchen Hauptbahnhoff around 1996. In this comic book, Beavis and |
361 |
|
|
Butthead sit in judgement of insects (bugs), always with the verdict |
362 |
|
|
\emph{schuldig} (guilty), and always with harsh sentences such as |
363 |
|
|
\emph{Tod durch explodieren} (death by explosion). I do much the same |
364 |
|
|
thing with embedded software bugs and embedded product defects.} |
365 |
|
|
Because it isn't possible in the product development process to address |
366 |
|
|
\emph{every} possible source of defect, I feel it is important to |
367 |
|
|
have a visceral feel for what is most likely to go wrong; and such |
368 |
|
|
intuition can only come from actively collecting product defects. I very much |
369 |
|
|
hope that airline pilots study transcripts and reports from airplane crashes, and I |
370 |
|
|
encourage embedded software developers to do the same. |
371 |
|
|
\end{itemize} |
372 |
|
|
|
373 |
|
|
|
374 |
|
|
<mv>\textbf{Volume \vijtzeroroman{}: \vijtzerotitle{}} |
375 |
|
|
<sv>\textbf{Part VI: ESRG Tool Set Reference Guide} |
376 |
|
|
is a reference for the research tool set for microcontroller |
377 |
|
|
work (based on Tcl/Tk from Scriptics/Ajuba/Interwoven), which is packaged |
378 |
|
|
with this book. |
379 |
|
|
|
380 |
|
|
\begin{itemize} |
381 |
|
|
\item \textbf{Chapter\;\ref{ctin0}, \ctinzerotitle{}} contains an overview |
382 |
|
|
of the tool set and its design goals and construction. |
383 |
|
|
|
384 |
|
|
\item \textbf{Chapter\;\ref{ctcm0}, \ctcmzerotitle{}} provides a reference |
385 |
|
|
for the Tcl scripting language, around which the tool set is constructed. |
386 |
|
|
|
387 |
|
|
\item \textbf{Chapter\;\ref{ctkm0}, \ctkmzerotitle{}} provides a reference |
388 |
|
|
for the Tk graphical extensions to Tcl. These graphical extensions, |
389 |
|
|
which are built into the tool set, are very useful for providing |
390 |
|
|
attractive GUI interfaces. |
391 |
|
|
|
392 |
|
|
\item \textbf{Chapter\;\ref{cfaq0}, \cfaqzerotitle{}} addresses frequently |
393 |
|
|
asked questions and ``gotchas'' in Tcl and Tk. |
394 |
|
|
|
395 |
|
|
\item \textbf{Chapter\;\ref{cxtn0}, \cxtnzerotitle{}} documents the Tcl |
396 |
|
|
extensions which have been added to the script interpreters |
397 |
|
|
(\emph{EsrgScripter} and \emph{EsrgConsole}). These extensions form the |
398 |
|
|
``meat'' of \emph{The ESRG Tool Set}, and represent the new ideas or |
399 |
|
|
new effort we are trying to convey. These new ideas and |
400 |
|
|
new effort are embedded into Tcl interpreters to grant |
401 |
|
|
greater flexibility in their application. |
402 |
|
|
|
403 |
|
|
\item \textbf{Chapter\;\ref{cdcm0}, \cdcmzerotitle{}} documents the DOS command-line |
404 |
|
|
utilities packaged with the tool set. In many cases, these utilities |
405 |
|
|
perform functions identical or similar to Tcl extensions, but there are advantages to |
406 |
|
|
packaging functionality as a DOS command-line utility. |
407 |
|
|
\end{itemize} |
408 |
|
|
|
409 |
|
|
|
410 |
|
|
<mv>\textbf{Volume \vsmazeroroman{}: \vsmazerotitle{}} |
411 |
|
|
<sv>\textbf{Part VIII: Solutions To Selected Exercises} |
412 |
|
|
contains solutions for selected exercises |
413 |
|
|
found throughout the work. |
414 |
|
|
|
415 |
|
|
Although \marginpar{\textbf{Features For Readers}} I |
416 |
|
|
know that all of my readers will be involved in some way |
417 |
|
|
with technical things---such as mathematics, computer science, |
418 |
|
|
control theory, software quality, or the design and development |
419 |
|
|
of embedded products---I realize that my readers will |
420 |
|
|
vary in what they are trying to obtain from the work. Some readers |
421 |
|
|
will be very research oriented, and may be trying to solve or pose |
422 |
|
|
a particular hard problem. |
423 |
|
|
Other readers may be looking for a specific practical |
424 |
|
|
solution. |
425 |
|
|
|
426 |
|
|
For the more practical reader, I have tried to be complete--that |
427 |
|
|
is, I have tried not to omit information that might be |
428 |
|
|
necessary in understanding my work without additional |
429 |
|
|
research effort. In addition, a rich set of helpful materials is |
430 |
|
|
packaged with \emph{The ESRG Tool Set} installation. |
431 |
|
|
|
432 |
|
|
For the more research-oriented reader, I have tried to allow the |
433 |
|
|
reader to rapidly find books, technical papers, Web sites, |
434 |
|
|
technical experts, |
435 |
|
|
and researchers. For this reason, books, papers, |
436 |
|
|
Web sites, and individuals |
437 |
|
|
are all cited and referenced using the same |
438 |
|
|
framework in the bibliography. This means the |
439 |
|
|
reader is directed not only to technical documents, |
440 |
|
|
but also to the authors of the |
441 |
|
|
documents. |
442 |
|
|
|
443 |
|
|
Since \marginpar{\textbf{Version Identification}} |
444 |
|
|
this book will be maintained on the Web, the issue arises of how |
445 |
|
|
a reader would know one version of this book from another. |
446 |
|
|
I have provided two mechanisms for this.\footnote{\TeX{} |
447 |
|
|
tradition would demand that I pick a transcendental number |
448 |
|
|
and with each successive version reveal another decimal place, |
449 |
|
|
but that is too much work for me, given that |
450 |
|
|
version control systems will handle the task automatically.} |
451 |
|
|
|
452 |
|
|
\begin{itemize} |
453 |
|
|
|
454 |
|
|
\item The title page indicates when the work was compiled from |
455 |
|
|
\LaTeX{} source code. Two copies of the work with the |
456 |
|
|
same compile date are almost certainly identical. |
457 |
|
|
|
458 |
|
|
\item The entire work is maintained under a version control |
459 |
|
|
system (CVS at \emph{SourceForge}), |
460 |
|
|
\index{CVS}\index{SourceForge} and I've included |
461 |
|
|
keyword expansions near the end of the \LaTeX{} source files so that version |
462 |
|
|
control information is included automatically in the document text (for example, |
463 |
|
|
a block of version control information is at the end of each chapter). |
464 |
|
|
Sections or chapters with the same version control information are almost certainly |
465 |
|
|
identical. |
466 |
|
|
|
467 |
|
|
\end{itemize} |
468 |
|
|
|
469 |
|
|
This \marginpar{\textbf{Book License}}\index{license} book is licensed under the |
470 |
|
|
\emph{Academic Free License v. 2.0}, reproduced below for convenience.\footnote{Please |
471 |
|
|
note that \emph{The ESRG Tool Set} and certain other materials are licensed under the GPL. At this time |
472 |
|
|
only this book is licensed under the \emph{Academic Free License}.} |
473 |
|
|
|
474 |
|
|
\begin{it} |
475 |
|
|
This Academic Free License (the ``License'') applies to any original work of authorship |
476 |
|
|
(the ``Original Work'') whose owner (the ``Licensor'') has placed the following |
477 |
|
|
notice immediately following the copyright notice for the Original Work:\\ |
478 |
|
|
\\ |
479 |
|
|
Licensed under the Academic Free License version 2.0 |
480 |
|
|
|
481 |
|
|
\begin{enumerate} |
482 |
|
|
\item \textbf{Grant of Copyright License.} Licensor hereby grants You a world-wide, royalty-free, |
483 |
|
|
non-exclusive, perpetual, sublicenseable license to do the following: |
484 |
|
|
|
485 |
|
|
\begin{enumerate} |
486 |
|
|
\item to reproduce the Original Work in copies; |
487 |
|
|
\item to prepare derivative works ("Derivative Works") based upon the Original Work; |
488 |
|
|
\item to distribute copies of the Original Work and Derivative Works to the public; |
489 |
|
|
\item to perform the Original Work publicly; and |
490 |
|
|
\item to display the Original Work publicly. |
491 |
|
|
\end{enumerate} |
492 |
|
|
|
493 |
|
|
\item \textbf{Grant of Patent License.} Licensor hereby grants You a world-wide, royalty-free, non-exclusive, |
494 |
|
|
perpetual, sublicenseable license, under patent claims owned or controlled by the Licensor that are embodied |
495 |
|
|
in the Original Work as furnished by the Licensor, to make, use, sell and offer for sale the |
496 |
|
|
Original Work and Derivative Works. |
497 |
|
|
|
498 |
|
|
\item \textbf{Grant of Source Code License.} The term ``Source Code'' means the preferred form of the |
499 |
|
|
Original Work for making modifications to it and all available documentation describing how to modify the |
500 |
|
|
Original Work. Licensor hereby agrees to provide a machine-readable copy of the Source Code of the |
501 |
|
|
Original Work along with each copy of the Original Work that Licensor distributes. |
502 |
|
|
Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of |
503 |
|
|
the Source Code in an information repository reasonably calculated to permit inexpensive and convenient |
504 |
|
|
access by You for as long as Licensor continues to distribute the Original Work, and by publishing the |
505 |
|
|
address of that information repository in a notice immediately following the copyright |
506 |
|
|
notice that applies to the Original Work. |
507 |
|
|
|
508 |
|
|
\item \textbf{Exclusions From License Grant.} Neither the names of Licensor, nor the names of any |
509 |
|
|
contributors to the Original Work, nor any of their trademarks or service marks, may |
510 |
|
|
be used to endorse or promote products derived from this Original Work without express prior |
511 |
|
|
written permission of the Licensor. Nothing in this License shall be deemed to grant any |
512 |
|
|
rights to trademarks, copyrights, patents, trade secrets or any other intellectual property |
513 |
|
|
of Licensor except as expressly stated herein. No patent license is granted to make, use, |
514 |
|
|
sell or offer to sell embodiments of any patent claims other than the licensed claims |
515 |
|
|
defined in Section 2. No right is granted to the trademarks of Licensor even if such marks |
516 |
|
|
are included in the Original Work. Nothing in this License shall be interpreted to prohibit |
517 |
|
|
Licensor from licensing under different terms from this License any Original Work that |
518 |
|
|
Licensor otherwise would have a right to license. |
519 |
|
|
|
520 |
|
|
\item This section intentionally omitted. |
521 |
|
|
|
522 |
|
|
\item \textbf{Attribution Rights.} You must retain, in the Source Code of any Derivative Works that |
523 |
|
|
You create, all copyright, patent or trademark notices from the Source Code of the Original Work, |
524 |
|
|
as well as any notices of licensing and any descriptive text identified therein as an |
525 |
|
|
``Attribution Notice.'' You must cause the Source Code for any Derivative Works that |
526 |
|
|
You create to carry a prominent Attribution Notice reasonably calculated to inform |
527 |
|
|
recipients that You have modified the Original Work. |
528 |
|
|
|
529 |
|
|
\item \textbf{Warranty of Provenance and Disclaimer of Warranty.} Licensor warrants that the copyright in |
530 |
|
|
and to the Original Work and the patent rights granted herein by Licensor are owned by the |
531 |
|
|
Licensor or are sublicensed to You under the terms of this License with the permission of |
532 |
|
|
the contributor(s) of those copyrights and patent rights. Except as expressly stated in the |
533 |
|
|
immediately proceeding sentence, the Original Work is provided under this License on an |
534 |
|
|
``AS IS'' BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, |
535 |
|
|
the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
536 |
|
|
THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY |
537 |
|
|
constitutes an essential part of this License. No license to Original Work is granted |
538 |
|
|
hereunder except under this disclaimer. |
539 |
|
|
|
540 |
|
|
\item \textbf{Limitation of Liability.} Under no circumstances and under no legal theory, whether in |
541 |
|
|
tort (including negligence), contract, or otherwise, shall the Licensor be liable to any person for |
542 |
|
|
any direct, indirect, special, incidental, or consequential damages of any character arising |
543 |
|
|
as a result of this License or the use of the Original Work including, without limitation, |
544 |
|
|
damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all |
545 |
|
|
other commercial damages or losses. This limitation of liability shall not apply to liability |
546 |
|
|
for death or personal injury resulting from Licensor's negligence to the extent applicable law |
547 |
|
|
prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of |
548 |
|
|
incidental or consequential damages, so this exclusion and limitation may not apply to You. |
549 |
|
|
|
550 |
|
|
\item \textbf{Acceptance and Termination.} If You distribute copies of the Original Work or a |
551 |
|
|
Derivative Work, You must make a reasonable effort under the circumstances to |
552 |
|
|
obtain the express assent of recipients to the terms of this License. Nothing |
553 |
|
|
else but this License (or another written agreement between Licensor and You) |
554 |
|
|
grants You permission to create Derivative Works based upon the Original Work |
555 |
|
|
or to exercise any of the rights granted in Section 1 herein, and any attempt |
556 |
|
|
to do so except under the terms of this License (or another written agreement |
557 |
|
|
between Licensor and You) is expressly prohibited by U.S. copyright law, the |
558 |
|
|
equivalent laws of other countries, and by international treaty. Therefore, |
559 |
|
|
by exercising any of the rights granted to You in Section 1 herein, You indicate |
560 |
|
|
Your acceptance of this License and all of its terms and conditions. |
561 |
|
|
|
562 |
|
|
\item \textbf{Termination for Patent Action.} This License shall terminate automatically |
563 |
|
|
and You may no longer exercise any of the rights granted to You by this License |
564 |
|
|
as of the date You commence an action, including a cross-claim or counterclaim, |
565 |
|
|
for patent infringement (i) against Licensor with respect to a patent applicable |
566 |
|
|
to software or (ii) against any entity with respect to a patent applicable to |
567 |
|
|
the Original Work (but excluding combinations of the Original Work with other |
568 |
|
|
software or hardware). |
569 |
|
|
|
570 |
|
|
\item \textbf{Jurisdiction, Venue and Governing Law.} Any action or suit relating to this |
571 |
|
|
License may be brought only in the courts of a jurisdiction wherein the Licensor |
572 |
|
|
resides or in which Licensor conducts its primary business, and under the laws |
573 |
|
|
of that jurisdiction excluding its conflict-of-law provisions. The application |
574 |
|
|
of the United Nations Convention on Contracts for the International Sale of Goods |
575 |
|
|
is expressly excluded. Any use of the Original Work outside the scope of this |
576 |
|
|
License or after its termination shall be subject to the requirements and |
577 |
|
|
penalties of the U.S. Copyright Act, 17 U.S.C. 101 et seq., the equivalent |
578 |
|
|
laws of other countries, and international treaty. This section shall |
579 |
|
|
survive the termination of this License. |
580 |
|
|
|
581 |
|
|
\item \textbf{Attorneys Fees.} In any action to enforce the terms of this License or |
582 |
|
|
seeking damages relating thereto, the prevailing party shall be entitled |
583 |
|
|
to recover its costs and expenses, including, without limitation, reasonable |
584 |
|
|
attorneys' fees and costs incurred in connection with such action, including |
585 |
|
|
any appeal of such action. This section shall survive the termination of |
586 |
|
|
this License. |
587 |
|
|
|
588 |
|
|
\item \textbf{Miscellaneous.} This License represents the complete agreement |
589 |
|
|
concerning the subject matter hereof. If any provision of this License |
590 |
|
|
is held to be unenforceable, such provision shall be reformed only to |
591 |
|
|
the extent necessary to make it enforceable. |
592 |
|
|
|
593 |
|
|
\item \textbf{Definition of ``You'' in This License.} ``You'' throughout this License, |
594 |
|
|
whether in upper or lower case, means an individual or a legal entity |
595 |
|
|
exercising rights under, and complying with all of the terms of, this |
596 |
|
|
License. For legal entities, ``You'' includes any entity that controls, |
597 |
|
|
is controlled by, or is under common control with you. For purposes of |
598 |
|
|
this definition, ``control'' means (i) the power, direct or indirect, |
599 |
|
|
to cause the direction or management of such entity, whether by |
600 |
|
|
contract or otherwise, or (ii) ownership of fifty percent (50%) |
601 |
|
|
or more of the outstanding shares, or (iii) beneficial ownership |
602 |
|
|
of such entity. |
603 |
|
|
|
604 |
|
|
\item \textbf{Right to Use.} You may use the Original Work in all ways not |
605 |
|
|
otherwise restricted or conditioned by this License or by law, |
606 |
|
|
and Licensor promises not to interfere with or be responsible |
607 |
|
|
for such uses by You. |
608 |
|
|
\end{enumerate} |
609 |
|
|
\end{it} |
610 |
|
|
|
611 |
|
|
|
612 |
|
|
I \marginpar{\textbf{Intellectual Property}} believe very |
613 |
|
|
strongly in the notion of intellectual property. I have endeavored |
614 |
|
|
in this book to cite all references and to identify all work and |
615 |
|
|
all ideas that are not my own.\footnote{I've actually gone a step |
616 |
|
|
further---I've tried to provide enough information to allow a |
617 |
|
|
motivated reader to get in touch with the originator of the work |
618 |
|
|
or ideas.} I would request the same courtesy in return (but will |
619 |
|
|
not enforce this courtesy, except by exposure of parties responsible |
620 |
|
|
for the theft of ideas without credit). Plagiarism and theft of intellectual property is a |
621 |
|
|
regrettable but common occurrence, and I can |
622 |
|
|
reliably predict that some student somewhere in the Webbed world |
623 |
|
|
will borrow my ideas or work without citation |
624 |
|
|
for a semester project---such events would earn my scorn |
625 |
|
|
but be relatively insignificant |
626 |
|
|
on my radar screen. However, if any of my work appears without |
627 |
|
|
credit in academic journals, I would take the matter less |
628 |
|
|
jovially and would very likely report the plagiarism to the journal |
629 |
|
|
involved. |
630 |
|
|
|
631 |
|
|
I \marginpar{\textbf{Contacting the Author}}\index{contacting the author} |
632 |
|
|
can be contacted at \texttt{dtashley@aol.com}. I invite readers |
633 |
|
|
to contact me about |
634 |
|
|
any material in this book, in \emph{The ESRG Tool Set}, or at |
635 |
|
|
the web site \texttt{http://esrg.sourceforge.net}. |
636 |
|
|
|
637 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
638 |
|
|
|
639 |
|
|
\noindent\begin{figure}[!b] |
640 |
|
|
\noindent\rule[-0.25in]{\textwidth}{1pt} |
641 |
|
|
\begin{tiny} |
642 |
|
|
\begin{verbatim} |
643 |
dashley |
274 |
$HeadURL$ |
644 |
|
|
$Revision$ |
645 |
|
|
$Date$ |
646 |
|
|
$Author$ |
647 |
dashley |
140 |
\end{verbatim} |
648 |
|
|
\end{tiny} |
649 |
|
|
\noindent\rule[0.25in]{\textwidth}{1pt} |
650 |
|
|
\end{figure} |
651 |
|
|
% |
652 |
|
|
%End of file WORKPRFA.TEX |