Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2 | Rev 7 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | /* |
1 | /* |
2 | ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, |
2 | ChibiOS - Copyright (C) 2006..2017 Giovanni Di Sirio |
3 | 2011,2012 Giovanni Di Sirio. |
- | |
4 | 3 | ||
5 | This file is part of ChibiOS/RT. |
- | |
6 | - | ||
7 | ChibiOS/RT is free software; you can redistribute it and/or modify |
- | |
8 | it under the terms of the GNU General Public License as published by |
4 | Licensed under the Apache License, Version 2.0 (the "License"); |
9 | the Free Software Foundation; either version 3 of the License, or |
5 | you may not use this file except in compliance with the License. |
10 | (at your option) any later version. |
6 | You may obtain a copy of the License at |
11 | 7 | ||
12 | ChibiOS/RT is distributed in the hope that it will be useful, |
- | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
- | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
- | |
15 | GNU General Public License for more details. |
8 | http://www.apache.org/licenses/LICENSE-2.0 |
16 | 9 | ||
17 | You should have received a copy of the GNU General Public License |
10 | Unless required by applicable law or agreed to in writing, software |
18 | along with this program. If not, see <http://www.gnu.org/licenses/>. |
- | |
19 | - | ||
20 | --- |
- | |
21 | - | ||
22 | A special exception to the GPL can be applied should you wish to distribute |
11 | distributed under the License is distributed on an "AS IS" BASIS, |
23 | a combined work that includes ChibiOS/RT, without being obliged to provide |
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
24 | the source code for any proprietary components. See the file exception.txt |
13 | See the License for the specific language governing permissions and |
25 | for full details of how and when the exception can be applied. |
14 | limitations under the License. |
26 | */ |
15 | */ |
27 | 16 | ||
28 | /** |
17 | /** |
29 | * @file templates/chconf.h |
18 | * @file templates/chconf.h |
30 | * @brief Configuration file template. |
19 | * @brief Configuration file template. |
Line 34... | Line 23... | ||
34 | * @addtogroup config |
23 | * @addtogroup config |
35 | * @details Kernel related settings and hooks. |
24 | * @details Kernel related settings and hooks. |
36 | * @{ |
25 | * @{ |
37 | */ |
26 | */ |
38 | 27 | ||
39 | #ifndef _CHCONF_H_ |
28 | #ifndef CHCONF_H |
40 | #define _CHCONF_H_ |
29 | #define CHCONF_H |
- | 30 | ||
- | 31 | #define _CHIBIOS_RT_CONF_ |
|
- | 32 | #define _CHIBIOS_RT_CONF_VER_5_0_ |
|
41 | 33 | ||
42 | /*===========================================================================*/ |
34 | /*===========================================================================*/ |
43 | /** |
35 | /** |
44 | * @name Kernel parameters and options |
36 | * @name System timers settings |
45 | * @{ |
37 | * @{ |
46 | */ |
38 | */ |
47 | /*===========================================================================*/ |
39 | /*===========================================================================*/ |
48 | 40 | ||
49 | /** |
41 | /** |
- | 42 | * @brief System time counter resolution. |
|
- | 43 | * @note Allowed values are 16 or 32 bits. |
|
- | 44 | */ |
|
- | 45 | #define CH_CFG_ST_RESOLUTION 16 |
|
- | 46 | ||
- | 47 | /** |
|
50 | * @brief System tick frequency. |
48 | * @brief System tick frequency. |
51 | * @details Frequency of the system timer that drives the system ticks. This |
49 | * @details Frequency of the system timer that drives the system ticks. This |
52 | * setting also defines the system tick time unit. |
50 | * setting also defines the system tick time unit. |
53 | */ |
51 | */ |
54 | #if !defined(CH_FREQUENCY) || defined(__DOXYGEN__) |
52 | #define CH_CFG_ST_FREQUENCY 10000 |
- | 53 | ||
- | 54 | /** |
|
- | 55 | * @brief Time intervals data size. |
|
- | 56 | * @note Allowed values are 16, 32 or 64 bits. |
|
- | 57 | */ |
|
- | 58 | #define CH_CFG_INTERVALS_SIZE 32 |
|
- | 59 | ||
- | 60 | /** |
|
- | 61 | * @brief Time types data size. |
|
- | 62 | * @note Allowed values are 16 or 32 bits. |
|
- | 63 | */ |
|
- | 64 | #define CH_CFG_TIME_TYPES_SIZE 32 |
|
- | 65 | ||
- | 66 | /** |
|
- | 67 | * @brief Time delta constant for the tick-less mode. |
|
- | 68 | * @note If this value is zero then the system uses the classic |
|
- | 69 | * periodic tick. This value represents the minimum number |
|
- | 70 | * of ticks that is safe to specify in a timeout directive. |
|
- | 71 | * The value one is not valid, timeouts are rounded up to |
|
- | 72 | * this value. |
|
- | 73 | */ |
|
55 | #define CH_FREQUENCY 1000 |
74 | #define CH_CFG_ST_TIMEDELTA 2 |
- | 75 | ||
- | 76 | /** @} */ |
|
- | 77 | ||
- | 78 | /*===========================================================================*/ |
|
- | 79 | /** |
|
- | 80 | * @name Kernel parameters and options |
|
56 | #endif |
81 | * @{ |
- | 82 | */ |
|
- | 83 | /*===========================================================================*/ |
|
57 | 84 | ||
58 | /** |
85 | /** |
59 | * @brief Round robin interval. |
86 | * @brief Round robin interval. |
60 | * @details This constant is the number of system ticks allowed for the |
87 | * @details This constant is the number of system ticks allowed for the |
61 | * threads before preemption occurs. Setting this value to zero |
88 | * threads before preemption occurs. Setting this value to zero |
62 | * disables the preemption for threads with equal priority and the |
89 | * disables the preemption for threads with equal priority and the |
63 | * round robin becomes cooperative. Note that higher priority |
90 | * round robin becomes cooperative. Note that higher priority |
64 | * threads can still preempt, the kernel is always preemptive. |
91 | * threads can still preempt, the kernel is always preemptive. |
65 | * |
- | |
66 | * @note Disabling the round robin preemption makes the kernel more compact |
92 | * @note Disabling the round robin preemption makes the kernel more compact |
67 | * and generally faster. |
93 | * and generally faster. |
- | 94 | * @note The round robin preemption is not supported in tickless mode and |
|
- | 95 | * must be set to zero in that case. |
|
68 | */ |
96 | */ |
69 | #if !defined(CH_TIME_QUANTUM) || defined(__DOXYGEN__) |
- | |
70 | #define CH_TIME_QUANTUM 20 |
97 | #define CH_CFG_TIME_QUANTUM 0 |
71 | #endif |
- | |
72 | 98 | ||
73 | /** |
99 | /** |
74 | * @brief Managed RAM size. |
100 | * @brief Managed RAM size. |
75 | * @details Size of the RAM area to be managed by the OS. If set to zero |
101 | * @details Size of the RAM area to be managed by the OS. If set to zero |
76 | * then the whole available RAM is used. The core memory is made |
102 | * then the whole available RAM is used. The core memory is made |
77 | * available to the heap allocator and/or can be used directly through |
103 | * available to the heap allocator and/or can be used directly through |
78 | * the simplified core memory allocator. |
104 | * the simplified core memory allocator. |
79 | * |
105 | * |
80 | * @note In order to let the OS manage the whole RAM the linker script must |
106 | * @note In order to let the OS manage the whole RAM the linker script must |
81 | * provide the @p __heap_base__ and @p __heap_end__ symbols. |
107 | * provide the @p __heap_base__ and @p __heap_end__ symbols. |
82 | * @note Requires @p CH_USE_MEMCORE. |
108 | * @note Requires @p CH_CFG_USE_MEMCORE. |
83 | */ |
109 | */ |
84 | #if !defined(CH_MEMCORE_SIZE) || defined(__DOXYGEN__) |
- | |
85 | #define CH_MEMCORE_SIZE 0 |
110 | #define CH_CFG_MEMCORE_SIZE 0 |
86 | #endif |
- | |
87 | 111 | ||
88 | /** |
112 | /** |
89 | * @brief Idle thread automatic spawn suppression. |
113 | * @brief Idle thread automatic spawn suppression. |
90 | * @details When this option is activated the function @p chSysInit() |
114 | * @details When this option is activated the function @p chSysInit() |
91 | * does not spawn the idle thread automatically. The application has |
115 | * does not spawn the idle thread. The application @p main() |
92 | * then the responsibility to do one of the following: |
- | |
93 | * - Spawn a custom idle thread at priority @p IDLEPRIO. |
116 | * function becomes the idle thread and must implement an |
94 | * - Change the main() thread priority to @p IDLEPRIO then enter |
- | |
95 | * an endless loop. In this scenario the @p main() thread acts as |
- | |
96 | * the idle thread. |
117 | * infinite loop. |
97 | * . |
- | |
98 | * @note Unless an idle thread is spawned the @p main() thread must not |
- | |
99 | * enter a sleep state. |
- | |
100 | */ |
118 | */ |
101 | #if !defined(CH_NO_IDLE_THREAD) || defined(__DOXYGEN__) |
- | |
102 | #define CH_NO_IDLE_THREAD FALSE |
119 | #define CH_CFG_NO_IDLE_THREAD FALSE |
103 | #endif |
- | |
104 | 120 | ||
105 | /** @} */ |
121 | /** @} */ |
106 | 122 | ||
107 | /*===========================================================================*/ |
123 | /*===========================================================================*/ |
108 | /** |
124 | /** |
Line 117... | Line 133... | ||
117 | * is used when two possible implementations exist. |
133 | * is used when two possible implementations exist. |
118 | * |
134 | * |
119 | * @note This is not related to the compiler optimization options. |
135 | * @note This is not related to the compiler optimization options. |
120 | * @note The default is @p TRUE. |
136 | * @note The default is @p TRUE. |
121 | */ |
137 | */ |
122 | #if !defined(CH_OPTIMIZE_SPEED) || defined(__DOXYGEN__) |
- | |
123 | #define CH_OPTIMIZE_SPEED TRUE |
138 | #define CH_CFG_OPTIMIZE_SPEED TRUE |
124 | #endif |
- | |
125 | 139 | ||
126 | /** @} */ |
140 | /** @} */ |
127 | 141 | ||
128 | /*===========================================================================*/ |
142 | /*===========================================================================*/ |
129 | /** |
143 | /** |
Line 131... | Line 145... | ||
131 | * @{ |
145 | * @{ |
132 | */ |
146 | */ |
133 | /*===========================================================================*/ |
147 | /*===========================================================================*/ |
134 | 148 | ||
135 | /** |
149 | /** |
- | 150 | * @brief Time Measurement APIs. |
|
- | 151 | * @details If enabled then the time measurement APIs are included in |
|
- | 152 | * the kernel. |
|
- | 153 | * |
|
- | 154 | * @note The default is @p TRUE. |
|
- | 155 | */ |
|
- | 156 | #define CH_CFG_USE_TM TRUE |
|
- | 157 | ||
- | 158 | /** |
|
136 | * @brief Threads registry APIs. |
159 | * @brief Threads registry APIs. |
137 | * @details If enabled then the registry APIs are included in the kernel. |
160 | * @details If enabled then the registry APIs are included in the kernel. |
138 | * |
161 | * |
139 | * @note The default is @p TRUE. |
162 | * @note The default is @p TRUE. |
140 | */ |
163 | */ |
141 | #if !defined(CH_USE_REGISTRY) || defined(__DOXYGEN__) |
- | |
142 | #define CH_USE_REGISTRY TRUE |
164 | #define CH_CFG_USE_REGISTRY TRUE |
143 | #endif |
- | |
144 | 165 | ||
145 | /** |
166 | /** |
146 | * @brief Threads synchronization APIs. |
167 | * @brief Threads synchronization APIs. |
147 | * @details If enabled then the @p chThdWait() function is included in |
168 | * @details If enabled then the @p chThdWait() function is included in |
148 | * the kernel. |
169 | * the kernel. |
149 | * |
170 | * |
150 | * @note The default is @p TRUE. |
171 | * @note The default is @p TRUE. |
151 | */ |
172 | */ |
152 | #if !defined(CH_USE_WAITEXIT) || defined(__DOXYGEN__) |
- | |
153 | #define CH_USE_WAITEXIT TRUE |
173 | #define CH_CFG_USE_WAITEXIT TRUE |
154 | #endif |
- | |
155 | 174 | ||
156 | /** |
175 | /** |
157 | * @brief Semaphores APIs. |
176 | * @brief Semaphores APIs. |
158 | * @details If enabled then the Semaphores APIs are included in the kernel. |
177 | * @details If enabled then the Semaphores APIs are included in the kernel. |
159 | * |
178 | * |
160 | * @note The default is @p TRUE. |
179 | * @note The default is @p TRUE. |
161 | */ |
180 | */ |
162 | #if !defined(CH_USE_SEMAPHORES) || defined(__DOXYGEN__) |
- | |
163 | #define CH_USE_SEMAPHORES TRUE |
181 | #define CH_CFG_USE_SEMAPHORES TRUE |
164 | #endif |
- | |
165 | 182 | ||
166 | /** |
183 | /** |
167 | * @brief Semaphores queuing mode. |
184 | * @brief Semaphores queuing mode. |
168 | * @details If enabled then the threads are enqueued on semaphores by |
185 | * @details If enabled then the threads are enqueued on semaphores by |
169 | * priority rather than in FIFO order. |
186 | * priority rather than in FIFO order. |
170 | * |
187 | * |
171 | * @note The default is @p FALSE. Enable this if you have special requirements. |
188 | * @note The default is @p FALSE. Enable this if you have special |
- | 189 | * requirements. |
|
172 | * @note Requires @p CH_USE_SEMAPHORES. |
190 | * @note Requires @p CH_CFG_USE_SEMAPHORES. |
173 | */ |
191 | */ |
174 | #if !defined(CH_USE_SEMAPHORES_PRIORITY) || defined(__DOXYGEN__) |
- | |
175 | #define CH_USE_SEMAPHORES_PRIORITY FALSE |
192 | #define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE |
176 | #endif |
- | |
177 | 193 | ||
178 | /** |
194 | /** |
179 | * @brief Atomic semaphore API. |
195 | * @brief Mutexes APIs. |
180 | * @details If enabled then the semaphores the @p chSemSignalWait() API |
196 | * @details If enabled then the mutexes APIs are included in the kernel. |
181 | * is included in the kernel. |
- | |
182 | * |
197 | * |
183 | * @note The default is @p TRUE. |
198 | * @note The default is @p TRUE. |
184 | * @note Requires @p CH_USE_SEMAPHORES. |
- | |
185 | */ |
199 | */ |
186 | #if !defined(CH_USE_SEMSW) || defined(__DOXYGEN__) |
- | |
187 | #define CH_USE_SEMSW TRUE |
200 | #define CH_CFG_USE_MUTEXES TRUE |
188 | #endif |
- | |
189 | 201 | ||
190 | /** |
202 | /** |
191 | * @brief Mutexes APIs. |
203 | * @brief Enables recursive behavior on mutexes. |
192 | * @details If enabled then the mutexes APIs are included in the kernel. |
204 | * @note Recursive mutexes are heavier and have an increased |
- | 205 | * memory footprint. |
|
193 | * |
206 | * |
194 | * @note The default is @p TRUE. |
207 | * @note The default is @p FALSE. |
- | 208 | * @note Requires @p CH_CFG_USE_MUTEXES. |
|
195 | */ |
209 | */ |
196 | #if !defined(CH_USE_MUTEXES) || defined(__DOXYGEN__) |
- | |
197 | #define CH_USE_MUTEXES TRUE |
210 | #define CH_CFG_USE_MUTEXES_RECURSIVE FALSE |
198 | #endif |
- | |
199 | 211 | ||
200 | /** |
212 | /** |
201 | * @brief Conditional Variables APIs. |
213 | * @brief Conditional Variables APIs. |
202 | * @details If enabled then the conditional variables APIs are included |
214 | * @details If enabled then the conditional variables APIs are included |
203 | * in the kernel. |
215 | * in the kernel. |
204 | * |
216 | * |
205 | * @note The default is @p TRUE. |
217 | * @note The default is @p TRUE. |
206 | * @note Requires @p CH_USE_MUTEXES. |
218 | * @note Requires @p CH_CFG_USE_MUTEXES. |
207 | */ |
219 | */ |
208 | #if !defined(CH_USE_CONDVARS) || defined(__DOXYGEN__) |
- | |
209 | #define CH_USE_CONDVARS TRUE |
220 | #define CH_CFG_USE_CONDVARS TRUE |
210 | #endif |
- | |
211 | 221 | ||
212 | /** |
222 | /** |
213 | * @brief Conditional Variables APIs with timeout. |
223 | * @brief Conditional Variables APIs with timeout. |
214 | * @details If enabled then the conditional variables APIs with timeout |
224 | * @details If enabled then the conditional variables APIs with timeout |
215 | * specification are included in the kernel. |
225 | * specification are included in the kernel. |
216 | * |
226 | * |
217 | * @note The default is @p TRUE. |
227 | * @note The default is @p TRUE. |
218 | * @note Requires @p CH_USE_CONDVARS. |
228 | * @note Requires @p CH_CFG_USE_CONDVARS. |
219 | */ |
229 | */ |
220 | #if !defined(CH_USE_CONDVARS_TIMEOUT) || defined(__DOXYGEN__) |
- | |
221 | #define CH_USE_CONDVARS_TIMEOUT TRUE |
230 | #define CH_CFG_USE_CONDVARS_TIMEOUT TRUE |
222 | #endif |
- | |
223 | 231 | ||
224 | /** |
232 | /** |
225 | * @brief Events Flags APIs. |
233 | * @brief Events Flags APIs. |
226 | * @details If enabled then the event flags APIs are included in the kernel. |
234 | * @details If enabled then the event flags APIs are included in the kernel. |
227 | * |
235 | * |
228 | * @note The default is @p TRUE. |
236 | * @note The default is @p TRUE. |
229 | */ |
237 | */ |
230 | #if !defined(CH_USE_EVENTS) || defined(__DOXYGEN__) |
- | |
231 | #define CH_USE_EVENTS TRUE |
238 | #define CH_CFG_USE_EVENTS TRUE |
232 | #endif |
- | |
233 | 239 | ||
234 | /** |
240 | /** |
235 | * @brief Events Flags APIs with timeout. |
241 | * @brief Events Flags APIs with timeout. |
236 | * @details If enabled then the events APIs with timeout specification |
242 | * @details If enabled then the events APIs with timeout specification |
237 | * are included in the kernel. |
243 | * are included in the kernel. |
238 | * |
244 | * |
239 | * @note The default is @p TRUE. |
245 | * @note The default is @p TRUE. |
240 | * @note Requires @p CH_USE_EVENTS. |
246 | * @note Requires @p CH_CFG_USE_EVENTS. |
241 | */ |
247 | */ |
242 | #if !defined(CH_USE_EVENTS_TIMEOUT) || defined(__DOXYGEN__) |
- | |
243 | #define CH_USE_EVENTS_TIMEOUT TRUE |
248 | #define CH_CFG_USE_EVENTS_TIMEOUT TRUE |
244 | #endif |
- | |
245 | 249 | ||
246 | /** |
250 | /** |
247 | * @brief Synchronous Messages APIs. |
251 | * @brief Synchronous Messages APIs. |
248 | * @details If enabled then the synchronous messages APIs are included |
252 | * @details If enabled then the synchronous messages APIs are included |
249 | * in the kernel. |
253 | * in the kernel. |
250 | * |
254 | * |
251 | * @note The default is @p TRUE. |
255 | * @note The default is @p TRUE. |
252 | */ |
256 | */ |
253 | #if !defined(CH_USE_MESSAGES) || defined(__DOXYGEN__) |
- | |
254 | #define CH_USE_MESSAGES TRUE |
257 | #define CH_CFG_USE_MESSAGES TRUE |
255 | #endif |
- | |
256 | 258 | ||
257 | /** |
259 | /** |
258 | * @brief Synchronous Messages queuing mode. |
260 | * @brief Synchronous Messages queuing mode. |
259 | * @details If enabled then messages are served by priority rather than in |
261 | * @details If enabled then messages are served by priority rather than in |
260 | * FIFO order. |
262 | * FIFO order. |
261 | * |
263 | * |
262 | * @note The default is @p FALSE. Enable this if you have special requirements. |
264 | * @note The default is @p FALSE. Enable this if you have special |
- | 265 | * requirements. |
|
263 | * @note Requires @p CH_USE_MESSAGES. |
266 | * @note Requires @p CH_CFG_USE_MESSAGES. |
264 | */ |
267 | */ |
265 | #if !defined(CH_USE_MESSAGES_PRIORITY) || defined(__DOXYGEN__) |
- | |
266 | #define CH_USE_MESSAGES_PRIORITY FALSE |
268 | #define CH_CFG_USE_MESSAGES_PRIORITY FALSE |
267 | #endif |
- | |
268 | 269 | ||
269 | /** |
270 | /** |
270 | * @brief Mailboxes APIs. |
271 | * @brief Mailboxes APIs. |
271 | * @details If enabled then the asynchronous messages (mailboxes) APIs are |
272 | * @details If enabled then the asynchronous messages (mailboxes) APIs are |
272 | * included in the kernel. |
273 | * included in the kernel. |
273 | * |
274 | * |
274 | * @note The default is @p TRUE. |
275 | * @note The default is @p TRUE. |
275 | * @note Requires @p CH_USE_SEMAPHORES. |
276 | * @note Requires @p CH_CFG_USE_SEMAPHORES. |
276 | */ |
- | |
277 | #if !defined(CH_USE_MAILBOXES) || defined(__DOXYGEN__) |
- | |
278 | #define CH_USE_MAILBOXES TRUE |
- | |
279 | #endif |
- | |
280 | - | ||
281 | /** |
- | |
282 | * @brief I/O Queues APIs. |
- | |
283 | * @details If enabled then the I/O queues APIs are included in the kernel. |
- | |
284 | * |
- | |
285 | * @note The default is @p TRUE. |
- | |
286 | */ |
277 | */ |
287 | #if !defined(CH_USE_QUEUES) || defined(__DOXYGEN__) |
- | |
288 | #define CH_USE_QUEUES TRUE |
278 | #define CH_CFG_USE_MAILBOXES TRUE |
289 | #endif |
- | |
290 | 279 | ||
291 | /** |
280 | /** |
292 | * @brief Core Memory Manager APIs. |
281 | * @brief Core Memory Manager APIs. |
293 | * @details If enabled then the core memory manager APIs are included |
282 | * @details If enabled then the core memory manager APIs are included |
294 | * in the kernel. |
283 | * in the kernel. |
295 | * |
284 | * |
296 | * @note The default is @p TRUE. |
285 | * @note The default is @p TRUE. |
297 | */ |
286 | */ |
298 | #if !defined(CH_USE_MEMCORE) || defined(__DOXYGEN__) |
- | |
299 | #define CH_USE_MEMCORE TRUE |
287 | #define CH_CFG_USE_MEMCORE TRUE |
300 | #endif |
- | |
301 | 288 | ||
302 | /** |
289 | /** |
303 | * @brief Heap Allocator APIs. |
290 | * @brief Heap Allocator APIs. |
304 | * @details If enabled then the memory heap allocator APIs are included |
291 | * @details If enabled then the memory heap allocator APIs are included |
305 | * in the kernel. |
292 | * in the kernel. |
306 | * |
293 | * |
307 | * @note The default is @p TRUE. |
294 | * @note The default is @p TRUE. |
308 | * @note Requires @p CH_USE_MEMCORE and either @p CH_USE_MUTEXES or |
295 | * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or |
309 | * @p CH_USE_SEMAPHORES. |
296 | * @p CH_CFG_USE_SEMAPHORES. |
310 | * @note Mutexes are recommended. |
297 | * @note Mutexes are recommended. |
311 | */ |
298 | */ |
312 | #if !defined(CH_USE_HEAP) || defined(__DOXYGEN__) |
- | |
313 | #define CH_USE_HEAP TRUE |
299 | #define CH_CFG_USE_HEAP TRUE |
314 | #endif |
- | |
315 | 300 | ||
316 | /** |
301 | /** |
317 | * @brief C-runtime allocator. |
302 | * @brief Memory Pools Allocator APIs. |
318 | * @details If enabled the the heap allocator APIs just wrap the C-runtime |
303 | * @details If enabled then the memory pools allocator APIs are included |
319 | * @p malloc() and @p free() functions. |
304 | * in the kernel. |
320 | * |
305 | * |
321 | * @note The default is @p FALSE. |
306 | * @note The default is @p TRUE. |
322 | * @note Requires @p CH_USE_HEAP. |
- | |
323 | * @note The C-runtime may or may not require @p CH_USE_MEMCORE, see the |
- | |
324 | * appropriate documentation. |
- | |
325 | */ |
307 | */ |
326 | #if !defined(CH_USE_MALLOC_HEAP) || defined(__DOXYGEN__) |
- | |
327 | #define CH_USE_MALLOC_HEAP FALSE |
308 | #define CH_CFG_USE_MEMPOOLS TRUE |
328 | #endif |
- | |
329 | 309 | ||
330 | /** |
310 | /** |
331 | * @brief Memory Pools Allocator APIs. |
311 | * @brief Objects FIFOs APIs. |
332 | * @details If enabled then the memory pools allocator APIs are included |
312 | * @details If enabled then the objects FIFOs APIs are included |
333 | * in the kernel. |
313 | * in the kernel. |
334 | * |
314 | * |
335 | * @note The default is @p TRUE. |
315 | * @note The default is @p TRUE. |
336 | */ |
316 | */ |
337 | #if !defined(CH_USE_MEMPOOLS) || defined(__DOXYGEN__) |
- | |
338 | #define CH_USE_MEMPOOLS TRUE |
317 | #define CH_CFG_USE_OBJ_FIFOS TRUE |
339 | #endif |
- | |
340 | 318 | ||
341 | /** |
319 | /** |
342 | * @brief Dynamic Threads APIs. |
320 | * @brief Dynamic Threads APIs. |
343 | * @details If enabled then the dynamic threads creation APIs are included |
321 | * @details If enabled then the dynamic threads creation APIs are included |
344 | * in the kernel. |
322 | * in the kernel. |
345 | * |
323 | * |
346 | * @note The default is @p TRUE. |
324 | * @note The default is @p TRUE. |
347 | * @note Requires @p CH_USE_WAITEXIT. |
325 | * @note Requires @p CH_CFG_USE_WAITEXIT. |
348 | * @note Requires @p CH_USE_HEAP and/or @p CH_USE_MEMPOOLS. |
326 | * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. |
349 | */ |
327 | */ |
350 | #if !defined(CH_USE_DYNAMIC) || defined(__DOXYGEN__) |
328 | #define CH_CFG_USE_DYNAMIC TRUE |
- | 329 | ||
- | 330 | /** @} */ |
|
- | 331 | ||
- | 332 | /*===========================================================================*/ |
|
- | 333 | /** |
|
- | 334 | * @name Objects factory options |
|
- | 335 | * @{ |
|
- | 336 | */ |
|
- | 337 | /*===========================================================================*/ |
|
- | 338 | ||
- | 339 | /** |
|
- | 340 | * @brief Objects Factory APIs. |
|
- | 341 | * @details If enabled then the objects factory APIs are included in the |
|
- | 342 | * kernel. |
|
- | 343 | * |
|
- | 344 | * @note The default is @p FALSE. |
|
- | 345 | */ |
|
351 | #define CH_USE_DYNAMIC TRUE |
346 | #define CH_CFG_USE_FACTORY TRUE |
- | 347 | ||
- | 348 | /** |
|
- | 349 | * @brief Maximum length for object names. |
|
- | 350 | * @details If the specified length is zero then the name is stored by |
|
- | 351 | * pointer but this could have unintended side effects. |
|
- | 352 | */ |
|
- | 353 | #define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8 |
|
- | 354 | ||
- | 355 | /** |
|
- | 356 | * @brief Enables the registry of generic objects. |
|
- | 357 | */ |
|
- | 358 | #define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE |
|
- | 359 | ||
- | 360 | /** |
|
- | 361 | * @brief Enables factory for generic buffers. |
|
- | 362 | */ |
|
- | 363 | #define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE |
|
- | 364 | ||
- | 365 | /** |
|
- | 366 | * @brief Enables factory for semaphores. |
|
- | 367 | */ |
|
- | 368 | #define CH_CFG_FACTORY_SEMAPHORES TRUE |
|
- | 369 | ||
- | 370 | /** |
|
- | 371 | * @brief Enables factory for mailboxes. |
|
- | 372 | */ |
|
- | 373 | #define CH_CFG_FACTORY_MAILBOXES TRUE |
|
- | 374 | ||
- | 375 | /** |
|
- | 376 | * @brief Enables factory for objects FIFOs. |
|
352 | #endif |
377 | */ |
- | 378 | #define CH_CFG_FACTORY_OBJ_FIFOS TRUE |
|
353 | 379 | ||
354 | /** @} */ |
380 | /** @} */ |
355 | 381 | ||
356 | /*===========================================================================*/ |
382 | /*===========================================================================*/ |
357 | /** |
383 | /** |
Line 359... | Line 385... | ||
359 | * @{ |
385 | * @{ |
360 | */ |
386 | */ |
361 | /*===========================================================================*/ |
387 | /*===========================================================================*/ |
362 | 388 | ||
363 | /** |
389 | /** |
- | 390 | * @brief Debug option, kernel statistics. |
|
- | 391 | * |
|
- | 392 | * @note The default is @p FALSE. |
|
- | 393 | */ |
|
- | 394 | #define CH_DBG_STATISTICS FALSE |
|
- | 395 | ||
- | 396 | /** |
|
364 | * @brief Debug option, system state check. |
397 | * @brief Debug option, system state check. |
365 | * @details If enabled the correct call protocol for system APIs is checked |
398 | * @details If enabled the correct call protocol for system APIs is checked |
366 | * at runtime. |
399 | * at runtime. |
367 | * |
400 | * |
368 | * @note The default is @p FALSE. |
401 | * @note The default is @p FALSE. |
369 | */ |
402 | */ |
370 | #if !defined(CH_DBG_SYSTEM_STATE_CHECK) || defined(__DOXYGEN__) |
- | |
371 | #define CH_DBG_SYSTEM_STATE_CHECK FALSE |
403 | #define CH_DBG_SYSTEM_STATE_CHECK FALSE |
372 | #endif |
- | |
373 | 404 | ||
374 | /** |
405 | /** |
375 | * @brief Debug option, parameters checks. |
406 | * @brief Debug option, parameters checks. |
376 | * @details If enabled then the checks on the API functions input |
407 | * @details If enabled then the checks on the API functions input |
377 | * parameters are activated. |
408 | * parameters are activated. |
378 | * |
409 | * |
379 | * @note The default is @p FALSE. |
410 | * @note The default is @p FALSE. |
380 | */ |
411 | */ |
381 | #if !defined(CH_DBG_ENABLE_CHECKS) || defined(__DOXYGEN__) |
- | |
382 | #define CH_DBG_ENABLE_CHECKS FALSE |
412 | #define CH_DBG_ENABLE_CHECKS FALSE |
383 | #endif |
- | |
384 | 413 | ||
385 | /** |
414 | /** |
386 | * @brief Debug option, consistency checks. |
415 | * @brief Debug option, consistency checks. |
387 | * @details If enabled then all the assertions in the kernel code are |
416 | * @details If enabled then all the assertions in the kernel code are |
388 | * activated. This includes consistency checks inside the kernel, |
417 | * activated. This includes consistency checks inside the kernel, |
389 | * runtime anomalies and port-defined checks. |
418 | * runtime anomalies and port-defined checks. |
390 | * |
419 | * |
391 | * @note The default is @p FALSE. |
420 | * @note The default is @p FALSE. |
392 | */ |
421 | */ |
393 | #if !defined(CH_DBG_ENABLE_ASSERTS) || defined(__DOXYGEN__) |
- | |
394 | #define CH_DBG_ENABLE_ASSERTS FALSE |
422 | #define CH_DBG_ENABLE_ASSERTS FALSE |
395 | #endif |
- | |
396 | 423 | ||
397 | /** |
424 | /** |
398 | * @brief Debug option, trace buffer. |
425 | * @brief Debug option, trace buffer. |
399 | * @details If enabled then the context switch circular trace buffer is |
426 | * @details If enabled then the trace buffer is activated. |
400 | * activated. |
- | |
401 | * |
427 | * |
402 | * @note The default is @p FALSE. |
428 | * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. |
- | 429 | */ |
|
- | 430 | #define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED |
|
- | 431 | ||
- | 432 | /** |
|
- | 433 | * @brief Trace buffer entries. |
|
- | 434 | * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is |
|
- | 435 | * different from @p CH_DBG_TRACE_MASK_DISABLED. |
|
403 | */ |
436 | */ |
404 | #if !defined(CH_DBG_ENABLE_TRACE) || defined(__DOXYGEN__) |
- | |
405 | #define CH_DBG_ENABLE_TRACE FALSE |
437 | #define CH_DBG_TRACE_BUFFER_SIZE 128 |
406 | #endif |
- | |
407 | 438 | ||
408 | /** |
439 | /** |
409 | * @brief Debug option, stack checks. |
440 | * @brief Debug option, stack checks. |
410 | * @details If enabled then a runtime stack check is performed. |
441 | * @details If enabled then a runtime stack check is performed. |
411 | * |
442 | * |
Line 413... | Line 444... | ||
413 | * @note The stack check is performed in a architecture/port dependent way. |
444 | * @note The stack check is performed in a architecture/port dependent way. |
414 | * It may not be implemented or some ports. |
445 | * It may not be implemented or some ports. |
415 | * @note The default failure mode is to halt the system with the global |
446 | * @note The default failure mode is to halt the system with the global |
416 | * @p panic_msg variable set to @p NULL. |
447 | * @p panic_msg variable set to @p NULL. |
417 | */ |
448 | */ |
418 | #if !defined(CH_DBG_ENABLE_STACK_CHECK) || defined(__DOXYGEN__) |
- | |
419 | #define CH_DBG_ENABLE_STACK_CHECK FALSE |
449 | #define CH_DBG_ENABLE_STACK_CHECK FALSE |
420 | #endif |
- | |
421 | 450 | ||
422 | /** |
451 | /** |
423 | * @brief Debug option, stacks initialization. |
452 | * @brief Debug option, stacks initialization. |
424 | * @details If enabled then the threads working area is filled with a byte |
453 | * @details If enabled then the threads working area is filled with a byte |
425 | * value when a thread is created. This can be useful for the |
454 | * value when a thread is created. This can be useful for the |
426 | * runtime measurement of the used stack. |
455 | * runtime measurement of the used stack. |
427 | * |
456 | * |
428 | * @note The default is @p FALSE. |
457 | * @note The default is @p FALSE. |
429 | */ |
458 | */ |
430 | #if !defined(CH_DBG_FILL_THREADS) || defined(__DOXYGEN__) |
- | |
431 | #define CH_DBG_FILL_THREADS FALSE |
459 | #define CH_DBG_FILL_THREADS FALSE |
432 | #endif |
- | |
433 | 460 | ||
434 | /** |
461 | /** |
435 | * @brief Debug option, threads profiling. |
462 | * @brief Debug option, threads profiling. |
436 | * @details If enabled then a field is added to the @p Thread structure that |
463 | * @details If enabled then a field is added to the @p thread_t structure that |
437 | * counts the system ticks occurred while executing the thread. |
464 | * counts the system ticks occurred while executing the thread. |
438 | * |
465 | * |
439 | * @note The default is @p TRUE. |
466 | * @note The default is @p FALSE. |
440 | * @note This debug option is defaulted to TRUE because it is required by |
467 | * @note This debug option is not currently compatible with the |
441 | * some test cases into the test suite. |
468 | * tickless mode. |
442 | */ |
469 | */ |
443 | #if !defined(CH_DBG_THREADS_PROFILING) || defined(__DOXYGEN__) |
- | |
444 | #define CH_DBG_THREADS_PROFILING TRUE |
470 | #define CH_DBG_THREADS_PROFILING FALSE |
445 | #endif |
- | |
446 | 471 | ||
447 | /** @} */ |
472 | /** @} */ |
448 | 473 | ||
449 | /*===========================================================================*/ |
474 | /*===========================================================================*/ |
450 | /** |
475 | /** |
Line 452... | Line 477... | ||
452 | * @{ |
477 | * @{ |
453 | */ |
478 | */ |
454 | /*===========================================================================*/ |
479 | /*===========================================================================*/ |
455 | 480 | ||
456 | /** |
481 | /** |
- | 482 | * @brief System structure extension. |
|
- | 483 | * @details User fields added to the end of the @p ch_system_t structure. |
|
- | 484 | */ |
|
- | 485 | #define CH_CFG_SYSTEM_EXTRA_FIELDS \ |
|
- | 486 | /* Add threads custom fields here.*/ |
|
- | 487 | ||
- | 488 | /** |
|
- | 489 | * @brief System initialization hook. |
|
- | 490 | * @details User initialization code added to the @p chSysInit() function |
|
- | 491 | * just before interrupts are enabled globally. |
|
- | 492 | */ |
|
- | 493 | #define CH_CFG_SYSTEM_INIT_HOOK(tp) { \ |
|
- | 494 | /* Add threads initialization code here.*/ \ |
|
- | 495 | } |
|
- | 496 | ||
- | 497 | /** |
|
457 | * @brief Threads descriptor structure extension. |
498 | * @brief Threads descriptor structure extension. |
458 | * @details User fields added to the end of the @p Thread structure. |
499 | * @details User fields added to the end of the @p thread_t structure. |
459 | */ |
500 | */ |
460 | #if !defined(THREAD_EXT_FIELDS) || defined(__DOXYGEN__) |
- | |
461 | #define THREAD_EXT_FIELDS \ |
501 | #define CH_CFG_THREAD_EXTRA_FIELDS \ |
462 | /* Add threads custom fields here.*/ |
502 | /* Add threads custom fields here.*/ |
463 | #endif |
- | |
464 | 503 | ||
465 | /** |
504 | /** |
466 | * @brief Threads initialization hook. |
505 | * @brief Threads initialization hook. |
467 | * @details User initialization code added to the @p chThdInit() API. |
506 | * @details User initialization code added to the @p _thread_init() function. |
468 | * |
507 | * |
469 | * @note It is invoked from within @p chThdInit() and implicitly from all |
508 | * @note It is invoked from within @p _thread_init() and implicitly from all |
470 | * the threads creation APIs. |
509 | * the threads creation APIs. |
471 | */ |
510 | */ |
472 | #if !defined(THREAD_EXT_INIT_HOOK) || defined(__DOXYGEN__) |
- | |
473 | #define THREAD_EXT_INIT_HOOK(tp) { \ |
511 | #define CH_CFG_THREAD_INIT_HOOK(tp) { \ |
474 | /* Add threads initialization code here.*/ \ |
512 | /* Add threads initialization code here.*/ \ |
475 | } |
513 | } |
476 | #endif |
- | |
477 | 514 | ||
478 | /** |
515 | /** |
479 | * @brief Threads finalization hook. |
516 | * @brief Threads finalization hook. |
480 | * @details User finalization code added to the @p chThdExit() API. |
517 | * @details User finalization code added to the @p chThdExit() API. |
481 | * |
- | |
482 | * @note It is inserted into lock zone. |
- | |
483 | * @note It is also invoked when the threads simply return in order to |
- | |
484 | * terminate. |
- | |
485 | */ |
518 | */ |
486 | #if !defined(THREAD_EXT_EXIT_HOOK) || defined(__DOXYGEN__) |
- | |
487 | #define THREAD_EXT_EXIT_HOOK(tp) { \ |
519 | #define CH_CFG_THREAD_EXIT_HOOK(tp) { \ |
488 | /* Add threads finalization code here.*/ \ |
520 | /* Add threads finalization code here.*/ \ |
489 | } |
521 | } |
490 | #endif |
- | |
491 | 522 | ||
492 | /** |
523 | /** |
493 | * @brief Context switch hook. |
524 | * @brief Context switch hook. |
494 | * @details This hook is invoked just before switching between threads. |
525 | * @details This hook is invoked just before switching between threads. |
495 | */ |
526 | */ |
496 | #if !defined(THREAD_CONTEXT_SWITCH_HOOK) || defined(__DOXYGEN__) |
527 | #define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ |
- | 528 | /* Context switch code here.*/ \ |
|
- | 529 | } |
|
- | 530 | ||
- | 531 | /** |
|
- | 532 | * @brief ISR enter hook. |
|
- | 533 | */ |
|
- | 534 | #define CH_CFG_IRQ_PROLOGUE_HOOK() { \ |
|
- | 535 | /* IRQ prologue code here.*/ \ |
|
- | 536 | } |
|
- | 537 | ||
- | 538 | /** |
|
- | 539 | * @brief ISR exit hook. |
|
- | 540 | */ |
|
- | 541 | #define CH_CFG_IRQ_EPILOGUE_HOOK() { \ |
|
- | 542 | /* IRQ epilogue code here.*/ \ |
|
- | 543 | } |
|
- | 544 | ||
- | 545 | /** |
|
- | 546 | * @brief Idle thread enter hook. |
|
- | 547 | * @note This hook is invoked within a critical zone, no OS functions |
|
- | 548 | * should be invoked from here. |
|
- | 549 | * @note This macro can be used to activate a power saving mode. |
|
- | 550 | */ |
|
497 | #define THREAD_CONTEXT_SWITCH_HOOK(ntp, otp) { \ |
551 | #define CH_CFG_IDLE_ENTER_HOOK() { \ |
- | 552 | /* Idle-enter code here.*/ \ |
|
- | 553 | } |
|
- | 554 | ||
- | 555 | /** |
|
- | 556 | * @brief Idle thread leave hook. |
|
- | 557 | * @note This hook is invoked within a critical zone, no OS functions |
|
- | 558 | * should be invoked from here. |
|
- | 559 | * @note This macro can be used to deactivate a power saving mode. |
|
- | 560 | */ |
|
- | 561 | #define CH_CFG_IDLE_LEAVE_HOOK() { \ |
|
498 | /* System halt code here.*/ \ |
562 | /* Idle-leave code here.*/ \ |
499 | } |
563 | } |
500 | #endif |
- | |
501 | 564 | ||
502 | /** |
565 | /** |
503 | * @brief Idle Loop hook. |
566 | * @brief Idle Loop hook. |
504 | * @details This hook is continuously invoked by the idle thread loop. |
567 | * @details This hook is continuously invoked by the idle thread loop. |
505 | */ |
568 | */ |
506 | #if !defined(IDLE_LOOP_HOOK) || defined(__DOXYGEN__) |
- | |
507 | #define IDLE_LOOP_HOOK() { \ |
569 | #define CH_CFG_IDLE_LOOP_HOOK() { \ |
508 | /* Idle loop code here.*/ \ |
570 | /* Idle loop code here.*/ \ |
509 | } |
571 | } |
510 | #endif |
- | |
511 | 572 | ||
512 | /** |
573 | /** |
513 | * @brief System tick event hook. |
574 | * @brief System tick event hook. |
514 | * @details This hook is invoked in the system tick handler immediately |
575 | * @details This hook is invoked in the system tick handler immediately |
515 | * after processing the virtual timers queue. |
576 | * after processing the virtual timers queue. |
516 | */ |
577 | */ |
517 | #if !defined(SYSTEM_TICK_EVENT_HOOK) || defined(__DOXYGEN__) |
- | |
518 | #define SYSTEM_TICK_EVENT_HOOK() { \ |
578 | #define CH_CFG_SYSTEM_TICK_HOOK() { \ |
519 | /* System tick event code here.*/ \ |
579 | /* System tick event code here.*/ \ |
520 | } |
580 | } |
521 | #endif |
- | |
522 | 581 | ||
523 | /** |
582 | /** |
524 | * @brief System halt hook. |
583 | * @brief System halt hook. |
525 | * @details This hook is invoked in case to a system halting error before |
584 | * @details This hook is invoked in case to a system halting error before |
526 | * the system is halted. |
585 | * the system is halted. |
527 | */ |
586 | */ |
528 | #if !defined(SYSTEM_HALT_HOOK) || defined(__DOXYGEN__) |
- | |
529 | #define SYSTEM_HALT_HOOK() { \ |
587 | #define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ |
530 | /* System halt code here.*/ \ |
588 | /* System halt code here.*/ \ |
531 | } |
589 | } |
- | 590 | ||
- | 591 | /** |
|
- | 592 | * @brief Trace hook. |
|
- | 593 | * @details This hook is invoked each time a new record is written in the |
|
- | 594 | * trace buffer. |
|
532 | #endif |
595 | */ |
- | 596 | #define CH_CFG_TRACE_HOOK(tep) { \ |
|
- | 597 | /* Trace code here.*/ \ |
|
- | 598 | } |
|
533 | 599 | ||
534 | /** @} */ |
600 | /** @} */ |
535 | 601 | ||
536 | /*===========================================================================*/ |
602 | /*===========================================================================*/ |
537 | /* Port-specific settings (override port settings defaulted in chcore.h). */ |
603 | /* Port-specific settings (override port settings defaulted in chcore.h). */ |
538 | /*===========================================================================*/ |
604 | /*===========================================================================*/ |
539 | - | ||
- | 605 | #define SHELL_CMD_TEST_ENABLED FALSE |
|
540 | #endif /* _CHCONF_H_ */ |
606 | #endif /* CHCONF_H */ |
541 | 607 | ||
542 | /** @} */ |
608 | /** @} */ |