1 # ====================================================================
5 # uITRON configuration data
7 # ====================================================================
8 #####ECOSGPLCOPYRIGHTBEGIN####
9 ## -------------------------------------------
10 ## This file is part of eCos, the Embedded Configurable Operating System.
11 ## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
12 ## Copyright (C) 2006 eCosCentric Ltd.
14 ## eCos is free software; you can redistribute it and/or modify it under
15 ## the terms of the GNU General Public License as published by the Free
16 ## Software Foundation; either version 2 or (at your option) any later version.
18 ## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
19 ## WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
23 ## You should have received a copy of the GNU General Public License along
24 ## with eCos; if not, write to the Free Software Foundation, Inc.,
25 ## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
27 ## As a special exception, if other files instantiate templates or use macros
28 ## or inline functions from this file, or you compile this file and link it
29 ## with other works to produce a work based on this file, this file does not
30 ## by itself cause the resulting work to be covered by the GNU General Public
31 ## License. However the source code for this file must still be made available
32 ## in accordance with section (3) of the GNU General Public License.
34 ## This exception does not invalidate any other reasons why a work based on
35 ## this file might be covered by the GNU General Public License.
36 ## -------------------------------------------
37 #####ECOSGPLCOPYRIGHTEND####
38 # ====================================================================
39 ######DESCRIPTIONBEGIN####
46 #####DESCRIPTIONEND####
48 # ====================================================================
50 cdl_package CYGPKG_UITRON {
51 display "uITRON compatibility layer"
52 include_dir cyg/compat/uitron
53 doc ref/compat-uitron.html
54 requires CYGPKG_KERNEL
56 eCos supports a uITRON Compatibility Layer, providing
57 full Level S (Standard) compliance with Version 3.02 of
58 the uITRON Standard, plus many Level E (Extended) features.
59 uITRON is the premier Japanese embedded RTOS standard."
61 compile uit_func.cxx uit_ifnc.cxx uit_objs.cxx
63 # ------------------------------------------------------------------------
65 # ------------------------------------------------------------------------
66 cdl_interface CYGINT_UITRON_CONFORMANCE {
67 requires 1 == CYGINT_UITRON_CONFORMANCE
70 cdl_option CYGIMP_UITRON_STRICT_CONFORMANCE {
71 display "Check strict uITRON standards conformance"
73 requires CYGVAR_KERNEL_COUNTERS_CLOCK
74 requires CYGSEM_KERNEL_SCHED_MLQUEUE
75 requires !CYGSEM_KERNEL_SCHED_TIMESLICE
76 requires CYGFUN_KERNEL_THREADS_TIMER
77 requires !CYGIMP_MBOX_USE_MBOXT_PLAIN
78 implements CYGINT_UITRON_CONFORMANCE
80 Require the rest of the system configuration
81 to match the needs of strict uITRON standards conformance.
82 This option can only be set if the rest of the system is
83 configured correctly for uITRON semantics, for example
84 there must be a realtime clock, a suitable scheduler, and no
86 Of course a system without this selected can be completely
87 conformant; this is here to help you check."
89 cdl_option CYGIMP_UITRON_LOOSE_CONFORMANCE {
90 display "System configuration overrides uITRON"
92 implements CYGINT_UITRON_CONFORMANCE
94 Do not require the rest of the system configuration
95 to match the needs of strict uITRON standards conformance.
96 For example a bitmap scheduler, or timeslicing, can be used
97 with the uITRON functions, but such an environment is not
98 strictly conformant with the uITRON specification.
99 Of course a system with this selected can be completely
100 conformant; but it is up to you to configure it correctly."
103 # ------------------------------------------------------------------------
104 # uITRON FUNCTION CALLS
105 # ------------------------------------------------------------------------
106 cdl_option CYGIMP_UITRON_INLINE_FUNCS {
107 display "Inline functions"
110 If compiling your application with a C++ compiler,
111 uITRON functions can be inline: set this to make it so.
112 Inlining functions often increases execution speed,
113 though possibly at the cost of a larger executable,
114 depending on what functions are used.
115 Do NOT set this if compiling your application
119 cdl_option CYGIMP_UITRON_CPP_OUTLINE_FUNCS {
120 display "C++ function names"
123 If compiling your application with a C++ compiler,
124 uITRON functions can be given C++ style mangled names:
125 set this to make it so.
126 This option may make debugging your program easier,
127 depending on your development environment.
128 Do NOT set this if compiling your application
132 cdl_option CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS {
133 display "Return error codes for bad params"
136 When an application is fully debugged there is no need
137 to check for bad parameters on every system call, for those
138 parameters which are typically pointers or constants.
139 Removing the checking code saves space
140 and improves performance: set this to make it so.
141 When this option is set, the correctness of parameters
142 is asserted using CYG_ASSERT() which compiles to
143 nothing in a non-debug configuration."
146 cdl_option CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR {
147 display "NULL is a good pointer"
150 uITRON deliberately defines the constant NADR (-1) for
151 use as an invalid memory address.
152 The value -1 is chosen to allow working in microcontrollers
153 which have real memory at address zero, the traditional 'C'
155 By default, uITRON functions check for both NULL and NADR as
156 bad addresses: set this option to prevent checking for
157 NULL and allow pointers to address zero to be used."
160 # ------------------------------------------------------------------------
161 # uITRON KERNEL OBJECTS
162 # ------------------------------------------------------------------------
163 cdl_component CYGPKG_UITRON_SEMAS {
168 uITRON Semaphore objects are used with functions
169 named xxx_sem(); they support traditional semaphore
175 cdl_component CYGPKG_UITRON_MBOXES {
180 uITRON Mailbox objects are used with functions
181 named xxx_msg() and xxx_mbx(); they support
182 passing addresses (of 'messages') between tasks
188 cdl_component CYGPKG_UITRON_FLAGS {
193 uITRON Eventflag objects are used with functions
194 named xxx_flg(); they support communication between
195 tasks by means of setting and clearing bits in a word
197 Waiting for all or any of a set of bits is supported."
202 # ------------------------------------------------------------------------
204 # ------------------------------------------------------------------------
205 cdl_component CYGPKG_UITRON_TASKS {
209 uITRON Tasks are the basic blocks of multi-tasking
210 in the uITRON world; they are threads or lightweight
211 processes, sharing the address space and the CPU.
212 They communicate using the primitives outlined above.
213 Each has a stack, an entry point (a C or C++ function),
214 and (where appropriate) a scheduling priority."
219 # ------------------------------------------------------------------------
220 # Memory Pools, both fixed and variable block
221 # ------------------------------------------------------------------------
222 cdl_component CYGPKG_UITRON_MEMPOOLFIXED {
223 display "Fixed-size memorypools"
226 requires CYGPKG_MEMALLOC
228 uITRON supports memory pools for dynamic, task-safe
230 Two kinds are supported, fixed-size and variable-size.
231 There may be multiple of each
232 type of pool, each with differing characteristics.
233 This option controls whether there are any fixed-size
234 memorypools in the system.
235 A fixed-size memorypool allocates blocks of memory of
236 its preset fixed size and none other."
238 script mempoolfixed.cdl
241 cdl_component CYGPKG_UITRON_MEMPOOLVAR {
242 display "Variable-size memorypools"
245 requires CYGPKG_MEMALLOC
247 uITRON supports memory pools for dynamic, task-safe
249 Two kinds are supported, fixed-size and variable-size.
250 There may be multiple of each
251 type of pool, each with differing characteristics.
252 This option controls whether there are any variable-size
253 memorypools in the system.
254 A variable-size memorypool allocates blocks of memory of
255 any size requested, resources permitting."
257 script mempoolvar.cdl
260 # ------------------------------------------------------------------------
261 # One-shot Alarm and Cyclic Alarm handlers:
262 # ------------------------------------------------------------------------
264 cdl_option CYGSEM_UITRON_TIME_IS_MILLISECONDS {
265 display "uITRON time unit is mS"
268 active_if CYGVAR_KERNEL_COUNTERS_CLOCK
270 Setting this option enables a conversion feature so that
271 time parameters to uITRON APIs are converted from milliSeconds
272 to whatever the eCos kernel real-time clock's units are,
274 If this option is not set, time parameters are expressed in
278 cdl_component CYGPKG_UITRON_ALARMS {
279 display "Alarm handlers"
282 requires CYGVAR_KERNEL_COUNTERS_CLOCK
284 uITRON Alarm Handlers are used with functions
285 named def_alm() and ref_alm(); they support
286 simple timing, with a function callback
287 at the end of the timed period."
290 cdl_option CYGNUM_UITRON_ALARMS {
291 display "Number of alarm handlers"
293 legal_values 1 to 65535
296 The number of uITRON alarm
297 handlers present in the system.
298 Valid alarm handler numbers will range
299 from 1 to this value."
303 cdl_component CYGPKG_UITRON_CYCLICS {
304 display "Cyclic handlers"
307 requires CYGVAR_KERNEL_COUNTERS_CLOCK
309 uITRON Cyclic Handlers are used with functions
310 named xxx_cyc(); they support timing
311 with a periodic function callback that
312 can be dynamically turned on or off, and
313 resynchronized with external events."
315 cdl_option CYGNUM_UITRON_CYCLICS {
316 display "Number cyclic handlers"
318 legal_values 1 to 65535
321 The number of uITRON cyclics
322 handlers present in the system.
323 Valid cyclic handler numbers will range
324 from 1 to this value."
328 # ------------------------------------------------------------------------
329 # Interrupt-safe functions [ixxx_yyy()]:
330 # ------------------------------------------------------------------------
331 cdl_component CYGPKG_UITRON_INTERRUPT_FUNCTIONS {
332 display "Interrupt-safe functions"
334 description "The uITRON system provides some functions which may
335 safely be used within interrupt handlers. In eCos, this
336 means within ISRs, providing that the corresponding DSR is
337 associated with that interrupt. These functions are
338 typically named ixxx_yyy(), according to the uITRON
339 specification, for example isig_sem() corresponds to normal
342 cdl_option CYGSEM_UITRON_ISRFUNCS_TRY_IMMEDIATE_EXECUTION {
343 display "Execute in ISR if safe"
344 parent CYGPKG_UITRON_INTERRUPT_FUNCTIONS
348 These functions of necessity maintain a queue of
349 operations requested for deferred execution. However,
350 during an interrupt, it may be safe to perform scheduling
351 operations. If this option is set, the interrupt-safe
352 functions will have effect there and then if it is indeed
353 safe, rather than queueing a request to perform the
354 operation in the DSR."
356 cdl_option CYGNUM_UITRON_ISR_ACTION_QUEUESIZE {
357 display "Deferred operation queue size"
358 parent CYGPKG_UITRON_INTERRUPT_FUNCTIONS
360 legal_values 4 8 16 32 64 128 256
362 description "These functions of necessity maintain a queue of
363 operations requested for deferred execution. This option
364 controls the queue size. It must be a power of two for
365 implementation reasons."
369 # ------------------------------------------------------------------------
370 # uITRON VERSION INFORMATION
371 # ------------------------------------------------------------------------
372 cdl_component CYGPKG_UITRON_VERSION {
373 display "Version information"
376 The get_ver() uITRON system call returns
377 several version related values describing
378 the vendor, product and CPU in question
379 as well as the version of the uITRON
381 These values may be specified here."
387 puts $::cdl_header "/***** proc output start *****/"
388 puts $::cdl_header "#include <pkgconf/system.h>"
389 puts $::cdl_header "#include <pkgconf/kernel.h>"
390 puts $::cdl_header "/***** proc output end *****/"
393 cdl_component CYGPKG_UITRON_OPTIONS {
394 display "uITRON build options"
397 Package specific build options including control over
398 compiler flags used only in building this package,
399 and details of which tests are built."
401 cdl_option CYGPKG_UITRON_CFLAGS_ADD {
402 display "Additional compiler flags"
407 This option modifies the set of compiler flags for
408 building the uITRON compatibility layer. These flags are used in addition
409 to the set of global flags."
412 cdl_option CYGPKG_UITRON_CFLAGS_REMOVE {
413 display "Suppressed compiler flags"
418 This option modifies the set of compiler flags for
419 building the uITRON compatibility layer. These flags are removed from
420 the set of global flags if present."
423 cdl_option CYGPKG_UITRON_TESTS {
424 display "uITRON tests"
428 "tests/testcxx tests/testcx2 tests/testcx3 tests/testcx4 tests/testcx5 tests/testcx6 tests/testcx7 tests/testcx8 tests/testcx9"
429 . ((!CYGIMP_UITRON_INLINE_FUNCS && !CYGIMP_UITRON_CPP_OUTLINE_FUNCS) ?
430 " tests/test1 tests/test2 tests/test3 tests/test4 tests/test5 tests/test6 tests/test7 tests/test8 tests/test9 tests/testintr" : "")
433 This option specifies the set of tests for the uITRON compatibility layer."