* HS60 V2 - Created V1 and V2 folders - Added V2 ARM configuration * Problems in paradise * More touble * We got it now!
		
			
				
	
	
		
			521 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			521 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|     ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
 | |
| 
 | |
|     Licensed under the Apache License, Version 2.0 (the "License");
 | |
|     you may not use this file except in compliance with the License.
 | |
|     You may obtain a copy of the License at
 | |
| 
 | |
|         http://www.apache.org/licenses/LICENSE-2.0
 | |
| 
 | |
|     Unless required by applicable law or agreed to in writing, software
 | |
|     distributed under the License is distributed on an "AS IS" BASIS,
 | |
|     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|     See the License for the specific language governing permissions and
 | |
|     limitations under the License.
 | |
| */
 | |
| 
 | |
| /**
 | |
|  * @file    templates/chconf.h
 | |
|  * @brief   Configuration file template.
 | |
|  * @details A copy of this file must be placed in each project directory, it
 | |
|  *          contains the application specific kernel settings.
 | |
|  *
 | |
|  * @addtogroup config
 | |
|  * @details Kernel related settings and hooks.
 | |
|  * @{
 | |
|  */
 | |
| 
 | |
| #ifndef CHCONF_H
 | |
| #define CHCONF_H
 | |
| 
 | |
| #define _CHIBIOS_RT_CONF_
 | |
| 
 | |
| /*===========================================================================*/
 | |
| /**
 | |
|  * @name System timers settings
 | |
|  * @{
 | |
|  */
 | |
| /*===========================================================================*/
 | |
| 
 | |
| /**
 | |
|  * @brief   System time counter resolution.
 | |
|  * @note    Allowed values are 16 or 32 bits.
 | |
|  */
 | |
| #define CH_CFG_ST_RESOLUTION                32
 | |
| 
 | |
| /**
 | |
|  * @brief   System tick frequency.
 | |
|  * @details Frequency of the system timer that drives the system ticks. This
 | |
|  *          setting also defines the system tick time unit.
 | |
|  */
 | |
| #define CH_CFG_ST_FREQUENCY                 100000
 | |
| 
 | |
| /**
 | |
|  * @brief   Time delta constant for the tick-less mode.
 | |
|  * @note    If this value is zero then the system uses the classic
 | |
|  *          periodic tick. This value represents the minimum number
 | |
|  *          of ticks that is safe to specify in a timeout directive.
 | |
|  *          The value one is not valid, timeouts are rounded up to
 | |
|  *          this value.
 | |
|  */
 | |
| #define CH_CFG_ST_TIMEDELTA                 2
 | |
| 
 | |
| /** @} */
 | |
| 
 | |
| /*===========================================================================*/
 | |
| /**
 | |
|  * @name Kernel parameters and options
 | |
|  * @{
 | |
|  */
 | |
| /*===========================================================================*/
 | |
| 
 | |
| /**
 | |
|  * @brief   Round robin interval.
 | |
|  * @details This constant is the number of system ticks allowed for the
 | |
|  *          threads before preemption occurs. Setting this value to zero
 | |
|  *          disables the preemption for threads with equal priority and the
 | |
|  *          round robin becomes cooperative. Note that higher priority
 | |
|  *          threads can still preempt, the kernel is always preemptive.
 | |
|  * @note    Disabling the round robin preemption makes the kernel more compact
 | |
|  *          and generally faster.
 | |
|  * @note    The round robin preemption is not supported in tickless mode and
 | |
|  *          must be set to zero in that case.
 | |
|  */
 | |
| #define CH_CFG_TIME_QUANTUM                 0
 | |
| 
 | |
| /**
 | |
|  * @brief   Managed RAM size.
 | |
|  * @details Size of the RAM area to be managed by the OS. If set to zero
 | |
|  *          then the whole available RAM is used. The core memory is made
 | |
|  *          available to the heap allocator and/or can be used directly through
 | |
|  *          the simplified core memory allocator.
 | |
|  *
 | |
|  * @note    In order to let the OS manage the whole RAM the linker script must
 | |
|  *          provide the @p __heap_base__ and @p __heap_end__ symbols.
 | |
|  * @note    Requires @p CH_CFG_USE_MEMCORE.
 | |
|  */
 | |
| #define CH_CFG_MEMCORE_SIZE                 0
 | |
| 
 | |
| /**
 | |
|  * @brief   Idle thread automatic spawn suppression.
 | |
|  * @details When this option is activated the function @p chSysInit()
 | |
|  *          does not spawn the idle thread. The application @p main()
 | |
|  *          function becomes the idle thread and must implement an
 | |
|  *          infinite loop.
 | |
|  */
 | |
| #define CH_CFG_NO_IDLE_THREAD               FALSE
 | |
| 
 | |
| /** @} */
 | |
| 
 | |
| /*===========================================================================*/
 | |
| /**
 | |
|  * @name Performance options
 | |
|  * @{
 | |
|  */
 | |
| /*===========================================================================*/
 | |
| 
 | |
| /**
 | |
|  * @brief   OS optimization.
 | |
|  * @details If enabled then time efficient rather than space efficient code
 | |
|  *          is used when two possible implementations exist.
 | |
|  *
 | |
|  * @note    This is not related to the compiler optimization options.
 | |
|  * @note    The default is @p TRUE.
 | |
|  */
 | |
| #define CH_CFG_OPTIMIZE_SPEED               TRUE
 | |
| 
 | |
| /** @} */
 | |
| 
 | |
| /*===========================================================================*/
 | |
| /**
 | |
|  * @name Subsystem options
 | |
|  * @{
 | |
|  */
 | |
| /*===========================================================================*/
 | |
| 
 | |
| /**
 | |
|  * @brief   Time Measurement APIs.
 | |
|  * @details If enabled then the time measurement APIs are included in
 | |
|  *          the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  */
 | |
| #define CH_CFG_USE_TM                       TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Threads registry APIs.
 | |
|  * @details If enabled then the registry APIs are included in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  */
 | |
| #define CH_CFG_USE_REGISTRY                 TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Threads synchronization APIs.
 | |
|  * @details If enabled then the @p chThdWait() function is included in
 | |
|  *          the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  */
 | |
| #define CH_CFG_USE_WAITEXIT                 TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Semaphores APIs.
 | |
|  * @details If enabled then the Semaphores APIs are included in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  */
 | |
| #define CH_CFG_USE_SEMAPHORES               TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Semaphores queuing mode.
 | |
|  * @details If enabled then the threads are enqueued on semaphores by
 | |
|  *          priority rather than in FIFO order.
 | |
|  *
 | |
|  * @note    The default is @p FALSE. Enable this if you have special
 | |
|  *          requirements.
 | |
|  * @note    Requires @p CH_CFG_USE_SEMAPHORES.
 | |
|  */
 | |
| #define CH_CFG_USE_SEMAPHORES_PRIORITY      FALSE
 | |
| 
 | |
| /**
 | |
|  * @brief   Mutexes APIs.
 | |
|  * @details If enabled then the mutexes APIs are included in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  */
 | |
| #define CH_CFG_USE_MUTEXES                  TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Enables recursive behavior on mutexes.
 | |
|  * @note    Recursive mutexes are heavier and have an increased
 | |
|  *          memory footprint.
 | |
|  *
 | |
|  * @note    The default is @p FALSE.
 | |
|  * @note    Requires @p CH_CFG_USE_MUTEXES.
 | |
|  */
 | |
| #define CH_CFG_USE_MUTEXES_RECURSIVE        FALSE
 | |
| 
 | |
| /**
 | |
|  * @brief   Conditional Variables APIs.
 | |
|  * @details If enabled then the conditional variables APIs are included
 | |
|  *          in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  * @note    Requires @p CH_CFG_USE_MUTEXES.
 | |
|  */
 | |
| #define CH_CFG_USE_CONDVARS                 TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Conditional Variables APIs with timeout.
 | |
|  * @details If enabled then the conditional variables APIs with timeout
 | |
|  *          specification are included in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  * @note    Requires @p CH_CFG_USE_CONDVARS.
 | |
|  */
 | |
| #define CH_CFG_USE_CONDVARS_TIMEOUT         TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Events Flags APIs.
 | |
|  * @details If enabled then the event flags APIs are included in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  */
 | |
| #define CH_CFG_USE_EVENTS                   TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Events Flags APIs with timeout.
 | |
|  * @details If enabled then the events APIs with timeout specification
 | |
|  *          are included in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  * @note    Requires @p CH_CFG_USE_EVENTS.
 | |
|  */
 | |
| #define CH_CFG_USE_EVENTS_TIMEOUT           TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Synchronous Messages APIs.
 | |
|  * @details If enabled then the synchronous messages APIs are included
 | |
|  *          in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  */
 | |
| #define CH_CFG_USE_MESSAGES                 TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Synchronous Messages queuing mode.
 | |
|  * @details If enabled then messages are served by priority rather than in
 | |
|  *          FIFO order.
 | |
|  *
 | |
|  * @note    The default is @p FALSE. Enable this if you have special
 | |
|  *          requirements.
 | |
|  * @note    Requires @p CH_CFG_USE_MESSAGES.
 | |
|  */
 | |
| #define CH_CFG_USE_MESSAGES_PRIORITY        TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Mailboxes APIs.
 | |
|  * @details If enabled then the asynchronous messages (mailboxes) APIs are
 | |
|  *          included in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  * @note    Requires @p CH_CFG_USE_SEMAPHORES.
 | |
|  */
 | |
| #define CH_CFG_USE_MAILBOXES                TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Core Memory Manager APIs.
 | |
|  * @details If enabled then the core memory manager APIs are included
 | |
|  *          in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  */
 | |
| #define CH_CFG_USE_MEMCORE                  TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Heap Allocator APIs.
 | |
|  * @details If enabled then the memory heap allocator APIs are included
 | |
|  *          in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  * @note    Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
 | |
|  *          @p CH_CFG_USE_SEMAPHORES.
 | |
|  * @note    Mutexes are recommended.
 | |
|  */
 | |
| #define CH_CFG_USE_HEAP                     TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Memory Pools Allocator APIs.
 | |
|  * @details If enabled then the memory pools allocator APIs are included
 | |
|  *          in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  */
 | |
| #define CH_CFG_USE_MEMPOOLS                 TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Dynamic Threads APIs.
 | |
|  * @details If enabled then the dynamic threads creation APIs are included
 | |
|  *          in the kernel.
 | |
|  *
 | |
|  * @note    The default is @p TRUE.
 | |
|  * @note    Requires @p CH_CFG_USE_WAITEXIT.
 | |
|  * @note    Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
 | |
|  */
 | |
| #define CH_CFG_USE_DYNAMIC                  TRUE
 | |
| 
 | |
| /** @} */
 | |
| 
 | |
| /*===========================================================================*/
 | |
| /**
 | |
|  * @name Debug options
 | |
|  * @{
 | |
|  */
 | |
| /*===========================================================================*/
 | |
| 
 | |
| /**
 | |
|  * @brief   Debug option, kernel statistics.
 | |
|  *
 | |
|  * @note    The default is @p FALSE.
 | |
|  */
 | |
| #define CH_DBG_STATISTICS                   FALSE
 | |
| 
 | |
| /**
 | |
|  * @brief   Debug option, system state check.
 | |
|  * @details If enabled the correct call protocol for system APIs is checked
 | |
|  *          at runtime.
 | |
|  *
 | |
|  * @note    The default is @p FALSE.
 | |
|  */
 | |
| #define CH_DBG_SYSTEM_STATE_CHECK           FALSE
 | |
| 
 | |
| /**
 | |
|  * @brief   Debug option, parameters checks.
 | |
|  * @details If enabled then the checks on the API functions input
 | |
|  *          parameters are activated.
 | |
|  *
 | |
|  * @note    The default is @p FALSE.
 | |
|  */
 | |
| #define CH_DBG_ENABLE_CHECKS                FALSE
 | |
| 
 | |
| /**
 | |
|  * @brief   Debug option, consistency checks.
 | |
|  * @details If enabled then all the assertions in the kernel code are
 | |
|  *          activated. This includes consistency checks inside the kernel,
 | |
|  *          runtime anomalies and port-defined checks.
 | |
|  *
 | |
|  * @note    The default is @p FALSE.
 | |
|  */
 | |
| #define CH_DBG_ENABLE_ASSERTS               FALSE
 | |
| 
 | |
| /**
 | |
|  * @brief   Debug option, trace buffer.
 | |
|  * @details If enabled then the trace buffer is activated.
 | |
|  *
 | |
|  * @note    The default is @p CH_DBG_TRACE_MASK_DISABLED.
 | |
|  */
 | |
| #define CH_DBG_TRACE_MASK                   CH_DBG_TRACE_MASK_DISABLED
 | |
| 
 | |
| /**
 | |
|  * @brief   Trace buffer entries.
 | |
|  * @note    The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is
 | |
|  *          different from @p CH_DBG_TRACE_MASK_DISABLED.
 | |
|  */
 | |
| #define CH_DBG_TRACE_BUFFER_SIZE            128
 | |
| 
 | |
| /**
 | |
|  * @brief   Debug option, stack checks.
 | |
|  * @details If enabled then a runtime stack check is performed.
 | |
|  *
 | |
|  * @note    The default is @p FALSE.
 | |
|  * @note    The stack check is performed in a architecture/port dependent way.
 | |
|  *          It may not be implemented or some ports.
 | |
|  * @note    The default failure mode is to halt the system with the global
 | |
|  *          @p panic_msg variable set to @p NULL.
 | |
|  */
 | |
| #define CH_DBG_ENABLE_STACK_CHECK           TRUE
 | |
| 
 | |
| /**
 | |
|  * @brief   Debug option, stacks initialization.
 | |
|  * @details If enabled then the threads working area is filled with a byte
 | |
|  *          value when a thread is created. This can be useful for the
 | |
|  *          runtime measurement of the used stack.
 | |
|  *
 | |
|  * @note    The default is @p FALSE.
 | |
|  */
 | |
| #define CH_DBG_FILL_THREADS                 FALSE
 | |
| 
 | |
| /**
 | |
|  * @brief   Debug option, threads profiling.
 | |
|  * @details If enabled then a field is added to the @p thread_t structure that
 | |
|  *          counts the system ticks occurred while executing the thread.
 | |
|  *
 | |
|  * @note    The default is @p FALSE.
 | |
|  * @note    This debug option is not currently compatible with the
 | |
|  *          tickless mode.
 | |
|  */
 | |
| #define CH_DBG_THREADS_PROFILING            FALSE
 | |
| 
 | |
| /** @} */
 | |
| 
 | |
| /*===========================================================================*/
 | |
| /**
 | |
|  * @name Kernel hooks
 | |
|  * @{
 | |
|  */
 | |
| /*===========================================================================*/
 | |
| 
 | |
| /**
 | |
|  * @brief   Threads descriptor structure extension.
 | |
|  * @details User fields added to the end of the @p thread_t structure.
 | |
|  */
 | |
| #define CH_CFG_THREAD_EXTRA_FIELDS                                          \
 | |
|   /* Add threads custom fields here.*/
 | |
| 
 | |
| /**
 | |
|  * @brief   Threads initialization hook.
 | |
|  * @details User initialization code added to the @p chThdInit() API.
 | |
|  *
 | |
|  * @note    It is invoked from within @p chThdInit() and implicitly from all
 | |
|  *          the threads creation APIs.
 | |
|  */
 | |
| #define CH_CFG_THREAD_INIT_HOOK(tp) {                                       \
 | |
|   /* Add threads initialization code here.*/                                \
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @brief   Threads finalization hook.
 | |
|  * @details User finalization code added to the @p chThdExit() API.
 | |
|  */
 | |
| #define CH_CFG_THREAD_EXIT_HOOK(tp) {                                       \
 | |
|   /* Add threads finalization code here.*/                                  \
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @brief   Context switch hook.
 | |
|  * @details This hook is invoked just before switching between threads.
 | |
|  */
 | |
| #define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) {                              \
 | |
|   /* Context switch code here.*/                                            \
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @brief   ISR enter hook.
 | |
|  */
 | |
| #define CH_CFG_IRQ_PROLOGUE_HOOK() {                                        \
 | |
|   /* IRQ prologue code here.*/                                              \
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @brief   ISR exit hook.
 | |
|  */
 | |
| #define CH_CFG_IRQ_EPILOGUE_HOOK() {                                        \
 | |
|   /* IRQ epilogue code here.*/                                              \
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @brief   Idle thread enter hook.
 | |
|  * @note    This hook is invoked within a critical zone, no OS functions
 | |
|  *          should be invoked from here.
 | |
|  * @note    This macro can be used to activate a power saving mode.
 | |
|  */
 | |
| #define CH_CFG_IDLE_ENTER_HOOK() {                                          \
 | |
|   /* Idle-enter code here.*/                                                \
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @brief   Idle thread leave hook.
 | |
|  * @note    This hook is invoked within a critical zone, no OS functions
 | |
|  *          should be invoked from here.
 | |
|  * @note    This macro can be used to deactivate a power saving mode.
 | |
|  */
 | |
| #define CH_CFG_IDLE_LEAVE_HOOK() {                                          \
 | |
|   /* Idle-leave code here.*/                                                \
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @brief   Idle Loop hook.
 | |
|  * @details This hook is continuously invoked by the idle thread loop.
 | |
|  */
 | |
| #define CH_CFG_IDLE_LOOP_HOOK() {                                           \
 | |
|   /* Idle loop code here.*/                                                 \
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @brief   System tick event hook.
 | |
|  * @details This hook is invoked in the system tick handler immediately
 | |
|  *          after processing the virtual timers queue.
 | |
|  */
 | |
| #define CH_CFG_SYSTEM_TICK_HOOK() {                                         \
 | |
|   /* System tick event code here.*/                                         \
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @brief   System halt hook.
 | |
|  * @details This hook is invoked in case to a system halting error before
 | |
|  *          the system is halted.
 | |
|  */
 | |
| #define CH_CFG_SYSTEM_HALT_HOOK(reason) {                                   \
 | |
|   /* System halt code here.*/                                               \
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @brief   Trace hook.
 | |
|  * @details This hook is invoked each time a new record is written in the
 | |
|  *          trace buffer.
 | |
|  */
 | |
| #define CH_CFG_TRACE_HOOK(tep) {                                            \
 | |
|   /* Trace code here.*/                                                     \
 | |
| }
 | |
| 
 | |
| /** @} */
 | |
| 
 | |
| /*===========================================================================*/
 | |
| /* Port-specific settings (override port settings defaulted in chcore.h).    */
 | |
| /*===========================================================================*/
 | |
| 
 | |
| #endif  /* CHCONF_H */
 | |
| 
 | |
| /** @} */
 |