Integrated NIL 4.0.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@12620 110e8d01-0319-4d1e-a829-52ad28d1bb01
This commit is contained in:
parent
8aa34e947c
commit
88a4752f81
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 2
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 2
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 2
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 2
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 1
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 1
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 3
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 3
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -119,13 +119,12 @@ THD_FUNCTION(Thread2, arg) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Threads static table, one entry per thread. The number of entries must
|
||||
* match NIL_CFG_NUM_THREADS.
|
||||
* Threads creation table, one entry per thread.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "blinker", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(wa_test_support, "test_support", test_support, (void *)&nil.threads[2])
|
||||
THD_TABLE_ENTRY(waThread2, "tester", Thread2, NULL)
|
||||
THD_TABLE_THREAD(0, "blinker", waThread1, Thread1, NULL)
|
||||
THD_TABLE_THREAD(1, "test_support", wa_test_support, test_support, (void *)&nil.threads[2])
|
||||
THD_TABLE_THREAD(2, "tester", waThread2, Thread2, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 4
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -81,14 +81,13 @@ THD_FUNCTION(Thread3, arg) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Threads static table, one entry per thread. The number of entries must
|
||||
* match NIL_CFG_NUM_THREADS.
|
||||
* Threads creation table, one entry per thread.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "blinker1", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread2, "blinker2", Thread2, NULL)
|
||||
THD_TABLE_ENTRY(wa_test_support, "test_support", test_support, (void *)&nil.threads[3])
|
||||
THD_TABLE_ENTRY(waThread3, "tester", Thread3, NULL)
|
||||
THD_TABLE_THREAD(0, "blinker1", waThread1, Thread1, NULL)
|
||||
THD_TABLE_THREAD(1, "blinker2", waThread2, Thread2, NULL)
|
||||
THD_TABLE_THREAD(2, "test_support", wa_test_support, test_support, (void *)&nil.threads[3])
|
||||
THD_TABLE_THREAD(3, "tester", waThread3, Thread3, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 3
|
||||
#define CH_CFG_MAX_THREADS 3
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -69,13 +69,12 @@ THD_FUNCTION(Thread3, arg) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Threads static table, one entry per thread. The number of entries must
|
||||
* match NIL_CFG_NUM_THREADS.
|
||||
* Threads creation table, one entry per thread.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "blinker1", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread2, "blinker2", Thread2, NULL)
|
||||
THD_TABLE_ENTRY(waThread3, "hello", Thread3, NULL)
|
||||
THD_TABLE_THREAD(0, "blinker1", waThread1, Thread1, NULL)
|
||||
THD_TABLE_THREAD(1, "blinker2", waThread2, Thread2, NULL)
|
||||
THD_TABLE_THREAD(2, "hello", waThread3, Thread3, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
# Compiler options here.
|
||||
ifeq ($(USE_OPT),)
|
||||
USE_OPT = -O2 -ggdb -fomit-frame-pointer -falign-functions=16
|
||||
USE_OPT = -O0 -ggdb -fomit-frame-pointer -falign-functions=16
|
||||
endif
|
||||
|
||||
# C specific options here (added to USE_OPT).
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 4
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -257,21 +275,21 @@
|
|||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_SYSTEM_STATE_CHECK FALSE
|
||||
#define CH_DBG_SYSTEM_STATE_CHECK TRUE
|
||||
|
||||
/**
|
||||
* @brief Debug option, parameters checks.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_ENABLE_CHECKS FALSE
|
||||
#define CH_DBG_ENABLE_CHECKS TRUE
|
||||
|
||||
/**
|
||||
* @brief System assertions.
|
||||
*
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#define CH_DBG_ENABLE_ASSERTS FALSE
|
||||
#define CH_DBG_ENABLE_ASSERTS TRUE
|
||||
|
||||
/**
|
||||
* @brief Stack check.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -105,14 +105,13 @@ THD_FUNCTION(Thread3, arg) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Threads static table, one entry per thread. The number of entries must
|
||||
* match NIL_CFG_NUM_THREADS.
|
||||
* Threads creation table, one entry per thread.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "blinker1", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread2, "blinker2", Thread2, NULL)
|
||||
THD_TABLE_ENTRY(wa_test_support, "test_support", test_support, (void *)&nil.threads[3])
|
||||
THD_TABLE_ENTRY(waThread3, "tester", Thread3, NULL)
|
||||
THD_TABLE_THREAD(0, "blinker1", waThread1, Thread1, NULL)
|
||||
THD_TABLE_THREAD(1, "blinker2", waThread2, Thread2, NULL)
|
||||
THD_TABLE_THREAD(2, "test_support", wa_test_support, test_support, (void *)&nil.threads[3])
|
||||
THD_TABLE_THREAD(3, "tester", waThread3, Thread3, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 3
|
||||
#define CH_CFG_MAX_THREADS 3
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -72,13 +72,12 @@ THD_FUNCTION(Thread3, arg) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Threads static table, one entry per thread. The number of entries must
|
||||
* match NIL_CFG_NUM_THREADS.
|
||||
* Threads creation table, one entry per thread.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "blinker1", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread2, "blinker2", Thread2, NULL)
|
||||
THD_TABLE_ENTRY(waThread3, "hello", Thread3, NULL)
|
||||
THD_TABLE_THREAD(0, "blinker1", waThread1, Thread1, NULL)
|
||||
THD_TABLE_THREAD(1, "blinker2", waThread2, Thread2, NULL)
|
||||
THD_TABLE_THREAD(2, "hello", waThread3, Thread3, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 3
|
||||
#define CH_CFG_MAX_THREADS 3
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -68,13 +68,12 @@ THD_FUNCTION(Thread2, arg) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Threads static table, one entry per thread. The number of entries must
|
||||
* match CH_CFG_NUM_THREADS.
|
||||
* Threads creation table, one entry per thread.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "blinker1", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(wa_test_support, "test_support", test_support, (void *)&nil.threads[2])
|
||||
THD_TABLE_ENTRY(waThread2, "tester", Thread2, NULL)
|
||||
THD_TABLE_THREAD(0, "blinker1", waThread1, Thread1, NULL)
|
||||
THD_TABLE_THREAD(1, "test_support", wa_test_support, test_support, (void *)&nil.threads[2])
|
||||
THD_TABLE_THREAD(2, "tester", waThread2, Thread2, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 2
|
||||
#define CH_CFG_MAX_THREADS 2
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -51,12 +51,11 @@ THD_FUNCTION(Thread2, arg) {
|
|||
|
||||
|
||||
/*
|
||||
* Threads static table, one entry per thread. The number of entries must
|
||||
* match NIL_CFG_NUM_THREADS.
|
||||
* Threads creation table, one entry per thread.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "blinker", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread2, "hello", Thread2, NULL)
|
||||
THD_TABLE_THREAD(0, "blinker", waThread1, Thread1, NULL)
|
||||
THD_TABLE_THREAD(1, "hello", waThread2, Thread2, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 3
|
||||
#define CH_CFG_MAX_THREADS 3
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -72,13 +72,12 @@ THD_FUNCTION(Thread3, arg) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Threads static table, one entry per thread. The number of entries must
|
||||
* match NIL_CFG_NUM_THREADS.
|
||||
* Threads creation table, one entry per thread.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "blinker1", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread2, "blinker2", Thread2, NULL)
|
||||
THD_TABLE_ENTRY(waThread3, "hello", Thread3, NULL)
|
||||
THD_TABLE_THREAD(0, "blinker1", waThread1, Thread1, NULL)
|
||||
THD_TABLE_THREAD(1, "blinker2", waThread2, Thread2, NULL)
|
||||
THD_TABLE_THREAD(2, "hello", waThread3, Thread3, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 2
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -66,12 +66,11 @@ static THD_FUNCTION(Thread2, arg) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Threads static table, one entry per thread. The number of entries must
|
||||
* match NIL_CFG_NUM_THREADS.
|
||||
* Threads creation table, one entry per thread.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "counter1", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread2, "counter2", Thread2, NULL)
|
||||
THD_TABLE_THREAD(0, "counter1", waThread1, Thread1, NULL)
|
||||
THD_TABLE_THREAD(1, "counter2", waThread2, Thread2, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 2
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -66,12 +66,11 @@ static THD_FUNCTION(Thread2, arg) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Threads static table, one entry per thread. The number of entries must
|
||||
* match NIL_CFG_NUM_THREADS.
|
||||
* Threads creation table, one entry per thread.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "counter1", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread2, "counter2", Thread2, NULL)
|
||||
THD_TABLE_THREAD(0, "counter1", waThread1, Thread1, NULL)
|
||||
THD_TABLE_THREAD(1, "counter2", waThread2, Thread2, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -158,15 +158,9 @@ _port_thread_start:
|
|||
mov r0, r5
|
||||
mov lr, pc
|
||||
bx r4
|
||||
#if defined(_CHIBIOS_RT_CONF_)
|
||||
mov r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
_zombies: b _zombies
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_CONF_)
|
||||
mov r0, #0
|
||||
bl chSysHalt
|
||||
#endif
|
||||
|
||||
#endif /* !defined(__DOXYGEN__) */
|
||||
|
||||
|
|
|
@ -160,15 +160,9 @@ _port_thread_start:
|
|||
mov r0, r5
|
||||
mov lr, pc
|
||||
bx r4
|
||||
#if defined(_CHIBIOS_RT_CONF_)
|
||||
mov r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
_zombies: b _zombies
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_CONF_)
|
||||
mov r0, #0
|
||||
bl chSysHalt
|
||||
#endif
|
||||
|
||||
#endif /* !defined(__DOXYGEN__) */
|
||||
|
||||
|
|
|
@ -106,14 +106,9 @@ _port_thread_start:
|
|||
cpsie i
|
||||
mov r0, r5
|
||||
blx r4
|
||||
#if defined(_CHIBIOS_RT_CONF_)
|
||||
movs r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_CONF_)
|
||||
mov r3, #0
|
||||
bl chSysHalt
|
||||
#endif
|
||||
_zombies: b _zombies
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* Post-IRQ switch code.
|
||||
|
|
|
@ -117,14 +117,9 @@ _port_thread_start:
|
|||
#endif
|
||||
mov r0, r5
|
||||
blx r4
|
||||
#if defined(_CHIBIOS_RT_CONF_)
|
||||
movs r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_CONF_)
|
||||
mov r3, #0
|
||||
bl chSysHalt
|
||||
#endif
|
||||
_zombies: b _zombies
|
||||
|
||||
/*--------------------------------------------------------------------------*
|
||||
* Post-IRQ switch code.
|
||||
|
|
|
@ -111,14 +111,9 @@ _port_thread_start:
|
|||
cpsie i
|
||||
mov r0, r5
|
||||
blx r4
|
||||
#if defined(_CHIBIOS_RT_CONF_)
|
||||
movs r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_CONF_)
|
||||
mov r3, #0
|
||||
bl chSysHalt
|
||||
#endif
|
||||
_zombies: b _zombies
|
||||
|
||||
/*
|
||||
* Post-IRQ switch code.
|
||||
|
|
|
@ -121,14 +121,9 @@ _port_thread_start:
|
|||
#endif
|
||||
mov r0, r5
|
||||
blx r4
|
||||
#if defined(_CHIBIOS_RT_CONF_)
|
||||
movs r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_CONF_)
|
||||
mov r3, #0
|
||||
bl chSysHalt
|
||||
#endif
|
||||
_zombies: b _zombies
|
||||
|
||||
/*
|
||||
* Post-IRQ switch code.
|
||||
|
|
|
@ -106,14 +106,9 @@ _port_thread_start PROC
|
|||
cpsie i
|
||||
mov r0, r5
|
||||
blx r4
|
||||
#if defined(_CHIBIOS_RT_CONF_)
|
||||
movs r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_CONF_)
|
||||
mov r3, #0
|
||||
bl chSysHalt
|
||||
#endif
|
||||
_zombies b _zombies
|
||||
ENDP
|
||||
|
||||
/*
|
||||
|
|
|
@ -116,14 +116,9 @@ _port_thread_start PROC
|
|||
#endif
|
||||
mov r0, r5
|
||||
blx r4
|
||||
#if defined(_CHIBIOS_RT_CONF_)
|
||||
movs r0, #0 /* MSG_OK */
|
||||
bl chThdExit
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_CONF_)
|
||||
mov r3, #0
|
||||
bl chSysHalt
|
||||
#endif
|
||||
_zombies b _zombies
|
||||
ENDP
|
||||
|
||||
/*
|
||||
|
|
|
@ -153,12 +153,7 @@ void _port_thread_start(void) {
|
|||
asm volatile ("movw r24, r4");
|
||||
asm volatile ("movw r30, r2");
|
||||
asm volatile ("icall");
|
||||
#if defined(_CHIBIOS_RT_)
|
||||
asm volatile ("call chThdExit"); /* Used for avr5 Architecture. */
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_)
|
||||
asm volatile ("call chSysHalt"); /* Used for avr5 Architecture. */
|
||||
#endif
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -105,14 +105,8 @@ _port_thread_start:
|
|||
mr r3, r31
|
||||
mtctr r30
|
||||
se_bctrl
|
||||
#if defined(_CHIBIOS_RT_CONF_)
|
||||
se_li r0, 0
|
||||
e_bl chThdExit
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_CONF_)
|
||||
se_li r0, 0
|
||||
e_bl chSysHalt
|
||||
#endif
|
||||
|
||||
#else /* PPC_USE_VLE == FALSE */
|
||||
|
||||
|
|
|
@ -105,14 +105,8 @@ _port_thread_start:
|
|||
mr r3, r31
|
||||
mtctr r30
|
||||
se_bctrl
|
||||
#if defined(_CHIBIOS_RT_CONF_)
|
||||
e_li r0, 0
|
||||
e_bl chThdExit
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_CONF_)
|
||||
se_li r0, 0
|
||||
e_bl chSysHalt
|
||||
#endif
|
||||
|
||||
#endif /* !defined(__DOXYGEN__) */
|
||||
|
||||
|
|
|
@ -99,14 +99,8 @@ _port_thread_start:
|
|||
mr r3, r31
|
||||
mtctr r30
|
||||
se_bctrl
|
||||
#if defined(_CHIBIOS_RT_CONF_)
|
||||
e_li r0, 0
|
||||
e_bl chThdExit
|
||||
#endif
|
||||
#if defined(_CHIBIOS_NIL_CONF_)
|
||||
se_li r0, 0
|
||||
e_bl chSysHalt
|
||||
#endif
|
||||
|
||||
#endif /* !defined(__DOXYGEN__) */
|
||||
|
||||
|
|
|
@ -55,17 +55,17 @@
|
|||
/**
|
||||
* @brief Kernel version string.
|
||||
*/
|
||||
#define CH_KERNEL_VERSION "3.2.0"
|
||||
#define CH_KERNEL_VERSION "4.0.0"
|
||||
|
||||
/**
|
||||
* @brief Kernel version major number.
|
||||
*/
|
||||
#define CH_KERNEL_MAJOR 3
|
||||
#define CH_KERNEL_MAJOR 4
|
||||
|
||||
/**
|
||||
* @brief Kernel version minor number.
|
||||
*/
|
||||
#define CH_KERNEL_MINOR 2
|
||||
#define CH_KERNEL_MINOR 0
|
||||
|
||||
/**
|
||||
* @brief Kernel version patch number.
|
||||
|
@ -81,7 +81,7 @@
|
|||
* @note It is meant to be used in configuration files as switch.
|
||||
*/
|
||||
#if !defined(FALSE) || defined(__DOXYGEN__)
|
||||
#define FALSE 0
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@ -89,7 +89,7 @@
|
|||
* @note It is meant to be used in configuration files as switch.
|
||||
*/
|
||||
#if !defined(TRUE) || defined(__DOXYGEN__)
|
||||
#define TRUE 1
|
||||
#define TRUE 1
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
|
@ -137,17 +137,31 @@
|
|||
* @name Thread state related macros
|
||||
* @{
|
||||
*/
|
||||
#define NIL_STATE_READY (tstate_t)0 /**< @brief Thread ready or
|
||||
#define NIL_STATE_WTSTART (tstate_t)0 /**< @brief Thread not yet
|
||||
started or terminated. */
|
||||
#define NIL_STATE_READY (tstate_t)1 /**< @brief Thread ready or
|
||||
executing. */
|
||||
#define NIL_STATE_SLEEPING (tstate_t)1 /**< @brief Thread sleeping. */
|
||||
#define NIL_STATE_SUSP (tstate_t)2 /**< @brief Thread suspended. */
|
||||
#define NIL_STATE_WTQUEUE (tstate_t)3 /**< @brief On queue or semaph. */
|
||||
#define NIL_STATE_WTOREVT (tstate_t)4 /**< @brief Waiting for events. */
|
||||
#define NIL_THD_IS_READY(tp) ((tp)->state == NIL_STATE_READY)
|
||||
#define NIL_THD_IS_SLEEPING(tp) ((tp)->state == NIL_STATE_SLEEPING)
|
||||
#define NIL_THD_IS_SUSP(tp) ((tp)->state == NIL_STATE_SUSP)
|
||||
#define NIL_THD_IS_WTQUEUE(tp) ((tp)->state == NIL_STATE_WTQUEUE)
|
||||
#define NIL_THD_IS_WTOREVT(tp) ((tp)->state == NIL_STATE_WTOREVT)
|
||||
#define NIL_STATE_SLEEPING (tstate_t)2 /**< @brief Thread sleeping. */
|
||||
#define NIL_STATE_SUSPENDED (tstate_t)3 /**< @brief Thread suspended. */
|
||||
#define NIL_STATE_WTEXIT (tstate_t)4 /**< @brief Waiting a thread. */
|
||||
#define NIL_STATE_WTQUEUE (tstate_t)5 /**< @brief On queue or semaph. */
|
||||
#define NIL_STATE_WTOREVT (tstate_t)6 /**< @brief Waiting for events. */
|
||||
#define NIL_STATE_WTANDEVT (tstate_t)7 /**< @brief Waiting for events. */
|
||||
#define NIL_STATE_FINAL (tstate_t)8 /**< @brief Thread terminated. */
|
||||
|
||||
#define NIL_THD_IS_WTSTART(tp) ((tp)->state == NIL_STATE_WTSTART)
|
||||
#define NIL_THD_IS_READY(tp) ((tp)->state == NIL_STATE_READY)
|
||||
#define NIL_THD_IS_SLEEPING(tp) ((tp)->state == NIL_STATE_SLEEPING)
|
||||
#define NIL_THD_IS_SUSPENDED(tp) ((tp)->state == NIL_STATE_SUSPENDED)
|
||||
#define NIL_THD_IS_WTEXIT(tp) ((tp)->state == NIL_STATE_WTEXIT)
|
||||
#define NIL_THD_IS_WTQUEUE(tp) ((tp)->state == NIL_STATE_WTQUEUE)
|
||||
#define NIL_THD_IS_WTOREVT(tp) ((tp)->state == NIL_STATE_WTOREVT)
|
||||
#define NIL_THD_IS_WTANDEVT(tp) ((tp)->state == NIL_STATE_WTANDEVT)
|
||||
#define NIL_THD_IS_FINAL(tp) ((tp)->state == NIL_STATE_FINAL)
|
||||
|
||||
#define CH_STATE_NAMES \
|
||||
"WTSTART", "READY", "SLEEPING", "SUSPENDED", "WTEXIT", "WTQUEUE", \
|
||||
"WTOREVT", "WTANDEVT", "FINAL"
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
|
@ -170,12 +184,23 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/*-*
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#if !defined(CH_CFG_NUM_THREADS) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_NUM_THREADS 2
|
||||
#if !defined(CH_CFG_MAX_THREADS) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_MAX_THREADS 2
|
||||
#endif
|
||||
|
||||
/*-*
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#if !defined(CH_CFG_AUTOSTART_THREADS) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
#endif
|
||||
|
||||
/*-*
|
||||
|
@ -208,6 +233,17 @@
|
|||
#define CH_CFG_ST_TIMEDELTA 0
|
||||
#endif
|
||||
|
||||
/*-*
|
||||
* @brief Threads synchronization APIs.
|
||||
* @details If enabled then the @p chThdWait() function is included in
|
||||
* the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_WAITEXIT)
|
||||
#define CH_CFG_USE_WAITEXIT TRUE
|
||||
#endif
|
||||
|
||||
/*-*
|
||||
* @brief Semaphores APIs.
|
||||
* @details If enabled then the Semaphores APIs are included in the kernel.
|
||||
|
@ -283,7 +319,8 @@
|
|||
#if !defined(CH_CFG_USE_MEMPOOLS) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_USE_MEMPOOLS TRUE
|
||||
#endif
|
||||
/**
|
||||
|
||||
/*-*
|
||||
* @brief Objects Factory APIs.
|
||||
* @details If enabled then the objects factory APIs are included in the
|
||||
* kernel.
|
||||
|
@ -294,7 +331,7 @@
|
|||
#define CH_CFG_USE_FACTORY TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*-*
|
||||
* @brief Maximum length for object names.
|
||||
* @details If the specified length is zero then the name is stored by
|
||||
* pointer but this could have unintended side effects.
|
||||
|
@ -303,41 +340,52 @@
|
|||
#define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*-*
|
||||
* @brief Enables the registry of generic objects.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*-*
|
||||
* @brief Enables factory for generic buffers.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*-*
|
||||
* @brief Enables factory for semaphores.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_SEMAPHORES) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_FACTORY_SEMAPHORES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*-*
|
||||
* @brief Enables factory for mailboxes.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_MAILBOXES) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_FACTORY_MAILBOXES TRUE
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*-*
|
||||
* @brief Enables factory for objects FIFOs.
|
||||
*/
|
||||
#if !defined(CH_CFG_FACTORY_OBJ_FIFOS) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_FACTORY_OBJ_FIFOS TRUE
|
||||
#endif
|
||||
|
||||
/*-*
|
||||
* @brief Pipes APIs.
|
||||
* @details If enabled then the pipes APIs are included
|
||||
* in the kernel.
|
||||
*
|
||||
* @note The default is @p TRUE.
|
||||
*/
|
||||
#if !defined(CH_CFG_USE_PIPES) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_USE_PIPES TRUE
|
||||
#endif
|
||||
|
||||
/*-*
|
||||
* @brief Debug option, kernel statistics.
|
||||
*
|
||||
|
@ -407,6 +455,14 @@
|
|||
#define CH_CFG_THREAD_EXT_INIT_HOOK(tp) {}
|
||||
#endif
|
||||
|
||||
/*-*
|
||||
* @brief Threads finalization hook.
|
||||
* @details User finalization code added to the @p chThdExit() API.
|
||||
*/
|
||||
#if !defined(CH_CFG_THREAD_EXIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_THREAD_EXIT_HOOK(tp) {}
|
||||
#endif
|
||||
|
||||
/*-*
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -479,15 +535,15 @@
|
|||
#error "missing or wrong configuration file"
|
||||
#endif
|
||||
|
||||
#if !defined(_CHIBIOS_NIL_CONF_VER_3_2_)
|
||||
#if !defined(_CHIBIOS_NIL_CONF_VER_4_0_)
|
||||
#error "obsolete or unknown configuration file"
|
||||
#endif
|
||||
|
||||
#if CH_CFG_NUM_THREADS < 1
|
||||
#if CH_CFG_MAX_THREADS < 1
|
||||
#error "at least one thread must be defined"
|
||||
#endif
|
||||
|
||||
#if CH_CFG_NUM_THREADS > 16
|
||||
#if CH_CFG_MAX_THREADS > 16
|
||||
#error "ChibiOS/NIL is not recommended for thread-intensive applications," \
|
||||
"consider ChibiOS/RT instead"
|
||||
#endif
|
||||
|
@ -562,20 +618,31 @@ typedef uint16_t sysinterval_t;
|
|||
typedef uint32_t time_conv_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Type of a structure representing the system.
|
||||
*/
|
||||
typedef struct nil_system nil_system_t;
|
||||
|
||||
/**
|
||||
* @brief Thread function.
|
||||
*/
|
||||
typedef void (*tfunc_t)(void *p);
|
||||
|
||||
/**
|
||||
* @brief Type of a structure representing a thread static configuration.
|
||||
*/
|
||||
typedef struct nil_thread_cfg thread_config_t;
|
||||
|
||||
/**
|
||||
* @brief Type of a structure representing a thread.
|
||||
* @note It is required as an early definition.
|
||||
*/
|
||||
typedef struct nil_thread thread_t;
|
||||
|
||||
#include "chcore.h"
|
||||
|
||||
/**
|
||||
* @brief Structure representing a queue of threads.
|
||||
* @brief Type of a thread reference.
|
||||
*/
|
||||
struct nil_threads_queue {
|
||||
volatile cnt_t cnt; /**< @brief Threads Queue counter. */
|
||||
};
|
||||
typedef thread_t * thread_reference_t;
|
||||
|
||||
/**
|
||||
* @brief Type of a queue of threads.
|
||||
|
@ -591,45 +658,43 @@ typedef struct nil_threads_queue threads_queue_t;
|
|||
typedef threads_queue_t semaphore_t;
|
||||
#endif /* CH_CFG_USE_SEMAPHORES == TRUE */
|
||||
|
||||
/**
|
||||
* @brief Thread function.
|
||||
*/
|
||||
typedef void (*tfunc_t)(void *p);
|
||||
/* Late inclusion of port core layer.*/
|
||||
#include "chcore.h"
|
||||
|
||||
/**
|
||||
* @brief Type of a structure representing a thread static configuration.
|
||||
* @brief Structure representing a queue of threads.
|
||||
*/
|
||||
typedef struct nil_thread_cfg thread_config_t;
|
||||
struct nil_threads_queue {
|
||||
volatile cnt_t cnt; /**< @brief Threads Queue counter. */
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Structure representing a thread static configuration.
|
||||
*/
|
||||
struct nil_thread_cfg {
|
||||
tprio_t prio; /**< @brief Thread priority slot. */
|
||||
const char *namep; /**< @brief Thread name, for debugging. */
|
||||
stkalign_t *wbase; /**< @brief Thread working area base. */
|
||||
stkalign_t *wend; /**< @brief Thread working area end. */
|
||||
const char *namep; /**< @brief Thread name, for debugging. */
|
||||
tfunc_t funcp; /**< @brief Thread function. */
|
||||
void *arg; /**< @brief Thread function argument. */
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Type of a thread reference.
|
||||
*/
|
||||
typedef thread_t * thread_reference_t;
|
||||
|
||||
/**
|
||||
* @brief Structure representing a thread.
|
||||
*/
|
||||
struct nil_thread {
|
||||
struct port_context ctx; /**< @brief Processor context. */
|
||||
tstate_t state; /**< @brief Thread state. */
|
||||
/* Note, the following union contains a pointer while the thread is in a
|
||||
sleeping state (!NIL_THD_IS_READY()) else contains the wake-up message.*/
|
||||
/* Note, the following union contains a pointer/value while the thread is
|
||||
in a sleeping state or a wake-up message when the thread is made ready.*/
|
||||
union {
|
||||
msg_t msg; /**< @brief Wake-up message. */
|
||||
void *p; /**< @brief Generic pointer. */
|
||||
nil_system_t *nsp; /**< @brief Pointer to nil base struct. */
|
||||
thread_reference_t *trp; /**< @brief Pointer to thread reference.*/
|
||||
threads_queue_t *tqp; /**< @brief Pointer to thread queue. */
|
||||
thread_t *tp; /**< @brief Pointer to thread. */
|
||||
#if (CH_CFG_USE_SEMAPHORES == TRUE) || defined(__DOXYGEN__)
|
||||
semaphore_t *semp; /**< @brief Pointer to semaphore. */
|
||||
#endif
|
||||
|
@ -649,11 +714,6 @@ struct nil_thread {
|
|||
CH_CFG_THREAD_EXT_FIELDS
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Type of a structure representing the system.
|
||||
*/
|
||||
typedef struct nil_system nil_system_t;
|
||||
|
||||
/**
|
||||
* @brief System data structure.
|
||||
* @note This structure contain all the data areas used by the OS except
|
||||
|
@ -709,7 +769,7 @@ struct nil_system {
|
|||
/**
|
||||
* @brief Thread structures for all the defined threads.
|
||||
*/
|
||||
thread_t threads[CH_CFG_NUM_THREADS + 1];
|
||||
thread_t threads[CH_CFG_MAX_THREADS + 1];
|
||||
};
|
||||
|
||||
/*===========================================================================*/
|
||||
|
@ -734,20 +794,21 @@ struct nil_system {
|
|||
* @brief Start of user threads table.
|
||||
*/
|
||||
#define THD_TABLE_BEGIN \
|
||||
const thread_config_t nil_thd_configs[CH_CFG_NUM_THREADS + 1] = {
|
||||
const thread_config_t nil_thd_configs[] = {
|
||||
|
||||
/**
|
||||
* @brief Entry of user threads table
|
||||
*/
|
||||
#define THD_TABLE_ENTRY(wap, name, funcp, arg) \
|
||||
{wap, ((stkalign_t *)(wap)) + (sizeof (wap) / sizeof(stkalign_t)), \
|
||||
name, funcp, arg},
|
||||
#define THD_TABLE_THREAD(prio, name, wap, funcp, arg) \
|
||||
{prio, name, \
|
||||
wap, ((stkalign_t *)(wap)) + (sizeof (wap) / sizeof(stkalign_t)), \
|
||||
funcp, arg},
|
||||
|
||||
/**
|
||||
* @brief End of user threads table.
|
||||
*/
|
||||
#define THD_TABLE_END \
|
||||
{THD_IDLE_BASE, THD_IDLE_END, "idle", NULL, NULL} \
|
||||
{CH_CFG_MAX_THREADS, "idle", THD_IDLE_BASE, THD_IDLE_END, NULL, NULL} \
|
||||
};
|
||||
/** @} */
|
||||
|
||||
|
@ -1304,7 +1365,7 @@ struct nil_system {
|
|||
*
|
||||
* @init
|
||||
*/
|
||||
#define chSemObjectInit(sp, n) ((sp)->cnt = (n))
|
||||
#define chSemObjectInit(sp, n) ((sp)->cnt = n)
|
||||
|
||||
/**
|
||||
* @brief Performs a wait operation on a semaphore.
|
||||
|
@ -1509,7 +1570,7 @@ struct nil_system {
|
|||
extern stkalign_t __main_thread_stack_base__, __main_thread_stack_end__;
|
||||
#endif
|
||||
extern nil_system_t nil;
|
||||
extern const thread_config_t nil_thd_configs[CH_CFG_NUM_THREADS + 1];
|
||||
extern const thread_config_t nil_thd_configs[];
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -1529,6 +1590,12 @@ extern "C" {
|
|||
void chSchDoReschedule(void);
|
||||
void chSchRescheduleS(void);
|
||||
msg_t chSchGoSleepTimeoutS(tstate_t newstate, sysinterval_t timeout);
|
||||
thread_t *chThdCreateI(const thread_config_t *tcp);
|
||||
thread_t *chThdCreate(const thread_config_t *tcp);
|
||||
void chThdExit(msg_t msg);
|
||||
#if CH_CFG_USE_WAITEXIT == TRUE
|
||||
msg_t chThdWait(thread_t *tp);
|
||||
#endif
|
||||
msg_t chThdSuspendTimeoutS(thread_reference_t *trp, sysinterval_t timeout);
|
||||
void chThdResumeI(thread_reference_t *trp, msg_t msg);
|
||||
void chThdResume(thread_reference_t *trp, msg_t msg);
|
||||
|
@ -1550,6 +1617,7 @@ extern "C" {
|
|||
void chEvtSignal(thread_t *tp, eventmask_t mask);
|
||||
void chEvtSignalI(thread_t *tp, eventmask_t mask);
|
||||
eventmask_t chEvtWaitAnyTimeout(eventmask_t mask, sysinterval_t timeout);
|
||||
eventmask_t chEvtWaitAllTimeout(eventmask_t mask, sysinterval_t timeout);
|
||||
#endif
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK == TRUE
|
||||
void _dbg_check_disable(void);
|
||||
|
|
295
os/nil/src/ch.c
295
os/nil/src/ch.c
|
@ -55,7 +55,6 @@ nil_system_t nil;
|
|||
*
|
||||
* @param[in] state thread state
|
||||
* @param[in] p object pointer
|
||||
* @return Pointer to the thread.
|
||||
*/
|
||||
static thread_t *nil_find_thread(tstate_t state, void * p) {
|
||||
thread_t *tp = nil.threads;
|
||||
|
@ -67,7 +66,7 @@ static thread_t *nil_find_thread(tstate_t state, void * p) {
|
|||
}
|
||||
tp++;
|
||||
|
||||
chDbgAssert(tp < &nil.threads[CH_CFG_NUM_THREADS],
|
||||
chDbgAssert(tp < &nil.threads[CH_CFG_MAX_THREADS],
|
||||
"pointer out of range");
|
||||
}
|
||||
}
|
||||
|
@ -80,14 +79,15 @@ static thread_t *nil_find_thread(tstate_t state, void * p) {
|
|||
* @param[in] cnt number of threads to be readied as a negative number,
|
||||
* non negative numbers are ignored
|
||||
* @param[in] msg the wakeup message
|
||||
* @return Always zero.
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
static cnt_t nil_ready_all(void * p, cnt_t cnt, msg_t msg) {
|
||||
thread_t *tp = nil.threads;;
|
||||
|
||||
while (cnt < (cnt_t)0) {
|
||||
|
||||
chDbgAssert(tp < &nil.threads[CH_CFG_NUM_THREADS],
|
||||
chDbgAssert(tp < &nil.threads[CH_CFG_MAX_THREADS],
|
||||
"pointer out of range");
|
||||
|
||||
/* Is this thread waiting on this queue?*/
|
||||
|
@ -271,47 +271,10 @@ void chDbgCheckClassS(void) {
|
|||
* @special
|
||||
*/
|
||||
void chSysInit(void) {
|
||||
thread_t *tp;
|
||||
const thread_config_t *tcp;
|
||||
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK == TRUE
|
||||
nil.isr_cnt = (cnt_t)0;
|
||||
nil.lock_cnt = (cnt_t)0;
|
||||
#endif
|
||||
|
||||
/* System initialization hook.*/
|
||||
CH_CFG_SYSTEM_INIT_HOOK();
|
||||
|
||||
/* Iterates through the list of defined threads.*/
|
||||
tp = &nil.threads[0];
|
||||
tcp = nil_thd_configs;
|
||||
while (tp < &nil.threads[CH_CFG_NUM_THREADS]) {
|
||||
#if CH_DBG_ENABLE_STACK_CHECK
|
||||
tp->wabase = (stkalign_t *)tcp->wbase;
|
||||
#endif
|
||||
|
||||
/* Port dependent thread initialization.*/
|
||||
PORT_SETUP_CONTEXT(tp, tcp->wbase, tcp->wend, tcp->funcp, tcp->arg);
|
||||
|
||||
/* Initialization hook.*/
|
||||
CH_CFG_THREAD_EXT_INIT_HOOK(tp);
|
||||
|
||||
tp++;
|
||||
tcp++;
|
||||
}
|
||||
|
||||
#if CH_DBG_ENABLE_STACK_CHECK
|
||||
/* The idle thread is a special case because its stack is set up by the
|
||||
runtime environment.*/
|
||||
tp->wabase = THD_IDLE_BASE;
|
||||
#endif
|
||||
|
||||
/* Interrupts partially enabled. It is equivalent to entering the
|
||||
kernel critical zone.*/
|
||||
chSysSuspend();
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK == TRUE
|
||||
nil.lock_cnt = (cnt_t)1;
|
||||
#endif
|
||||
/* Architecture layer initialization.*/
|
||||
port_init();
|
||||
|
||||
/* Memory core initialization, if enabled.*/
|
||||
#if CH_CFG_USE_MEMCORE == TRUE
|
||||
|
@ -328,14 +291,37 @@ void chSysInit(void) {
|
|||
_factory_init();
|
||||
#endif
|
||||
|
||||
/* Port layer initialization last because it depend on some of the
|
||||
initializations performed before.*/
|
||||
port_init();
|
||||
/* System initialization hook.*/
|
||||
CH_CFG_SYSTEM_INIT_HOOK();
|
||||
|
||||
/* Runs the highest priority thread, the current one becomes the idle
|
||||
thread.*/
|
||||
nil.current = nil.next = nil.threads;
|
||||
port_switch(nil.current, tp);
|
||||
/* Making idle the current thread, this may change after rescheduling.*/
|
||||
nil.next = nil.current = &nil.threads[CH_CFG_MAX_THREADS];
|
||||
nil.current->state = NIL_STATE_READY;
|
||||
|
||||
#if CH_DBG_ENABLE_STACK_CHECK == TRUE
|
||||
/* The idle thread is a special case because its stack is set up by the
|
||||
runtime environment.*/
|
||||
nil.threads[CH_CFG_MAX_THREADS].wabase = THD_IDLE_BASE;
|
||||
#endif
|
||||
|
||||
/* Interrupts partially enabled. It is equivalent to entering the
|
||||
kernel critical zone.*/
|
||||
chSysSuspend();
|
||||
#if CH_DBG_SYSTEM_STATE_CHECK == TRUE
|
||||
nil.lock_cnt = (cnt_t)1;
|
||||
#endif
|
||||
|
||||
#if CH_CFG_AUTOSTART_THREADS == TRUE
|
||||
/* Iterates through the list of threads to be auto-started.*/
|
||||
tcp = nil_thd_configs;
|
||||
do {
|
||||
chThdCreateI(tcp);
|
||||
tcp++;
|
||||
} while (tcp->funcp != NULL);
|
||||
#endif
|
||||
|
||||
/* Starting the dance.*/
|
||||
chSchRescheduleS();
|
||||
chSysUnlock();
|
||||
}
|
||||
|
||||
|
@ -397,7 +383,7 @@ void chSysTimerHandlerI(void) {
|
|||
if (NIL_THD_IS_WTQUEUE(tp)) {
|
||||
tp->u1.semp->cnt++;
|
||||
}
|
||||
else if (NIL_THD_IS_SUSP(tp)) {
|
||||
else if (NIL_THD_IS_SUSPENDED(tp)) {
|
||||
*tp->u1.trp = NULL;
|
||||
}
|
||||
/*lint -restore*/
|
||||
|
@ -409,7 +395,7 @@ void chSysTimerHandlerI(void) {
|
|||
chSysUnlockFromISR();
|
||||
tp++;
|
||||
chSysLockFromISR();
|
||||
} while (tp < &nil.threads[CH_CFG_NUM_THREADS]);
|
||||
} while (tp < &nil.threads[CH_CFG_MAX_THREADS]);
|
||||
#else
|
||||
thread_t *tp = &nil.threads[0];
|
||||
sysinterval_t next = (sysinterval_t)0;
|
||||
|
@ -437,7 +423,7 @@ void chSysTimerHandlerI(void) {
|
|||
tp->u1.tqp->cnt++;
|
||||
}
|
||||
else {
|
||||
if (NIL_THD_IS_SUSP(tp)) {
|
||||
if (NIL_THD_IS_SUSPENDED(tp)) {
|
||||
*tp->u1.trp = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -455,7 +441,7 @@ void chSysTimerHandlerI(void) {
|
|||
chSysUnlockFromISR();
|
||||
tp++;
|
||||
chSysLockFromISR();
|
||||
} while (tp < &nil.threads[CH_CFG_NUM_THREADS]);
|
||||
} while (tp < &nil.threads[CH_CFG_MAX_THREADS]);
|
||||
|
||||
nil.lasttime = nil.nexttime;
|
||||
if (next > (sysinterval_t)0) {
|
||||
|
@ -601,7 +587,7 @@ void chSysPolledDelayX(rtcnt_t cycles) {
|
|||
thread_t *chSchReadyI(thread_t *tp, msg_t msg) {
|
||||
|
||||
chDbgCheckClassI();
|
||||
chDbgCheck((tp >= nil.threads) && (tp < &nil.threads[CH_CFG_NUM_THREADS]));
|
||||
chDbgCheck((tp >= nil.threads) && (tp < &nil.threads[CH_CFG_MAX_THREADS]));
|
||||
chDbgAssert(!NIL_THD_IS_READY(tp), "already ready");
|
||||
chDbgAssert(nil.next <= nil.current, "priority ordering");
|
||||
|
||||
|
@ -643,7 +629,7 @@ void chSchDoReschedule(void) {
|
|||
thread_t *otp = nil.current;
|
||||
|
||||
nil.current = nil.next;
|
||||
if (otp == &nil.threads[CH_CFG_NUM_THREADS]) {
|
||||
if (otp == &nil.threads[CH_CFG_MAX_THREADS]) {
|
||||
CH_CFG_IDLE_LEAVE_HOOK();
|
||||
}
|
||||
port_switch(nil.next, otp);
|
||||
|
@ -685,7 +671,7 @@ msg_t chSchGoSleepTimeoutS(tstate_t newstate, sysinterval_t timeout) {
|
|||
|
||||
chDbgCheckClassS();
|
||||
|
||||
chDbgAssert(otp != &nil.threads[CH_CFG_NUM_THREADS],
|
||||
chDbgAssert(otp != &nil.threads[CH_CFG_MAX_THREADS],
|
||||
"idle cannot sleep");
|
||||
|
||||
/* Storing the wait object for the current thread.*/
|
||||
|
@ -733,7 +719,7 @@ msg_t chSchGoSleepTimeoutS(tstate_t newstate, sysinterval_t timeout) {
|
|||
/* Is this thread ready to execute?*/
|
||||
if (NIL_THD_IS_READY(ntp)) {
|
||||
nil.current = nil.next = ntp;
|
||||
if (ntp == &nil.threads[CH_CFG_NUM_THREADS]) {
|
||||
if (ntp == &nil.threads[CH_CFG_MAX_THREADS]) {
|
||||
CH_CFG_IDLE_ENTER_HOOK();
|
||||
}
|
||||
port_switch(ntp, otp);
|
||||
|
@ -742,11 +728,142 @@ msg_t chSchGoSleepTimeoutS(tstate_t newstate, sysinterval_t timeout) {
|
|||
|
||||
/* Points to the next thread in lowering priority order.*/
|
||||
ntp++;
|
||||
chDbgAssert(ntp <= &nil.threads[CH_CFG_NUM_THREADS],
|
||||
chDbgAssert(ntp <= &nil.threads[CH_CFG_MAX_THREADS],
|
||||
"pointer out of range");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Creates a new thread into a static memory area.
|
||||
* @details The new thread is initialized and make ready to execute.
|
||||
* @note A thread can terminate by calling @p chThdExit() or by simply
|
||||
* returning from its main function.
|
||||
*
|
||||
* @param[out] tcp pointer to the thread configuration structure
|
||||
* @return The pointer to the @p thread_t structure allocated for
|
||||
* the thread.
|
||||
*
|
||||
* @iclass
|
||||
*/
|
||||
thread_t *chThdCreateI(const thread_config_t *tcp) {
|
||||
thread_t *tp;
|
||||
|
||||
chDbgCheck(tcp->prio < CH_CFG_MAX_THREADS);
|
||||
chDbgCheckClassI();
|
||||
|
||||
/* Pointer to the thread slot to be used.*/
|
||||
tp = &nil.threads[tcp->prio];
|
||||
chDbgAssert(NIL_THD_IS_WTSTART(tp) || NIL_THD_IS_FINAL(tp),
|
||||
"priority slot taken");
|
||||
|
||||
#if (CH_DBG_ENABLE_STACK_CHECK == TRUE) || defined(__DOXYGEN__)
|
||||
tp->wabase = (stkalign_t *)tcp->wbase;
|
||||
#endif
|
||||
|
||||
/* Port dependent thread initialization.*/
|
||||
PORT_SETUP_CONTEXT(tp, tcp->wbase, tcp->wend, tcp->funcp, tcp->arg);
|
||||
|
||||
/* Initialization hook.*/
|
||||
CH_CFG_THREAD_EXT_INIT_HOOK(tp);
|
||||
|
||||
/* Readying up thread.*/
|
||||
return chSchReadyI(tp, MSG_OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Creates a new thread into a static memory area.
|
||||
* @details The new thread is initialized and make ready to execute.
|
||||
* @note A thread can terminate by calling @p chThdExit() or by simply
|
||||
* returning from its main function.
|
||||
*
|
||||
* @param[out] tcp pointer to the thread configuration structure
|
||||
* @return The pointer to the @p thread_t structure allocated for
|
||||
* the thread.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
thread_t *chThdCreate(const thread_config_t *tcp) {
|
||||
thread_t *tp;
|
||||
|
||||
chSysLock();
|
||||
tp = chThdCreateI(tcp);
|
||||
chSchRescheduleS();
|
||||
chSysUnlock();
|
||||
|
||||
return tp;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Terminates the current thread.
|
||||
* @details The thread goes in the @p CH_STATE_FINAL state holding the
|
||||
* specified exit status code, other threads can retrieve the
|
||||
* exit status code by invoking the function @p chThdWait().
|
||||
* @post Exiting a non-static thread that does not have references
|
||||
* (detached) causes the thread to remain in the registry.
|
||||
* It can only be removed by performing a registry scan operation.
|
||||
* @post Eventual code after this function will never be executed,
|
||||
* this function never returns. The compiler has no way to
|
||||
* know this so do not assume that the compiler would remove
|
||||
* the dead code.
|
||||
*
|
||||
* @param[in] msg thread exit code
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
void chThdExit(msg_t msg) {
|
||||
|
||||
chSysLock();
|
||||
|
||||
/* Exit handler hook.*/
|
||||
CH_CFG_THREAD_EXIT_HOOK(tp);
|
||||
|
||||
#if CH_CFG_USE_WAITEXIT == TRUE
|
||||
{
|
||||
/* Waking up any waiting thread.*/
|
||||
thread_t *tp = nil.threads;
|
||||
while (tp < &nil.threads[CH_CFG_MAX_THREADS]) {
|
||||
/* Is this thread waiting for current thread termination?*/
|
||||
if ((tp->state == NIL_STATE_WTEXIT) && (tp->u1.tp == nil.current)) {
|
||||
(void) chSchReadyI(tp, msg);
|
||||
}
|
||||
tp++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Going into final state with exit message stored.*/
|
||||
chSchGoSleepTimeoutS(NIL_STATE_FINAL, msg);
|
||||
|
||||
/* The thread never returns here.*/
|
||||
chDbgAssert(false, "zombies apocalypse");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Blocks the execution of the invoking thread until the specified
|
||||
* thread terminates then the exit code is returned.
|
||||
*
|
||||
* @param[in] tp pointer to the thread
|
||||
* @return The exit code from the terminated thread.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
msg_t chThdWait(thread_t *tp) {
|
||||
msg_t msg;
|
||||
|
||||
chSysLock();
|
||||
if (NIL_THD_IS_FINAL(tp)) {
|
||||
msg = tp->u1.msg;
|
||||
}
|
||||
else {
|
||||
nil.current->u1.tp = tp;
|
||||
msg = chSchGoSleepTimeoutS(NIL_STATE_WTEXIT, TIME_INFINITE);
|
||||
}
|
||||
chSysUnlock();
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sends the current thread sleeping and sets a reference variable.
|
||||
* @note This function must reschedule, it can only be called from thread
|
||||
|
@ -755,8 +872,8 @@ msg_t chSchGoSleepTimeoutS(tstate_t newstate, sysinterval_t timeout) {
|
|||
* @param[in] trp a pointer to a thread reference object
|
||||
* @param[in] timeout the number of ticks before the operation timeouts,
|
||||
* the following special values are allowed:
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* - @a TIME_IMMEDIATE immediate timeout.
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return The wake up message.
|
||||
*
|
||||
|
@ -772,7 +889,7 @@ msg_t chThdSuspendTimeoutS(thread_reference_t *trp, sysinterval_t timeout) {
|
|||
|
||||
*trp = nil.current;
|
||||
nil.current->u1.trp = trp;
|
||||
return chSchGoSleepTimeoutS(NIL_STATE_SUSP, timeout);
|
||||
return chSchGoSleepTimeoutS(NIL_STATE_SUSPENDED, timeout);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -790,7 +907,7 @@ void chThdResumeI(thread_reference_t *trp, msg_t msg) {
|
|||
if (*trp != NULL) {
|
||||
thread_reference_t tr = *trp;
|
||||
|
||||
chDbgAssert(NIL_THD_IS_SUSP(tr), "not suspended");
|
||||
chDbgAssert(NIL_THD_IS_SUSPENDED(tr), "not suspended");
|
||||
|
||||
*trp = NULL;
|
||||
(void) chSchReadyI(tr, msg);
|
||||
|
@ -852,8 +969,8 @@ void chThdSleepUntil(systime_t abstime) {
|
|||
* @param[in] tqp pointer to the threads queue object
|
||||
* @param[in] timeout the timeout in system ticks, the special values are
|
||||
* handled as follow:
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* - @a TIME_IMMEDIATE immediate timeout.
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return The message from @p osalQueueWakeupOneI() or
|
||||
* @p osalQueueWakeupAllI() functions.
|
||||
|
@ -943,8 +1060,8 @@ void chThdDequeueAllI(threads_queue_t *tqp, msg_t msg) {
|
|||
* @param[in] sp pointer to a @p semaphore_t structure
|
||||
* @param[in] timeout the number of ticks before the operation timeouts,
|
||||
* the following special values are allowed:
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* - @a TIME_IMMEDIATE immediate timeout.
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return A message specifying how the invoking thread has been
|
||||
* released from the semaphore.
|
||||
|
@ -972,8 +1089,8 @@ msg_t chSemWaitTimeout(semaphore_t *sp, sysinterval_t timeout) {
|
|||
* @param[in] sp pointer to a @p semaphore_t structure
|
||||
* @param[in] timeout the number of ticks before the operation timeouts,
|
||||
* the following special values are allowed:
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* - @a TIME_IMMEDIATE immediate timeout.
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return A message specifying how the invoking thread has been
|
||||
* released from the semaphore.
|
||||
|
@ -1130,8 +1247,10 @@ void chEvtSignalI(thread_t *tp, eventmask_t mask) {
|
|||
chDbgCheck(tp != NULL);
|
||||
|
||||
tp->epmask |= mask;
|
||||
if (NIL_THD_IS_WTOREVT(tp) &&
|
||||
((tp->epmask & tp->u1.ewmask) != (eventmask_t)0)) {
|
||||
if ((NIL_THD_IS_WTOREVT(tp) &&
|
||||
((tp->epmask & tp->u1.ewmask) != (eventmask_t)0)) ||
|
||||
(NIL_THD_IS_WTANDEVT(tp) &&
|
||||
((tp->epmask & tp->u1.ewmask) == tp->u1.ewmask))) {
|
||||
(void) chSchReadyI(tp, MSG_OK);
|
||||
}
|
||||
}
|
||||
|
@ -1146,8 +1265,8 @@ void chEvtSignalI(thread_t *tp, eventmask_t mask) {
|
|||
* for, @p ALL_EVENTS enables all the events
|
||||
* @param[in] timeout the number of ticks before the operation timeouts,
|
||||
* the following special values are allowed:
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* - @a TIME_IMMEDIATE immediate timeout.
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return The mask of the served and cleared events.
|
||||
* @retval 0 if the operation has timed out.
|
||||
|
@ -1178,6 +1297,46 @@ eventmask_t chEvtWaitAnyTimeout(eventmask_t mask, sysinterval_t timeout) {
|
|||
|
||||
return m;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Waits for all the specified events.
|
||||
* @details The function waits for all the events specified in @p mask to
|
||||
* become pending then the events are cleared and returned.
|
||||
*
|
||||
* @param[in] mask mask of the event flags that the function should wait
|
||||
* for, @p ALL_EVENTS enables all the events
|
||||
* @param[in] timeout the number of ticks before the operation timeouts,
|
||||
* the following special values are allowed:
|
||||
* - @a TIME_IMMEDIATE immediate timeout.
|
||||
* - @a TIME_INFINITE no timeout.
|
||||
* .
|
||||
* @return The mask of the served and cleared events.
|
||||
* @retval 0 if the operation has timed out.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
eventmask_t chEvtWaitAllTimeout(eventmask_t mask, sysinterval_t timeout) {
|
||||
thread_t *ctp = nil.current;
|
||||
|
||||
chSysLock();
|
||||
if ((ctp->epmask & mask) != mask) {
|
||||
if (TIME_IMMEDIATE == timeout) {
|
||||
chSysUnlock();
|
||||
|
||||
return (eventmask_t)0;
|
||||
}
|
||||
ctp->u1.ewmask = mask;
|
||||
if (chSchGoSleepTimeoutS(NIL_STATE_WTANDEVT, timeout) < MSG_OK) {
|
||||
chSysUnlock();
|
||||
|
||||
return (eventmask_t)0;
|
||||
}
|
||||
}
|
||||
ctp->epmask &= ~mask;
|
||||
chSysUnlock();
|
||||
|
||||
return mask;
|
||||
}
|
||||
#endif /* CH_CFG_USE_EVENTS == TRUE */
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 3
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
269
readme.txt
269
readme.txt
|
@ -74,271 +74,4 @@
|
|||
*****************************************************************************
|
||||
|
||||
*** Next ***
|
||||
- NEW: Added a sanity check on GCC version for ARMv6-M, a version below 6
|
||||
must be used.
|
||||
- NEW: Removed deprecated EXT driver.
|
||||
- NEW: Added a new function chMtxGetOwnerI() to RT mutexes subsystem.
|
||||
- NEW: STM32L433 added to STM32L4xx HAL.
|
||||
- CHG: chFifoObjectInit() renamed to chFifoObjectInitAligned(). Added a new
|
||||
chFifoObjectInit() without the alignment parameter.
|
||||
- NEW: Stricter alignment checks in memory pools.
|
||||
- NEW: Added chvsnprintf().
|
||||
- NEW: Event enable check API added to PAL driver.
|
||||
- NEW: Now it is possible to define separate directories for each
|
||||
configuration file.
|
||||
- NEW: Added option to enable bypass on SDIOv1 driver allowing to use a
|
||||
50MHz clock.
|
||||
- NEW: Added TIM15, TIM16 and TIM17 support on GPT, ICU and PWM drivers,
|
||||
limited to STM32F3, L4 and L4+ platforms.
|
||||
- NEW: STM32H7xx and STM32L4+ ports reworked to support dynamic DMA
|
||||
allocation. Updated all drivers to use the new DMA API.
|
||||
- NEW: Both DMAv1 and DMAv2 have been reworked to support DMAMUX, DMAv3 has
|
||||
been removed. In addition, both drivers are now able to support dynamic
|
||||
channel allocation.
|
||||
- NEW: The callback of drivers with circular buffers (ADC, DAC, I2S, SPI) has
|
||||
been simplified, no parameters. A driver function xxxIsBufferComplete()
|
||||
has been added to determine if it is the half buffer callback or the
|
||||
final callback.
|
||||
- NEW: ADC driver state machine change, now the state ADC_COMPLETE is set
|
||||
before calling the 2nd callback even in circular mode. This has been
|
||||
done for consistency with other drivers with circular buffers.
|
||||
- NEW: Low level drivers simplification. There is a new template of LLD, now
|
||||
driver and configuration types are defined in the HLD, LLD just exports
|
||||
macros with the fields to be added to the structures.
|
||||
So far the drivers updated are: ADC, DAC, I2S, RTC, SPI, TRNG, WSPI.
|
||||
- NEW: Added UART7/8 support to STM32 UART USARTv1 driver.
|
||||
- NEW: Added persistent storage interface to the STM32 RTCv2 driver.
|
||||
- NEW: STM32 RTCv2 driver now supports callbacks on events.
|
||||
- NEW: Added an EXTI helper driver for STM32.
|
||||
- NEW: Added demo for STM32L4R9I-Discovery board.
|
||||
- NEW: Support for new serial NOR device MX25LM51245G. Other Macronix devices
|
||||
should work but not tested.
|
||||
- NEW: Serial NOR flash infrastructure reworked and made simpler.
|
||||
- NEW_ Modified the RTC driver to implement the persistent storage interface
|
||||
instead of files interface.
|
||||
- NEW: Added a new "persistent storage" base class to HAL.
|
||||
- NEW: Added support for TIM21 and TIM22 in STM32 GPT driver.
|
||||
- NEW: Reinforced checks in TIM-related drivers.
|
||||
- NEW: Added support for STM32L072 and STM32L073.
|
||||
- NEW: Added chThdResume() function to NIL.
|
||||
- NEW: Removed QSPI driver model, entirely replaced by WSPI.
|
||||
- NEW: Added demos regarding WSPI, serial nor driver and MFS.
|
||||
- NEW: Modified the serial nor driver to work with WSPI instead of QSPI,
|
||||
improved it in several way, simplicity mainly.
|
||||
- NEW: Added an STM32 QUADSPIv1 implementation for WSPI.
|
||||
- NEW: Added a new WSPI driver model to HAL, it is a redesign of the
|
||||
existing QSPI for generic "Wide SPI" interfaces. It now supports up
|
||||
to eight data lines so "quad" was no more appropriate.
|
||||
- NEW: Added a new SIO driver model to HAL, it is a low level abstraction of
|
||||
an UART.
|
||||
- NEW: Added separate "load key" functions for each algorithm in the CRY
|
||||
driver. Each "engine" is supposed to have its own transient key.
|
||||
- NEW: Removed TRNG functionality from CRY driver, it is a separate thing now.
|
||||
- NEW: Independent TRNG driver model added to HAL. Implemented a RNGv1 driver
|
||||
for STM32, added test application.
|
||||
- NEW: Added a new "pipes" subsystem to the OS library.
|
||||
- NEW: Added mcuconf.h generators for STM32L432xx, STM32L476xx, STM32L496xx,
|
||||
STM32L4Rxxx, STM32F72x/73x, STM32F746/756, STM32F76x/77x, STM32F413xx
|
||||
and STM32F303xx devices.
|
||||
- NEW: Added demo for STM32L496ZG-Nucleo144 and STM32L4R5ZI-Nucleo144 boards.
|
||||
- NEW: Modified USARTv2 to support HW FIFOs where present.
|
||||
- NEW: STM32 DMAv1, ADCv3, DACv1, I2Cv2, SPIv2 and USARTv2 are now
|
||||
DMAMUX-aware.
|
||||
- NEW: Introduced support for STM32L4+ devices.
|
||||
- NEW: TRNG API now takes a new "size" parameter, the API can now generate
|
||||
random numbers of variable size. The crypto driver now does not store
|
||||
a copy of the transient key inside, the low level can do that if
|
||||
required.
|
||||
- NEW: Added analog watchdog functionality to STM32 ADCv2 driver.
|
||||
- NEW: Added a termination check to the shell.
|
||||
- NEW: Updated CMSIS to version 5.4.0.
|
||||
- NEW: Now chconf.h files have preprocessor checks around each definition,
|
||||
this allows to override settings from makefiles.
|
||||
- NEW: Added new functions to I/O queues: qSetLink()(backported to 18.2.2).
|
||||
- NEW: Added new functions to objects fifos: chFifoReturnObjectS()(backported
|
||||
to 18.2.2),
|
||||
chFifoSendObjectAheadI(), chFifoSendObjectAheadS() and
|
||||
chFifoSendObjectAhead()(backported to 18.2.2).
|
||||
- NEW: Added new functions to guarded pools: chGuardedPoolFreeS() and
|
||||
chGuardedPoolAddS().
|
||||
- NEW: Added initializer sections for flash0...flash7 memory areas in
|
||||
GCC Cortex-M linker scripts.
|
||||
- NEW: Added support for oversampling in STM32 ADCv3 driver.
|
||||
- NEW: Restructured the STM32F4xx HAL support, added support for STM32F413,
|
||||
added ability to handle the TIMPRE bit, separated the clock tree in
|
||||
two distinct implementation to reduce the proliferation of compiler
|
||||
time conditionals, added more checks to the input parameters.
|
||||
- NEW: Added optional support for character match callback in the UART
|
||||
high level driver.
|
||||
- NEW: Change, chMtxGetNextMutexS() renamed to chMtxGetNextMutexX().
|
||||
- NEW: RT C++ wrapper reworked, now it is mostly inline code, added some new
|
||||
wrappers and methods. Added wrappers for more API functions. BaseThreads
|
||||
are no more descendants of ThreadReference.
|
||||
- NEW: Updated STM32L4xx headers to version 1.11.0.
|
||||
- NEW: Added HAL support for STM32L443.
|
||||
- NEW: Added support for LDM303AGR 6 axis Accelerometer\Magnetometer MEMS.
|
||||
- NEW: Added support for LSM6DSL 6 axis Accelerometer\Gyroscope MEMS.
|
||||
- NEW: Added support for LPS22HB 2 axis Barometer\Thermometer MEMS.
|
||||
- NEW: Separated OSLIB from RT and NIL, now it is a separate "product" with
|
||||
its own version, configuration file and licensing. The library will
|
||||
grow to include more functionalities.
|
||||
RT and NIL will contain only the core functionalities, everything else
|
||||
is shared library code.
|
||||
- EX. Global version number moved to 1.1.0.
|
||||
- EX: Updated HTS221 to 1.1.1 (backported to 18.2.2).
|
||||
- EX: Updated L3GD20 to 1.1.1 (backported to 18.2.2).
|
||||
- EX: Updated LIS3DSH to 1.1.1 (backported to 18.2.2).
|
||||
- EX: Updated LIS3MDL to 1.1.1 (backported to 18.2.2).
|
||||
- EX: Updated LPS25H to 1.1.1 (backported to 18.2.2).
|
||||
- EX: Updated LSM303DLHC to 1.1.1 (backported to 18.2.2).
|
||||
- EX: Updated LSM6DS0 to 1.1.1 (backported to 18.2.2).
|
||||
- EX: Updated HTS221 to 1.1.0 (backported to 18.2.1).
|
||||
- EX: Updated L3GD20 to 1.1.0 (backported to 18.2.1).
|
||||
- EX: Updated LIS3DSH to 1.1.0 (backported to 18.2.1).
|
||||
- EX: Updated LIS3MDL to 1.1.0 (backported to 18.2.1).
|
||||
- EX: Updated LIS302DL to 1.1.0 (backported to 18.2.1).
|
||||
- EX: Updated LPS25H to 1.1.0 (backported to 18.2.1).
|
||||
- EX: Updated LSM303DLHC to 1.1.0 (backported to 18.2.1).
|
||||
- HAL: Fixed STM32 ST driver problem in free running mode (bug #1003)
|
||||
(backported to 18.2.3 and 17.6.5).
|
||||
- HAL: Fixed invalid checks in STM32H7 HAL (bug #1000)
|
||||
(backported to 18.2.2).
|
||||
- OTH: Fixed problem in STM32H743 GCC linker file (bug #998)
|
||||
(backported to 18.2.2).
|
||||
- HAL: Fixed extra parenthesis in STM32F4 registry (bug #997)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed timing problem in STM32 OTGv1 driver (bug #996)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed restrictive check in MMC-SPI driver (bug #995)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed misplaced check in STM32 ST driver (bug #994)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- OTH: Fixed ARM CMx vectors table without thumb bit set for unused vectors
|
||||
(bug #993)(backported to 18.2.2).
|
||||
- HAL: Fixed STM32F7xx I2SPLL not fully initialized (bug #992)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- BLD: Fixed PRE_MAKE_ALL_RULE_HOOK is not executed before creating object
|
||||
file when using multible jobs (bug #991).
|
||||
- HAL: Fixed ethernet registry error for STM32F469/479 (bug #990)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- RT: Fixed bug in chEvtBroadcastFlagsI (bug #989)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed OS-Less Cortex-M HAL functionality broken (bug #987)
|
||||
(backported to 18.2.2).
|
||||
- HAL: Fixed broken functionality of MFS module (bug #986)
|
||||
(backported to 18.2.2).
|
||||
- NIL: Fixed scheduler misbehaving in rare cases (bug #983)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- NIL: Fixed function chThdSuspendTimeoutS() ignoring TIME_IMMEDIATE (bug #982)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed mTM32L071/72 entries in registry (bug #981)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed TIM3 missing from STM32L0xx RCC macros (bug #980)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed invalid STM32 ADCv3 clock selection for L4 and L4+ (bug #979)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed wrong number of endpoints fot STM32F412/413 (bug #978)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- RT: Fixed chEvtGetAndClearFlags(...) does not mask events (bug #977)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed HAL channels chnControl() macro broken (bug #976)
|
||||
(backported to 18.2.2).
|
||||
- OTH: Fixed wrong timeout handling in CMSIS OS layer (bug #975)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed invalid checks in STM32F37x HAL related to SDADC (bug #974)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed mii_find_phy excludes PHY address 31 (bug #971)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed option STM32_LSCOSEL not written in STM32L4 HAL (bug #970)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed invalid DFSDM1SEL option in STM32L4 HAL (bug #969)(backported
|
||||
to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed incorrect checks on STM32_SAI2SEL option in STM32L4 HAL
|
||||
(bug #968)(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed incorrect handling of PDIV dividers in STM32L4 HAL (bug #967)
|
||||
(backported to 18.2.2).
|
||||
- HAL: Fixed documentation error in spiStop() (bug #966)(backported
|
||||
to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed missing parenthesis in STM32L073 registry entry (bug #965)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed problem with STM32 RTCv1 and GCC7 compiler (bug #964)(backported
|
||||
to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed invalid timeout calculation in hal_buffers (bug #963)(backported
|
||||
to 18.2.2 and 17.6.5).
|
||||
- RT: Fixed invalid parameter in CH_CFG_SYSTEM_INIT_HOOK hook macro
|
||||
(bug #962)(backported to 18.2.2).
|
||||
- OTH: Fixed demos failing to compile (bug #961)(backported to 18.2.2).
|
||||
- HAL: Fixed issue in hal_queues (bug #960)(backported to 18.2.2).
|
||||
- HAL: Fixed incorrect state change in I2S driver (bug #959)(backported
|
||||
to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed incorrect TCIE handling in STM32 serial drivers (bug #958)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed invalid period calculation in STM32 GPT driver (bug #957)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed missing USART7/8 definitions in STM32F0 HAL (bug #956)(backported
|
||||
to 18.2.2).
|
||||
- LIB: Fixed heap allocation issue (bug #955)(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed win32 simulator HAL broken because a typo (bug #954)(backported
|
||||
to 18.2.2).
|
||||
- HAL: Fixed race condition in STM32 ADCv3 driver (bug #953)(backported to
|
||||
18.2.2 and 17.6.5).
|
||||
- HAL: Fixed wrong registry entries for STM32F030x4 (bug #952)(backported
|
||||
to 18.2.2).
|
||||
- HAL: Fixed invalid divider settings in Serial and UART STM32 drivers
|
||||
when USART_CR1_OVER8 is specified (bug #951)(backported to 18.2.2
|
||||
and 17.6.5).
|
||||
- NIL: Fixed missing extern declaration in IAR Cortex-M port (bug #950)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed ASCR register invalid handling in STM32 GPIOv3 driver (bug #949)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed missing definition in UART driver (bug #948)(backported
|
||||
to 18.2.2).
|
||||
- OTH: Fixed wrong macro check in GCC Cortex-M startup files (bug #947)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed binary instead of logic operator in STM32F4 HAL (bug #946)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- HAL: Fixed Mikroe clicker 2 misaligned board file (bug #945)
|
||||
(backported to 18.2.2 and 17.6.5).
|
||||
- EX: Fixed ChibiOS/EX documentation misalignments (bug #943).
|
||||
- HAL: Fixed invalid settings in STM32F769I-Discovery board files (bug #942)
|
||||
(backported to 18.2.1 and 17.6.5).
|
||||
- OTH: Fixed short branch to _unhandled_exception in vectors.S (bug #941)
|
||||
(backported to 18.2.1).
|
||||
- HAL: Fixed IOBus PAL functions missing the const qualifier (bug #940)
|
||||
(backported to 18.2.1 and 17.6.5).
|
||||
- HAL: Fixed STM32 USBv1 driver does not reset data toggling bits on endpoint
|
||||
initialization (bug #939)(backported to 18.2.1 and 17.6.5).
|
||||
- HAL: Fixed incorrect behavior of USB driver on SET CONFIGURATION (bug #938)
|
||||
(backported to 18.2.1 and 17.6.5).
|
||||
- HAL: Fixed macro expansion problem in SPI high level driver (bug #937)
|
||||
(backported to 18.2.1).
|
||||
- HAL: Fixed missing CAN2 macros from STM32L4xx stm32_rcc.h file (bug #936)
|
||||
(backported to 18.2.1).
|
||||
- OTH: Fixed inclusion order problem in STM32L4 cmparams.h file (bug #935)
|
||||
(backported to 18.2.1 and 17.6.5).
|
||||
- HAL: Fixed problem clearing UIF timer flag in STM32 PWM driver (bug #934)
|
||||
(backported to 18.2.1 and 17.6.5).
|
||||
- HAL: Fixed USB Serial driver problem with zero-size OUT transactions
|
||||
(bug #933)(backported to 18.2.1 and 17.6.5).
|
||||
- HAL: Fixed race condition in STM32 QSPI driver (bug #932)(backported to
|
||||
18.2.1 and 17.6.5).
|
||||
- HAL: Fixed function mfsReadRecord() causes memory corruption because a
|
||||
buffer overflow (bug #931)(backported to 18.2.1).
|
||||
- HAL: Fixed silence GCC 7.3.0 warning (bug #930)(backported to 18.2.1
|
||||
and 17.6.5).
|
||||
- HAL: Fixed invalid SAI1 clock selection on STM32F7xx (bug #929)(backported
|
||||
to 18.2.1 and 17.6.4).
|
||||
- HAL: Fixed invalid clock checks for SDMMC1 and SDMMC2 on STM32F7xx
|
||||
(bug #928)(backported to 18.2.1).
|
||||
- HAL: Fixed useless writes in read-only CFGR_SWS field on all STM32Fxx
|
||||
(bug #927)(backported to 18.2.1 and 17.6.4).
|
||||
- HAL: Fixed typo in hal_pal.h (bug #926)(backported to 18.2.1).
|
||||
- HAL: Fixed I2C address not accepted (bug #923)(backported to 18.2.1
|
||||
and 17.6.4).
|
||||
- HAL: Fixed problem with HSI48 on STM32L4xx (bug #922)(backported to 18.2.1).
|
||||
- HAL: Fixed invalid implementation of palWaitPadTimeoutS() and
|
||||
palWaitLineTimeoutS() APIs (bug #921)(backported to 18.2.1).
|
||||
- HAL: Fixed wrong DMA settings for STM32F76x I2C3 and I2C4 (bug #920)
|
||||
(backported to 18.2.1 and 17.6.4).
|
||||
- HAL: Fixed wrong flash waiting state for STM32F7xx (bug #918)
|
||||
(backported to 18.2.1 and 17.6.4).
|
||||
- NIL: Integrated NIL 4.0.
|
||||
|
|
|
@ -245,21 +245,27 @@ test_println("");]]></value>
|
|||
<value />
|
||||
</tags>
|
||||
<code>
|
||||
<value><![CDATA[test_print("--- CH_CFG_NUM_THREADS: ");
|
||||
test_printn(CH_CFG_NUM_THREADS);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_ST_RESOLUTION: ");
|
||||
test_printn(CH_CFG_ST_RESOLUTION);
|
||||
<value><![CDATA[test_print("--- CH_CFG_MAX_THREADS: ");
|
||||
test_printn(CH_CFG_MAX_THREADS);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_AUTOSTART_THREADS: ");
|
||||
test_printn(CH_CFG_AUTOSTART_THREADS);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_ST_RESOLUTION: ");
|
||||
test_printn(CH_CFG_ST_RESOLUTION);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_ST_FREQUENCY: ");
|
||||
test_printn(CH_CFG_ST_FREQUENCY);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_ST_TIMEDELTA: ");
|
||||
test_printn(CH_CFG_ST_TIMEDELTA);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_USE_SEMAPHORES: ");
|
||||
test_printn(CH_CFG_USE_SEMAPHORES);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_USE_WAITEXIT: ");
|
||||
test_printn(CH_CFG_USE_WAITEXIT);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_USE_SEMAPHORES: ");
|
||||
test_printn(CH_CFG_USE_SEMAPHORES);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_USE_MUTEXES: ");
|
||||
test_printn(CH_CFG_USE_MUTEXES);
|
||||
test_println("");
|
||||
|
@ -305,6 +311,9 @@ test_println("");
|
|||
test_print("--- CH_CFG_FACTORY_OBJ_FIFOS: ");
|
||||
test_printn(CH_CFG_FACTORY_OBJ_FIFOS);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_USE_PIPES: ");
|
||||
test_printn(CH_CFG_USE_PIPES);
|
||||
test_println("");
|
||||
test_print("--- CH_DBG_STATISTICS: ");
|
||||
test_printn(CH_DBG_STATISTICS);
|
||||
test_println("");
|
||||
|
|
|
@ -160,8 +160,11 @@ static void nil_test_001_003_execute(void) {
|
|||
/* [1.3.1] Prints the configuration options settings.*/
|
||||
test_set_step(1);
|
||||
{
|
||||
test_print("--- CH_CFG_NUM_THREADS: ");
|
||||
test_printn(CH_CFG_NUM_THREADS);
|
||||
test_print("--- CH_CFG_MAX_THREADS: ");
|
||||
test_printn(CH_CFG_MAX_THREADS);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_AUTOSTART_THREADS: ");
|
||||
test_printn(CH_CFG_AUTOSTART_THREADS);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_ST_RESOLUTION: ");
|
||||
test_printn(CH_CFG_ST_RESOLUTION);
|
||||
|
@ -172,6 +175,9 @@ static void nil_test_001_003_execute(void) {
|
|||
test_print("--- CH_CFG_ST_TIMEDELTA: ");
|
||||
test_printn(CH_CFG_ST_TIMEDELTA);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_USE_WAITEXIT: ");
|
||||
test_printn(CH_CFG_USE_WAITEXIT);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_USE_SEMAPHORES: ");
|
||||
test_printn(CH_CFG_USE_SEMAPHORES);
|
||||
test_println("");
|
||||
|
@ -220,6 +226,9 @@ static void nil_test_001_003_execute(void) {
|
|||
test_print("--- CH_CFG_FACTORY_OBJ_FIFOS: ");
|
||||
test_printn(CH_CFG_FACTORY_OBJ_FIFOS);
|
||||
test_println("");
|
||||
test_print("--- CH_CFG_USE_PIPES: ");
|
||||
test_printn(CH_CFG_USE_PIPES);
|
||||
test_println("");
|
||||
test_print("--- CH_DBG_STATISTICS: ");
|
||||
test_printn(CH_DBG_STATISTICS);
|
||||
test_println("");
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -39,11 +39,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS 1
|
||||
#define CH_CFG_MAX_THREADS 4
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS TRUE
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -87,6 +96,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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.
|
||||
|
@ -292,10 +310,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -311,6 +327,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -332,10 +354,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -30,11 +30,10 @@ static THD_FUNCTION(Thread1, arg) {
|
|||
}
|
||||
|
||||
/*
|
||||
* Threads static table, one entry per thread. The number of entries must
|
||||
* match NIL_CFG_NUM_THREADS.
|
||||
* Threads creation table, one entry per thread.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "sleeper", Thread1, NULL)
|
||||
THD_TABLE_THREAD(0, "sleeper", waThread1, Thread1, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
#define CHCONF_H
|
||||
|
||||
#define _CHIBIOS_NIL_CONF_
|
||||
#define _CHIBIOS_NIL_CONF_VER_3_2_
|
||||
#define _CHIBIOS_NIL_CONF_VER_4_0_
|
||||
|
||||
/*===========================================================================*/
|
||||
/**
|
||||
|
@ -50,11 +50,20 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of user threads in the application.
|
||||
* @brief Maximum number of user threads in the application.
|
||||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
* implicitly handled.
|
||||
* @note Set this value to be exactly equal to the number of threads you
|
||||
* will use or you would be wasting RAM and cycles.
|
||||
* @note This values also defines the number of available priorities
|
||||
* (0..CH_CFG_MAX_THREADS-1).
|
||||
*/
|
||||
#define CH_CFG_NUM_THREADS ${doc.CH_CFG_NUM_THREADS!"1"}
|
||||
#define CH_CFG_MAX_THREADS ${doc.CH_CFG_MAX_THREADS!"4"}
|
||||
|
||||
/**
|
||||
* @brief Auto starts threads when @p chSysInit() is invoked.
|
||||
*/
|
||||
#define CH_CFG_AUTOSTART_THREADS ${doc.CH_CFG_AUTOSTART_THREADS!"TRUE"}
|
||||
|
||||
/** @} */
|
||||
|
||||
|
@ -98,6 +107,15 @@
|
|||
*/
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @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 ${doc.CH_CFG_USE_WAITEXIT!"TRUE"}
|
||||
|
||||
/**
|
||||
* @brief Semaphores APIs.
|
||||
* @details If enabled then the Semaphores APIs are included in the kernel.
|
||||
|
@ -303,10 +321,8 @@
|
|||
/**
|
||||
* @brief System initialization hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_INIT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_INIT_HOOK() { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Threads descriptor structure extension.
|
||||
|
@ -322,6 +338,12 @@
|
|||
/* Add custom 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) {}
|
||||
|
||||
/**
|
||||
* @brief Idle thread enter hook.
|
||||
* @note This hook is invoked within a critical zone, no OS functions
|
||||
|
@ -343,10 +365,8 @@
|
|||
/**
|
||||
* @brief System halt hook.
|
||||
*/
|
||||
#if !defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
|
||||
#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
Loading…
Reference in New Issue