1 |
%$Header$ |
2 |
|
3 |
\chapter{\cdaazerolongtitle{}} |
4 |
|
5 |
\label{cdaa0} |
6 |
|
7 |
\beginchapterquote{``Without censorship, things can get terribly confused |
8 |
in the public mind.''}{General William Westmoreland} |
9 |
|
10 |
\section{Introduction} |
11 |
%Section Tag: INT |
12 |
|
13 |
In practice, preparing the ROM image of a microcontroller software product |
14 |
is a complex process that exceeds the capabilities of standard development |
15 |
tools such as compilers, assemblers, and linkers. The specific |
16 |
elements of the process that exceed the capabilities of standard ``off-the-shelf'' |
17 |
development tools are: |
18 |
|
19 |
\begin{itemize} |
20 |
\item ROM checksums must typically be generated and placed at a specific |
21 |
location in ROM. |
22 |
\item Suspicious conditions that may indicate a software error |
23 |
should be detected. Suspicious conditions include |
24 |
versions of compilers or other development tools that are |
25 |
not the expected versions, files which are not checked into |
26 |
version control, extra files, missing files, etc. |
27 |
\item Coding standards should be automatically enforced during the |
28 |
build process. Violations of coding standards should prevent |
29 |
a production build. |
30 |
\item Product defects should be fed back into the tool set.\footnote{Product |
31 |
defects should also be fed back into the training for software |
32 |
developers, and into the software process.} If the root cause |
33 |
of a product defect is found to be automatically detectable, |
34 |
tools should be enhanced to prevent recurrence of the defect. |
35 |
\item Redundancy should be eliminated or minimized in all of the |
36 |
materials---including the code---which are maintained as |
37 |
part of software developments. Examples of redundancy include: |
38 |
\begin{itemize} |
39 |
\item Network message lists are often redundant with respect to |
40 |
the code. Network message lists often are processed to |
41 |
form data tables in the code, and sometimes even influence |
42 |
the structure of the code. |
43 |
\item Software modules are often redundant with respect to |
44 |
each other. For example, it is common for task schedulers |
45 |
and real-time operating systems to contain lists of |
46 |
function pointers. These lists of function pointers |
47 |
must be maintained to be consistent with the functions |
48 |
(usually in different source files). The maintenance |
49 |
of consistency should be automatic (the lists of function |
50 |
pointers should be maintained automatically). |
51 |
\end{itemize} |
52 |
\item Organizations often maintain ``bookshelves''---collections of |
53 |
re-usable software components. Often, ``customizing'' the |
54 |
software components (i.e. using them from the bookshelf) |
55 |
is a task that exceeds the capabilites of the `C' preprocessor |
56 |
or other simple tools. |
57 |
\item Some mappings that are helpful in code are too complex to |
58 |
be performed by the `C' preprocessor or other simple |
59 |
tools. For example, if one accepts 1.6093 as the |
60 |
ideal conversion factor from miles-per-hour to |
61 |
kilometers-per-hour, the best rational approximation with |
62 |
numerator and denominator not exceeding 255 is 243/151.\footnote{See |
63 |
Chapters \cfryzeroxrefhyphen{}\ref{cfry0}, |
64 |
\ccfrzeroxrefhyphen{}\ref{ccfr0}, |
65 |
and \cratzeroxrefhyphen{}\ref{crat0}.} The mapping from |
66 |
(1.6093, 255, 255) to (243,151) is too complex to be made |
67 |
by the `C' preprocessor. |
68 |
\end{itemize} |
69 |
|
70 |
In this chapter, we present a solution based around the scripting language |
71 |
Tcl. |
72 |
|
73 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
74 |
\noindent\begin{figure}[!b] |
75 |
\noindent\rule[-0.25in]{\textwidth}{1pt} |
76 |
\begin{tiny} |
77 |
\begin{verbatim} |
78 |
$RCSfile: c_daa0.tex,v $ |
79 |
$Source: /home/dashley/cvsrep/e3ft_gpl01/e3ft_gpl01/dtaipubs/esrgubka/c_daa0/c_daa0.tex,v $ |
80 |
$Revision: 1.2 $ |
81 |
$Author: dtashley $ |
82 |
$Date: 2001/07/30 02:54:17 $ |
83 |
\end{verbatim} |
84 |
\end{tiny} |
85 |
\noindent\rule[0.25in]{\textwidth}{1pt} |
86 |
\end{figure} |
87 |
|
88 |
% $Log: c_daa0.tex,v $ |
89 |
% Revision 1.2 2001/07/30 02:54:17 dtashley |
90 |
% INTFAC extension and command-line utility finished. |
91 |
% |
92 |
% Revision 1.1.1.1 2001/06/19 19:48:30 dtashley |
93 |
% Initial import. |
94 |
% |
95 |
% |
96 |
%End of file C_DAA0.TEX |