1 |
28 |
unneback |
<!-- Copyright (C) 2003 Red Hat, Inc. -->
|
2 |
|
|
<!-- This material may be distributed only subject to the terms -->
|
3 |
|
|
<!-- and conditions set forth in the Open Publication License, v1.0 -->
|
4 |
|
|
<!-- or later (the latest version is presently available at -->
|
5 |
|
|
<!-- http://www.opencontent.org/openpub/). -->
|
6 |
|
|
<!-- Distribution of the work or derivative of the work in any -->
|
7 |
|
|
<!-- standard (paper) book form is prohibited unless prior -->
|
8 |
|
|
<!-- permission is obtained from the copyright holder. -->
|
9 |
|
|
<HTML
|
10 |
|
|
><HEAD
|
11 |
|
|
><TITLE
|
12 |
|
|
>Why Configurability?</TITLE
|
13 |
|
|
><meta name="MSSmartTagsPreventParsing" content="TRUE">
|
14 |
|
|
<META
|
15 |
|
|
NAME="GENERATOR"
|
16 |
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
17 |
|
|
"><LINK
|
18 |
|
|
REL="HOME"
|
19 |
|
|
TITLE="The eCos Component Writer's Guide"
|
20 |
|
|
HREF="cdl-guide.html"><LINK
|
21 |
|
|
REL="UP"
|
22 |
|
|
TITLE="Overview"
|
23 |
|
|
HREF="overview.html"><LINK
|
24 |
|
|
REL="PREVIOUS"
|
25 |
|
|
TITLE="Overview"
|
26 |
|
|
HREF="overview.html"><LINK
|
27 |
|
|
REL="NEXT"
|
28 |
|
|
TITLE="Approaches to Configurability"
|
29 |
|
|
HREF="overview.approaches.html"></HEAD
|
30 |
|
|
><BODY
|
31 |
|
|
CLASS="SECT1"
|
32 |
|
|
BGCOLOR="#FFFFFF"
|
33 |
|
|
TEXT="#000000"
|
34 |
|
|
LINK="#0000FF"
|
35 |
|
|
VLINK="#840084"
|
36 |
|
|
ALINK="#0000FF"
|
37 |
|
|
><DIV
|
38 |
|
|
CLASS="NAVHEADER"
|
39 |
|
|
><TABLE
|
40 |
|
|
SUMMARY="Header navigation table"
|
41 |
|
|
WIDTH="100%"
|
42 |
|
|
BORDER="0"
|
43 |
|
|
CELLPADDING="0"
|
44 |
|
|
CELLSPACING="0"
|
45 |
|
|
><TR
|
46 |
|
|
><TH
|
47 |
|
|
COLSPAN="3"
|
48 |
|
|
ALIGN="center"
|
49 |
|
|
>The <SPAN
|
50 |
|
|
CLASS="APPLICATION"
|
51 |
|
|
>eCos</SPAN
|
52 |
|
|
> Component Writer's Guide</TH
|
53 |
|
|
></TR
|
54 |
|
|
><TR
|
55 |
|
|
><TD
|
56 |
|
|
WIDTH="10%"
|
57 |
|
|
ALIGN="left"
|
58 |
|
|
VALIGN="bottom"
|
59 |
|
|
><A
|
60 |
|
|
HREF="overview.html"
|
61 |
|
|
ACCESSKEY="P"
|
62 |
|
|
>Prev</A
|
63 |
|
|
></TD
|
64 |
|
|
><TD
|
65 |
|
|
WIDTH="80%"
|
66 |
|
|
ALIGN="center"
|
67 |
|
|
VALIGN="bottom"
|
68 |
|
|
>Chapter 1. Overview</TD
|
69 |
|
|
><TD
|
70 |
|
|
WIDTH="10%"
|
71 |
|
|
ALIGN="right"
|
72 |
|
|
VALIGN="bottom"
|
73 |
|
|
><A
|
74 |
|
|
HREF="overview.approaches.html"
|
75 |
|
|
ACCESSKEY="N"
|
76 |
|
|
>Next</A
|
77 |
|
|
></TD
|
78 |
|
|
></TR
|
79 |
|
|
></TABLE
|
80 |
|
|
><HR
|
81 |
|
|
ALIGN="LEFT"
|
82 |
|
|
WIDTH="100%"></DIV
|
83 |
|
|
><DIV
|
84 |
|
|
CLASS="SECT1"
|
85 |
|
|
><H1
|
86 |
|
|
CLASS="SECT1"
|
87 |
|
|
><A
|
88 |
|
|
NAME="OVERVIEW.CONFIGURABILITY">Why Configurability?</H1
|
89 |
|
|
><P
|
90 |
|
|
>The <SPAN
|
91 |
|
|
CLASS="APPLICATION"
|
92 |
|
|
>eCos</SPAN
|
93 |
|
|
> component framework places a great deal of emphasis on
|
94 |
|
|
configurability. The fundamental goal is to allow large parts of
|
95 |
|
|
embedded applications to be constructed from re-usable software
|
96 |
|
|
components, which does not a priori require that those components be
|
97 |
|
|
highly configurable. However embedded application development often
|
98 |
|
|
involves some serious constraints.</P
|
99 |
|
|
><P
|
100 |
|
|
>Many embedded applications have to work with very little memory, to
|
101 |
|
|
keep down manufacturing costs. The final application image that will
|
102 |
|
|
get blown into EPROM's or used to manufacture ROMs should contain only
|
103 |
|
|
the code that is absolutely necessary for the application to work, and
|
104 |
|
|
nothing else. If a few tens of kilobytes are added unnecessarily to a
|
105 |
|
|
typical desktop application then this is regrettable, but is quite
|
106 |
|
|
likely to go unnoticed. If an embedded application does not fit on the
|
107 |
|
|
target hardware then the problem is much more serious. The component
|
108 |
|
|
framework must allow users to configure the components so that any
|
109 |
|
|
unnecessary functionality gets removed.</P
|
110 |
|
|
><P
|
111 |
|
|
>Many embedded applications need deterministic behavior so that they
|
112 |
|
|
can meet real-time requirements. Such deterministic behavior can
|
113 |
|
|
often be provided, but at a cost in terms of code size, slower
|
114 |
|
|
algorithms, and so on. Other applications have no such real-time
|
115 |
|
|
requirements, or only for a small part of the overall system, and the
|
116 |
|
|
bulk of the system should not suffer any penalties. Again the
|
117 |
|
|
component framework must allow the users control over the timing
|
118 |
|
|
behavior of components.</P
|
119 |
|
|
><P
|
120 |
|
|
>Embedded systems tend to be difficult to debug. Even when it is
|
121 |
|
|
possible to get information out of the target hardware by means other
|
122 |
|
|
than flashing an LED, the more interesting debugging problems are
|
123 |
|
|
likely to be timing-related and hence very hard to reproduce and track
|
124 |
|
|
down. The re-usable components can provide debugging assistance in
|
125 |
|
|
various ways. They can provide functionality that can be exploited by
|
126 |
|
|
source level debuggers such as gdb, for example per-thread debugging
|
127 |
|
|
information. They can also contain various assertions so that problems
|
128 |
|
|
can be detected early on, tracing mechanisms to figure out what
|
129 |
|
|
happened before the assertion failure, and so on. Of course all of
|
130 |
|
|
these involve overheads, especially code size, and affect the timing.
|
131 |
|
|
Allowing users to control which debugging features are enabled for any
|
132 |
|
|
given application build is very desirable.</P
|
133 |
|
|
><P
|
134 |
|
|
>However, although it is desirable for re-usable components to provide
|
135 |
|
|
appropriate configuration options this is not required. It is possible
|
136 |
|
|
to produce a package which does not provide a single configuration
|
137 |
|
|
option — although the user still gets to choose
|
138 |
|
|
whether or not to use the package. In such cases it is still necessary
|
139 |
|
|
to provide a minimal CDL script, but its main purpose would be to
|
140 |
|
|
integrate the package with the component framework's build system.</P
|
141 |
|
|
></DIV
|
142 |
|
|
><DIV
|
143 |
|
|
CLASS="NAVFOOTER"
|
144 |
|
|
><HR
|
145 |
|
|
ALIGN="LEFT"
|
146 |
|
|
WIDTH="100%"><TABLE
|
147 |
|
|
SUMMARY="Footer navigation table"
|
148 |
|
|
WIDTH="100%"
|
149 |
|
|
BORDER="0"
|
150 |
|
|
CELLPADDING="0"
|
151 |
|
|
CELLSPACING="0"
|
152 |
|
|
><TR
|
153 |
|
|
><TD
|
154 |
|
|
WIDTH="33%"
|
155 |
|
|
ALIGN="left"
|
156 |
|
|
VALIGN="top"
|
157 |
|
|
><A
|
158 |
|
|
HREF="overview.html"
|
159 |
|
|
ACCESSKEY="P"
|
160 |
|
|
>Prev</A
|
161 |
|
|
></TD
|
162 |
|
|
><TD
|
163 |
|
|
WIDTH="34%"
|
164 |
|
|
ALIGN="center"
|
165 |
|
|
VALIGN="top"
|
166 |
|
|
><A
|
167 |
|
|
HREF="cdl-guide.html"
|
168 |
|
|
ACCESSKEY="H"
|
169 |
|
|
>Home</A
|
170 |
|
|
></TD
|
171 |
|
|
><TD
|
172 |
|
|
WIDTH="33%"
|
173 |
|
|
ALIGN="right"
|
174 |
|
|
VALIGN="top"
|
175 |
|
|
><A
|
176 |
|
|
HREF="overview.approaches.html"
|
177 |
|
|
ACCESSKEY="N"
|
178 |
|
|
>Next</A
|
179 |
|
|
></TD
|
180 |
|
|
></TR
|
181 |
|
|
><TR
|
182 |
|
|
><TD
|
183 |
|
|
WIDTH="33%"
|
184 |
|
|
ALIGN="left"
|
185 |
|
|
VALIGN="top"
|
186 |
|
|
>Overview</TD
|
187 |
|
|
><TD
|
188 |
|
|
WIDTH="34%"
|
189 |
|
|
ALIGN="center"
|
190 |
|
|
VALIGN="top"
|
191 |
|
|
><A
|
192 |
|
|
HREF="overview.html"
|
193 |
|
|
ACCESSKEY="U"
|
194 |
|
|
>Up</A
|
195 |
|
|
></TD
|
196 |
|
|
><TD
|
197 |
|
|
WIDTH="33%"
|
198 |
|
|
ALIGN="right"
|
199 |
|
|
VALIGN="top"
|
200 |
|
|
>Approaches to Configurability</TD
|
201 |
|
|
></TR
|
202 |
|
|
></TABLE
|
203 |
|
|
></DIV
|
204 |
|
|
></BODY
|
205 |
|
|
></HTML
|
206 |
|
|
>
|