Release 6.1.5

This commit is contained in:
Yuxin Zhou
2021-03-05 05:38:33 +00:00
parent 32e3b3b25f
commit 10a7932b9d
184 changed files with 15541 additions and 1830 deletions

View File

@@ -26,7 +26,7 @@
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* tx_api.h PORTABLE C */ /* tx_api.h PORTABLE C */
/* 6.1.3 */ /* 6.1.5 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* William E. Lamie, Microsoft Corporation */ /* William E. Lamie, Microsoft Corporation */
@@ -43,24 +43,29 @@
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 05-19-2020 William E. Lamie Initial Version 6.0 */ /* 05-19-2020 William E. Lamie Initial Version 6.0 */
/* 09-30-2020 William E. Lamie Modified comment(s), and */ /* 09-30-2020 William E. Lamie Modified comment(s), and */
/* updated product constants, */ /* updated product constants, */
/* added new thread execution */ /* added new thread execution */
/* state TX_PRIORITY_CHANGE, */ /* state TX_PRIORITY_CHANGE, */
/* added macros for casting */ /* added macros for casting */
/* pointers to ALIGN_TYPE, */ /* pointers to ALIGN_TYPE, */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 10-16-2020 William E. Lamie Modified comment(s), and */ /* 10-16-2020 William E. Lamie Modified comment(s), and */
/* increased patch version, */ /* increased patch version, */
/* resulting in version 6.1.1 */ /* resulting in version 6.1.1 */
/* 11-09-2020 Yuxin Zhou Modified comment(s), and */ /* 11-09-2020 Yuxin Zhou Modified comment(s), and */
/* moved TX_THREAD_GET_SYSTEM_ */ /* moved TX_THREAD_GET_SYSTEM_ */
/* STATE to tx_api.h, */ /* STATE to tx_api.h, */
/* resulting in version 6.1.2 */ /* resulting in version 6.1.2 */
/* 12-31-2020 William E. Lamie Modified comment(s), and */ /* 12-31-2020 William E. Lamie Modified comment(s), and */
/* increased patch version, */ /* increased patch version, */
/* resulting in version 6.1.3 */ /* resulting in version 6.1.3 */
/* 03-02-2021 Scott Larson Modified comment(s), and */
/* order defines numerically, */
/* add option to remove FileX */
/* pointer, */
/* resulting in version 6.1.5 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@@ -93,7 +98,7 @@ extern "C" {
#define AZURE_RTOS_THREADX #define AZURE_RTOS_THREADX
#define THREADX_MAJOR_VERSION 6 #define THREADX_MAJOR_VERSION 6
#define THREADX_MINOR_VERSION 1 #define THREADX_MINOR_VERSION 1
#define THREADX_PATCH_VERSION 3 #define THREADX_PATCH_VERSION 5
/* Define the following symbol for backward compatibility */ /* Define the following symbol for backward compatibility */
#define EL_PRODUCT_THREADX #define EL_PRODUCT_THREADX
@@ -154,7 +159,6 @@ extern "C" {
#define TX_SUCCESS ((UINT) 0x00) #define TX_SUCCESS ((UINT) 0x00)
#define TX_DELETED ((UINT) 0x01) #define TX_DELETED ((UINT) 0x01)
#define TX_NO_MEMORY ((UINT) 0x10)
#define TX_POOL_ERROR ((UINT) 0x02) #define TX_POOL_ERROR ((UINT) 0x02)
#define TX_PTR_ERROR ((UINT) 0x03) #define TX_PTR_ERROR ((UINT) 0x03)
#define TX_WAIT_ERROR ((UINT) 0x04) #define TX_WAIT_ERROR ((UINT) 0x04)
@@ -169,6 +173,7 @@ extern "C" {
#define TX_NO_INSTANCE ((UINT) 0x0D) #define TX_NO_INSTANCE ((UINT) 0x0D)
#define TX_THREAD_ERROR ((UINT) 0x0E) #define TX_THREAD_ERROR ((UINT) 0x0E)
#define TX_PRIORITY_ERROR ((UINT) 0x0F) #define TX_PRIORITY_ERROR ((UINT) 0x0F)
#define TX_NO_MEMORY ((UINT) 0x10)
#define TX_START_ERROR ((UINT) 0x10) #define TX_START_ERROR ((UINT) 0x10)
#define TX_DELETE_ERROR ((UINT) 0x11) #define TX_DELETE_ERROR ((UINT) 0x11)
#define TX_RESUME_ERROR ((UINT) 0x12) #define TX_RESUME_ERROR ((UINT) 0x12)
@@ -422,8 +427,10 @@ typedef struct TX_THREAD_STRUCT
TX_THREAD_EXTENSION_2 TX_THREAD_EXTENSION_2
/* Define a pointer type for FileX extensions. */ /* Define a pointer type for FileX extensions. */
#ifndef TX_NO_FILEX_POINTER
VOID *tx_thread_filex_ptr; VOID *tx_thread_filex_ptr;
#endif
/* Define the priority inheritance variables. These will be used /* Define the priority inheritance variables. These will be used
to manage priority inheritance changes applied to this thread to manage priority inheritance changes applied to this thread
as a result of mutex get operations. */ as a result of mutex get operations. */
@@ -1092,7 +1099,6 @@ UINT _tx_trace_interrupt_control(UINT new_posture);
#ifdef TX_ENABLE_MULTI_ERROR_CHECKING #ifdef TX_ENABLE_MULTI_ERROR_CHECKING
/* Services with MULTI runtime error checking ThreadX. */ /* Services with MULTI runtime error checking ThreadX. */
#define tx_block_allocate _txr_block_allocate #define tx_block_allocate _txr_block_allocate
@@ -1790,7 +1796,6 @@ VOID _tx_misra_user_timer_pointer_get(TX_TIMER_INTERNAL *inte
VOID _tx_misra_thread_stack_check(TX_THREAD *thread_ptr, VOID **highest_stack); VOID _tx_misra_thread_stack_check(TX_THREAD *thread_ptr, VOID **highest_stack);
VOID _tx_misra_trace_event_insert(ULONG event_id, VOID *info_field_1, ULONG info_field_2, ULONG info_field_3, ULONG info_field_4, ULONG filter, ULONG time_stamp); VOID _tx_misra_trace_event_insert(ULONG event_id, VOID *info_field_1, ULONG info_field_2, ULONG info_field_3, ULONG info_field_4, ULONG filter, ULONG time_stamp);
UINT _tx_misra_always_true(void); UINT _tx_misra_always_true(void);
UCHAR **_tx_misra_indirect_void_to_uchar_pointer_convert(VOID **pointer); UCHAR **_tx_misra_indirect_void_to_uchar_pointer_convert(VOID **pointer);
UCHAR **_tx_misra_uchar_to_indirect_uchar_pointer_convert(UCHAR *pointer); UCHAR **_tx_misra_uchar_to_indirect_uchar_pointer_convert(UCHAR *pointer);
UCHAR *_tx_misra_block_pool_to_uchar_pointer_convert(TX_BLOCK_POOL *pool); UCHAR *_tx_misra_block_pool_to_uchar_pointer_convert(TX_BLOCK_POOL *pool);
@@ -1823,7 +1828,6 @@ VOID _tx_misra_semaphore_put_notify_not_used(VOID (*semaphore
VOID _tx_misra_thread_not_used(TX_THREAD *thread_ptr); VOID _tx_misra_thread_not_used(TX_THREAD *thread_ptr);
VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*thread_entry_exit_notify)(TX_THREAD *notify_thread_ptr, UINT id)); VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*thread_entry_exit_notify)(TX_THREAD *notify_thread_ptr, UINT id));
#define TX_MEMSET(a,b,c) _tx_misra_memset((a), (UINT) (b), (UINT) (c)) #define TX_MEMSET(a,b,c) _tx_misra_memset((a), (UINT) (b), (UINT) (c))
#define TX_UCHAR_POINTER_ADD(a,b) _tx_misra_uchar_pointer_add((UCHAR *) (a), (ULONG) (b)) #define TX_UCHAR_POINTER_ADD(a,b) _tx_misra_uchar_pointer_add((UCHAR *) (a), (ULONG) (b))
#define TX_UCHAR_POINTER_SUB(a,b) _tx_misra_uchar_pointer_sub((UCHAR *) (a), (ULONG) (b)) #define TX_UCHAR_POINTER_SUB(a,b) _tx_misra_uchar_pointer_sub((UCHAR *) (a), (ULONG) (b))
@@ -1842,8 +1846,6 @@ VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*threa
#define TX_TRACE_IN_LINE_INSERT(i,a,b,c,d,e) _tx_misra_trace_event_insert((ULONG) (i), (VOID *) (a), (ULONG) (b), (ULONG) (c), (ULONG) (d), (ULONG) (e), ((ULONG) TX_TRACE_TIME_SOURCE)); #define TX_TRACE_IN_LINE_INSERT(i,a,b,c,d,e) _tx_misra_trace_event_insert((ULONG) (i), (VOID *) (a), (ULONG) (b), (ULONG) (c), (ULONG) (d), (ULONG) (e), ((ULONG) TX_TRACE_TIME_SOURCE));
#endif #endif
#define TX_LOOP_FOREVER (_tx_misra_always_true() == TX_TRUE) #define TX_LOOP_FOREVER (_tx_misra_always_true() == TX_TRUE)
#define TX_INDIRECT_VOID_TO_UCHAR_POINTER_CONVERT(a) _tx_misra_indirect_void_to_uchar_pointer_convert((a)) #define TX_INDIRECT_VOID_TO_UCHAR_POINTER_CONVERT(a) _tx_misra_indirect_void_to_uchar_pointer_convert((a))
#define TX_UCHAR_TO_INDIRECT_UCHAR_POINTER_CONVERT(a) _tx_misra_uchar_to_indirect_uchar_pointer_convert((a)) #define TX_UCHAR_TO_INDIRECT_UCHAR_POINTER_CONVERT(a) _tx_misra_uchar_to_indirect_uchar_pointer_convert((a))
#define TX_BLOCK_POOL_TO_UCHAR_POINTER_CONVERT(a) _tx_misra_block_pool_to_uchar_pointer_convert((a)) #define TX_BLOCK_POOL_TO_UCHAR_POINTER_CONVERT(a) _tx_misra_block_pool_to_uchar_pointer_convert((a))
@@ -1879,7 +1881,6 @@ VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*threa
#define TX_THREAD_NOT_USED(a) _tx_misra_thread_not_used((a)) #define TX_THREAD_NOT_USED(a) _tx_misra_thread_not_used((a))
#define TX_THREAD_ENTRY_EXIT_NOTIFY_NOT_USED(a) _tx_misra_thread_entry_exit_notify_not_used((a)) #define TX_THREAD_ENTRY_EXIT_NOTIFY_NOT_USED(a) _tx_misra_thread_entry_exit_notify_not_used((a))
#else #else
/* Define the TX_MEMSET macro to the standard library function, if not already defined. */ /* Define the TX_MEMSET macro to the standard library function, if not already defined. */
@@ -1908,8 +1909,6 @@ VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*threa
(b) = (TX_TIMER *) working_ptr; \ (b) = (TX_TIMER *) working_ptr; \
} }
#define TX_LOOP_FOREVER ((UINT) 1) #define TX_LOOP_FOREVER ((UINT) 1)
#define TX_INDIRECT_VOID_TO_UCHAR_POINTER_CONVERT(a) ((UCHAR **) ((VOID *) (a))) #define TX_INDIRECT_VOID_TO_UCHAR_POINTER_CONVERT(a) ((UCHAR **) ((VOID *) (a)))
#define TX_UCHAR_TO_INDIRECT_UCHAR_POINTER_CONVERT(a) ((UCHAR **) ((VOID *) (a))) #define TX_UCHAR_TO_INDIRECT_UCHAR_POINTER_CONVERT(a) ((UCHAR **) ((VOID *) (a)))
#define TX_BLOCK_POOL_TO_UCHAR_POINTER_CONVERT(a) ((UCHAR *) ((VOID *) (a))) #define TX_BLOCK_POOL_TO_UCHAR_POINTER_CONVERT(a) ((UCHAR *) ((VOID *) (a)))

View File

@@ -26,7 +26,7 @@
/* PORT SPECIFIC C INFORMATION RELEASE */ /* PORT SPECIFIC C INFORMATION RELEASE */
/* */ /* */
/* tx_user.h PORTABLE C */ /* tx_user.h PORTABLE C */
/* 6.1 */ /* 6.1.5 */
/* */ /* */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
@@ -44,9 +44,13 @@
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 05-19-2020 William E. Lamie Initial Version 6.0 */ /* 05-19-2020 William E. Lamie Initial Version 6.0 */
/* 09-30-2020 Yuxin Zhou Modified comment(s), */ /* 09-30-2020 Yuxin Zhou Modified comment(s), */
/* resulting in version 6.1 */ /* resulting in version 6.1 */
/* 03-02-2021 Scott Larson Modified comment(s), */
/* added option to remove */
/* FileX pointer, */
/* resulting in version 6.1.5 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@@ -76,6 +80,7 @@
TX_DISABLE_PREEMPTION_THRESHOLD TX_DISABLE_PREEMPTION_THRESHOLD
TX_DISABLE_REDUNDANT_CLEARING TX_DISABLE_REDUNDANT_CLEARING
TX_DISABLE_NOTIFY_CALLBACKS TX_DISABLE_NOTIFY_CALLBACKS
TX_NO_FILEX_POINTER
TX_NOT_INTERRUPTABLE TX_NOT_INTERRUPTABLE
TX_TIMER_PROCESS_IN_ISR TX_TIMER_PROCESS_IN_ISR
@@ -98,6 +103,16 @@
#define TX_TIMER_THREAD_PRIORITY ???? #define TX_TIMER_THREAD_PRIORITY ????
*/ */
/* Determine if there is a FileX pointer in the thread control block.
By default, the pointer is there for legacy/backwards compatibility.
The pointer must also be there for applications using FileX.
Define this to save space in the thread control block.
*/
/*
#define TX_NO_FILEX_POINTER
*/
/* Determine if timer expirations (application timers, timeouts, and tx_thread_sleep calls /* Determine if timer expirations (application timers, timeouts, and tx_thread_sleep calls
should be processed within the a system timer thread or directly in the timer ISR. should be processed within the a system timer thread or directly in the timer ISR.
By default, the timer thread is used. When the following is defined, the timer expiration By default, the timer thread is used. When the following is defined, the timer expiration

View File

@@ -60,7 +60,7 @@ extern UINT _txm_module_manager_usbx_stop(TXM_MODULE_INSTANCE *module_instance)
/* FUNCTION RELEASE */ /* FUNCTION RELEASE */
/* */ /* */
/* _txm_module_manager_stop PORTABLE C */ /* _txm_module_manager_stop PORTABLE C */
/* 6.1 */ /* 6.1.5 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* Scott Larson, Microsoft Corporation */ /* Scott Larson, Microsoft Corporation */
@@ -108,7 +108,10 @@ extern UINT _txm_module_manager_usbx_stop(TXM_MODULE_INSTANCE *module_instance)
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 09-30-2020 Scott Larson Initial Version 6.1 */ /* 09-30-2020 Scott Larson Initial Version 6.1 */
/* 03-02-2021 Scott Larson Modified comments, fix */
/* object delete underflow, */
/* resulting in version 6.1.5 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
UINT _txm_module_manager_stop(TXM_MODULE_INSTANCE *module_instance) UINT _txm_module_manager_stop(TXM_MODULE_INSTANCE *module_instance)
@@ -531,9 +534,8 @@ TXM_MODULE_ALLOCATED_OBJECT *object_ptr;
#endif #endif
/* Delete the allocated objects for this module. */ /* Delete the allocated objects for this module. */
while (module_instance -> txm_module_instance_object_list_count--) while (module_instance -> txm_module_instance_object_list_count != 0)
{ {
/* Pickup the current object pointer. */ /* Pickup the current object pointer. */
object_ptr = module_instance -> txm_module_instance_object_list_head; object_ptr = module_instance -> txm_module_instance_object_list_head;
@@ -542,6 +544,9 @@ TXM_MODULE_ALLOCATED_OBJECT *object_ptr;
/* Release the object. */ /* Release the object. */
_tx_byte_release((VOID *) object_ptr); _tx_byte_release((VOID *) object_ptr);
/* Decrement count. */
module_instance -> txm_module_instance_object_list_count--;
} }
/* Set the allocated list head pointer to NULL. */ /* Set the allocated list head pointer to NULL. */

View File

@@ -12,7 +12,7 @@
/**************************************************************************/ /**************************************************************************/
/**************************************************************************/ /**************************************************************************/
/** */ /** */
/** ThreadX Component */ /** ThreadX Component */
/** */ /** */
/** Application Interface (API) */ /** Application Interface (API) */
@@ -21,35 +21,40 @@
/**************************************************************************/ /**************************************************************************/
/**************************************************************************/ /**************************************************************************/
/* */ /* */
/* APPLICATION INTERFACE DEFINITION RELEASE */ /* APPLICATION INTERFACE DEFINITION RELEASE */
/* */ /* */
/* tx_api.h PORTABLE SMP */ /* tx_api.h PORTABLE SMP */
/* 6.1.3 */ /* 6.1.5 */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* William E. Lamie, Microsoft Corporation */ /* William E. Lamie, Microsoft Corporation */
/* */ /* */
/* DESCRIPTION */ /* DESCRIPTION */
/* */ /* */
/* This file defines the basic Application Interface (API) to the */ /* This file defines the basic Application Interface (API) to the */
/* high-performance ThreadX real-time kernel. All service prototypes */ /* high-performance ThreadX real-time kernel. All service prototypes */
/* and data structure definitions are defined in this file. */ /* and data structure definitions are defined in this file. */
/* Please note that basic data type definitions and other architecture-*/ /* Please note that basic data type definitions and other architecture-*/
/* specific information is contained in the file tx_port.h. */ /* specific information is contained in the file tx_port.h. */
/* */ /* */
/* RELEASE HISTORY */ /* RELEASE HISTORY */
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 09-30-2020 William E. Lamie Initial Version 6.1 */ /* 09-30-2020 William E. Lamie Initial Version 6.1 */
/* 10-16-2020 William E. Lamie Modified comment(s), and */ /* 10-16-2020 William E. Lamie Modified comment(s), and */
/* increased patch version, */ /* increased patch version, */
/* resulting in version 6.1.1 */ /* resulting in version 6.1.1 */
/* 12-31-2020 William E. Lamie Modified comment(s), and */ /* 12-31-2020 William E. Lamie Modified comment(s), and */
/* increased patch version, */ /* increased patch version, */
/* resulting in version 6.1.3 */ /* resulting in version 6.1.3 */
/* 03-02-2021 Scott Larson Modified comment(s), and */
/* order defines numerically, */
/* add option to remove FileX */
/* pointer, fix whitespace, */
/* resulting in version 6.1.5 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@@ -89,7 +94,7 @@ extern "C" {
#define AZURE_RTOS_THREADX #define AZURE_RTOS_THREADX
#define THREADX_MAJOR_VERSION 6 #define THREADX_MAJOR_VERSION 6
#define THREADX_MINOR_VERSION 1 #define THREADX_MINOR_VERSION 1
#define THREADX_PATCH_VERSION 3 #define THREADX_PATCH_VERSION 5
/* Define the following symbol for backward compatibility */ /* Define the following symbol for backward compatibility */
#define EL_PRODUCT_THREADX #define EL_PRODUCT_THREADX
@@ -132,7 +137,7 @@ extern "C" {
#define TX_READY ((UINT) 0) #define TX_READY ((UINT) 0)
#define TX_COMPLETED ((UINT) 1) #define TX_COMPLETED ((UINT) 1)
#define TX_TERMINATED ((UINT) 2) #define TX_TERMINATED ((UINT) 2)
#define TX_SUSPENDED ((UINT) 3) #define TX_SUSPENDED ((UINT) 3)
#define TX_SLEEP ((UINT) 4) #define TX_SLEEP ((UINT) 4)
#define TX_QUEUE_SUSP ((UINT) 5) #define TX_QUEUE_SUSP ((UINT) 5)
#define TX_SEMAPHORE_SUSP ((UINT) 6) #define TX_SEMAPHORE_SUSP ((UINT) 6)
@@ -150,7 +155,6 @@ extern "C" {
#define TX_SUCCESS ((UINT) 0x00) #define TX_SUCCESS ((UINT) 0x00)
#define TX_DELETED ((UINT) 0x01) #define TX_DELETED ((UINT) 0x01)
#define TX_NO_MEMORY ((UINT) 0x10)
#define TX_POOL_ERROR ((UINT) 0x02) #define TX_POOL_ERROR ((UINT) 0x02)
#define TX_PTR_ERROR ((UINT) 0x03) #define TX_PTR_ERROR ((UINT) 0x03)
#define TX_WAIT_ERROR ((UINT) 0x04) #define TX_WAIT_ERROR ((UINT) 0x04)
@@ -165,6 +169,7 @@ extern "C" {
#define TX_NO_INSTANCE ((UINT) 0x0D) #define TX_NO_INSTANCE ((UINT) 0x0D)
#define TX_THREAD_ERROR ((UINT) 0x0E) #define TX_THREAD_ERROR ((UINT) 0x0E)
#define TX_PRIORITY_ERROR ((UINT) 0x0F) #define TX_PRIORITY_ERROR ((UINT) 0x0F)
#define TX_NO_MEMORY ((UINT) 0x10)
#define TX_START_ERROR ((UINT) 0x10) #define TX_START_ERROR ((UINT) 0x10)
#define TX_DELETE_ERROR ((UINT) 0x11) #define TX_DELETE_ERROR ((UINT) 0x11)
#define TX_RESUME_ERROR ((UINT) 0x12) #define TX_RESUME_ERROR ((UINT) 0x12)
@@ -191,7 +196,7 @@ extern "C" {
value is 10ms, but may be replaced by a port specific version in tx_port.h or by the user value is 10ms, but may be replaced by a port specific version in tx_port.h or by the user
as a compilation option. */ as a compilation option. */
#ifndef TX_TIMER_TICKS_PER_SECOND #ifndef TX_TIMER_TICKS_PER_SECOND
#define TX_TIMER_TICKS_PER_SECOND ((ULONG) 100) #define TX_TIMER_TICKS_PER_SECOND ((ULONG) 100)
#endif #endif
@@ -208,25 +213,25 @@ extern "C" {
TX_TRACE_USER_EVENT_START and TX_TRACE_USER_EVENT_END, respectively. User events should be based TX_TRACE_USER_EVENT_START and TX_TRACE_USER_EVENT_END, respectively. User events should be based
on these constants in case the user event number assignment is changed in future releases. */ on these constants in case the user event number assignment is changed in future releases. */
#define TX_TRACE_USER_EVENT_START 4096 /* I1, I2, I3, I4 are user defined */ #define TX_TRACE_USER_EVENT_START 4096 /* I1, I2, I3, I4 are user defined */
#define TX_TRACE_USER_EVENT_END 65535 /* I1, I2, I3, I4 are user defined */ #define TX_TRACE_USER_EVENT_END 65535 /* I1, I2, I3, I4 are user defined */
/* Define event filters that can be used to selectively disable certain events or groups of events. */ /* Define event filters that can be used to selectively disable certain events or groups of events. */
#define TX_TRACE_ALL_EVENTS 0x000007FF /* All ThreadX events */ #define TX_TRACE_ALL_EVENTS 0x000007FF /* All ThreadX events */
#define TX_TRACE_INTERNAL_EVENTS 0x00000001 /* ThreadX internal events */ #define TX_TRACE_INTERNAL_EVENTS 0x00000001 /* ThreadX internal events */
#define TX_TRACE_BLOCK_POOL_EVENTS 0x00000002 /* ThreadX Block Pool events */ #define TX_TRACE_BLOCK_POOL_EVENTS 0x00000002 /* ThreadX Block Pool events */
#define TX_TRACE_BYTE_POOL_EVENTS 0x00000004 /* ThreadX Byte Pool events */ #define TX_TRACE_BYTE_POOL_EVENTS 0x00000004 /* ThreadX Byte Pool events */
#define TX_TRACE_EVENT_FLAGS_EVENTS 0x00000008 /* ThreadX Event Flags events */ #define TX_TRACE_EVENT_FLAGS_EVENTS 0x00000008 /* ThreadX Event Flags events */
#define TX_TRACE_INTERRUPT_CONTROL_EVENT 0x00000010 /* ThreadX Interrupt Control events */ #define TX_TRACE_INTERRUPT_CONTROL_EVENT 0x00000010 /* ThreadX Interrupt Control events */
#define TX_TRACE_MUTEX_EVENTS 0x00000020 /* ThreadX Mutex events */ #define TX_TRACE_MUTEX_EVENTS 0x00000020 /* ThreadX Mutex events */
#define TX_TRACE_QUEUE_EVENTS 0x00000040 /* ThreadX Queue events */ #define TX_TRACE_QUEUE_EVENTS 0x00000040 /* ThreadX Queue events */
#define TX_TRACE_SEMAPHORE_EVENTS 0x00000080 /* ThreadX Semaphore events */ #define TX_TRACE_SEMAPHORE_EVENTS 0x00000080 /* ThreadX Semaphore events */
#define TX_TRACE_THREAD_EVENTS 0x00000100 /* ThreadX Thread events */ #define TX_TRACE_THREAD_EVENTS 0x00000100 /* ThreadX Thread events */
#define TX_TRACE_TIME_EVENTS 0x00000200 /* ThreadX Time events */ #define TX_TRACE_TIME_EVENTS 0x00000200 /* ThreadX Time events */
#define TX_TRACE_TIMER_EVENTS 0x00000400 /* ThreadX Timer events */ #define TX_TRACE_TIMER_EVENTS 0x00000400 /* ThreadX Timer events */
#define TX_TRACE_USER_EVENTS 0x80000000UL /* ThreadX User Events */ #define TX_TRACE_USER_EVENTS 0x80000000UL /* ThreadX User Events */
/* Define basic alignment type used in block and byte pool operations. This data type must /* Define basic alignment type used in block and byte pool operations. This data type must
@@ -312,7 +317,7 @@ typedef struct TX_TIMER_STRUCT
TX_TIMER_INTERNAL tx_timer_internal; TX_TIMER_INTERNAL tx_timer_internal;
/* Define the pointers for the created list. */ /* Define the pointers for the created list. */
struct TX_TIMER_STRUCT struct TX_TIMER_STRUCT
*tx_timer_created_next, *tx_timer_created_next,
*tx_timer_created_previous; *tx_timer_created_previous;
@@ -368,12 +373,12 @@ typedef struct TX_THREAD_STRUCT
ULONG tx_thread_time_slice; /* Current time-slice */ ULONG tx_thread_time_slice; /* Current time-slice */
ULONG tx_thread_new_time_slice; /* New time-slice */ ULONG tx_thread_new_time_slice; /* New time-slice */
/* Define pointers to the next and previous ready threads. */ /* Define pointers to the next and previous ready threads. */
struct TX_THREAD_STRUCT struct TX_THREAD_STRUCT
*tx_thread_ready_next, *tx_thread_ready_next,
*tx_thread_ready_previous; *tx_thread_ready_previous;
/***************************************************************/ /***************************************************************/
/* Define the first port extension in the thread control block. This /* Define the first port extension in the thread control block. This
is typically defined to whitespace or a pointer type in tx_port.h. */ is typically defined to whitespace or a pointer type in tx_port.h. */
@@ -424,8 +429,8 @@ typedef struct TX_THREAD_STRUCT
/* Define pointers to the next and previous threads in the /* Define pointers to the next and previous threads in the
created list. */ created list. */
struct TX_THREAD_STRUCT struct TX_THREAD_STRUCT
*tx_thread_created_next, *tx_thread_created_next,
*tx_thread_created_previous; *tx_thread_created_previous;
/************* Define ThreadX SMP thread control block extensions. *************/ /************* Define ThreadX SMP thread control block extensions. *************/
@@ -449,13 +454,15 @@ typedef struct TX_THREAD_STRUCT
/************* End of ThreadX SMP thread control block extensions. *************/ /************* End of ThreadX SMP thread control block extensions. *************/
/* Define a pointer type for FileX extensions. */ /* Define a pointer type for FileX extensions. */
#ifndef TX_NO_FILEX_POINTER
VOID *tx_thread_filex_ptr; VOID *tx_thread_filex_ptr;
#endif
/* Define the priority inheritance variables. These will be used /* Define the priority inheritance variables. These will be used
to manage priority inheritance changes applied to this thread to manage priority inheritance changes applied to this thread
as a result of mutex get operations. */ as a result of mutex get operations. */
UINT tx_thread_user_priority; UINT tx_thread_user_priority;
UINT tx_thread_user_preempt_threshold; UINT tx_thread_user_preempt_threshold;
UINT tx_thread_inherit_priority; UINT tx_thread_inherit_priority;
/* Define the owned mutex count and list head pointer. */ /* Define the owned mutex count and list head pointer. */
@@ -483,7 +490,7 @@ typedef struct TX_THREAD_STRUCT
ULONG tx_thread_performance_priority_inversion_count; ULONG tx_thread_performance_priority_inversion_count;
/* Define the last thread pointer to preempt this thread. */ /* Define the last thread pointer to preempt this thread. */
struct TX_THREAD_STRUCT struct TX_THREAD_STRUCT
*tx_thread_performance_last_preempting_thread; *tx_thread_performance_last_preempting_thread;
/* Define the total number of times this thread was time-sliced. */ /* Define the total number of times this thread was time-sliced. */
@@ -559,13 +566,13 @@ typedef struct TX_BLOCK_POOL_STRUCT
/* Define the block pool suspension list head along with a count of /* Define the block pool suspension list head along with a count of
how many threads are suspended. */ how many threads are suspended. */
struct TX_THREAD_STRUCT struct TX_THREAD_STRUCT
*tx_block_pool_suspension_list; *tx_block_pool_suspension_list;
UINT tx_block_pool_suspended_count; UINT tx_block_pool_suspended_count;
/* Define the created list next and previous pointers. */ /* Define the created list next and previous pointers. */
struct TX_BLOCK_POOL_STRUCT struct TX_BLOCK_POOL_STRUCT
*tx_block_pool_created_next, *tx_block_pool_created_next,
*tx_block_pool_created_previous; *tx_block_pool_created_previous;
#ifdef TX_BLOCK_POOL_ENABLE_PERFORMANCE_INFO #ifdef TX_BLOCK_POOL_ENABLE_PERFORMANCE_INFO
@@ -639,18 +646,18 @@ typedef struct TX_BYTE_POOL_STRUCT
/* This is used to mark the owner of the byte memory pool during /* This is used to mark the owner of the byte memory pool during
a search. If this value changes during the search, the local search a search. If this value changes during the search, the local search
pointer must be reset. */ pointer must be reset. */
struct TX_THREAD_STRUCT struct TX_THREAD_STRUCT
*tx_byte_pool_owner; *tx_byte_pool_owner;
/* Define the byte pool suspension list head along with a count of /* Define the byte pool suspension list head along with a count of
how many threads are suspended. */ how many threads are suspended. */
struct TX_THREAD_STRUCT struct TX_THREAD_STRUCT
*tx_byte_pool_suspension_list; *tx_byte_pool_suspension_list;
UINT tx_byte_pool_suspended_count; UINT tx_byte_pool_suspended_count;
/* Define the created list next and previous pointers. */ /* Define the created list next and previous pointers. */
struct TX_BYTE_POOL_STRUCT struct TX_BYTE_POOL_STRUCT
*tx_byte_pool_created_next, *tx_byte_pool_created_next,
*tx_byte_pool_created_previous; *tx_byte_pool_created_previous;
#ifdef TX_BYTE_POOL_ENABLE_PERFORMANCE_INFO #ifdef TX_BYTE_POOL_ENABLE_PERFORMANCE_INFO
@@ -706,13 +713,13 @@ typedef struct TX_EVENT_FLAGS_GROUP_STRUCT
/* Define the event flags group suspension list head along with a count of /* Define the event flags group suspension list head along with a count of
how many threads are suspended. */ how many threads are suspended. */
struct TX_THREAD_STRUCT struct TX_THREAD_STRUCT
*tx_event_flags_group_suspension_list; *tx_event_flags_group_suspension_list;
UINT tx_event_flags_group_suspended_count; UINT tx_event_flags_group_suspended_count;
/* Define the created list next and previous pointers. */ /* Define the created list next and previous pointers. */
struct TX_EVENT_FLAGS_GROUP_STRUCT struct TX_EVENT_FLAGS_GROUP_STRUCT
*tx_event_flags_group_created_next, *tx_event_flags_group_created_next,
*tx_event_flags_group_created_previous; *tx_event_flags_group_created_previous;
/* Define the delayed clearing event flags. */ /* Define the delayed clearing event flags. */
@@ -798,13 +805,13 @@ typedef struct TX_MUTEX_STRUCT
/* Define the mutex suspension list head along with a count of /* Define the mutex suspension list head along with a count of
how many threads are suspended. */ how many threads are suspended. */
struct TX_THREAD_STRUCT struct TX_THREAD_STRUCT
*tx_mutex_suspension_list; *tx_mutex_suspension_list;
UINT tx_mutex_suspended_count; UINT tx_mutex_suspended_count;
/* Define the created list next and previous pointers. */ /* Define the created list next and previous pointers. */
struct TX_MUTEX_STRUCT struct TX_MUTEX_STRUCT
*tx_mutex_created_next, *tx_mutex_created_next,
*tx_mutex_created_previous; *tx_mutex_created_previous;
/* Define the priority of the highest priority thread waiting for /* Define the priority of the highest priority thread waiting for
@@ -812,8 +819,8 @@ typedef struct TX_MUTEX_STRUCT
UINT tx_mutex_highest_priority_waiting; UINT tx_mutex_highest_priority_waiting;
/* Define the owned list next and previous pointers. */ /* Define the owned list next and previous pointers. */
struct TX_MUTEX_STRUCT struct TX_MUTEX_STRUCT
*tx_mutex_owned_next, *tx_mutex_owned_next,
*tx_mutex_owned_previous; *tx_mutex_owned_previous;
#ifdef TX_MUTEX_ENABLE_PERFORMANCE_INFO #ifdef TX_MUTEX_ENABLE_PERFORMANCE_INFO
@@ -878,13 +885,13 @@ typedef struct TX_QUEUE_STRUCT
/* Define the queue suspension list head along with a count of /* Define the queue suspension list head along with a count of
how many threads are suspended. */ how many threads are suspended. */
struct TX_THREAD_STRUCT struct TX_THREAD_STRUCT
*tx_queue_suspension_list; *tx_queue_suspension_list;
UINT tx_queue_suspended_count; UINT tx_queue_suspended_count;
/* Define the created list next and previous pointers. */ /* Define the created list next and previous pointers. */
struct TX_QUEUE_STRUCT struct TX_QUEUE_STRUCT
*tx_queue_created_next, *tx_queue_created_next,
*tx_queue_created_previous; *tx_queue_created_previous;
#ifdef TX_QUEUE_ENABLE_PERFORMANCE_INFO #ifdef TX_QUEUE_ENABLE_PERFORMANCE_INFO
@@ -940,13 +947,13 @@ typedef struct TX_SEMAPHORE_STRUCT
/* Define the semaphore suspension list head along with a count of /* Define the semaphore suspension list head along with a count of
how many threads are suspended. */ how many threads are suspended. */
struct TX_THREAD_STRUCT struct TX_THREAD_STRUCT
*tx_semaphore_suspension_list; *tx_semaphore_suspension_list;
UINT tx_semaphore_suspended_count; UINT tx_semaphore_suspended_count;
/* Define the created list next and previous pointers. */ /* Define the created list next and previous pointers. */
struct TX_SEMAPHORE_STRUCT struct TX_SEMAPHORE_STRUCT
*tx_semaphore_created_next, *tx_semaphore_created_next,
*tx_semaphore_created_previous; *tx_semaphore_created_previous;
#ifdef TX_SEMAPHORE_ENABLE_PERFORMANCE_INFO #ifdef TX_SEMAPHORE_ENABLE_PERFORMANCE_INFO
@@ -1184,7 +1191,6 @@ UINT _tx_el_interrupt_control(UINT new_posture);
#ifdef TX_ENABLE_MULTI_ERROR_CHECKING #ifdef TX_ENABLE_MULTI_ERROR_CHECKING
/* Services with MULTI runtime error checking ThreadX. */ /* Services with MULTI runtime error checking ThreadX. */
#define tx_block_allocate _txr_block_allocate #define tx_block_allocate _txr_block_allocate
@@ -1742,7 +1748,6 @@ UINT _tx_trace_user_event_insert(ULONG event_id, ULONG info_field_1, ULON
UINT _tx_trace_interrupt_control(UINT new_posture); UINT _tx_trace_interrupt_control(UINT new_posture);
/* Add a default macro that can be re-defined in tx_port.h to add default processing when a thread starts. Common usage /* Add a default macro that can be re-defined in tx_port.h to add default processing when a thread starts. Common usage
would be for enabling floating point for a thread by default, however, the additional processing could be anything would be for enabling floating point for a thread by default, however, the additional processing could be anything
defined in tx_port.h. */ defined in tx_port.h. */
@@ -1790,15 +1795,15 @@ VOID _tx_misra_user_timer_pointer_get(TX_TIMER_INTERNAL *inte
VOID _tx_misra_thread_stack_check(TX_THREAD *thread_ptr, VOID **highest_stack); VOID _tx_misra_thread_stack_check(TX_THREAD *thread_ptr, VOID **highest_stack);
VOID _tx_misra_trace_event_insert(ULONG event_id, VOID *info_field_1, ULONG info_field_2, ULONG info_field_3, ULONG info_field_4, ULONG filter, ULONG time_stamp); VOID _tx_misra_trace_event_insert(ULONG event_id, VOID *info_field_1, ULONG info_field_2, ULONG info_field_3, ULONG info_field_4, ULONG filter, ULONG time_stamp);
UINT _tx_misra_always_true(void); UINT _tx_misra_always_true(void);
UCHAR **_tx_misra_indirect_void_to_uchar_pointer_convert(VOID **pointer); UCHAR **_tx_misra_indirect_void_to_uchar_pointer_convert(VOID **pointer);
UCHAR **_tx_misra_uchar_to_indirect_uchar_pointer_convert(UCHAR *pointer); UCHAR **_tx_misra_uchar_to_indirect_uchar_pointer_convert(UCHAR *pointer);
UCHAR *_tx_misra_block_pool_to_uchar_pointer_convert(TX_BLOCK_POOL *pool); UCHAR *_tx_misra_block_pool_to_uchar_pointer_convert(TX_BLOCK_POOL *pool);
TX_BLOCK_POOL *_tx_misra_void_to_block_pool_pointer_convert(VOID *pointer); TX_BLOCK_POOL *_tx_misra_void_to_block_pool_pointer_convert(VOID *pointer);
UCHAR *_tx_misra_void_to_uchar_pointer_convert(VOID *pointer); UCHAR *_tx_misra_void_to_uchar_pointer_convert(VOID *pointer);
TX_BLOCK_POOL *_tx_misra_uchar_to_block_pool_pointer_convert(UCHAR *pointer); TX_BLOCK_POOL *_tx_misra_uchar_to_block_pool_pointer_convert(UCHAR *pointer);
UCHAR **_tx_misra_void_to_indirect_uchar_pointer_convert(VOID *pointer); UCHAR **_tx_misra_void_to_indirect_uchar_pointer_convert(VOID *pointer);
TX_BYTE_POOL *_tx_misra_void_to_byte_pool_pointer_convert(VOID *pointer); TX_BYTE_POOL *_tx_misra_void_to_byte_pool_pointer_convert(VOID *pointer);
UCHAR *_tx_misra_byte_pool_to_uchar_pointer_convert(TX_BYTE_POOL *pool); UCHAR *_tx_misra_byte_pool_to_uchar_pointer_convert(TX_BYTE_POOL *pool);
ALIGN_TYPE *_tx_misra_uchar_to_align_type_pointer_convert(UCHAR *pointer); ALIGN_TYPE *_tx_misra_uchar_to_align_type_pointer_convert(UCHAR *pointer);
TX_BYTE_POOL **_tx_misra_uchar_to_indirect_byte_pool_pointer_convert(UCHAR *pointer); TX_BYTE_POOL **_tx_misra_uchar_to_indirect_byte_pool_pointer_convert(UCHAR *pointer);
TX_EVENT_FLAGS_GROUP *_tx_misra_void_to_event_flags_pointer_convert(VOID *pointer); TX_EVENT_FLAGS_GROUP *_tx_misra_void_to_event_flags_pointer_convert(VOID *pointer);
@@ -1927,7 +1932,7 @@ VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*threa
#define TX_TIMER_INDIRECT_TO_VOID_POINTER_CONVERT(a) ((VOID *) (a)) #define TX_TIMER_INDIRECT_TO_VOID_POINTER_CONVERT(a) ((VOID *) (a))
#endif #endif
#ifndef TX_TIMER_INITIALIZE_EXTENSION #ifndef TX_TIMER_INITIALIZE_EXTENSION
#define TX_TIMER_INITIALIZE_EXTENSION(a) #define TX_TIMER_INITIALIZE_EXTENSION(a)
#endif #endif
#define TX_CONST_CHAR_TO_CHAR_POINTER_CONVERT(a) ((CHAR *) ((VOID *) (a))) #define TX_CONST_CHAR_TO_CHAR_POINTER_CONVERT(a) ((CHAR *) ((VOID *) (a)))
#define TX_VOID_TO_THREAD_POINTER_CONVERT(a) ((TX_THREAD *) ((VOID *) (a))) #define TX_VOID_TO_THREAD_POINTER_CONVERT(a) ((TX_THREAD *) ((VOID *) (a)))
@@ -2079,7 +2084,7 @@ VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*threa
#error "TX_THREAD_ENABLE_PERFORMANCE_INFO must not be defined." #error "TX_THREAD_ENABLE_PERFORMANCE_INFO must not be defined."
#endif #endif
/* Ensure timer performance info enable is not defined. */ /* Ensure timer performance info enable is not defined. */
#ifdef TX_TIMER_ENABLE_PERFORMANCE_INFO #ifdef TX_TIMER_ENABLE_PERFORMANCE_INFO
#error "TX_TIMER_ENABLE_PERFORMANCE_INFO must not be defined." #error "TX_TIMER_ENABLE_PERFORMANCE_INFO must not be defined."
#endif #endif

View File

@@ -12,7 +12,7 @@
/**************************************************************************/ /**************************************************************************/
/**************************************************************************/ /**************************************************************************/
/** */ /** */
/** ThreadX Component */ /** ThreadX Component */
/** */ /** */
/** User Specific */ /** User Specific */
@@ -21,30 +21,34 @@
/**************************************************************************/ /**************************************************************************/
/**************************************************************************/ /**************************************************************************/
/* */ /* */
/* PORT SPECIFIC C INFORMATION RELEASE */ /* PORT SPECIFIC C INFORMATION RELEASE */
/* */ /* */
/* tx_user.h PORTABLE C */ /* tx_user.h PORTABLE C */
/* 6.1 */ /* 6.1.5 */
/* */ /* */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* William E. Lamie, Microsoft Corporation */ /* William E. Lamie, Microsoft Corporation */
/* */ /* */
/* DESCRIPTION */ /* DESCRIPTION */
/* */ /* */
/* This file contains user defines for configuring ThreadX in specific */ /* This file contains user defines for configuring ThreadX in specific */
/* ways. This file will have an effect only if the application and */ /* ways. This file will have an effect only if the application and */
/* ThreadX library are built with TX_INCLUDE_USER_DEFINE_FILE defined. */ /* ThreadX library are built with TX_INCLUDE_USER_DEFINE_FILE defined. */
/* Note that all the defines in this file may also be made on the */ /* Note that all the defines in this file may also be made on the */
/* command line when building ThreadX library and application objects. */ /* command line when building ThreadX library and application objects. */
/* */ /* */
/* RELEASE HISTORY */ /* RELEASE HISTORY */
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 09-30-2020 William E. Lamie Initial Version 6.1 */ /* 09-30-2020 William E. Lamie Initial Version 6.1 */
/* 03-02-2021 Scott Larson Modified comment(s), */
/* added option to remove */
/* FileX pointer, */
/* resulting in version 6.1.5 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@@ -58,7 +62,7 @@
For maximum speed, the following should be defined: For maximum speed, the following should be defined:
TX_MAX_PRIORITIES 32 TX_MAX_PRIORITIES 32
TX_DISABLE_PREEMPTION_THRESHOLD TX_DISABLE_PREEMPTION_THRESHOLD
TX_DISABLE_REDUNDANT_CLEARING TX_DISABLE_REDUNDANT_CLEARING
TX_DISABLE_NOTIFY_CALLBACKS TX_DISABLE_NOTIFY_CALLBACKS
@@ -70,10 +74,11 @@
For minimum size, the following should be defined: For minimum size, the following should be defined:
TX_MAX_PRIORITIES 32 TX_MAX_PRIORITIES 32
TX_DISABLE_PREEMPTION_THRESHOLD TX_DISABLE_PREEMPTION_THRESHOLD
TX_DISABLE_REDUNDANT_CLEARING TX_DISABLE_REDUNDANT_CLEARING
TX_DISABLE_NOTIFY_CALLBACKS TX_DISABLE_NOTIFY_CALLBACKS
TX_NO_FILEX_POINTER
TX_NOT_INTERRUPTABLE TX_NOT_INTERRUPTABLE
TX_TIMER_PROCESS_IN_ISR TX_TIMER_PROCESS_IN_ISR
@@ -89,13 +94,23 @@
to tx_port.h for descriptions on each of these options. */ to tx_port.h for descriptions on each of these options. */
/* /*
#define TX_MAX_PRIORITIES 32 #define TX_MAX_PRIORITIES 32
#define TX_MINIMUM_STACK ???? #define TX_MINIMUM_STACK ????
#define TX_THREAD_USER_EXTENSION ???? #define TX_THREAD_USER_EXTENSION ????
#define TX_TIMER_THREAD_STACK_SIZE ???? #define TX_TIMER_THREAD_STACK_SIZE ????
#define TX_TIMER_THREAD_PRIORITY ???? #define TX_TIMER_THREAD_PRIORITY ????
*/ */
/* Determine if there is a FileX pointer in the thread control block.
By default, the pointer is there for legacy/backwards compatibility.
The pointer must also be there for applications using FileX.
Define this to save space in the thread control block.
*/
/*
#define TX_NO_FILEX_POINTER
*/
/* Determine if timer expirations (application timers, timeouts, and tx_thread_sleep calls /* Determine if timer expirations (application timers, timeouts, and tx_thread_sleep calls
should be processed within the a system timer thread or directly in the timer ISR. should be processed within the a system timer thread or directly in the timer ISR.
By default, the timer thread is used. When the following is defined, the timer expiration By default, the timer thread is used. When the following is defined, the timer expiration
@@ -109,10 +124,10 @@
/* Determine if in-line timer reactivation should be used within the timer expiration processing. /* Determine if in-line timer reactivation should be used within the timer expiration processing.
By default, this is disabled and a function call is used. When the following is defined, By default, this is disabled and a function call is used. When the following is defined,
reactivating is performed in-line resulting in faster timer processing but slightly larger reactivating is performed in-line resulting in faster timer processing but slightly larger
code size. */ code size. */
/* /*
#define TX_REACTIVATE_INLINE #define TX_REACTIVATE_INLINE
*/ */
/* Determine is stack filling is enabled. By default, ThreadX stack filling is enabled, /* Determine is stack filling is enabled. By default, ThreadX stack filling is enabled,
@@ -120,7 +135,7 @@
debuggers with ThreadX-awareness and by the ThreadX run-time stack checking feature. */ debuggers with ThreadX-awareness and by the ThreadX run-time stack checking feature. */
/* /*
#define TX_DISABLE_STACK_FILLING #define TX_DISABLE_STACK_FILLING
*/ */
/* Determine whether or not stack checking is enabled. By default, ThreadX stack checking is /* Determine whether or not stack checking is enabled. By default, ThreadX stack checking is
@@ -153,9 +168,9 @@
processing when not needed. The user will also have to comment out the call to processing when not needed. The user will also have to comment out the call to
tx_timer_interrupt, which is typically made from assembly language in tx_timer_interrupt, which is typically made from assembly language in
tx_initialize_low_level. Note: if TX_NO_TIMER is used, the define TX_TIMER_PROCESS_IN_ISR tx_initialize_low_level. Note: if TX_NO_TIMER is used, the define TX_TIMER_PROCESS_IN_ISR
must also be used. */ must also be used and tx_timer_initialize must be removed from ThreadX library. */
/* /*
#define TX_NO_TIMER #define TX_NO_TIMER
#ifndef TX_TIMER_PROCESS_IN_ISR #ifndef TX_TIMER_PROCESS_IN_ISR
#define TX_TIMER_PROCESS_IN_ISR #define TX_TIMER_PROCESS_IN_ISR

View File

@@ -0,0 +1,351 @@
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
SHELL = cmd.exe
CG_TOOL_ROOT := C:/ti/ccsv8/tools/compiler/ti-cgt-c6000_8.2.4
GEN_OPTS__FLAG :=
GEN_CMDS__FLAG :=
ORDERED_OBJS += \
"./tx_block_allocate.obj" \
"./tx_block_pool_cleanup.obj" \
"./tx_block_pool_create.obj" \
"./tx_block_pool_delete.obj" \
"./tx_block_pool_info_get.obj" \
"./tx_block_pool_initialize.obj" \
"./tx_block_pool_performance_info_get.obj" \
"./tx_block_pool_performance_system_info_get.obj" \
"./tx_block_pool_prioritize.obj" \
"./tx_block_release.obj" \
"./tx_byte_allocate.obj" \
"./tx_byte_pool_cleanup.obj" \
"./tx_byte_pool_create.obj" \
"./tx_byte_pool_delete.obj" \
"./tx_byte_pool_info_get.obj" \
"./tx_byte_pool_initialize.obj" \
"./tx_byte_pool_performance_info_get.obj" \
"./tx_byte_pool_performance_system_info_get.obj" \
"./tx_byte_pool_prioritize.obj" \
"./tx_byte_pool_search.obj" \
"./tx_byte_release.obj" \
"./tx_event_flags_cleanup.obj" \
"./tx_event_flags_create.obj" \
"./tx_event_flags_delete.obj" \
"./tx_event_flags_get.obj" \
"./tx_event_flags_info_get.obj" \
"./tx_event_flags_initialize.obj" \
"./tx_event_flags_performance_info_get.obj" \
"./tx_event_flags_performance_system_info_get.obj" \
"./tx_event_flags_set.obj" \
"./tx_event_flags_set_notify.obj" \
"./tx_initialize_high_level.obj" \
"./tx_initialize_kernel_enter.obj" \
"./tx_initialize_kernel_setup.obj" \
"./tx_mutex_cleanup.obj" \
"./tx_mutex_create.obj" \
"./tx_mutex_delete.obj" \
"./tx_mutex_get.obj" \
"./tx_mutex_info_get.obj" \
"./tx_mutex_initialize.obj" \
"./tx_mutex_performance_info_get.obj" \
"./tx_mutex_performance_system_info_get.obj" \
"./tx_mutex_prioritize.obj" \
"./tx_mutex_priority_change.obj" \
"./tx_mutex_put.obj" \
"./tx_queue_cleanup.obj" \
"./tx_queue_create.obj" \
"./tx_queue_delete.obj" \
"./tx_queue_flush.obj" \
"./tx_queue_front_send.obj" \
"./tx_queue_info_get.obj" \
"./tx_queue_initialize.obj" \
"./tx_queue_performance_info_get.obj" \
"./tx_queue_performance_system_info_get.obj" \
"./tx_queue_prioritize.obj" \
"./tx_queue_receive.obj" \
"./tx_queue_send.obj" \
"./tx_queue_send_notify.obj" \
"./tx_semaphore_ceiling_put.obj" \
"./tx_semaphore_cleanup.obj" \
"./tx_semaphore_create.obj" \
"./tx_semaphore_delete.obj" \
"./tx_semaphore_get.obj" \
"./tx_semaphore_info_get.obj" \
"./tx_semaphore_initialize.obj" \
"./tx_semaphore_performance_info_get.obj" \
"./tx_semaphore_performance_system_info_get.obj" \
"./tx_semaphore_prioritize.obj" \
"./tx_semaphore_put.obj" \
"./tx_semaphore_put_notify.obj" \
"./tx_thread_context_restore.obj" \
"./tx_thread_context_save.obj" \
"./tx_thread_create.obj" \
"./tx_thread_delete.obj" \
"./tx_thread_entry_exit_notify.obj" \
"./tx_thread_identify.obj" \
"./tx_thread_info_get.obj" \
"./tx_thread_initialize.obj" \
"./tx_thread_interrupt_control.obj" \
"./tx_thread_performance_info_get.obj" \
"./tx_thread_performance_system_info_get.obj" \
"./tx_thread_preemption_change.obj" \
"./tx_thread_priority_change.obj" \
"./tx_thread_relinquish.obj" \
"./tx_thread_reset.obj" \
"./tx_thread_resume.obj" \
"./tx_thread_schedule.obj" \
"./tx_thread_shell_entry.obj" \
"./tx_thread_sleep.obj" \
"./tx_thread_stack_analyze.obj" \
"./tx_thread_stack_build.obj" \
"./tx_thread_stack_error_handler.obj" \
"./tx_thread_stack_error_notify.obj" \
"./tx_thread_suspend.obj" \
"./tx_thread_system_preempt_check.obj" \
"./tx_thread_system_resume.obj" \
"./tx_thread_system_return.obj" \
"./tx_thread_system_suspend.obj" \
"./tx_thread_terminate.obj" \
"./tx_thread_time_slice.obj" \
"./tx_thread_time_slice_change.obj" \
"./tx_thread_timeout.obj" \
"./tx_thread_wait_abort.obj" \
"./tx_time_get.obj" \
"./tx_time_set.obj" \
"./tx_timer_activate.obj" \
"./tx_timer_change.obj" \
"./tx_timer_create.obj" \
"./tx_timer_deactivate.obj" \
"./tx_timer_delete.obj" \
"./tx_timer_expiration_process.obj" \
"./tx_timer_info_get.obj" \
"./tx_timer_initialize.obj" \
"./tx_timer_interrupt.obj" \
"./tx_timer_performance_info_get.obj" \
"./tx_timer_performance_system_info_get.obj" \
"./tx_timer_system_activate.obj" \
"./tx_timer_system_deactivate.obj" \
"./tx_timer_thread_entry.obj" \
"./tx_trace_buffer_full_notify.obj" \
"./tx_trace_disable.obj" \
"./tx_trace_enable.obj" \
"./tx_trace_event_filter.obj" \
"./tx_trace_event_unfilter.obj" \
"./tx_trace_initialize.obj" \
"./tx_trace_interrupt_control.obj" \
"./tx_trace_isr_enter_insert.obj" \
"./tx_trace_isr_exit_insert.obj" \
"./tx_trace_object_register.obj" \
"./tx_trace_object_unregister.obj" \
"./tx_trace_user_event_insert.obj" \
"./txe_block_allocate.obj" \
"./txe_block_pool_create.obj" \
"./txe_block_pool_delete.obj" \
"./txe_block_pool_info_get.obj" \
"./txe_block_pool_prioritize.obj" \
"./txe_block_release.obj" \
"./txe_byte_allocate.obj" \
"./txe_byte_pool_create.obj" \
"./txe_byte_pool_delete.obj" \
"./txe_byte_pool_info_get.obj" \
"./txe_byte_pool_prioritize.obj" \
"./txe_byte_release.obj" \
"./txe_event_flags_create.obj" \
"./txe_event_flags_delete.obj" \
"./txe_event_flags_get.obj" \
"./txe_event_flags_info_get.obj" \
"./txe_event_flags_set.obj" \
"./txe_event_flags_set_notify.obj" \
"./txe_mutex_create.obj" \
"./txe_mutex_delete.obj" \
"./txe_mutex_get.obj" \
"./txe_mutex_info_get.obj" \
"./txe_mutex_prioritize.obj" \
"./txe_mutex_put.obj" \
"./txe_queue_create.obj" \
"./txe_queue_delete.obj" \
"./txe_queue_flush.obj" \
"./txe_queue_front_send.obj" \
"./txe_queue_info_get.obj" \
"./txe_queue_prioritize.obj" \
"./txe_queue_receive.obj" \
"./txe_queue_send.obj" \
"./txe_queue_send_notify.obj" \
"./txe_semaphore_ceiling_put.obj" \
"./txe_semaphore_create.obj" \
"./txe_semaphore_delete.obj" \
"./txe_semaphore_get.obj" \
"./txe_semaphore_info_get.obj" \
"./txe_semaphore_prioritize.obj" \
"./txe_semaphore_put.obj" \
"./txe_semaphore_put_notify.obj" \
"./txe_thread_create.obj" \
"./txe_thread_delete.obj" \
"./txe_thread_entry_exit_notify.obj" \
"./txe_thread_info_get.obj" \
"./txe_thread_preemption_change.obj" \
"./txe_thread_priority_change.obj" \
"./txe_thread_relinquish.obj" \
"./txe_thread_reset.obj" \
"./txe_thread_resume.obj" \
"./txe_thread_suspend.obj" \
"./txe_thread_terminate.obj" \
"./txe_thread_time_slice_change.obj" \
"./txe_thread_wait_abort.obj" \
"./txe_timer_activate.obj" \
"./txe_timer_change.obj" \
"./txe_timer_create.obj" \
"./txe_timer_deactivate.obj" \
"./txe_timer_delete.obj" \
"./txe_timer_info_get.obj" \
-include ../makefile.init
RM := DEL /F
RMDIR := RMDIR /S/Q
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir_vars.mk
-include subdir_rules.mk
-include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C55_DEPS)),)
-include $(C55_DEPS)
endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
ifneq ($(strip $(S67_DEPS)),)
-include $(S67_DEPS)
endif
ifneq ($(strip $(S62_DEPS)),)
-include $(S62_DEPS)
endif
ifneq ($(strip $(S_DEPS)),)
-include $(S_DEPS)
endif
ifneq ($(strip $(OPT_DEPS)),)
-include $(OPT_DEPS)
endif
ifneq ($(strip $(C??_DEPS)),)
-include $(C??_DEPS)
endif
ifneq ($(strip $(ASM_UPPER_DEPS)),)
-include $(ASM_UPPER_DEPS)
endif
ifneq ($(strip $(S??_DEPS)),)
-include $(S??_DEPS)
endif
ifneq ($(strip $(C64_DEPS)),)
-include $(C64_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
ifneq ($(strip $(S64_DEPS)),)
-include $(S64_DEPS)
endif
ifneq ($(strip $(INO_DEPS)),)
-include $(INO_DEPS)
endif
ifneq ($(strip $(CLA_DEPS)),)
-include $(CLA_DEPS)
endif
ifneq ($(strip $(S55_DEPS)),)
-include $(S55_DEPS)
endif
ifneq ($(strip $(SV7A_DEPS)),)
-include $(SV7A_DEPS)
endif
ifneq ($(strip $(C62_DEPS)),)
-include $(C62_DEPS)
endif
ifneq ($(strip $(C67_DEPS)),)
-include $(C67_DEPS)
endif
ifneq ($(strip $(PDE_DEPS)),)
-include $(PDE_DEPS)
endif
ifneq ($(strip $(K_DEPS)),)
-include $(K_DEPS)
endif
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
ifneq ($(strip $(C++_DEPS)),)
-include $(C++_DEPS)
endif
ifneq ($(strip $(C43_DEPS)),)
-include $(C43_DEPS)
endif
ifneq ($(strip $(S43_DEPS)),)
-include $(S43_DEPS)
endif
ifneq ($(strip $(ASM_DEPS)),)
-include $(ASM_DEPS)
endif
ifneq ($(strip $(S_UPPER_DEPS)),)
-include $(S_UPPER_DEPS)
endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
ifneq ($(strip $(SA_DEPS)),)
-include $(SA_DEPS)
endif
endif
-include ../makefile.defs
# Add inputs and outputs from these tool invocations to the build variables
LIB_OUTPUTS += \
tx.lib \
LIB_OUTPUTS__QUOTED += \
"tx.lib" \
# All Target
all: tx.lib
# Tool invocations
tx.lib: $(OBJS) $(OBJ_SRCS) $(LIB_SRCS)
ifneq ($(strip $(ORDERED_OBJS)),)
@echo 'Building target: "$@"'
@echo 'Invoking: C6000 Archiver'
"C:/ti/ccsv8/tools/compiler/ti-cgt-c6000_8.2.4/bin/ar6x" r "tx.lib" $(ORDERED_OBJS)
@echo 'Finished building target: "$@"'
@echo ' '
endif
# Other Targets
clean:
-$(RM) $(LIB_OUTPUTS__QUOTED)
-$(RM) "tx_block_allocate.obj" "tx_block_pool_cleanup.obj" "tx_block_pool_create.obj" "tx_block_pool_delete.obj" "tx_block_pool_info_get.obj" "tx_block_pool_initialize.obj" "tx_block_pool_performance_info_get.obj" "tx_block_pool_performance_system_info_get.obj" "tx_block_pool_prioritize.obj" "tx_block_release.obj" "tx_byte_allocate.obj" "tx_byte_pool_cleanup.obj" "tx_byte_pool_create.obj" "tx_byte_pool_delete.obj" "tx_byte_pool_info_get.obj" "tx_byte_pool_initialize.obj" "tx_byte_pool_performance_info_get.obj" "tx_byte_pool_performance_system_info_get.obj" "tx_byte_pool_prioritize.obj" "tx_byte_pool_search.obj" "tx_byte_release.obj" "tx_event_flags_cleanup.obj" "tx_event_flags_create.obj" "tx_event_flags_delete.obj" "tx_event_flags_get.obj" "tx_event_flags_info_get.obj" "tx_event_flags_initialize.obj" "tx_event_flags_performance_info_get.obj" "tx_event_flags_performance_system_info_get.obj" "tx_event_flags_set.obj" "tx_event_flags_set_notify.obj" "tx_initialize_high_level.obj" "tx_initialize_kernel_enter.obj"
-$(RM) "tx_initialize_kernel_setup.obj" "tx_mutex_cleanup.obj" "tx_mutex_create.obj" "tx_mutex_delete.obj" "tx_mutex_get.obj" "tx_mutex_info_get.obj" "tx_mutex_initialize.obj" "tx_mutex_performance_info_get.obj" "tx_mutex_performance_system_info_get.obj" "tx_mutex_prioritize.obj" "tx_mutex_priority_change.obj" "tx_mutex_put.obj" "tx_queue_cleanup.obj" "tx_queue_create.obj" "tx_queue_delete.obj" "tx_queue_flush.obj" "tx_queue_front_send.obj" "tx_queue_info_get.obj" "tx_queue_initialize.obj" "tx_queue_performance_info_get.obj" "tx_queue_performance_system_info_get.obj" "tx_queue_prioritize.obj" "tx_queue_receive.obj" "tx_queue_send.obj" "tx_queue_send_notify.obj" "tx_semaphore_ceiling_put.obj" "tx_semaphore_cleanup.obj" "tx_semaphore_create.obj" "tx_semaphore_delete.obj" "tx_semaphore_get.obj" "tx_semaphore_info_get.obj" "tx_semaphore_initialize.obj" "tx_semaphore_performance_info_get.obj" "tx_semaphore_performance_system_info_get.obj" "tx_semaphore_prioritize.obj" "tx_semaphore_put.obj" "tx_semaphore_put_notify.obj"
-$(RM) "tx_thread_context_restore.obj" "tx_thread_context_save.obj" "tx_thread_create.obj" "tx_thread_delete.obj" "tx_thread_entry_exit_notify.obj" "tx_thread_identify.obj" "tx_thread_info_get.obj" "tx_thread_initialize.obj" "tx_thread_interrupt_control.obj" "tx_thread_performance_info_get.obj" "tx_thread_performance_system_info_get.obj" "tx_thread_preemption_change.obj" "tx_thread_priority_change.obj" "tx_thread_relinquish.obj" "tx_thread_reset.obj" "tx_thread_resume.obj" "tx_thread_schedule.obj" "tx_thread_shell_entry.obj" "tx_thread_sleep.obj" "tx_thread_stack_analyze.obj" "tx_thread_stack_build.obj" "tx_thread_stack_error_handler.obj" "tx_thread_stack_error_notify.obj" "tx_thread_suspend.obj" "tx_thread_system_preempt_check.obj" "tx_thread_system_resume.obj" "tx_thread_system_return.obj" "tx_thread_system_suspend.obj" "tx_thread_terminate.obj" "tx_thread_time_slice.obj" "tx_thread_time_slice_change.obj" "tx_thread_timeout.obj" "tx_thread_wait_abort.obj" "tx_time_get.obj" "tx_time_set.obj"
-$(RM) "tx_timer_activate.obj" "tx_timer_change.obj" "tx_timer_create.obj" "tx_timer_deactivate.obj" "tx_timer_delete.obj" "tx_timer_expiration_process.obj" "tx_timer_info_get.obj" "tx_timer_initialize.obj" "tx_timer_interrupt.obj" "tx_timer_performance_info_get.obj" "tx_timer_performance_system_info_get.obj" "tx_timer_system_activate.obj" "tx_timer_system_deactivate.obj" "tx_timer_thread_entry.obj" "tx_trace_buffer_full_notify.obj" "tx_trace_disable.obj" "tx_trace_enable.obj" "tx_trace_event_filter.obj" "tx_trace_event_unfilter.obj" "tx_trace_initialize.obj" "tx_trace_interrupt_control.obj" "tx_trace_isr_enter_insert.obj" "tx_trace_isr_exit_insert.obj" "tx_trace_object_register.obj" "tx_trace_object_unregister.obj" "tx_trace_user_event_insert.obj" "txe_block_allocate.obj" "txe_block_pool_create.obj" "txe_block_pool_delete.obj" "txe_block_pool_info_get.obj" "txe_block_pool_prioritize.obj" "txe_block_release.obj" "txe_byte_allocate.obj" "txe_byte_pool_create.obj" "txe_byte_pool_delete.obj" "txe_byte_pool_info_get.obj"
-$(RM) "txe_byte_pool_prioritize.obj" "txe_byte_release.obj" "txe_event_flags_create.obj" "txe_event_flags_delete.obj" "txe_event_flags_get.obj" "txe_event_flags_info_get.obj" "txe_event_flags_set.obj" "txe_event_flags_set_notify.obj" "txe_mutex_create.obj" "txe_mutex_delete.obj" "txe_mutex_get.obj" "txe_mutex_info_get.obj" "txe_mutex_prioritize.obj" "txe_mutex_put.obj" "txe_queue_create.obj" "txe_queue_delete.obj" "txe_queue_flush.obj" "txe_queue_front_send.obj" "txe_queue_info_get.obj" "txe_queue_prioritize.obj" "txe_queue_receive.obj" "txe_queue_send.obj" "txe_queue_send_notify.obj" "txe_semaphore_ceiling_put.obj" "txe_semaphore_create.obj" "txe_semaphore_delete.obj" "txe_semaphore_get.obj" "txe_semaphore_info_get.obj" "txe_semaphore_prioritize.obj" "txe_semaphore_put.obj" "txe_semaphore_put_notify.obj" "txe_thread_create.obj" "txe_thread_delete.obj" "txe_thread_entry_exit_notify.obj" "txe_thread_info_get.obj" "txe_thread_preemption_change.obj" "txe_thread_priority_change.obj" "txe_thread_relinquish.obj"
-$(RM) "txe_thread_reset.obj" "txe_thread_resume.obj" "txe_thread_suspend.obj" "txe_thread_terminate.obj" "txe_thread_time_slice_change.obj" "txe_thread_wait_abort.obj" "txe_timer_activate.obj" "txe_timer_change.obj" "txe_timer_create.obj" "txe_timer_deactivate.obj" "txe_timer_delete.obj" "txe_timer_info_get.obj"
-$(RM) "tx_block_allocate.d" "tx_block_pool_cleanup.d" "tx_block_pool_create.d" "tx_block_pool_delete.d" "tx_block_pool_info_get.d" "tx_block_pool_initialize.d" "tx_block_pool_performance_info_get.d" "tx_block_pool_performance_system_info_get.d" "tx_block_pool_prioritize.d" "tx_block_release.d" "tx_byte_allocate.d" "tx_byte_pool_cleanup.d" "tx_byte_pool_create.d" "tx_byte_pool_delete.d" "tx_byte_pool_info_get.d" "tx_byte_pool_initialize.d" "tx_byte_pool_performance_info_get.d" "tx_byte_pool_performance_system_info_get.d" "tx_byte_pool_prioritize.d" "tx_byte_pool_search.d" "tx_byte_release.d" "tx_event_flags_cleanup.d" "tx_event_flags_create.d" "tx_event_flags_delete.d" "tx_event_flags_get.d" "tx_event_flags_info_get.d" "tx_event_flags_initialize.d" "tx_event_flags_performance_info_get.d" "tx_event_flags_performance_system_info_get.d" "tx_event_flags_set.d" "tx_event_flags_set_notify.d" "tx_initialize_high_level.d" "tx_initialize_kernel_enter.d" "tx_initialize_kernel_setup.d" "tx_mutex_cleanup.d"
-$(RM) "tx_mutex_create.d" "tx_mutex_delete.d" "tx_mutex_get.d" "tx_mutex_info_get.d" "tx_mutex_initialize.d" "tx_mutex_performance_info_get.d" "tx_mutex_performance_system_info_get.d" "tx_mutex_prioritize.d" "tx_mutex_priority_change.d" "tx_mutex_put.d" "tx_queue_cleanup.d" "tx_queue_create.d" "tx_queue_delete.d" "tx_queue_flush.d" "tx_queue_front_send.d" "tx_queue_info_get.d" "tx_queue_initialize.d" "tx_queue_performance_info_get.d" "tx_queue_performance_system_info_get.d" "tx_queue_prioritize.d" "tx_queue_receive.d" "tx_queue_send.d" "tx_queue_send_notify.d" "tx_semaphore_ceiling_put.d" "tx_semaphore_cleanup.d" "tx_semaphore_create.d" "tx_semaphore_delete.d" "tx_semaphore_get.d" "tx_semaphore_info_get.d" "tx_semaphore_initialize.d" "tx_semaphore_performance_info_get.d" "tx_semaphore_performance_system_info_get.d" "tx_semaphore_prioritize.d" "tx_semaphore_put.d" "tx_semaphore_put_notify.d" "tx_thread_create.d" "tx_thread_delete.d" "tx_thread_entry_exit_notify.d" "tx_thread_identify.d" "tx_thread_info_get.d"
-$(RM) "tx_thread_initialize.d" "tx_thread_performance_info_get.d" "tx_thread_performance_system_info_get.d" "tx_thread_preemption_change.d" "tx_thread_priority_change.d" "tx_thread_relinquish.d" "tx_thread_reset.d" "tx_thread_resume.d" "tx_thread_shell_entry.d" "tx_thread_sleep.d" "tx_thread_stack_analyze.d" "tx_thread_stack_error_handler.d" "tx_thread_stack_error_notify.d" "tx_thread_suspend.d" "tx_thread_system_preempt_check.d" "tx_thread_system_resume.d" "tx_thread_system_suspend.d" "tx_thread_terminate.d" "tx_thread_time_slice.d" "tx_thread_time_slice_change.d" "tx_thread_timeout.d" "tx_thread_wait_abort.d" "tx_time_get.d" "tx_time_set.d" "tx_timer_activate.d" "tx_timer_change.d" "tx_timer_create.d" "tx_timer_deactivate.d" "tx_timer_delete.d" "tx_timer_expiration_process.d" "tx_timer_info_get.d" "tx_timer_initialize.d" "tx_timer_performance_info_get.d" "tx_timer_performance_system_info_get.d" "tx_timer_system_activate.d" "tx_timer_system_deactivate.d" "tx_timer_thread_entry.d" "tx_trace_buffer_full_notify.d"
-$(RM) "tx_trace_disable.d" "tx_trace_enable.d" "tx_trace_event_filter.d" "tx_trace_event_unfilter.d" "tx_trace_initialize.d" "tx_trace_interrupt_control.d" "tx_trace_isr_enter_insert.d" "tx_trace_isr_exit_insert.d" "tx_trace_object_register.d" "tx_trace_object_unregister.d" "tx_trace_user_event_insert.d" "txe_block_allocate.d" "txe_block_pool_create.d" "txe_block_pool_delete.d" "txe_block_pool_info_get.d" "txe_block_pool_prioritize.d" "txe_block_release.d" "txe_byte_allocate.d" "txe_byte_pool_create.d" "txe_byte_pool_delete.d" "txe_byte_pool_info_get.d" "txe_byte_pool_prioritize.d" "txe_byte_release.d" "txe_event_flags_create.d" "txe_event_flags_delete.d" "txe_event_flags_get.d" "txe_event_flags_info_get.d" "txe_event_flags_set.d" "txe_event_flags_set_notify.d" "txe_mutex_create.d" "txe_mutex_delete.d" "txe_mutex_get.d" "txe_mutex_info_get.d" "txe_mutex_prioritize.d" "txe_mutex_put.d" "txe_queue_create.d" "txe_queue_delete.d" "txe_queue_flush.d" "txe_queue_front_send.d" "txe_queue_info_get.d"
-$(RM) "txe_queue_prioritize.d" "txe_queue_receive.d" "txe_queue_send.d" "txe_queue_send_notify.d" "txe_semaphore_ceiling_put.d" "txe_semaphore_create.d" "txe_semaphore_delete.d" "txe_semaphore_get.d" "txe_semaphore_info_get.d" "txe_semaphore_prioritize.d" "txe_semaphore_put.d" "txe_semaphore_put_notify.d" "txe_thread_create.d" "txe_thread_delete.d" "txe_thread_entry_exit_notify.d" "txe_thread_info_get.d" "txe_thread_preemption_change.d" "txe_thread_priority_change.d" "txe_thread_relinquish.d" "txe_thread_reset.d" "txe_thread_resume.d" "txe_thread_suspend.d" "txe_thread_terminate.d" "txe_thread_time_slice_change.d" "txe_thread_wait_abort.d" "txe_timer_activate.d" "txe_timer_change.d" "txe_timer_create.d" "txe_timer_deactivate.d" "txe_timer_delete.d" "txe_timer_info_get.d"
-$(RM) "tx_thread_context_restore.d" "tx_thread_context_save.d" "tx_thread_interrupt_control.d" "tx_thread_schedule.d" "tx_thread_stack_build.d" "tx_thread_system_return.d" "tx_timer_interrupt.d"
-@echo 'Finished clean'
-@echo ' '
.PHONY: all clean dependents
.SECONDARY:
-include ../makefile.targets

View File

@@ -30,6 +30,10 @@
IMPORT _tx_execution_thread_enter IMPORT _tx_execution_thread_enter
IMPORT _tx_execution_thread_exit IMPORT _tx_execution_thread_exit
ENDIF ENDIF
IF :DEF:TX_LOW_POWER
IMPORT tx_low_power_enter
IMPORT tx_low_power_exit
ENDIF
; ;
; ;
AREA ||.text||, CODE, READONLY AREA ||.text||, CODE, READONLY
@@ -39,7 +43,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M0/AC5 */ ;/* _tx_thread_schedule Cortex-M0/AC5 */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -72,7 +76,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -240,11 +247,23 @@ __tx_ts_wait
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CMP r1, #0 ; If non-NULL, a new thread is ready! CMP r1, #0 ; If non-NULL, a new thread is ready!
BNE __tx_ts_ready ; BNE __tx_ts_ready ;
IF :DEF:TX_ENABLE_WFI IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
ENDIF
IF:DEF:TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
ENDIF ENDIF
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
ENDIF
__tx_ts_ISB __tx_ts_ISB
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting

View File

@@ -25,6 +25,10 @@
.global _tx_thread_execute_ptr .global _tx_thread_execute_ptr
.global _tx_timer_time_slice .global _tx_timer_time_slice
.global _tx_thread_system_stack_ptr .global _tx_thread_system_stack_ptr
#ifdef TX_LOW_POWER
.global tx_low_power_enter
.global tx_low_power_exit
#endif
@ @
@ @
.text .text
@@ -35,7 +39,7 @@
@/* FUNCTION RELEASE */ @/* FUNCTION RELEASE */
@/* */ @/* */
@/* _tx_thread_schedule Cortex-M0/AC6 */ @/* _tx_thread_schedule Cortex-M0/AC6 */
@/* 6.1 */ @/* 6.1.5 */
@/* AUTHOR */ @/* AUTHOR */
@/* */ @/* */
@/* William E. Lamie, Microsoft Corporation */ @/* William E. Lamie, Microsoft Corporation */
@@ -68,7 +72,10 @@
@/* */ @/* */
@/* DATE NAME DESCRIPTION */ @/* DATE NAME DESCRIPTION */
@/* */ @/* */
@/* 09-30-2020 William E. Lamie Initial Version 6.1 */ @/* 09-30-2020 William E. Lamie Initial Version 6.1 */
@/* 03-02-2021 Scott Larson Modified comment(s), add */
@/* low power code, */
@/* resulting in version 6.1.5 */
@/* */ @/* */
@/**************************************************************************/ @/**************************************************************************/
@VOID _tx_thread_schedule(VOID) @VOID _tx_thread_schedule(VOID)
@@ -244,11 +251,25 @@ __tx_ts_wait:
STR r1, [r0] @ Store it in the current pointer STR r1, [r0] @ Store it in the current pointer
CMP r1, #0 @ If non-NULL, a new thread is ready! CMP r1, #0 @ If non-NULL, a new thread is ready!
BNE __tx_ts_ready @ BNE __tx_ts_ready @
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter @ Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB @ Ensure no outstanding memory transactions DSB @ Ensure no outstanding memory transactions
WFI @ Wait for interrupt WFI @ Wait for interrupt
ISB @ Ensure pipeline is flushed ISB @ Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit @ Exit low power mode
POP {r0-r3}
#endif
CPSIE i @ Enable interrupts CPSIE i @ Enable interrupts
B __tx_ts_wait @ Loop to continue waiting B __tx_ts_wait @ Loop to continue waiting
@ @

0
ports/cortex_m0/gnu/CMakeLists.txt Normal file → Executable file
View File

0
ports/cortex_m0/gnu/src/tx_thread_context_restore.S Executable file → Normal file
View File

0
ports/cortex_m0/gnu/src/tx_thread_context_save.S Executable file → Normal file
View File

0
ports/cortex_m0/gnu/src/tx_thread_interrupt_control.S Executable file → Normal file
View File

0
ports/cortex_m0/gnu/src/tx_thread_interrupt_disable.S Executable file → Normal file
View File

0
ports/cortex_m0/gnu/src/tx_thread_interrupt_restore.S Executable file → Normal file
View File

27
ports/cortex_m0/gnu/src/tx_thread_schedule.S Executable file → Normal file
View File

@@ -27,6 +27,10 @@
.global _tx_thread_system_stack_ptr .global _tx_thread_system_stack_ptr
.global _tx_execution_thread_enter .global _tx_execution_thread_enter
.global _tx_execution_thread_exit .global _tx_execution_thread_exit
#ifdef TX_LOW_POWER
.global tx_low_power_enter
.global tx_low_power_exit
#endif
@ @
@ @
.text .text
@@ -37,7 +41,7 @@
@/* FUNCTION RELEASE */ @/* FUNCTION RELEASE */
@/* */ @/* */
@/* _tx_thread_schedule Cortex-M0/GNU */ @/* _tx_thread_schedule Cortex-M0/GNU */
@/* 6.1 */ @/* 6.1.5 */
@/* AUTHOR */ @/* AUTHOR */
@/* */ @/* */
@/* William E. Lamie, Microsoft Corporation */ @/* William E. Lamie, Microsoft Corporation */
@@ -70,9 +74,12 @@
@/* */ @/* */
@/* DATE NAME DESCRIPTION */ @/* DATE NAME DESCRIPTION */
@/* */ @/* */
@/* 05-19-2020 William E. Lamie Initial Version 6.0 */ @/* 05-19-2020 William E. Lamie Initial Version 6.0 */
@/* 09-30-2020 William E. Lamie Modified comment(s), */ @/* 09-30-2020 William E. Lamie Modified comment(s), */
@/* resulting in version 6.1 */ @/* resulting in version 6.1 */
@/* 03-02-2021 Scott Larson Modified comment(s), add */
@/* low power code, */
@/* resulting in version 6.1.5 */
@/* */ @/* */
@/**************************************************************************/ @/**************************************************************************/
@VOID _tx_thread_schedule(VOID) @VOID _tx_thread_schedule(VOID)
@@ -248,11 +255,25 @@ __tx_ts_wait:
STR r1, [r0] @ Store it in the current pointer STR r1, [r0] @ Store it in the current pointer
CMP r1, #0 @ If non-NULL, a new thread is ready! CMP r1, #0 @ If non-NULL, a new thread is ready!
BNE __tx_ts_ready @ BNE __tx_ts_ready @
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter @ Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB @ Ensure no outstanding memory transactions DSB @ Ensure no outstanding memory transactions
WFI @ Wait for interrupt WFI @ Wait for interrupt
ISB @ Ensure pipeline is flushed ISB @ Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit @ Exit low power mode
POP {r0-r3}
#endif
CPSIE i @ Enable interrupts CPSIE i @ Enable interrupts
B __tx_ts_wait @ Loop to continue waiting B __tx_ts_wait @ Loop to continue waiting
@ @

0
ports/cortex_m0/gnu/src/tx_thread_stack_build.S Executable file → Normal file
View File

0
ports/cortex_m0/gnu/src/tx_thread_system_return.S Executable file → Normal file
View File

0
ports/cortex_m0/gnu/src/tx_timer_interrupt.S Executable file → Normal file
View File

View File

@@ -28,6 +28,10 @@
EXTERN _tx_thread_preempt_disable EXTERN _tx_thread_preempt_disable
EXTERN _tx_execution_thread_enter EXTERN _tx_execution_thread_enter
EXTERN _tx_execution_thread_exit EXTERN _tx_execution_thread_exit
#ifdef TX_LOW_POWER
EXTERN tx_low_power_enter
EXTERN tx_low_power_exit
#endif
; ;
; ;
SECTION `.text`:CODE:NOROOT(2) SECTION `.text`:CODE:NOROOT(2)
@@ -37,7 +41,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M0/IAR */ ;/* _tx_thread_schedule Cortex-M0/IAR */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -70,7 +74,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -238,11 +245,25 @@ __tx_ts_wait:
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CMP r1, #0 ; If non-NULL, a new thread is ready! CMP r1, #0 ; If non-NULL, a new thread is ready!
BNE __tx_ts_ready ; BNE __tx_ts_ready ;
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
#endif
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

View File

@@ -30,6 +30,10 @@
IMPORT _tx_execution_thread_enter IMPORT _tx_execution_thread_enter
IMPORT _tx_execution_thread_exit IMPORT _tx_execution_thread_exit
ENDIF ENDIF
IF :DEF:TX_LOW_POWER
IMPORT tx_low_power_enter
IMPORT tx_low_power_exit
ENDIF
; ;
; ;
AREA ||.text||, CODE, READONLY AREA ||.text||, CODE, READONLY
@@ -39,7 +43,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M0/AC5 */ ;/* _tx_thread_schedule Cortex-M0/AC5 */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -72,7 +76,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -241,11 +248,25 @@ __tx_ts_wait
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CMP r1, #0 ; If non-NULL, a new thread is ready! CMP r1, #0 ; If non-NULL, a new thread is ready!
BNE __tx_ts_ready ; BNE __tx_ts_ready ;
IF :DEF:TX_ENABLE_WFI
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
ENDIF
IF:DEF:TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
ENDIF ENDIF
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
ENDIF
__tx_ts_ISB __tx_ts_ISB
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting

View File

@@ -26,7 +26,7 @@
/* PORT SPECIFIC C INFORMATION RELEASE */ /* PORT SPECIFIC C INFORMATION RELEASE */
/* */ /* */
/* tx_port.h Cortex-M23/AC6 */ /* tx_port.h Cortex-M23/AC6 */
/* 6.1 */ /* 6.1.5 */
/* */ /* */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
@@ -47,7 +47,10 @@
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 09-30-2020 Scott Larson Initial Version 6.1 */ /* 09-30-2020 Scott Larson Initial Version 6.1 */
/* 03-02-2021 Scott Larson Modified comment(s), added */
/* ULONG64_DEFINED, */
/* resulting in version 6.1.5 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@@ -82,6 +85,7 @@ typedef unsigned long ULONG;
typedef unsigned long long ULONG64; typedef unsigned long long ULONG64;
typedef short SHORT; typedef short SHORT;
typedef unsigned short USHORT; typedef unsigned short USHORT;
#define ULONG64_DEFINED
/* Function prototypes for this port. */ /* Function prototypes for this port. */
struct TX_THREAD_STRUCT; struct TX_THREAD_STRUCT;

View File

@@ -15,6 +15,8 @@ Building the ThreadX library is easy; simply set the ThreadX_Library project
as active, then then build the library. You should now observe the compilation as active, then then build the library. You should now observe the compilation
and assembly of the ThreadX library. This project build produces the ThreadX and assembly of the ThreadX library. This project build produces the ThreadX
library file ThreadX_Library.lib. library file ThreadX_Library.lib.
Files tx_thread_stack_error_handler.c and tx_thread_stack_error_notify.c
replace the common files of the same name.
3. Demonstration System 3. Demonstration System

View File

@@ -47,11 +47,12 @@
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 09-30-2020 Scott Larson Initial Version 6.1 */ /* 09-30-2020 Scott Larson Initial Version 6.1 */
/* 12-31-2020 Scott Larson Modified comment(s), */ /* 03-02-2021 Scott Larson Modified comment(s), */
/* remove unneeded headers, */ /* remove unneeded headers, */
/* use builtins, */ /* use builtins, added */
/* resulting in version 6.1.3 */ /* ULONG64_DEFINED, */
/* resulting in version 6.1.5 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@@ -84,6 +85,7 @@ typedef unsigned long ULONG;
typedef unsigned long long ULONG64; typedef unsigned long long ULONG64;
typedef short SHORT; typedef short SHORT;
typedef unsigned short USHORT; typedef unsigned short USHORT;
#define ULONG64_DEFINED
/* Function prototypes for this port. */ /* Function prototypes for this port. */
struct TX_THREAD_STRUCT; struct TX_THREAD_STRUCT;

View File

@@ -6,7 +6,8 @@
1. Building the ThreadX run-time Library 1. Building the ThreadX run-time Library
An example .bat file is in the example_build directory. An example .bat file is in the example_build directory.
Files tx_thread_stack_error_handler.c and tx_thread_stack_error_notify.c
replace the common files of the same name.
2. Demonstration System 2. Demonstration System

View File

@@ -26,7 +26,7 @@
/* PORT SPECIFIC C INFORMATION RELEASE */ /* PORT SPECIFIC C INFORMATION RELEASE */
/* */ /* */
/* tx_port.h Cortex-M23/IAR */ /* tx_port.h Cortex-M23/IAR */
/* 6.1 */ /* 6.1.5 */
/* */ /* */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
@@ -47,7 +47,10 @@
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 09-30-2020 Scott Larson Initial Version 6.1 */ /* 09-30-2020 Scott Larson Initial Version 6.1 */
/* 03-02-2021 Scott Larson Modified comment(s), added */
/* ULONG64_DEFINED, */
/* resulting in version 6.1.5 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@@ -85,6 +88,7 @@ typedef unsigned long ULONG;
typedef unsigned long long ULONG64; typedef unsigned long long ULONG64;
typedef short SHORT; typedef short SHORT;
typedef unsigned short USHORT; typedef unsigned short USHORT;
#define ULONG64_DEFINED
/* Function prototypes for this port. */ /* Function prototypes for this port. */
struct TX_THREAD_STRUCT; struct TX_THREAD_STRUCT;

View File

@@ -9,7 +9,8 @@ Import all ThreadX common and port-specific source files into an IAR project.
Configure the project to build a library rather than an executable. This Configure the project to build a library rather than an executable. This
results in the ThreadX run-time library file tx.a, which is needed by results in the ThreadX run-time library file tx.a, which is needed by
the application. the application.
Files tx_thread_stack_error_handler.c and tx_thread_stack_error_notify.c
replace the common files of the same name.
2. Demonstration System 2. Demonstration System

View File

@@ -30,6 +30,10 @@
IMPORT _tx_execution_thread_enter IMPORT _tx_execution_thread_enter
IMPORT _tx_execution_thread_exit IMPORT _tx_execution_thread_exit
ENDIF ENDIF
IF :DEF:TX_LOW_POWER
IMPORT tx_low_power_enter
IMPORT tx_low_power_exit
ENDIF
; ;
; ;
AREA ||.text||, CODE, READONLY AREA ||.text||, CODE, READONLY
@@ -39,7 +43,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M3/AC5 */ ;/* _tx_thread_schedule Cortex-M3/AC5 */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -72,7 +76,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -217,11 +224,25 @@ __tx_ts_wait
LDR r1, [r2] ; Pickup the next thread to execute pointer LDR r1, [r2] ; Pickup the next thread to execute pointer
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready!
IF :DEF:TX_ENABLE_WFI
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
ENDIF
IF:DEF:TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
ENDIF ENDIF
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
ENDIF
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

View File

@@ -25,6 +25,11 @@
.global _tx_thread_execute_ptr .global _tx_thread_execute_ptr
.global _tx_timer_time_slice .global _tx_timer_time_slice
.global _tx_thread_system_stack_ptr .global _tx_thread_system_stack_ptr
#ifdef TX_LOW_POWER
.global tx_low_power_enter
.global tx_low_power_exit
#endif
@ @
@ @
.text .text
@@ -35,7 +40,7 @@
@/* FUNCTION RELEASE */ @/* FUNCTION RELEASE */
@/* */ @/* */
@/* _tx_thread_schedule Cortex-M3/AC6 */ @/* _tx_thread_schedule Cortex-M3/AC6 */
@/* 6.1 */ @/* 6.1.5 */
@/* AUTHOR */ @/* AUTHOR */
@/* */ @/* */
@/* William E. Lamie, Microsoft Corporation */ @/* William E. Lamie, Microsoft Corporation */
@@ -68,7 +73,10 @@
@/* */ @/* */
@/* DATE NAME DESCRIPTION */ @/* DATE NAME DESCRIPTION */
@/* */ @/* */
@/* 09-30-2020 William E. Lamie Initial Version 6.1 */ @/* 09-30-2020 William E. Lamie Initial Version 6.1 */
@/* 03-02-2021 Scott Larson Modified comment(s), add */
@/* low power code, */
@/* resulting in version 6.1.5 */
@/* */ @/* */
@/**************************************************************************/ @/**************************************************************************/
@VOID _tx_thread_schedule(VOID) @VOID _tx_thread_schedule(VOID)
@@ -218,11 +226,25 @@ __tx_ts_wait:
LDR r1, [r2] @ Pickup the next thread to execute pointer LDR r1, [r2] @ Pickup the next thread to execute pointer
STR r1, [r0] @ Store it in the current pointer STR r1, [r0] @ Store it in the current pointer
CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter @ Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB @ Ensure no outstanding memory transactions DSB @ Ensure no outstanding memory transactions
WFI @ Wait for interrupt WFI @ Wait for interrupt
ISB @ Ensure pipeline is flushed ISB @ Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit @ Exit low power mode
POP {r0-r3}
#endif
CPSIE i @ Enable interrupts CPSIE i @ Enable interrupts
B __tx_ts_wait @ Loop to continue waiting B __tx_ts_wait @ Loop to continue waiting
@ @

View File

@@ -28,7 +28,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M3/GHS */ ;/* _tx_thread_schedule Cortex-M3/GHS */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -61,7 +61,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -210,11 +213,25 @@ __tx_ts_wait:
LDR r1, [r2] ; Pickup the next thread to execute pointer LDR r1, [r2] ; Pickup the next thread to execute pointer
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
#endif
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

0
ports/cortex_m3/gnu/CMakeLists.txt Normal file → Executable file
View File

View File

@@ -27,6 +27,10 @@
.global _tx_thread_system_stack_ptr .global _tx_thread_system_stack_ptr
.global _tx_execution_thread_enter .global _tx_execution_thread_enter
.global _tx_execution_thread_exit .global _tx_execution_thread_exit
#ifdef TX_LOW_POWER
.global tx_low_power_enter
.global tx_low_power_exit
#endif
@ @
@ @
.text .text
@@ -37,7 +41,7 @@
@/* FUNCTION RELEASE */ @/* FUNCTION RELEASE */
@/* */ @/* */
@/* _tx_thread_schedule Cortex-M3/GNU */ @/* _tx_thread_schedule Cortex-M3/GNU */
@/* 6.1 */ @/* 6.1.5 */
@/* AUTHOR */ @/* AUTHOR */
@/* */ @/* */
@/* William E. Lamie, Microsoft Corporation */ @/* William E. Lamie, Microsoft Corporation */
@@ -70,9 +74,12 @@
@/* */ @/* */
@/* DATE NAME DESCRIPTION */ @/* DATE NAME DESCRIPTION */
@/* */ @/* */
@/* 05-19-2020 William E. Lamie Initial Version 6.0 */ @/* 05-19-2020 William E. Lamie Initial Version 6.0 */
@/* 09-30-2020 William E. Lamie Modified comment(s), */ @/* 09-30-2020 William E. Lamie Modified comment(s), */
@/* resulting in version 6.1 */ @/* resulting in version 6.1 */
@/* 03-02-2021 Scott Larson Modified comment(s), add */
@/* low power code, */
@/* resulting in version 6.1.5 */
@/* */ @/* */
@/**************************************************************************/ @/**************************************************************************/
@VOID _tx_thread_schedule(VOID) @VOID _tx_thread_schedule(VOID)
@@ -222,11 +229,25 @@ __tx_ts_wait:
LDR r1, [r2] @ Pickup the next thread to execute pointer LDR r1, [r2] @ Pickup the next thread to execute pointer
STR r1, [r0] @ Store it in the current pointer STR r1, [r0] @ Store it in the current pointer
CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter @ Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB @ Ensure no outstanding memory transactions DSB @ Ensure no outstanding memory transactions
WFI @ Wait for interrupt WFI @ Wait for interrupt
ISB @ Ensure pipeline is flushed ISB @ Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit @ Exit low power mode
POP {r0-r3}
#endif
CPSIE i @ Enable interrupts CPSIE i @ Enable interrupts
B __tx_ts_wait @ Loop to continue waiting B __tx_ts_wait @ Loop to continue waiting
@ @

View File

@@ -28,6 +28,10 @@
EXTERN _tx_execution_thread_enter EXTERN _tx_execution_thread_enter
EXTERN _tx_execution_thread_exit EXTERN _tx_execution_thread_exit
EXTERN _tx_thread_preempt_disable EXTERN _tx_thread_preempt_disable
#ifdef TX_LOW_POWER
EXTERN tx_low_power_enter
EXTERN tx_low_power_exit
#endif
; ;
; ;
SECTION `.text`:CODE:NOROOT(2) SECTION `.text`:CODE:NOROOT(2)
@@ -37,7 +41,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M3/IAR */ ;/* _tx_thread_schedule Cortex-M3/IAR */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -70,7 +74,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -216,11 +223,25 @@ __tx_ts_wait:
LDR r1, [r2] ; Pickup the next thread to execute pointer LDR r1, [r2] ; Pickup the next thread to execute pointer
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
#endif
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

View File

@@ -30,6 +30,10 @@
IMPORT _tx_execution_thread_enter IMPORT _tx_execution_thread_enter
IMPORT _tx_execution_thread_exit IMPORT _tx_execution_thread_exit
ENDIF ENDIF
IF :DEF:TX_LOW_POWER
IMPORT tx_low_power_enter
IMPORT tx_low_power_exit
ENDIF
; ;
; ;
AREA ||.text||, CODE, READONLY AREA ||.text||, CODE, READONLY
@@ -39,7 +43,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M3/AC5 */ ;/* _tx_thread_schedule Cortex-M3/AC5 */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -72,7 +76,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -217,11 +224,25 @@ __tx_ts_wait
LDR r1, [r2] ; Pickup the next thread to execute pointer LDR r1, [r2] ; Pickup the next thread to execute pointer
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready!
IF :DEF:TX_ENABLE_WFI
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
ENDIF
IF:DEF:TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
ENDIF ENDIF
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
ENDIF
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

View File

@@ -53,80 +53,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r4 0x04 r4 Software stacked GP registers
0x08 r5 0x08 r5
0x0C r6 0x0C r6
0x10 r7 0x10 r7
0x14 r8 0x14 r8
0x18 r9 0x18 r9
0x1C r10 0x1C r10
0x20 r11 0x20 r11
0x24 r0 (Hardware stack starts here!!) 0x24 r0 Hardware stacked registers
0x28 r1 0x28 r1
0x2C r2 0x2C r2
0x30 r3 0x30 r3
0x34 r12 0x34 r12
0x38 lr 0x38 lr
0x3C pc 0x3C pc
0x40 xPSR 0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s0 0x04 s16 Software stacked FPU registers
0x08 s1 0x08 s17
0x0C s2 0x0C s18
0x10 s3 0x10 s19
0x14 s4 0x14 s20
0x18 s5 0x18 s21
0x1C s6 0x1C s22
0x20 s7 0x20 s23
0x24 s8 0x24 s24
0x28 s9 0x28 s25
0x2C s10 0x2C s26
0x30 s11 0x30 s27
0x34 s12 0x34 s28
0x38 s13 0x38 s29
0x3C s14 0x3C s30
0x40 s15 0x40 s31
0x44 s16 0x44 r4 Software stacked registers
0x48 s17 0x48 r5
0x4C s18 0x4C r6
0x50 s19 0x50 r7
0x54 s20 0x54 r8
0x58 s21 0x58 r9
0x5C s22 0x5C r10
0x60 s23 0x60 r11
0x64 s24 0x64 r0 Hardware stacked registers
0x68 s25 0x68 r1
0x6C s26 0x6C r2
0x70 s27 0x70 r3
0x74 s28 0x74 r12
0x78 s29 0x78 lr
0x7C s30 0x7C pc
0x80 s31 0x80 xPSR
0x84 fpscr 0x84 s0 Hardware stacked FPU registers
0x88 r4 0x88 s1
0x8C r5 0x8C s2
0x90 r6 0x90 s3
0x94 r7 0x94 s4
0x98 r8 0x98 s5
0x9C r9 0x9C s6
0xA0 r10 0xA0 s7
0xA4 r11 0xA4 s8
0xA8 r0 (Hardware stack starts here!!) 0xA8 s9
0xAC r1 0xAC s10
0xB0 r2 0xB0 s11
0xB4 r3 0xB4 s12
0xB8 r12 0xB8 s13
0xBC lr 0xBC s14
0xC0 pc 0xC0 s15
0xC4 xPSR 0xC4 fpscr
6. Improving Performance 6. Improving Performance

View File

@@ -26,7 +26,7 @@
/* PORT SPECIFIC C INFORMATION RELEASE */ /* PORT SPECIFIC C INFORMATION RELEASE */
/* */ /* */
/* tx_port.h Cortex-M33/AC6 */ /* tx_port.h Cortex-M33/AC6 */
/* 6.1 */ /* 6.1.5 */
/* */ /* */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
@@ -47,7 +47,10 @@
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 09-30-2020 Scott Larson Initial Version 6.1 */ /* 09-30-2020 Scott Larson Initial Version 6.1 */
/* 03-02-2021 Scott Larson Modified comment(s), added */
/* ULONG64_DEFINED, */
/* resulting in version 6.1.5 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@@ -82,6 +85,7 @@ typedef unsigned long ULONG;
typedef unsigned long long ULONG64; typedef unsigned long long ULONG64;
typedef short SHORT; typedef short SHORT;
typedef unsigned short USHORT; typedef unsigned short USHORT;
#define ULONG64_DEFINED
/* Function prototypes for this port. */ /* Function prototypes for this port. */
struct TX_THREAD_STRUCT; struct TX_THREAD_STRUCT;

View File

@@ -15,7 +15,8 @@ Building the ThreadX library is easy; simply set the ThreadX_Library project
as active, then then build the library. You should now observe the compilation as active, then then build the library. You should now observe the compilation
and assembly of the ThreadX library. This project build produces the ThreadX and assembly of the ThreadX library. This project build produces the ThreadX
library file ThreadX_Library.lib. library file ThreadX_Library.lib.
Files tx_thread_stack_error_handler.c and tx_thread_stack_error_notify.c
replace the common files of the same name.
3. Demonstration System 3. Demonstration System
@@ -53,80 +54,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r4 0x04 r4 Software stacked GP registers
0x08 r5 0x08 r5
0x0C r6 0x0C r6
0x10 r7 0x10 r7
0x14 r8 0x14 r8
0x18 r9 0x18 r9
0x1C r10 0x1C r10
0x20 r11 0x20 r11
0x24 r0 (Hardware stack starts here!!) 0x24 r0 Hardware stacked registers
0x28 r1 0x28 r1
0x2C r2 0x2C r2
0x30 r3 0x30 r3
0x34 r12 0x34 r12
0x38 lr 0x38 lr
0x3C pc 0x3C pc
0x40 xPSR 0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s0 0x04 s16 Software stacked FPU registers
0x08 s1 0x08 s17
0x0C s2 0x0C s18
0x10 s3 0x10 s19
0x14 s4 0x14 s20
0x18 s5 0x18 s21
0x1C s6 0x1C s22
0x20 s7 0x20 s23
0x24 s8 0x24 s24
0x28 s9 0x28 s25
0x2C s10 0x2C s26
0x30 s11 0x30 s27
0x34 s12 0x34 s28
0x38 s13 0x38 s29
0x3C s14 0x3C s30
0x40 s15 0x40 s31
0x44 s16 0x44 r4 Software stacked registers
0x48 s17 0x48 r5
0x4C s18 0x4C r6
0x50 s19 0x50 r7
0x54 s20 0x54 r8
0x58 s21 0x58 r9
0x5C s22 0x5C r10
0x60 s23 0x60 r11
0x64 s24 0x64 r0 Hardware stacked registers
0x68 s25 0x68 r1
0x6C s26 0x6C r2
0x70 s27 0x70 r3
0x74 s28 0x74 r12
0x78 s29 0x78 lr
0x7C s30 0x7C pc
0x80 s31 0x80 xPSR
0x84 fpscr 0x84 s0 Hardware stacked FPU registers
0x88 r4 0x88 s1
0x8C r5 0x8C s2
0x90 r6 0x90 s3
0x94 r7 0x94 s4
0x98 r8 0x98 s5
0x9C r9 0x9C s6
0xA0 r10 0xA0 s7
0xA4 r11 0xA4 s8
0xA8 r0 (Hardware stack starts here!!) 0xA8 s9
0xAC r1 0xAC s10
0xB0 r2 0xB0 s11
0xB4 r3 0xB4 s12
0xB8 r12 0xB8 s13
0xBC lr 0xBC s14
0xC0 pc 0xC0 s15
0xC4 xPSR 0xC4 fpscr
6. Improving Performance 6. Improving Performance

View File

@@ -26,7 +26,7 @@
/* PORT SPECIFIC C INFORMATION RELEASE */ /* PORT SPECIFIC C INFORMATION RELEASE */
/* */ /* */
/* tx_port.h Cortex-M33/GNU */ /* tx_port.h Cortex-M33/GNU */
/* 6.1 */ /* 6.1.5 */
/* */ /* */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
@@ -47,7 +47,10 @@
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 09-30-2020 Scott Larson Initial Version 6.1 */ /* 09-30-2020 Scott Larson Initial Version 6.1 */
/* 03-02-2021 Scott Larson Modified comment(s), added */
/* ULONG64_DEFINED, */
/* resulting in version 6.1.5 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@@ -80,6 +83,7 @@ typedef unsigned long ULONG;
typedef unsigned long long ULONG64; typedef unsigned long long ULONG64;
typedef short SHORT; typedef short SHORT;
typedef unsigned short USHORT; typedef unsigned short USHORT;
#define ULONG64_DEFINED
/* Function prototypes for this port. */ /* Function prototypes for this port. */
struct TX_THREAD_STRUCT; struct TX_THREAD_STRUCT;

View File

@@ -8,7 +8,8 @@ Import all ThreadX common and port-specific source files into a GNU project.
Configure the project to build a library rather than an executable. This Configure the project to build a library rather than an executable. This
results in the ThreadX run-time library file tx.a, which is needed by results in the ThreadX run-time library file tx.a, which is needed by
the application. the application.
Files tx_thread_stack_error_handler.c and tx_thread_stack_error_notify.c
replace the common files of the same name.
2. Demonstration System 2. Demonstration System
@@ -39,80 +40,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r4 0x04 r4 Software stacked GP registers
0x08 r5 0x08 r5
0x0C r6 0x0C r6
0x10 r7 0x10 r7
0x14 r8 0x14 r8
0x18 r9 0x18 r9
0x1C r10 0x1C r10
0x20 r11 0x20 r11
0x24 r0 (Hardware stack starts here!!) 0x24 r0 Hardware stacked registers
0x28 r1 0x28 r1
0x2C r2 0x2C r2
0x30 r3 0x30 r3
0x34 r12 0x34 r12
0x38 lr 0x38 lr
0x3C pc 0x3C pc
0x40 xPSR 0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s0 0x04 s16 Software stacked FPU registers
0x08 s1 0x08 s17
0x0C s2 0x0C s18
0x10 s3 0x10 s19
0x14 s4 0x14 s20
0x18 s5 0x18 s21
0x1C s6 0x1C s22
0x20 s7 0x20 s23
0x24 s8 0x24 s24
0x28 s9 0x28 s25
0x2C s10 0x2C s26
0x30 s11 0x30 s27
0x34 s12 0x34 s28
0x38 s13 0x38 s29
0x3C s14 0x3C s30
0x40 s15 0x40 s31
0x44 s16 0x44 r4 Software stacked registers
0x48 s17 0x48 r5
0x4C s18 0x4C r6
0x50 s19 0x50 r7
0x54 s20 0x54 r8
0x58 s21 0x58 r9
0x5C s22 0x5C r10
0x60 s23 0x60 r11
0x64 s24 0x64 r0 Hardware stacked registers
0x68 s25 0x68 r1
0x6C s26 0x6C r2
0x70 s27 0x70 r3
0x74 s28 0x74 r12
0x78 s29 0x78 lr
0x7C s30 0x7C pc
0x80 s31 0x80 xPSR
0x84 fpscr 0x84 s0 Hardware stacked FPU registers
0x88 r4 0x88 s1
0x8C r5 0x8C s2
0x90 r6 0x90 s3
0x94 r7 0x94 s4
0x98 r8 0x98 s5
0x9C r9 0x9C s6
0xA0 r10 0xA0 s7
0xA4 r11 0xA4 s8
0xA8 r0 (Hardware stack starts here!!) 0xA8 s9
0xAC r1 0xAC s10
0xB0 r2 0xB0 s11
0xB4 r3 0xB4 s12
0xB8 r12 0xB8 s13
0xBC lr 0xBC s14
0xC0 pc 0xC0 s15
0xC4 xPSR 0xC4 fpscr
5. Improving Performance 5. Improving Performance

View File

@@ -26,7 +26,7 @@
/* PORT SPECIFIC C INFORMATION RELEASE */ /* PORT SPECIFIC C INFORMATION RELEASE */
/* */ /* */
/* tx_port.h Cortex-M33/IAR */ /* tx_port.h Cortex-M33/IAR */
/* 6.1 */ /* 6.1.5 */
/* */ /* */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
@@ -47,7 +47,10 @@
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 09-30-2020 Scott Larson Initial Version 6.1 */ /* 09-30-2020 Scott Larson Initial Version 6.1 */
/* 03-02-2021 Scott Larson Modified comment(s), added */
/* ULONG64_DEFINED, */
/* resulting in version 6.1.5 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
@@ -85,6 +88,7 @@ typedef unsigned long ULONG;
typedef unsigned long long ULONG64; typedef unsigned long long ULONG64;
typedef short SHORT; typedef short SHORT;
typedef unsigned short USHORT; typedef unsigned short USHORT;
#define ULONG64_DEFINED
/* Function prototypes for this port. */ /* Function prototypes for this port. */
struct TX_THREAD_STRUCT; struct TX_THREAD_STRUCT;

View File

@@ -9,7 +9,8 @@ Import all ThreadX common and port-specific source files into an IAR project.
Configure the project to build a library rather than an executable. This Configure the project to build a library rather than an executable. This
results in the ThreadX run-time library file tx.a, which is needed by results in the ThreadX run-time library file tx.a, which is needed by
the application. the application.
Files tx_thread_stack_error_handler.c and tx_thread_stack_error_notify.c
replace the common files of the same name.
2. Demonstration System 2. Demonstration System
@@ -45,80 +46,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r4 0x04 r4 Software stacked GP registers
0x08 r5 0x08 r5
0x0C r6 0x0C r6
0x10 r7 0x10 r7
0x14 r8 0x14 r8
0x18 r9 0x18 r9
0x1C r10 0x1C r10
0x20 r11 0x20 r11
0x24 r0 (Hardware stack starts here!!) 0x24 r0 Hardware stacked registers
0x28 r1 0x28 r1
0x2C r2 0x2C r2
0x30 r3 0x30 r3
0x34 r12 0x34 r12
0x38 lr 0x38 lr
0x3C pc 0x3C pc
0x40 xPSR 0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s0 0x04 s16 Software stacked FPU registers
0x08 s1 0x08 s17
0x0C s2 0x0C s18
0x10 s3 0x10 s19
0x14 s4 0x14 s20
0x18 s5 0x18 s21
0x1C s6 0x1C s22
0x20 s7 0x20 s23
0x24 s8 0x24 s24
0x28 s9 0x28 s25
0x2C s10 0x2C s26
0x30 s11 0x30 s27
0x34 s12 0x34 s28
0x38 s13 0x38 s29
0x3C s14 0x3C s30
0x40 s15 0x40 s31
0x44 s16 0x44 r4 Software stacked registers
0x48 s17 0x48 r5
0x4C s18 0x4C r6
0x50 s19 0x50 r7
0x54 s20 0x54 r8
0x58 s21 0x58 r9
0x5C s22 0x5C r10
0x60 s23 0x60 r11
0x64 s24 0x64 r0 Hardware stacked registers
0x68 s25 0x68 r1
0x6C s26 0x6C r2
0x70 s27 0x70 r3
0x74 s28 0x74 r12
0x78 s29 0x78 lr
0x7C s30 0x7C pc
0x80 s31 0x80 xPSR
0x84 fpscr 0x84 s0 Hardware stacked FPU registers
0x88 r4 0x88 s1
0x8C r5 0x8C s2
0x90 r6 0x90 s3
0x94 r7 0x94 s4
0x98 r8 0x98 s5
0x9C r9 0x9C s6
0xA0 r10 0xA0 s7
0xA4 r11 0xA4 s8
0xA8 r0 (Hardware stack starts here!!) 0xA8 s9
0xAC r1 0xAC s10
0xB0 r2 0xB0 s11
0xB4 r3 0xB4 s12
0xB8 r12 0xB8 s13
0xBC lr 0xBC s14
0xC0 pc 0xC0 s15
0xC4 xPSR 0xC4 fpscr
5. Improving Performance 5. Improving Performance

View File

@@ -56,78 +56,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 r4 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r5 0x04 r4 Software stacked GP registers
0x08 r6 0x08 r5
0x0C r7 0x0C r6
0x10 r8 0x10 r7
0x14 r9 0x14 r8
0x18 r10 0x18 r9
0x1C r11 0x1C r10
0x20 r0 (Hardware stack starts here!!) 0x20 r11
0x24 r1 0x24 r0 Hardware stacked registers
0x28 r2 0x28 r1
0x2C r3 0x2C r2
0x30 r12 0x30 r3
0x34 lr 0x34 r12
0x38 pc 0x38 lr
0x3C xPSR 0x3C pc
0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 s0 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s1 0x04 s16 Software stacked FPU registers
0x08 s2 0x08 s17
0x0C s3 0x0C s18
0x10 s4 0x10 s19
0x14 s5 0x14 s20
0x18 s6 0x18 s21
0x1C s7 0x1C s22
0x20 s8 0x20 s23
0x24 s9 0x24 s24
0x28 s10 0x28 s25
0x2C s11 0x2C s26
0x30 s12 0x30 s27
0x34 s13 0x34 s28
0x38 s14 0x38 s29
0x3C s15 0x3C s30
0x40 s16 0x40 s31
0x44 s17 0x44 r4 Software stacked registers
0x48 s18 0x48 r5
0x4C s19 0x4C r6
0x50 s20 0x50 r7
0x54 s21 0x54 r8
0x58 s22 0x58 r9
0x5C s23 0x5C r10
0x60 s24 0x60 r11
0x64 s25 0x64 r0 Hardware stacked registers
0x68 s26 0x68 r1
0x6C s27 0x6C r2
0x70 s28 0x70 r3
0x74 s29 0x74 r12
0x78 s30 0x78 lr
0x7C s31 0x7C pc
0x80 fpscr 0x80 xPSR
0x84 r4 0x84 s0 Hardware stacked FPU registers
0x88 r5 0x88 s1
0x8C r6 0x8C s2
0x90 r7 0x90 s3
0x94 r8 0x94 s4
0x98 r9 0x98 s5
0x9C r10 0x9C s6
0xA0 r11 0xA0 s7
0xA4 r0 (Hardware stack starts here!!) 0xA4 s8
0xA8 r1 0xA8 s9
0xAC r2 0xAC s10
0xB0 r3 0xB0 s11
0xB4 r12 0xB4 s12
0xB8 lr 0xB8 s13
0xBC pc 0xBC s14
0xC0 xPSR 0xC0 s15
0xC4 fpscr
5. Improving Performance 5. Improving Performance

View File

@@ -30,6 +30,10 @@
IMPORT _tx_execution_thread_enter IMPORT _tx_execution_thread_enter
IMPORT _tx_execution_thread_exit IMPORT _tx_execution_thread_exit
ENDIF ENDIF
IF :DEF:TX_LOW_POWER
IMPORT tx_low_power_enter
IMPORT tx_low_power_exit
ENDIF
; ;
; ;
AREA ||.text||, CODE, READONLY AREA ||.text||, CODE, READONLY
@@ -39,7 +43,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M4/AC5 */ ;/* _tx_thread_schedule Cortex-M4/AC5 */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -72,7 +76,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -237,11 +244,25 @@ __tx_ts_wait
LDR r1, [r2] ; Pickup the next thread to execute pointer LDR r1, [r2] ; Pickup the next thread to execute pointer
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready!
IF :DEF:TX_ENABLE_WFI
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
ENDIF
IF:DEF:TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
ENDIF ENDIF
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
ENDIF
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

View File

@@ -56,80 +56,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r4 0x04 r4 Software stacked GP registers
0x08 r5 0x08 r5
0x0C r6 0x0C r6
0x10 r7 0x10 r7
0x14 r8 0x14 r8
0x18 r9 0x18 r9
0x1C r10 0x1C r10
0x20 r11 0x20 r11
0x24 r0 (Hardware stack starts here!!) 0x24 r0 Hardware stacked registers
0x28 r1 0x28 r1
0x2C r2 0x2C r2
0x30 r3 0x30 r3
0x34 r12 0x34 r12
0x38 lr 0x38 lr
0x3C pc 0x3C pc
0x40 xPSR 0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s0 0x04 s16 Software stacked FPU registers
0x08 s1 0x08 s17
0x0C s2 0x0C s18
0x10 s3 0x10 s19
0x14 s4 0x14 s20
0x18 s5 0x18 s21
0x1C s6 0x1C s22
0x20 s7 0x20 s23
0x24 s8 0x24 s24
0x28 s9 0x28 s25
0x2C s10 0x2C s26
0x30 s11 0x30 s27
0x34 s12 0x34 s28
0x38 s13 0x38 s29
0x3C s14 0x3C s30
0x40 s15 0x40 s31
0x44 s16 0x44 r4 Software stacked registers
0x48 s17 0x48 r5
0x4C s18 0x4C r6
0x50 s19 0x50 r7
0x54 s20 0x54 r8
0x58 s21 0x58 r9
0x5C s22 0x5C r10
0x60 s23 0x60 r11
0x64 s24 0x64 r0 Hardware stacked registers
0x68 s25 0x68 r1
0x6C s26 0x6C r2
0x70 s27 0x70 r3
0x74 s28 0x74 r12
0x78 s29 0x78 lr
0x7C s30 0x7C pc
0x80 s31 0x80 xPSR
0x84 fpscr 0x84 s0 Hardware stacked FPU registers
0x88 r4 0x88 s1
0x8C r5 0x8C s2
0x90 r6 0x90 s3
0x94 r7 0x94 s4
0x98 r8 0x98 s5
0x9C r9 0x9C s6
0xA0 r10 (sl) 0xA0 s7
0xA4 r11 0xA4 s8
0xA8 r0 (Hardware stack starts here!!) 0xA8 s9
0xAC r1 0xAC s10
0xB0 r2 0xB0 s11
0xB4 r3 0xB4 s12
0xB8 r12 0xB8 s13
0xBC lr 0xBC s14
0xC0 pc 0xC0 s15
0xC4 xPSR 0xC4 fpscr
6. Improving Performance 6. Improving Performance

View File

@@ -25,6 +25,11 @@
.global _tx_thread_execute_ptr .global _tx_thread_execute_ptr
.global _tx_timer_time_slice .global _tx_timer_time_slice
.global _tx_thread_system_stack_ptr .global _tx_thread_system_stack_ptr
#ifdef TX_LOW_POWER
.global tx_low_power_enter
.global tx_low_power_exit
#endif
@ @
@ @
.text .text
@@ -35,7 +40,7 @@
@/* FUNCTION RELEASE */ @/* FUNCTION RELEASE */
@/* */ @/* */
@/* _tx_thread_schedule Cortex-M4/AC6 */ @/* _tx_thread_schedule Cortex-M4/AC6 */
@/* 6.1 */ @/* 6.1.5 */
@/* AUTHOR */ @/* AUTHOR */
@/* */ @/* */
@/* William E. Lamie, Microsoft Corporation */ @/* William E. Lamie, Microsoft Corporation */
@@ -68,7 +73,10 @@
@/* */ @/* */
@/* DATE NAME DESCRIPTION */ @/* DATE NAME DESCRIPTION */
@/* */ @/* */
@/* 09-30-2020 William E. Lamie Initial Version 6.1 */ @/* 09-30-2020 William E. Lamie Initial Version 6.1 */
@/* 03-02-2021 Scott Larson Modified comment(s), add */
@/* low power code, */
@/* resulting in version 6.1.5 */
@/* */ @/* */
@/**************************************************************************/ @/**************************************************************************/
@VOID _tx_thread_schedule(VOID) @VOID _tx_thread_schedule(VOID)
@@ -238,11 +246,25 @@ __tx_ts_wait:
LDR r1, [r2] @ Pickup the next thread to execute pointer LDR r1, [r2] @ Pickup the next thread to execute pointer
STR r1, [r0] @ Store it in the current pointer STR r1, [r0] @ Store it in the current pointer
CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter @ Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB @ Ensure no outstanding memory transactions DSB @ Ensure no outstanding memory transactions
WFI @ Wait for interrupt WFI @ Wait for interrupt
ISB @ Ensure pipeline is flushed ISB @ Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit @ Exit low power mode
POP {r0-r3}
#endif
CPSIE i @ Enable interrupts CPSIE i @ Enable interrupts
B __tx_ts_wait @ Loop to continue waiting B __tx_ts_wait @ Loop to continue waiting
@ @

View File

@@ -81,78 +81,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 r4 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r5 0x04 r4 Software stacked GP registers
0x08 r6 0x08 r5
0x0C r7 0x0C r6
0x10 r8 0x10 r7
0x14 r9 0x14 r8
0x18 r10 0x18 r9
0x1C r11 0x1C r10
0x20 r0 (Hardware stack starts here!!) 0x20 r11
0x24 r1 0x24 r0 Hardware stacked registers
0x28 r2 0x28 r1
0x2C r3 0x2C r2
0x30 r12 0x30 r3
0x34 lr 0x34 r12
0x38 pc 0x38 lr
0x3C xPSR 0x3C pc
0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 s0 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s1 0x04 s16 Software stacked FPU registers
0x08 s2 0x08 s17
0x0C s3 0x0C s18
0x10 s4 0x10 s19
0x14 s5 0x14 s20
0x18 s6 0x18 s21
0x1C s7 0x1C s22
0x20 s8 0x20 s23
0x24 s9 0x24 s24
0x28 s10 0x28 s25
0x2C s11 0x2C s26
0x30 s12 0x30 s27
0x34 s13 0x34 s28
0x38 s14 0x38 s29
0x3C s15 0x3C s30
0x40 s16 0x40 s31
0x44 s17 0x44 r4 Software stacked registers
0x48 s18 0x48 r5
0x4C s19 0x4C r6
0x50 s20 0x50 r7
0x54 s21 0x54 r8
0x58 s22 0x58 r9
0x5C s23 0x5C r10
0x60 s24 0x60 r11
0x64 s25 0x64 r0 Hardware stacked registers
0x68 s26 0x68 r1
0x6C s27 0x6C r2
0x70 s28 0x70 r3
0x74 s29 0x74 r12
0x78 s30 0x78 lr
0x7C s31 0x7C pc
0x80 fpscr 0x80 xPSR
0x84 r4 0x84 s0 Hardware stacked FPU registers
0x88 r5 0x88 s1
0x8C r6 0x8C s2
0x90 r7 0x90 s3
0x94 r8 0x94 s4
0x98 r9 0x98 s5
0x9C r10 (sl) 0x9C s6
0xA0 r11 0xA0 s7
0xA4 r0 (Hardware stack starts here!!) 0xA4 s8
0xA8 r1 0xA8 s9
0xAC r2 0xAC s10
0xB0 r3 0xB0 s11
0xB4 r12 0xB4 s12
0xB8 lr 0xB8 s13
0xBC pc 0xBC s14
0xC0 xPSR 0xC0 s15
0xC4 fpscr
7. Improving Performance 7. Improving Performance

View File

@@ -28,7 +28,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M4/GHS */ ;/* _tx_thread_schedule Cortex-M4/GHS */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -61,7 +61,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -230,11 +233,25 @@ __tx_ts_wait:
LDR r1, [r2] ; Pickup the next thread to execute pointer LDR r1, [r2] ; Pickup the next thread to execute pointer
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
#endif
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

0
ports/cortex_m4/gnu/CMakeLists.txt Normal file → Executable file
View File

View File

@@ -53,80 +53,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r4 0x04 r4 Software stacked GP registers
0x08 r5 0x08 r5
0x0C r6 0x0C r6
0x10 r7 0x10 r7
0x14 r8 0x14 r8
0x18 r9 0x18 r9
0x1C r10 0x1C r10
0x20 r11 0x20 r11
0x24 r0 (Hardware stack starts here!!) 0x24 r0 Hardware stacked registers
0x28 r1 0x28 r1
0x2C r2 0x2C r2
0x30 r3 0x30 r3
0x34 r12 0x34 r12
0x38 lr 0x38 lr
0x3C pc 0x3C pc
0x40 xPSR 0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s0 0x04 s16 Software stacked FPU registers
0x08 s1 0x08 s17
0x0C s2 0x0C s18
0x10 s3 0x10 s19
0x14 s4 0x14 s20
0x18 s5 0x18 s21
0x1C s6 0x1C s22
0x20 s7 0x20 s23
0x24 s8 0x24 s24
0x28 s9 0x28 s25
0x2C s10 0x2C s26
0x30 s11 0x30 s27
0x34 s12 0x34 s28
0x38 s13 0x38 s29
0x3C s14 0x3C s30
0x40 s15 0x40 s31
0x44 s16 0x44 r4 Software stacked registers
0x48 s17 0x48 r5
0x4C s18 0x4C r6
0x50 s19 0x50 r7
0x54 s20 0x54 r8
0x58 s21 0x58 r9
0x5C s22 0x5C r10
0x60 s23 0x60 r11
0x64 s24 0x64 r0 Hardware stacked registers
0x68 s25 0x68 r1
0x6C s26 0x6C r2
0x70 s27 0x70 r3
0x74 s28 0x74 r12
0x78 s29 0x78 lr
0x7C s30 0x7C pc
0x80 s31 0x80 xPSR
0x84 fpscr 0x84 s0 Hardware stacked FPU registers
0x88 r4 0x88 s1
0x8C r5 0x8C s2
0x90 r6 0x90 s3
0x94 r7 0x94 s4
0x98 r8 0x98 s5
0x9C r9 0x9C s6
0xA0 r10 (sl) 0xA0 s7
0xA4 r11 0xA4 s8
0xA8 r0 (Hardware stack starts here!!) 0xA8 s9
0xAC r1 0xAC s10
0xB0 r2 0xB0 s11
0xB4 r3 0xB4 s12
0xB8 r12 0xB8 s13
0xBC lr 0xBC s14
0xC0 pc 0xC0 s15
0xC4 xPSR 0xC4 fpscr
5. Improving Performance 5. Improving Performance

View File

@@ -27,6 +27,10 @@
.global _tx_thread_system_stack_ptr .global _tx_thread_system_stack_ptr
.global _tx_execution_thread_enter .global _tx_execution_thread_enter
.global _tx_execution_thread_exit .global _tx_execution_thread_exit
#ifdef TX_LOW_POWER
.global tx_low_power_enter
.global tx_low_power_exit
#endif
@ @
@ @
.text .text
@@ -37,7 +41,7 @@
@/* FUNCTION RELEASE */ @/* FUNCTION RELEASE */
@/* */ @/* */
@/* _tx_thread_schedule Cortex-M4/GNU */ @/* _tx_thread_schedule Cortex-M4/GNU */
@/* 6.1 */ @/* 6.1.5 */
@/* AUTHOR */ @/* AUTHOR */
@/* */ @/* */
@/* William E. Lamie, Microsoft Corporation */ @/* William E. Lamie, Microsoft Corporation */
@@ -70,9 +74,12 @@
@/* */ @/* */
@/* DATE NAME DESCRIPTION */ @/* DATE NAME DESCRIPTION */
@/* */ @/* */
@/* 05-19-2020 William E. Lamie Initial Version 6.0 */ @/* 05-19-2020 William E. Lamie Initial Version 6.0 */
@/* 09-30-2020 William E. Lamie Modified comment(s), */ @/* 09-30-2020 William E. Lamie Modified comment(s), */
@/* resulting in version 6.1 */ @/* resulting in version 6.1 */
@/* 03-02-2021 Scott Larson Modified comment(s), add */
@/* low power code, */
@/* resulting in version 6.1.5 */
@/* */ @/* */
@/**************************************************************************/ @/**************************************************************************/
@VOID _tx_thread_schedule(VOID) @VOID _tx_thread_schedule(VOID)
@@ -242,11 +249,25 @@ __tx_ts_wait:
LDR r1, [r2] @ Pickup the next thread to execute pointer LDR r1, [r2] @ Pickup the next thread to execute pointer
STR r1, [r0] @ Store it in the current pointer STR r1, [r0] @ Store it in the current pointer
CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter @ Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB @ Ensure no outstanding memory transactions DSB @ Ensure no outstanding memory transactions
WFI @ Wait for interrupt WFI @ Wait for interrupt
ISB @ Ensure pipeline is flushed ISB @ Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit @ Exit low power mode
POP {r0-r3}
#endif
CPSIE i @ Enable interrupts CPSIE i @ Enable interrupts
B __tx_ts_wait @ Loop to continue waiting B __tx_ts_wait @ Loop to continue waiting
@ @

View File

@@ -58,80 +58,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r4 0x04 r4 Software stacked GP registers
0x08 r5 0x08 r5
0x0C r6 0x0C r6
0x10 r7 0x10 r7
0x14 r8 0x14 r8
0x18 r9 0x18 r9
0x1C r10 (sl) 0x1C r10
0x20 r11 0x20 r11
0x24 r0 (Hardware stack starts here!!) 0x24 r0 Hardware stacked registers
0x28 r1 0x28 r1
0x2C r2 0x2C r2
0x30 r3 0x30 r3
0x34 r12 0x34 r12
0x38 lr 0x38 lr
0x3C pc 0x3C pc
0x40 xPSR 0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s0 0x04 s16 Software stacked FPU registers
0x08 s1 0x08 s17
0x0C s2 0x0C s18
0x10 s3 0x10 s19
0x14 s4 0x14 s20
0x18 s5 0x18 s21
0x1C s6 0x1C s22
0x20 s7 0x20 s23
0x24 s8 0x24 s24
0x28 s9 0x28 s25
0x2C s10 0x2C s26
0x30 s11 0x30 s27
0x34 s12 0x34 s28
0x38 s13 0x38 s29
0x3C s14 0x3C s30
0x40 s15 0x40 s31
0x44 s16 0x44 r4 Software stacked registers
0x48 s17 0x48 r5
0x4C s18 0x4C r6
0x50 s19 0x50 r7
0x54 s20 0x54 r8
0x58 s21 0x58 r9
0x5C s22 0x5C r10
0x60 s23 0x60 r11
0x64 s24 0x64 r0 Hardware stacked registers
0x68 s25 0x68 r1
0x6C s26 0x6C r2
0x70 s27 0x70 r3
0x74 s28 0x74 r12
0x78 s29 0x78 lr
0x7C s30 0x7C pc
0x80 s31 0x80 xPSR
0x84 fpscr 0x84 s0 Hardware stacked FPU registers
0x88 r4 0x88 s1
0x8C r5 0x8C s2
0x90 r6 0x90 s3
0x94 r7 0x94 s4
0x98 r8 0x98 s5
0x9C r9 0x9C s6
0xA0 r10 (sl) 0xA0 s7
0xA4 r11 0xA4 s8
0xA8 r0 (Hardware stack starts here!!) 0xA8 s9
0xAC r1 0xAC s10
0xB0 r2 0xB0 s11
0xB4 r3 0xB4 s12
0xB8 r12 0xB8 s13
0xBC lr 0xBC s14
0xC0 pc 0xC0 s15
0xC4 xPSR 0xC4 fpscr
5. Improving Performance 5. Improving Performance

View File

@@ -28,6 +28,10 @@
EXTERN _tx_execution_thread_enter EXTERN _tx_execution_thread_enter
EXTERN _tx_execution_thread_exit EXTERN _tx_execution_thread_exit
EXTERN _tx_thread_preempt_disable EXTERN _tx_thread_preempt_disable
#ifdef TX_LOW_POWER
EXTERN tx_low_power_enter
EXTERN tx_low_power_exit
#endif
; ;
; ;
SECTION `.text`:CODE:NOROOT(2) SECTION `.text`:CODE:NOROOT(2)
@@ -37,7 +41,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M4/IAR */ ;/* _tx_thread_schedule Cortex-M4/IAR */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -70,7 +74,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -236,11 +243,25 @@ __tx_ts_wait:
LDR r1, [r2] ; Pickup the next thread to execute pointer LDR r1, [r2] ; Pickup the next thread to execute pointer
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
#endif
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

View File

@@ -57,78 +57,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 r4 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r5 0x04 r4 Software stacked GP registers
0x08 r6 0x08 r5
0x0C r7 0x0C r6
0x10 r8 0x10 r7
0x14 r9 0x14 r8
0x18 r10 0x18 r9
0x1C r11 0x1C r10
0x20 r0 (Hardware stack starts here!!) 0x20 r11
0x24 r1 0x24 r0 Hardware stacked registers
0x28 r2 0x28 r1
0x2C r3 0x2C r2
0x30 r12 0x30 r3
0x34 lr 0x34 r12
0x38 pc 0x38 lr
0x3C xPSR 0x3C pc
0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 s0 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s1 0x04 s16 Software stacked FPU registers
0x08 s2 0x08 s17
0x0C s3 0x0C s18
0x10 s4 0x10 s19
0x14 s5 0x14 s20
0x18 s6 0x18 s21
0x1C s7 0x1C s22
0x20 s8 0x20 s23
0x24 s9 0x24 s24
0x28 s10 0x28 s25
0x2C s11 0x2C s26
0x30 s12 0x30 s27
0x34 s13 0x34 s28
0x38 s14 0x38 s29
0x3C s15 0x3C s30
0x40 s16 0x40 s31
0x44 s17 0x44 r4 Software stacked registers
0x48 s18 0x48 r5
0x4C s19 0x4C r6
0x50 s20 0x50 r7
0x54 s21 0x54 r8
0x58 s22 0x58 r9
0x5C s23 0x5C r10
0x60 s24 0x60 r11
0x64 s25 0x64 r0 Hardware stacked registers
0x68 s26 0x68 r1
0x6C s27 0x6C r2
0x70 s28 0x70 r3
0x74 s29 0x74 r12
0x78 s30 0x78 lr
0x7C s31 0x7C pc
0x80 fpscr 0x80 xPSR
0x84 r4 0x84 s0 Hardware stacked FPU registers
0x88 r5 0x88 s1
0x8C r6 0x8C s2
0x90 r7 0x90 s3
0x94 r8 0x94 s4
0x98 r9 0x98 s5
0x9C r10 (sl) 0x9C s6
0xA0 r11 0xA0 s7
0xA4 r0 (Hardware stack starts here!!) 0xA4 s8
0xA8 r1 0xA8 s9
0xAC r2 0xAC s10
0xB0 r3 0xB0 s11
0xB4 r12 0xB4 s12
0xB8 lr 0xB8 s13
0xBC pc 0xBC s14
0xC0 xPSR 0xC0 s15
0xC4 fpscr
5. Improving Performance 5. Improving Performance

View File

@@ -30,6 +30,10 @@
IMPORT _tx_execution_thread_enter IMPORT _tx_execution_thread_enter
IMPORT _tx_execution_thread_exit IMPORT _tx_execution_thread_exit
ENDIF ENDIF
IF :DEF:TX_LOW_POWER
IMPORT tx_low_power_enter
IMPORT tx_low_power_exit
ENDIF
; ;
; ;
AREA ||.text||, CODE, READONLY AREA ||.text||, CODE, READONLY
@@ -39,7 +43,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M4/AC5 */ ;/* _tx_thread_schedule Cortex-M4/AC5 */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -72,7 +76,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -237,11 +244,25 @@ __tx_ts_wait
LDR r1, [r2] ; Pickup the next thread to execute pointer LDR r1, [r2] ; Pickup the next thread to execute pointer
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready!
IF :DEF:TX_ENABLE_WFI
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
ENDIF
IF:DEF:TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
ENDIF ENDIF
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
ENDIF
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

View File

@@ -57,78 +57,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 r4 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r5 0x04 r4 Software stacked GP registers
0x08 r6 0x08 r5
0x0C r7 0x0C r6
0x10 r8 0x10 r7
0x14 r9 0x14 r8
0x18 r10 0x18 r9
0x1C r11 0x1C r10
0x20 r0 (Hardware stack starts here!!) 0x20 r11
0x24 r1 0x24 r0 Hardware stacked registers
0x28 r2 0x28 r1
0x2C r3 0x2C r2
0x30 r12 0x30 r3
0x34 lr 0x34 r12
0x38 pc 0x38 lr
0x3C xPSR 0x3C pc
0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 s0 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s1 0x04 s16 Software stacked FPU registers
0x08 s2 0x08 s17
0x0C s3 0x0C s18
0x10 s4 0x10 s19
0x14 s5 0x14 s20
0x18 s6 0x18 s21
0x1C s7 0x1C s22
0x20 s8 0x20 s23
0x24 s9 0x24 s24
0x28 s10 0x28 s25
0x2C s11 0x2C s26
0x30 s12 0x30 s27
0x34 s13 0x34 s28
0x38 s14 0x38 s29
0x3C s15 0x3C s30
0x40 s16 0x40 s31
0x44 s17 0x44 r4 Software stacked registers
0x48 s18 0x48 r5
0x4C s19 0x4C r6
0x50 s20 0x50 r7
0x54 s21 0x54 r8
0x58 s22 0x58 r9
0x5C s23 0x5C r10
0x60 s24 0x60 r11
0x64 s25 0x64 r0 Hardware stacked registers
0x68 s26 0x68 r1
0x6C s27 0x6C r2
0x70 s28 0x70 r3
0x74 s29 0x74 r12
0x78 s30 0x78 lr
0x7C s31 0x7C pc
0x80 fpscr 0x80 xPSR
0x84 r4 0x84 s0 Hardware stacked FPU registers
0x88 r5 0x88 s1
0x8C r6 0x8C s2
0x90 r7 0x90 s3
0x94 r8 0x94 s4
0x98 r9 0x98 s5
0x9C r10 (sl) 0x9C s6
0xA0 r11 0xA0 s7
0xA4 r0 (Hardware stack starts here!!) 0xA4 s8
0xA8 r1 0xA8 s9
0xAC r2 0xAC s10
0xB0 r3 0xB0 s11
0xB4 r12 0xB4 s12
0xB8 lr 0xB8 s13
0xBC pc 0xBC s14
0xC0 xPSR 0xC0 s15
0xC4 fpscr
5. Improving Performance 5. Improving Performance

View File

@@ -30,6 +30,10 @@
IMPORT _tx_execution_thread_enter IMPORT _tx_execution_thread_enter
IMPORT _tx_execution_thread_exit IMPORT _tx_execution_thread_exit
ENDIF ENDIF
IF :DEF:TX_LOW_POWER
IMPORT tx_low_power_enter
IMPORT tx_low_power_exit
ENDIF
; ;
; ;
AREA ||.text||, CODE, READONLY AREA ||.text||, CODE, READONLY
@@ -39,7 +43,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M7/AC5 */ ;/* _tx_thread_schedule Cortex-M7/AC5 */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -72,7 +76,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -237,11 +244,25 @@ __tx_ts_wait
LDR r1, [r2] ; Pickup the next thread to execute pointer LDR r1, [r2] ; Pickup the next thread to execute pointer
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready!
IF :DEF:TX_ENABLE_WFI
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
ENDIF
IF:DEF:TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
ENDIF ENDIF
IF:DEF:TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
ENDIF
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

View File

@@ -55,24 +55,82 @@ ThreadX. The top of the suspended thread's stack is pointed to by
tx_thread_stack_ptr in the associated thread control block TX_THREAD. tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Stack Offset Stack Contents Non-FPU Stack Frame:
0x00 r4 Stack Offset Stack Contents
0x04 r5
0x08 r6 0x00 LR Interrupted LR (LR at time of PENDSV)
0x0C r7 0x04 r4 Software stacked GP registers
0x10 r8 0x08 r5
0x14 r9 0x0C r6
0x18 r10 0x10 r7
0x1C r11 0x14 r8
0x20 r0 (Hardware stack starts here!!) 0x18 r9
0x24 r1 0x1C r10
0x28 r2 0x20 r11
0x2C r3 0x24 r0 Hardware stacked registers
0x30 r12 0x28 r1
0x34 lr 0x2C r2
0x38 pc 0x30 r3
0x3C xPSR 0x34 r12
0x38 lr
0x3C pc
0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s16 Software stacked FPU registers
0x08 s17
0x0C s18
0x10 s19
0x14 s20
0x18 s21
0x1C s22
0x20 s23
0x24 s24
0x28 s25
0x2C s26
0x30 s27
0x34 s28
0x38 s29
0x3C s30
0x40 s31
0x44 r4 Software stacked registers
0x48 r5
0x4C r6
0x50 r7
0x54 r8
0x58 r9
0x5C r10
0x60 r11
0x64 r0 Hardware stacked registers
0x68 r1
0x6C r2
0x70 r3
0x74 r12
0x78 lr
0x7C pc
0x80 xPSR
0x84 s0 Hardware stacked FPU registers
0x88 s1
0x8C s2
0x90 s3
0x94 s4
0x98 s5
0x9C s6
0xA0 s7
0xA4 s8
0xA8 s9
0xAC s10
0xB0 s11
0xB4 s12
0xB8 s13
0xBC s14
0xC0 s15
0xC4 fpscr
6. Improving Performance 6. Improving Performance

View File

@@ -25,6 +25,11 @@
.global _tx_thread_execute_ptr .global _tx_thread_execute_ptr
.global _tx_timer_time_slice .global _tx_timer_time_slice
.global _tx_thread_system_stack_ptr .global _tx_thread_system_stack_ptr
#ifdef TX_LOW_POWER
.global tx_low_power_enter
.global tx_low_power_exit
#endif
@ @
@ @
.text .text
@@ -35,7 +40,7 @@
@/* FUNCTION RELEASE */ @/* FUNCTION RELEASE */
@/* */ @/* */
@/* _tx_thread_schedule Cortex-M7/AC6 */ @/* _tx_thread_schedule Cortex-M7/AC6 */
@/* 6.1 */ @/* 6.1.5 */
@/* AUTHOR */ @/* AUTHOR */
@/* */ @/* */
@/* William E. Lamie, Microsoft Corporation */ @/* William E. Lamie, Microsoft Corporation */
@@ -68,7 +73,10 @@
@/* */ @/* */
@/* DATE NAME DESCRIPTION */ @/* DATE NAME DESCRIPTION */
@/* */ @/* */
@/* 09-30-2020 William E. Lamie Initial Version 6.1 */ @/* 09-30-2020 William E. Lamie Initial Version 6.1 */
@/* 03-02-2021 Scott Larson Modified comment(s), add */
@/* low power code, */
@/* resulting in version 6.1.5 */
@/* */ @/* */
@/**************************************************************************/ @/**************************************************************************/
@VOID _tx_thread_schedule(VOID) @VOID _tx_thread_schedule(VOID)
@@ -237,11 +245,25 @@ __tx_ts_wait:
LDR r1, [r2] @ Pickup the next thread to execute pointer LDR r1, [r2] @ Pickup the next thread to execute pointer
STR r1, [r0] @ Store it in the current pointer STR r1, [r0] @ Store it in the current pointer
CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter @ Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB @ Ensure no outstanding memory transactions DSB @ Ensure no outstanding memory transactions
WFI @ Wait for interrupt WFI @ Wait for interrupt
ISB @ Ensure pipeline is flushed ISB @ Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit @ Exit low power mode
POP {r0-r3}
#endif
CPSIE i @ Enable interrupts CPSIE i @ Enable interrupts
B __tx_ts_wait @ Loop to continue waiting B __tx_ts_wait @ Loop to continue waiting
@ @

View File

@@ -81,78 +81,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 r4 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r5 0x04 r4 Software stacked GP registers
0x08 r6 0x08 r5
0x0C r7 0x0C r6
0x10 r8 0x10 r7
0x14 r9 0x14 r8
0x18 r10 0x18 r9
0x1C r11 0x1C r10
0x20 r0 (Hardware stack starts here!!) 0x20 r11
0x24 r1 0x24 r0 Hardware stacked registers
0x28 r2 0x28 r1
0x2C r3 0x2C r2
0x30 r12 0x30 r3
0x34 lr 0x34 r12
0x38 pc 0x38 lr
0x3C xPSR 0x3C pc
0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 s0 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s1 0x04 s16 Software stacked FPU registers
0x08 s2 0x08 s17
0x0C s3 0x0C s18
0x10 s4 0x10 s19
0x14 s5 0x14 s20
0x18 s6 0x18 s21
0x1C s7 0x1C s22
0x20 s8 0x20 s23
0x24 s9 0x24 s24
0x28 s10 0x28 s25
0x2C s11 0x2C s26
0x30 s12 0x30 s27
0x34 s13 0x34 s28
0x38 s14 0x38 s29
0x3C s15 0x3C s30
0x40 s16 0x40 s31
0x44 s17 0x44 r4 Software stacked registers
0x48 s18 0x48 r5
0x4C s19 0x4C r6
0x50 s20 0x50 r7
0x54 s21 0x54 r8
0x58 s22 0x58 r9
0x5C s23 0x5C r10
0x60 s24 0x60 r11
0x64 s25 0x64 r0 Hardware stacked registers
0x68 s26 0x68 r1
0x6C s27 0x6C r2
0x70 s28 0x70 r3
0x74 s29 0x74 r12
0x78 s30 0x78 lr
0x7C s31 0x7C pc
0x80 fpscr 0x80 xPSR
0x84 r4 0x84 s0 Hardware stacked FPU registers
0x88 r5 0x88 s1
0x8C r6 0x8C s2
0x90 r7 0x90 s3
0x94 r8 0x94 s4
0x98 r9 0x98 s5
0x9C r10 (sl) 0x9C s6
0xA0 r11 0xA0 s7
0xA4 r0 (Hardware stack starts here!!) 0xA4 s8
0xA8 r1 0xA8 s9
0xAC r2 0xAC s10
0xB0 r3 0xB0 s11
0xB4 r12 0xB4 s12
0xB8 lr 0xB8 s13
0xBC pc 0xBC s14
0xC0 xPSR 0xC0 s15
0xC4 fpscr
7. Improving Performance 7. Improving Performance

View File

@@ -28,7 +28,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M7/GHS */ ;/* _tx_thread_schedule Cortex-M7/GHS */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -61,7 +61,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -230,11 +233,25 @@ __tx_ts_wait:
LDR r1, [r2] ; Pickup the next thread to execute pointer LDR r1, [r2] ; Pickup the next thread to execute pointer
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
#endif
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

0
ports/cortex_m7/gnu/CMakeLists.txt Normal file → Executable file
View File

View File

@@ -52,24 +52,82 @@ ThreadX. The top of the suspended thread's stack is pointed to by
tx_thread_stack_ptr in the associated thread control block TX_THREAD. tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Stack Offset Stack Contents Non-FPU Stack Frame:
0x00 r4 Stack Offset Stack Contents
0x04 r5
0x08 r6 0x00 LR Interrupted LR (LR at time of PENDSV)
0x0C r7 0x04 r4 Software stacked GP registers
0x10 r8 0x08 r5
0x14 r9 0x0C r6
0x18 r10 0x10 r7
0x1C r11 0x14 r8
0x20 r0 (Hardware stack starts here!!) 0x18 r9
0x24 r1 0x1C r10
0x28 r2 0x20 r11
0x2C r3 0x24 r0 Hardware stacked registers
0x30 r12 0x28 r1
0x34 lr 0x2C r2
0x38 pc 0x30 r3
0x3C xPSR 0x34 r12
0x38 lr
0x3C pc
0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s16 Software stacked FPU registers
0x08 s17
0x0C s18
0x10 s19
0x14 s20
0x18 s21
0x1C s22
0x20 s23
0x24 s24
0x28 s25
0x2C s26
0x30 s27
0x34 s28
0x38 s29
0x3C s30
0x40 s31
0x44 r4 Software stacked registers
0x48 r5
0x4C r6
0x50 r7
0x54 r8
0x58 r9
0x5C r10
0x60 r11
0x64 r0 Hardware stacked registers
0x68 r1
0x6C r2
0x70 r3
0x74 r12
0x78 lr
0x7C pc
0x80 xPSR
0x84 s0 Hardware stacked FPU registers
0x88 s1
0x8C s2
0x90 s3
0x94 s4
0x98 s5
0x9C s6
0xA0 s7
0xA4 s8
0xA8 s9
0xAC s10
0xB0 s11
0xB4 s12
0xB8 s13
0xBC s14
0xC0 s15
0xC4 fpscr
5. Improving Performance 5. Improving Performance

0
ports/cortex_m7/gnu/src/tx_thread_context_restore.S Executable file → Normal file
View File

0
ports/cortex_m7/gnu/src/tx_thread_context_save.S Executable file → Normal file
View File

0
ports/cortex_m7/gnu/src/tx_thread_interrupt_control.S Executable file → Normal file
View File

29
ports/cortex_m7/gnu/src/tx_thread_schedule.S Executable file → Normal file
View File

@@ -27,6 +27,10 @@
.global _tx_thread_system_stack_ptr .global _tx_thread_system_stack_ptr
.global _tx_execution_thread_enter .global _tx_execution_thread_enter
.global _tx_execution_thread_exit .global _tx_execution_thread_exit
#ifdef TX_LOW_POWER
.global tx_low_power_enter
.global tx_low_power_exit
#endif
@ @
@ @
.text .text
@@ -37,7 +41,7 @@
@/* FUNCTION RELEASE */ @/* FUNCTION RELEASE */
@/* */ @/* */
@/* _tx_thread_schedule Cortex-M7/GNU */ @/* _tx_thread_schedule Cortex-M7/GNU */
@/* 6.1 */ @/* 6.1.5 */
@/* AUTHOR */ @/* AUTHOR */
@/* */ @/* */
@/* William E. Lamie, Microsoft Corporation */ @/* William E. Lamie, Microsoft Corporation */
@@ -70,9 +74,12 @@
@/* */ @/* */
@/* DATE NAME DESCRIPTION */ @/* DATE NAME DESCRIPTION */
@/* */ @/* */
@/* 05-19-2020 William E. Lamie Initial Version 6.0 */ @/* 05-19-2020 William E. Lamie Initial Version 6.0 */
@/* 09-30-2020 William E. Lamie Modified comment(s), */ @/* 09-30-2020 William E. Lamie Modified comment(s), */
@/* resulting in version 6.1 */ @/* resulting in version 6.1 */
@/* 03-02-2021 Scott Larson Modified comment(s), add */
@/* low power code, */
@/* resulting in version 6.1.5 */
@/* */ @/* */
@/**************************************************************************/ @/**************************************************************************/
@VOID _tx_thread_schedule(VOID) @VOID _tx_thread_schedule(VOID)
@@ -241,11 +248,25 @@ __tx_ts_wait:
LDR r1, [r2] @ Pickup the next thread to execute pointer LDR r1, [r2] @ Pickup the next thread to execute pointer
STR r1, [r0] @ Store it in the current pointer STR r1, [r0] @ Store it in the current pointer
CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready @ If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter @ Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB @ Ensure no outstanding memory transactions DSB @ Ensure no outstanding memory transactions
WFI @ Wait for interrupt WFI @ Wait for interrupt
ISB @ Ensure pipeline is flushed ISB @ Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit @ Exit low power mode
POP {r0-r3}
#endif
CPSIE i @ Enable interrupts CPSIE i @ Enable interrupts
B __tx_ts_wait @ Loop to continue waiting B __tx_ts_wait @ Loop to continue waiting
@ @

0
ports/cortex_m7/gnu/src/tx_thread_stack_build.S Executable file → Normal file
View File

0
ports/cortex_m7/gnu/src/tx_thread_system_return.S Executable file → Normal file
View File

0
ports/cortex_m7/gnu/src/tx_timer_interrupt.S Executable file → Normal file
View File

View File

@@ -58,80 +58,80 @@ tx_thread_stack_ptr in the associated thread control block TX_THREAD.
Non-FPU Stack Frame: Non-FPU Stack Frame:
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 r4 0x04 r4 Software stacked GP registers
0x08 r5 0x08 r5
0x0C r6 0x0C r6
0x10 r7 0x10 r7
0x14 r8 0x14 r8
0x18 r9 0x18 r9
0x1C r10 (sl) 0x1C r10
0x20 r11 0x20 r11
0x24 r0 (Hardware stack starts here!!) 0x24 r0 Hardware stacked registers
0x28 r1 0x28 r1
0x2C r2 0x2C r2
0x30 r3 0x30 r3
0x34 r12 0x34 r12
0x38 lr 0x38 lr
0x3C pc 0x3C pc
0x40 xPSR 0x40 xPSR
FPU Stack Frame (only interrupted thread with FPU enabled): FPU Stack Frame (only interrupted thread with FPU enabled):
Stack Offset Stack Contents Stack Offset Stack Contents
0x00 LR Interrupted LR (LR at time of PENDSV) 0x00 LR Interrupted LR (LR at time of PENDSV)
0x04 s0 0x04 s16 Software stacked FPU registers
0x08 s1 0x08 s17
0x0C s2 0x0C s18
0x10 s3 0x10 s19
0x14 s4 0x14 s20
0x18 s5 0x18 s21
0x1C s6 0x1C s22
0x20 s7 0x20 s23
0x24 s8 0x24 s24
0x28 s9 0x28 s25
0x2C s10 0x2C s26
0x30 s11 0x30 s27
0x34 s12 0x34 s28
0x38 s13 0x38 s29
0x3C s14 0x3C s30
0x40 s15 0x40 s31
0x44 s16 0x44 r4 Software stacked registers
0x48 s17 0x48 r5
0x4C s18 0x4C r6
0x50 s19 0x50 r7
0x54 s20 0x54 r8
0x58 s21 0x58 r9
0x5C s22 0x5C r10
0x60 s23 0x60 r11
0x64 s24 0x64 r0 Hardware stacked registers
0x68 s25 0x68 r1
0x6C s26 0x6C r2
0x70 s27 0x70 r3
0x74 s28 0x74 r12
0x78 s29 0x78 lr
0x7C s30 0x7C pc
0x80 s31 0x80 xPSR
0x84 fpscr 0x84 s0 Hardware stacked FPU registers
0x88 r4 0x88 s1
0x8C r5 0x8C s2
0x90 r6 0x90 s3
0x94 r7 0x94 s4
0x98 r8 0x98 s5
0x9C r9 0x9C s6
0xA0 r10 (sl) 0xA0 s7
0xA4 r11 0xA4 s8
0xA8 r0 (Hardware stack starts here!!) 0xA8 s9
0xAC r1 0xAC s10
0xB0 r2 0xB0 s11
0xB4 r3 0xB4 s12
0xB8 r12 0xB8 s13
0xBC lr 0xBC s14
0xC0 pc 0xC0 s15
0xC4 xPSR 0xC4 fpscr
5. Improving Performance 5. Improving Performance

View File

@@ -28,6 +28,10 @@
EXTERN _tx_execution_thread_enter EXTERN _tx_execution_thread_enter
EXTERN _tx_execution_thread_exit EXTERN _tx_execution_thread_exit
EXTERN _tx_thread_preempt_disable EXTERN _tx_thread_preempt_disable
#ifdef TX_LOW_POWER
EXTERN tx_low_power_enter
EXTERN tx_low_power_exit
#endif
; ;
; ;
SECTION `.text`:CODE:NOROOT(2) SECTION `.text`:CODE:NOROOT(2)
@@ -37,7 +41,7 @@
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule Cortex-M7/IAR */ ;/* _tx_thread_schedule Cortex-M7/IAR */
;/* 6.1 */ ;/* 6.1.5 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
@@ -70,7 +74,10 @@
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 09-30-2020 William E. Lamie Initial Version 6.1 */ ;/* 09-30-2020 William E. Lamie Initial Version 6.1 */
;/* 03-02-2021 Scott Larson Modified comment(s), add */
;/* low power code, */
;/* resulting in version 6.1.5 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
@@ -236,11 +243,25 @@ __tx_ts_wait:
LDR r1, [r2] ; Pickup the next thread to execute pointer LDR r1, [r2] ; Pickup the next thread to execute pointer
STR r1, [r0] ; Store it in the current pointer STR r1, [r0] ; Store it in the current pointer
CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready! CBNZ r1, __tx_ts_ready ; If non-NULL, a new thread is ready!
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_enter ; Possibly enter low power mode
POP {r0-r3}
#endif
#ifdef TX_ENABLE_WFI #ifdef TX_ENABLE_WFI
DSB ; Ensure no outstanding memory transactions DSB ; Ensure no outstanding memory transactions
WFI ; Wait for interrupt WFI ; Wait for interrupt
ISB ; Ensure pipeline is flushed ISB ; Ensure pipeline is flushed
#endif #endif
#ifdef TX_LOW_POWER
PUSH {r0-r3}
BL tx_low_power_exit ; Exit low power mode
POP {r0-r3}
#endif
CPSIE i ; Enable interrupts CPSIE i ; Enable interrupts
B __tx_ts_wait ; Loop to continue waiting B __tx_ts_wait ; Loop to continue waiting
; ;

View File

@@ -12,7 +12,7 @@
/**************************************************************************/ /**************************************************************************/
/**************************************************************************/ /**************************************************************************/
/** */ /** */
/** ThreadX Component */ /** ThreadX Component */
/** */ /** */
/** Port Specific */ /** Port Specific */
@@ -21,35 +21,35 @@
/**************************************************************************/ /**************************************************************************/
/**************************************************************************/ /**************************************************************************/
/* */ /* */
/* PORT SPECIFIC C INFORMATION RELEASE */ /* PORT SPECIFIC C INFORMATION RELEASE */
/* */ /* */
/* tx_port.h RX/CCRX */ /* tx_port.h RXv2/CCRX */
/* 6.1.3 */ /* 6.1.3 */
/* */ /* */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* William E. Lamie, Express Logic, Inc. */ /* William E. Lamie, Express Logic, Inc. */
/* */ /* */
/* DESCRIPTION */ /* DESCRIPTION */
/* */ /* */
/* This file contains data type definitions that make the ThreadX */ /* This file contains data type definitions that make the ThreadX */
/* real-time kernel function identically on a variety of different */ /* real-time kernel function identically on a variety of different */
/* processor architectures. For example, the size or number of bits */ /* processor architectures. For example, the size or number of bits */
/* in an "int" data type vary between microprocessor architectures and */ /* in an "int" data type vary between microprocessor architectures and */
/* even C compilers for the same microprocessor. ThreadX does not */ /* even C compilers for the same microprocessor. ThreadX does not */
/* directly use native C data types. Instead, ThreadX creates its */ /* directly use native C data types. Instead, ThreadX creates its */
/* own special types that can be mapped to actual data types by this */ /* own special types that can be mapped to actual data types by this */
/* file to guarantee consistency in the interface and functionality. */ /* file to guarantee consistency in the interface and functionality. */
/* */ /* */
/* RELEASE HISTORY */ /* RELEASE HISTORY */
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ /* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef TX_PORT_H #ifndef TX_PORT_H
#define TX_PORT_H #define TX_PORT_H
@@ -271,7 +271,7 @@ extern volatile ULONG _tx_thread_system_state;
#ifdef TX_THREAD_INIT #ifdef TX_THREAD_INIT
CHAR _tx_version_id[] = CHAR _tx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * ThreadX RX/CCRX Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * ThreadX RXv2/CCRX Version 6.1.3 *";
#else #else
extern CHAR _tx_version_id[]; extern CHAR _tx_version_id[];
#endif #endif

View File

@@ -12,8 +12,8 @@
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;/** */ ;/** */
;/** ThreadX Component */ ;/** ThreadX Component */
;/** */ ;/** */
;/** Initialize */ ;/** Initialize */
;/** */ ;/** */
@@ -29,47 +29,47 @@
.SECTION P,CODE .SECTION P,CODE
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_initialize_low_level RX/CCRX */ ;/* _tx_initialize_low_level RXv2/CCRX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function is responsible for any low-level processor */ ;/* This function is responsible for any low-level processor */
;/* initialization, including setting up interrupt vectors, setting */ ;/* initialization, including setting up interrupt vectors, setting */
;/* up a periodic timer interrupt source, saving the system stack */ ;/* up a periodic timer interrupt source, saving the system stack */
;/* pointer for use in ISR processing later, and finding the first */ ;/* pointer for use in ISR processing later, and finding the first */
;/* available RAM memory address for tx_application_define. */ ;/* available RAM memory address for tx_application_define. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* OUTPUT */ ;/* OUTPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLS */ ;/* CALLS */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLED BY */
;/* */ ;/* */
;/* _tx_initialize_kernel_enter ThreadX entry function */ ;/* _tx_initialize_kernel_enter ThreadX entry function */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
.GLB __tx_initialize_low_level .GLB __tx_initialize_low_level
__tx_initialize_low_level: __tx_initialize_low_level:

View File

@@ -12,8 +12,8 @@
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;/** */ ;/** */
;/** ThreadX Component */ ;/** ThreadX Component */
;/** */ ;/** */
;/** Thread */ ;/** Thread */
;/** */ ;/** */
@@ -40,46 +40,46 @@
.GLB __tx_thread_preempt_disable .GLB __tx_thread_preempt_disable
; ;
.SECTION P,CODE .SECTION P,CODE
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_context_restore RX/CCRX */ ;/* _tx_thread_context_restore RXv2/CCRX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function restores the interrupt context if it is processing a */ ;/* This function restores the interrupt context if it is processing a */
;/* nested interrupt. If not, it returns to the interrupt thread if no */ ;/* nested interrupt. If not, it returns to the interrupt thread if no */
;/* preemption is necessary. Otherwise, if preemption is necessary or */ ;/* preemption is necessary. Otherwise, if preemption is necessary or */
;/* if no thread was running, the function returns to the scheduler. */ ;/* if no thread was running, the function returns to the scheduler. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* OUTPUT */ ;/* OUTPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLS */ ;/* CALLS */
;/* */ ;/* */
;/* _tx_thread_schedule Thread scheduling routine */ ;/* _tx_thread_schedule Thread scheduling routine */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLED BY */
;/* */ ;/* */
;/* ISRs Interrupt Service Routines */ ;/* ISRs Interrupt Service Routines */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_context_restore(VOID) ;VOID _tx_thread_context_restore(VOID)
;{ ;{
.GLB __tx_thread_context_restore .GLB __tx_thread_context_restore

View File

@@ -35,45 +35,45 @@
.GLB __tx_thread_system_stack_ptr .GLB __tx_thread_system_stack_ptr
.SECTION P,CODE .SECTION P,CODE
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_context_save RX/CCRX */ ;/* _tx_thread_context_save RXv2/CCRX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function saves the context of an executing thread in the */ ;/* This function saves the context of an executing thread in the */
;/* beginning of interrupt processing. The function also ensures that */ ;/* beginning of interrupt processing. The function also ensures that */
;/* the system stack is used upon return to the calling ISR. */ ;/* the system stack is used upon return to the calling ISR. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* OUTPUT */ ;/* OUTPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLS */ ;/* CALLS */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLED BY */
;/* */ ;/* */
;/* ISRs */ ;/* ISRs */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_context_save(VOID) ;VOID _tx_thread_context_save(VOID)
;{ ;{
.GLB __tx_thread_context_save .GLB __tx_thread_context_save

View File

@@ -12,8 +12,8 @@
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;/** */ ;/** */
;/** ThreadX Component */ ;/** ThreadX Component */
;/** */ ;/** */
;/** Thread */ ;/** Thread */
;/** */ ;/** */
@@ -30,44 +30,44 @@
; ;
; ;
.SECTION P,CODE .SECTION P,CODE
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_interrupt_control RX/CCRX */ ;/* _tx_thread_interrupt_control RXv2/CCRX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function is responsible for changing the interrupt lockout */ ;/* This function is responsible for changing the interrupt lockout */
;/* posture of the system. */ ;/* posture of the system. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* new_posture New interrupt lockout posture */ ;/* new_posture New interrupt lockout posture */
;/* */ ;/* */
;/* OUTPUT */ ;/* OUTPUT */
;/* */ ;/* */
;/* old_posture Old interrupt lockout posture */ ;/* old_posture Old interrupt lockout posture */
;/* */ ;/* */
;/* CALLS */ ;/* CALLS */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLED BY */
;/* */ ;/* */
;/* Application Code */ ;/* Application Code */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;UINT _tx_thread_interrupt_control(UINT new_posture) ;UINT _tx_thread_interrupt_control(UINT new_posture)
;{ ;{

View File

@@ -12,8 +12,8 @@
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;/** */ ;/** */
;/** ThreadX Component */ ;/** ThreadX Component */
;/** */ ;/** */
;/** Thread */ ;/** Thread */
;/** */ ;/** */
@@ -37,47 +37,47 @@
; ;
.SECTION P,CODE .SECTION P,CODE
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule RX/CCRX */ ;/* _tx_thread_schedule RXv2/CCRX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function waits for a thread control block pointer to appear in */ ;/* This function waits for a thread control block pointer to appear in */
;/* the _tx_thread_execute_ptr variable. Once a thread pointer appears */ ;/* the _tx_thread_execute_ptr variable. Once a thread pointer appears */
;/* in the variable, the corresponding thread is resumed. */ ;/* in the variable, the corresponding thread is resumed. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* None */
;/* */
;/* OUTPUT */
;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLS */ ;/* OUTPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLS */
;/* */ ;/* */
;/* _tx_initialize_kernel_enter ThreadX entry function */ ;/* None */
;/* _tx_thread_system_return Return to system from thread */ ;/* */
;/* _tx_thread_context_restore Restore thread's context */ ;/* CALLED BY */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* _tx_initialize_kernel_enter ThreadX entry function */
;/* */ ;/* _tx_thread_system_return Return to system from thread */
;/* DATE NAME DESCRIPTION */ ;/* _tx_thread_context_restore Restore thread's context */
;/* */ ;/* */
;/* RELEASE HISTORY */
;/* */
;/* DATE NAME DESCRIPTION */
;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
;{ ;{
.GLB __tx_thread_schedule .GLB __tx_thread_schedule

View File

@@ -12,8 +12,8 @@
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;/** */ ;/** */
;/** ThreadX Component */ ;/** ThreadX Component */
;/** */ ;/** */
;/** Thread */ ;/** Thread */
;/** */ ;/** */
@@ -31,46 +31,46 @@
; ;
; ;
.SECTION P,CODE .SECTION P,CODE
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_stack_build RX/CCRX */ ;/* _tx_thread_stack_build RXv2/CCRX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function builds a stack frame on the supplied thread's stack. */ ;/* This function builds a stack frame on the supplied thread's stack. */
;/* The stack frame results in a fake interrupt return to the supplied */ ;/* The stack frame results in a fake interrupt return to the supplied */
;/* function pointer. */ ;/* function pointer. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* thread_ptr Pointer to thread control blk */ ;/* thread_ptr Pointer to thread control blk */
;/* function_ptr Pointer to return function */ ;/* function_ptr Pointer to return function */
;/* */ ;/* */
;/* OUTPUT */ ;/* OUTPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLS */ ;/* CALLS */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLED BY */
;/* */ ;/* */
;/* _tx_thread_create Create thread service */ ;/* _tx_thread_create Create thread service */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_stack_build(TX_THREAD *thread_ptr, VOID (*function_ptr)(VOID)) ;VOID _tx_thread_stack_build(TX_THREAD *thread_ptr, VOID (*function_ptr)(VOID))
;{ ;{
.GLB __tx_thread_stack_build .GLB __tx_thread_stack_build

View File

@@ -12,8 +12,8 @@
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;/** */ ;/** */
;/** ThreadX Component */ ;/** ThreadX Component */
;/** */ ;/** */
;/** Thread */ ;/** Thread */
;/** */ ;/** */
@@ -35,46 +35,46 @@
.GLB __tx_thread_schedule .GLB __tx_thread_schedule
.SECTION P,CODE .SECTION P,CODE
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_system_return RX/CCRX */ ;/* _tx_thread_system_return RXv2/CCRX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function is target processor specific. It is used to transfer */ ;/* This function is target processor specific. It is used to transfer */
;/* control from a thread back to the system. Only a minimal context */ ;/* control from a thread back to the system. Only a minimal context */
;/* is saved since the compiler assumes temp registers are going to get */ ;/* is saved since the compiler assumes temp registers are going to get */
;/* slicked by a function call anyway. */ ;/* slicked by a function call anyway. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* OUTPUT */ ;/* OUTPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLS */ ;/* CALLS */
;/* */ ;/* */
;/* _tx_thread_schedule Thread scheduling loop */ ;/* _tx_thread_schedule Thread scheduling loop */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLED BY */
;/* */ ;/* */
;/* ThreadX components */ ;/* ThreadX components */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_system_return(VOID) ;VOID _tx_thread_system_return(VOID)
;{ ;{
.GLB __tx_thread_system_return .GLB __tx_thread_system_return

View File

@@ -12,8 +12,8 @@
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;/** */ ;/** */
;/** ThreadX Component */ ;/** ThreadX Component */
;/** */ ;/** */
;/** Timer */ ;/** Timer */
;/** */ ;/** */
@@ -45,50 +45,50 @@
.GLB __tx_thread_context_restore .GLB __tx_thread_context_restore
; ;
.SECTION P,CODE .SECTION P,CODE
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_timer_interrupt RX/CCRX */ ;/* _tx_timer_interrupt RXv2/CCRX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function processes the hardware timer interrupt. This */ ;/* This function processes the hardware timer interrupt. This */
;/* processing includes incrementing the system clock and checking for */ ;/* processing includes incrementing the system clock and checking for */
;/* time slice and/or timer expiration. If either is found, the */ ;/* time slice and/or timer expiration. If either is found, the */
;/* interrupt context save/restore functions are called along with the */ ;/* interrupt context save/restore functions are called along with the */
;/* expiration functions. */ ;/* expiration functions. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* OUTPUT */ ;/* OUTPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLS */ ;/* CALLS */
;/* */ ;/* */
;/* _tx_thread_context_save Save interrupted context */ ;/* _tx_thread_context_save Save interrupted context */
;/* _tx_timer_expiration_process Timer expiration processing */ ;/* _tx_timer_expiration_process Timer expiration processing */
;/* _tx_thread_time_slice Time slice interrupted thread */ ;/* _tx_thread_time_slice Time slice interrupted thread */
;/* _tx_thread_context_restore Restore interrupted context */ ;/* _tx_thread_context_restore Restore interrupted context */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLED BY */
;/* */ ;/* */
;/* interrupt vector */ ;/* interrupt vector */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_timer_interrupt(VOID) ;VOID _tx_timer_interrupt(VOID)
;{ ;{
.GLB __tx_timer_interrupt .GLB __tx_timer_interrupt

View File

@@ -12,7 +12,7 @@
/**************************************************************************/ /**************************************************************************/
/**************************************************************************/ /**************************************************************************/
/** */ /** */
/** ThreadX Component */ /** ThreadX Component */
/** */ /** */
/** Port Specific */ /** Port Specific */
@@ -21,35 +21,35 @@
/**************************************************************************/ /**************************************************************************/
/**************************************************************************/ /**************************************************************************/
/* */ /* */
/* PORT SPECIFIC C INFORMATION RELEASE */ /* PORT SPECIFIC C INFORMATION RELEASE */
/* */ /* */
/* tx_port.h RX/GNURX */ /* tx_port.h RXv2/GNURX */
/* 6.1.3 */ /* 6.1.3 */
/* */ /* */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* William E. Lamie, Express Logic, Inc. */ /* William E. Lamie, Express Logic, Inc. */
/* */ /* */
/* DESCRIPTION */ /* DESCRIPTION */
/* */ /* */
/* This file contains data type definitions that make the ThreadX */ /* This file contains data type definitions that make the ThreadX */
/* real-time kernel function identically on a variety of different */ /* real-time kernel function identically on a variety of different */
/* processor architectures. For example, the size or number of bits */ /* processor architectures. For example, the size or number of bits */
/* in an "int" data type vary between microprocessor architectures and */ /* in an "int" data type vary between microprocessor architectures and */
/* even C compilers for the same microprocessor. ThreadX does not */ /* even C compilers for the same microprocessor. ThreadX does not */
/* directly use native C data types. Instead, ThreadX creates its */ /* directly use native C data types. Instead, ThreadX creates its */
/* own special types that can be mapped to actual data types by this */ /* own special types that can be mapped to actual data types by this */
/* file to guarantee consistency in the interface and functionality. */ /* file to guarantee consistency in the interface and functionality. */
/* */ /* */
/* RELEASE HISTORY */ /* RELEASE HISTORY */
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ /* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef TX_PORT_H #ifndef TX_PORT_H
#define TX_PORT_H #define TX_PORT_H
@@ -255,7 +255,7 @@ static void _tx_thread_system_return_inline(void)
#ifdef TX_THREAD_INIT #ifdef TX_THREAD_INIT
CHAR _tx_version_id[] = CHAR _tx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * ThreadX RX/GNURX Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * ThreadX RXv2/GNURX Version 6.1.3 *";
#else #else
extern CHAR _tx_version_id[]; extern CHAR _tx_version_id[];
#endif #endif

View File

@@ -28,7 +28,7 @@
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_initialize_low_level RX/GNURX */ ;/* _tx_initialize_low_level RXv2/GNURX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */

View File

@@ -45,7 +45,7 @@
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_context_restore RX/GNURX */ ;/* _tx_thread_context_restore RXv2/GNURX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */

View File

@@ -19,17 +19,7 @@
;/** */ ;/** */
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;
;
;#define TX_SOURCE_CODE
;
;
;/* Include necessary system files. */
;
;#include "tx_api.h"
;#include "tx_thread.h"
;#include "tx_timer.h"
;
.global __tx_thread_system_state .global __tx_thread_system_state
.global __tx_thread_current_ptr .global __tx_thread_current_ptr
.global __tx_thread_system_stack_ptr .global __tx_thread_system_stack_ptr
@@ -39,7 +29,7 @@
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_context_save RX/GNURX */ ;/* _tx_thread_context_save RXv2/GNURX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */

View File

@@ -19,22 +19,13 @@
;/** */ ;/** */
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;
;#define TX_SOURCE_CODE
;
;
;/* Include necessary system files. */
;
;#include "tx_api.h"
;#include "tx_thread.h"
;
;
.text .text
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_interrupt_control RX/GNURX */ ;/* _tx_thread_interrupt_control RXv2/GNURX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */

View File

@@ -19,18 +19,7 @@
;/** */ ;/** */
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;
;
;#define TX_SOURCE_CODE
;
;
;/* Include necessary system files. */
;
;#include "tx_api.h"
;#include "tx_thread.h"
;#include "tx_timer.h"
;
;
.global __tx_thread_execute_ptr .global __tx_thread_execute_ptr
.global __tx_thread_current_ptr .global __tx_thread_current_ptr
.global __tx_timer_time_slice .global __tx_timer_time_slice
@@ -41,7 +30,7 @@
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule RX/GNURX */ ;/* _tx_thread_schedule RXv2/GNURX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */

View File

@@ -19,23 +19,13 @@
;/** */ ;/** */
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;
;
;#define TX_SOURCE_CODE
;
;
;/* Include necessary system files. */
;
;#include "tx_api.h"
;#include "tx_thread.h"
;
;
.text .text
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_stack_build RX/GNURX */ ;/* _tx_thread_stack_build RXv2/GNURX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */

View File

@@ -19,17 +19,7 @@
;/** */ ;/** */
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;
;#define TX_SOURCE_CODE
;
;
;/* Include necessary system files. */
;
;#include "tx_api.h"
;#include "tx_thread.h"
;#include "tx_timer.h"
;
;
.global __tx_thread_current_ptr .global __tx_thread_current_ptr
.global __tx_timer_time_slice .global __tx_timer_time_slice
.global __tx_thread_schedule .global __tx_thread_schedule
@@ -39,7 +29,7 @@
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_system_return RX/GNURX */ ;/* _tx_thread_system_return RXv2/GNURX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */

View File

@@ -19,19 +19,7 @@
;/** */ ;/** */
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;
;#define TX_SOURCE_CODE
;
;
;/* Include necessary system files. */
;
;#include "tx_api.h"
;#include "tx_timer.h"
;#include "tx_thread.h"
;
;
;Define Assembly language external references...
;
.global __tx_timer_time_slice .global __tx_timer_time_slice
.global __tx_timer_system_clock .global __tx_timer_system_clock
.global __tx_timer_current_ptr .global __tx_timer_current_ptr
@@ -43,13 +31,13 @@
.global __tx_thread_context_save .global __tx_thread_context_save
.global __tx_thread_time_slice .global __tx_thread_time_slice
.global __tx_thread_context_restore .global __tx_thread_context_restore
;
.SECTION P,CODE .SECTION P,CODE
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_timer_interrupt RX/GNURX */ ;/* _tx_timer_interrupt RXv2/GNURX */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */

View File

@@ -12,7 +12,7 @@
/**************************************************************************/ /**************************************************************************/
/**************************************************************************/ /**************************************************************************/
/** */ /** */
/** ThreadX Component */ /** ThreadX Component */
/** */ /** */
/** Port Specific */ /** Port Specific */
@@ -21,35 +21,35 @@
/**************************************************************************/ /**************************************************************************/
/**************************************************************************/ /**************************************************************************/
/* */ /* */
/* PORT SPECIFIC C INFORMATION RELEASE */ /* PORT SPECIFIC C INFORMATION RELEASE */
/* */ /* */
/* tx_port.h RX/IAR */ /* tx_port.h RXv2/IAR */
/* 6.1.3 */ /* 6.1.3 */
/* */ /* */
/* AUTHOR */ /* AUTHOR */
/* */ /* */
/* William E. Lamie, Express Logic, Inc. */ /* William E. Lamie, Express Logic, Inc. */
/* */ /* */
/* DESCRIPTION */ /* DESCRIPTION */
/* */ /* */
/* This file contains data type definitions that make the ThreadX */ /* This file contains data type definitions that make the ThreadX */
/* real-time kernel function identically on a variety of different */ /* real-time kernel function identically on a variety of different */
/* processor architectures. For example, the size or number of bits */ /* processor architectures. For example, the size or number of bits */
/* in an "int" data type vary between microprocessor architectures and */ /* in an "int" data type vary between microprocessor architectures and */
/* even C compilers for the same microprocessor. ThreadX does not */ /* even C compilers for the same microprocessor. ThreadX does not */
/* directly use native C data types. Instead, ThreadX creates its */ /* directly use native C data types. Instead, ThreadX creates its */
/* own special types that can be mapped to actual data types by this */ /* own special types that can be mapped to actual data types by this */
/* file to guarantee consistency in the interface and functionality. */ /* file to guarantee consistency in the interface and functionality. */
/* */ /* */
/* RELEASE HISTORY */ /* RELEASE HISTORY */
/* */ /* */
/* DATE NAME DESCRIPTION */ /* DATE NAME DESCRIPTION */
/* */ /* */
/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ /* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
#ifndef TX_PORT_H #ifndef TX_PORT_H
#define TX_PORT_H #define TX_PORT_H
@@ -263,7 +263,7 @@ extern volatile ULONG _tx_thread_system_state;
#ifdef TX_THREAD_INIT #ifdef TX_THREAD_INIT
CHAR _tx_version_id[] = CHAR _tx_version_id[] =
"Copyright (c) Microsoft Corporation. All rights reserved. * ThreadX RX/IAR Version 6.1.3 *"; "Copyright (c) Microsoft Corporation. All rights reserved. * ThreadX RXv2/IAR Version 6.1.3 *";
#else #else
extern CHAR _tx_version_id[]; extern CHAR _tx_version_id[];
#endif #endif

View File

@@ -12,8 +12,8 @@
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;/** */ ;/** */
;/** ThreadX Component */ ;/** ThreadX Component */
;/** */ ;/** */
;/** Initialize */ ;/** Initialize */
;/** */ ;/** */
@@ -26,47 +26,47 @@
section .text:CODE:ROOT section .text:CODE:ROOT
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_initialize_low_level RX/IAR */ ;/* _tx_initialize_low_level RXv2/IAR */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function is responsible for any low-level processor */ ;/* This function is responsible for any low-level processor */
;/* initialization, including setting up interrupt vectors, setting */ ;/* initialization, including setting up interrupt vectors, setting */
;/* up a periodic timer interrupt source, saving the system stack */ ;/* up a periodic timer interrupt source, saving the system stack */
;/* pointer for use in ISR processing later, and finding the first */ ;/* pointer for use in ISR processing later, and finding the first */
;/* available RAM memory address for tx_application_define. */ ;/* available RAM memory address for tx_application_define. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* OUTPUT */ ;/* OUTPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLS */ ;/* CALLS */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLED BY */
;/* */ ;/* */
;/* _tx_initialize_kernel_enter ThreadX entry function */ ;/* _tx_initialize_kernel_enter ThreadX entry function */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
public __tx_initialize_low_level public __tx_initialize_low_level
__tx_initialize_low_level: __tx_initialize_low_level:

View File

@@ -12,25 +12,14 @@
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;/** */ ;/** */
;/** ThreadX Component */ ;/** ThreadX Component */
;/** */ ;/** */
;/** Thread */ ;/** Thread */
;/** */ ;/** */
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;
;
;#define TX_SOURCE_CODE
;
;
;/* Include necessary system files. */
;
;#include "tx_api.h"
;#include "tx_thread.h"
;#include "tx_timer.h"
;
;
extern __tx_thread_system_state extern __tx_thread_system_state
extern __tx_thread_current_ptr extern __tx_thread_current_ptr
extern __tx_thread_preempt_disable extern __tx_thread_preempt_disable
@@ -40,46 +29,46 @@
section .text:CODE:ROOT section .text:CODE:ROOT
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_context_restore RX/IAR */ ;/* _tx_thread_context_restore RXv2/IAR */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function restores the interrupt context if it is processing a */ ;/* This function restores the interrupt context if it is processing a */
;/* nested interrupt. If not, it returns to the interrupt thread if no */ ;/* nested interrupt. If not, it returns to the interrupt thread if no */
;/* preemption is necessary. Otherwise, if preemption is necessary or */ ;/* preemption is necessary. Otherwise, if preemption is necessary or */
;/* if no thread was running, the function returns to the scheduler. */ ;/* if no thread was running, the function returns to the scheduler. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* OUTPUT */ ;/* OUTPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLS */ ;/* CALLS */
;/* */ ;/* */
;/* _tx_thread_schedule Thread scheduling routine */ ;/* _tx_thread_schedule Thread scheduling routine */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLED BY */
;/* */ ;/* */
;/* ISRs Interrupt Service Routines */ ;/* ISRs Interrupt Service Routines */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
public __tx_thread_context_restore public __tx_thread_context_restore
__tx_thread_context_restore: __tx_thread_context_restore:

View File

@@ -12,67 +12,57 @@
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;/** */ ;/** */
;/** ThreadX Component */ ;/** ThreadX Component */
;/** */ ;/** */
;/** Thread */ ;/** Thread */
;/** */ ;/** */
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;
;
;#define TX_SOURCE_CODE
;
;
;/* Include necessary system files. */
;
;#include "tx_api.h"
;#include "tx_thread.h"
;#include "tx_timer.h"
;
extern __tx_thread_system_state extern __tx_thread_system_state
extern __tx_thread_current_ptr extern __tx_thread_current_ptr
section .text:CODE:ROOT section .text:CODE:ROOT
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_context_save RX/IAR */ ;/* _tx_thread_context_save RXv2/IAR */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function saves the context of an executing thread in the */ ;/* This function saves the context of an executing thread in the */
;/* beginning of interrupt processing. The function also ensures that */ ;/* beginning of interrupt processing. The function also ensures that */
;/* the system stack is used upon return to the calling ISR. */ ;/* the system stack is used upon return to the calling ISR. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* OUTPUT */ ;/* OUTPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLS */ ;/* CALLS */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLED BY */
;/* */ ;/* */
;/* ISRs */ ;/* ISRs */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;VOID _tx_thread_context_save(VOID) ;VOID _tx_thread_context_save(VOID)
;{ ;{
public __tx_thread_context_save public __tx_thread_context_save

View File

@@ -19,54 +19,46 @@
;/** */ ;/** */
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;
;#define TX_SOURCE_CODE
;
;
;/* Include necessary system files. */
;
;#include "tx_api.h"
;#include "tx_thread.h"
;
section .text:CODE:ROOT section .text:CODE:ROOT
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_interrupt_control RX/IAR */ ;/* _tx_thread_interrupt_control RXv2/IAR */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function is responsible for changing the interrupt lockout */ ;/* This function is responsible for changing the interrupt lockout */
;/* posture of the system. */ ;/* posture of the system. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* new_posture New interrupt lockout posture */ ;/* new_posture New interrupt lockout posture */
;/* */ ;/* */
;/* OUTPUT */ ;/* OUTPUT */
;/* */ ;/* */
;/* old_posture Old interrupt lockout posture */ ;/* old_posture Old interrupt lockout posture */
;/* */ ;/* */
;/* CALLS */ ;/* CALLS */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLED BY */
;/* */ ;/* */
;/* Application Code */ ;/* Application Code */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/* DATE NAME DESCRIPTION */ ;/* DATE NAME DESCRIPTION */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */ ;/* */
;/**************************************************************************/ ;/**************************************************************************/
;UINT _tx_thread_interrupt_control(UINT new_posture) ;UINT _tx_thread_interrupt_control(UINT new_posture)
;{ ;{
public __tx_thread_interrupt_control public __tx_thread_interrupt_control

View File

@@ -12,72 +12,61 @@
; ;
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;/** */ ;/** */
;/** ThreadX Component */ ;/** ThreadX Component */
;/** */ ;/** */
;/** Thread */ ;/** Thread */
;/** */ ;/** */
;/**************************************************************************/ ;/**************************************************************************/
;/**************************************************************************/ ;/**************************************************************************/
;
;
;#define TX_SOURCE_CODE
;
;
;/* Include necessary system files. */
;
;#include "tx_api.h"
;#include "tx_thread.h"
;#include "tx_timer.h"
;
;
extern __tx_thread_execute_ptr extern __tx_thread_execute_ptr
extern __tx_thread_current_ptr extern __tx_thread_current_ptr
extern __tx_timer_time_slice extern __tx_timer_time_slice
section .text:CODE:ROOT section .text:CODE:ROOT
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_schedule RX/IAR */ ;/* _tx_thread_schedule RXv2/IAR */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */
;/* William E. Lamie, Microsoft Corporation */ ;/* William E. Lamie, Microsoft Corporation */
;/* */ ;/* */
;/* DESCRIPTION */ ;/* DESCRIPTION */
;/* */ ;/* */
;/* This function waits for a thread control block pointer to appear in */ ;/* This function waits for a thread control block pointer to appear in */
;/* the _tx_thread_execute_ptr variable. Once a thread pointer appears */ ;/* the _tx_thread_execute_ptr variable. Once a thread pointer appears */
;/* in the variable, the corresponding thread is resumed. */ ;/* in the variable, the corresponding thread is resumed. */
;/* */ ;/* */
;/* INPUT */ ;/* INPUT */
;/* */ ;/* */
;/* None */
;/* */
;/* OUTPUT */
;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLS */ ;/* OUTPUT */
;/* */ ;/* */
;/* None */ ;/* None */
;/* */ ;/* */
;/* CALLED BY */ ;/* CALLS */
;/* */ ;/* */
;/* _tx_initialize_kernel_enter ThreadX entry function */ ;/* None */
;/* _tx_thread_system_return Return to system from thread */ ;/* */
;/* _tx_thread_context_restore Restore thread's context */ ;/* CALLED BY */
;/* */ ;/* */
;/* RELEASE HISTORY */ ;/* _tx_initialize_kernel_enter ThreadX entry function */
;/* */ ;/* _tx_thread_system_return Return to system from thread */
;/* DATE NAME DESCRIPTION */ ;/* _tx_thread_context_restore Restore thread's context */
;/* */ ;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */ ;/* RELEASE HISTORY */
;/* */ ;/* */
;/**************************************************************************/ ;/* DATE NAME DESCRIPTION */
;/* */
;/* 12-31-2020 William E. Lamie Initial Version 6.1.3 */
;/* */
;/**************************************************************************/
;VOID _tx_thread_schedule(VOID) ;VOID _tx_thread_schedule(VOID)
;{ ;{
public __tx_thread_schedule public __tx_thread_schedule

View File

@@ -27,7 +27,7 @@
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_stack_build RX/IAR */ ;/* _tx_thread_stack_build RXv2/IAR */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */

View File

@@ -22,11 +22,11 @@
section .text:CODE:ROOT section .text:CODE:ROOT
;/**************************************************************************/ ;/**************************************************************************/
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_thread_system_return RX/IAR */ ;/* _tx_thread_system_return RXv2/IAR */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */

View File

@@ -36,7 +36,7 @@
;/* */ ;/* */
;/* FUNCTION RELEASE */ ;/* FUNCTION RELEASE */
;/* */ ;/* */
;/* _tx_timer_interrupt RX/IAR */ ;/* _tx_timer_interrupt RXv2/IAR */
;/* 6.1.3 */ ;/* 6.1.3 */
;/* AUTHOR */ ;/* AUTHOR */
;/* */ ;/* */

Some files were not shown because too many files have changed in this diff Show More