📄 history.txt
字号:
Nucleus PLUS ***************************************************************************************************************Version 1.14a September 17, 2003**********************************************************************************This update contains bug fixes and enhancements. The following is a description ofthe fixed bugs:Defect 57 - tcc.c - TCC_Register_LISR appears to have a problem returning a function pointer to the first registered LISR. Can't get the address of the first registered LISR.Defect 43 - tcce.c - Mode Switching in Activate HISR error checking routine could cause crash in MMUDefect 49 - tm_defs.h - Padding incorrect in TM_DEFS.H structure TM_APP_TCBDefect 64 - Added this after the last if statement under function TCC_Time_Slice /* Insure that the task has a fresh time slice the next time it is scheduled. */ task -> tc_cur_time_slice = task -> tc_time_slice;**********************************************************************************Version 1.14 October 16, 2002**********************************************************************************This update contains bug fixes and enhancements. The following is a description ofthe fixed bugs:Nucleus MMU code was imported from the 1.13ma release. This is discussed in moredetail later.Nucleus Common Library is now included with Nucleus PLUS. This supplies common functions that many Nucleus PLUS products need, such as memory functions, string functions and conversion functions.NU_DEBUG_MEMORY function was added. This required creating the followingfunctions in ERC.C:ERC_Allocate_MemoryERC_Deallocate_MemoryERC_Memory_To_DebugERC_Append_Debug_AllocationERC_Remove_Debug_AllocationThe following data types and data structures were created for NU_DEBUG_MEMORYER_DEBUG_ALLOCATIONERD_AllocationCountERD_AllocationSequenceERD_TotalMemoryAllocatedERD_TotalMemoryAllocationsERD_MaxTotalMemoryAllocatedERD_MaxTotalMemoryAllocationsERD_RecentAllocationERD_MemoryAllocationHeadERD_MemoryAllocationFootNU_ASSERT and NU_CHECK macros were added to the ER module.The file profiler.h was created to rid warnings that are reported when INCLUDE_PROVIEW is defined on certain platforms. The information in profiler.hwas moved from hi_defs.h.One ProView hook was logging data permaturely. The hook was moved below the code that calculates a value for the variable it was logging.The file sd_defs.h now includes macros that give default settings for the serial driver so all Nucleus demos can use the same settings from the same place in the future.A problem was fixed in the serial driver template. ER_LISR was not reporting unhandled interrupts properly. This may not be implemented in every Nucleus PLUS port, since this file is made specific from the template.TCFE_Task_Information function was added to verify no parameters are NULL.This function is not called when NU_NO_ERROR_CHECKING is defined.INT8 typedef is not explicitly unsigned.UNSIGNED_INT typedef was created.BOOLEAN typedef was created. It is type DATA_ELEMENT.HUGE and FAR macros were added.Defect 1240 & 1268: The confusion surrounding the use of NU_MAX_LISRS has been resolved.Defect 1335: A system with one task that uses time slices was never refreshed.This has been resolved.Defect 1358: Queue and pipes not use an "urgent" list in thier cleanup routines.Defect 1362: A conditional that determined if initialization was complete had the wrong logical operator. This fix was implemented in HIC_Make_History_Entryfunction found in hic.c.Defect 1364: NU_Get_Time_Remaining now works when the value is NU_NULL.**********************************************************************************Version 1.13ma June 19, 2002**********************************************************************************This update contains bug fixes related to the MMU/Module product. The following is a description of the fixed bugs:DMS.CSYMPTOM: Broken memory pool linked list. After DMS_Allocate_Aligned_Memory iscalled a certain number of times the next pointer is bad.SOLUTION: The front split code incorrectly determines the memory size in respect to DM_OVERHEAD. The result is a pointer to a struct that will be placed at the end of the last allocated memory. This is solved by updating thefunction to not update the free_size with DM_OVERHEAD.Old Code: /* Adjust free_size for result of front split */ if(free_size > (split_size - DM_OVERHEAD)) free_size -= (split_size - DM_OVERHEAD); else /* Can't adjust block beginning, so keep searching */ free_size = 0;New Code: /* Adjust free_size for result of front split */ if (free_size > split_size) free_size -= split_size; else /* Can't adjust block beginning, so keep searching */ free_size = 0;**********************************************************************************Version 1.13m April 18, 2002**********************************************************************************This update contains bug fixes and enhancements related to the MMU/Moduleproduct. The following is a description of the fixed bugs and enhancements:DM_DEFS.HSYMPTOM: Compiler warning. The BOOLEAN data type is defined at DATA_ELEMENTand some compilers issued a warning and possibly an error about casting.Solution structures using DATA_ELEMENT are redefined as BOOLEAN. DM_PCB_STRUCT { ... DATA_ELEMENT dm_fifo_suspend -> BOOLEAN dm_fifo_suspend ... } DM_HEADER_STRUCT { ... DATA_ELEMENT dm_memory_free -> BOOLEAN dm_memory_free ... }*******************************************************************************DM_EXTR.HAdded the function prototype for DMS_Allocate_Aligned_Memory.STATUS DMS_Allocate_Aligned_Memory(NU_MEMORY_POOL *pool_ptr, VOID **return_pointer, UNSIGNED size, UNSIGNED alignment, UNSIGNED suspend);*******************************************************************************ER_EXTR.HAdded additional macros NU_CHECK, NU_ASSERT and NU_ASSERT2. These macrosare only defined if NU_DEBUG is defined else they are defined to VOID.#define NU_ASSERT( test ) \ if ( !(test) ) ERC_Assert( #test, __FILE__, __LINE__ ); ((void) 0)#define NU_ASSERT2( test ) \ if ( !(test) ) ERC_Assert( #test, __FILE__, __LINE__ ); ((void) 0)#define NU_CHECK( test, statement ) \ NU_ASSERT2( test ); if ( !(test) ) { statement; } ((void) 0)*******************************************************************************MB_DEFS.HSYMPTOM: Compiler warning. The BOOLEAN data type is defined at DATA_ELEMENTand some compilers issued a warning and possibly an error about casting.Solution structures using DATA_ELEMENT are redefined as BOOLEAN. MB_MCB_STRUCT { ... DATA_ELEMENT mb_message_present -> BOOLEAN mb_message_present DATA_ELEMENT mb_fifo_suspend -> BOOLEAN mb_fifo_suspend ... }*******************************************************************************PI_DEFS.HSYMPTOM: Compiler warning. The BOOLEAN data type is defined at DATA_ELEMENTand some compilers issued a warning and possibly an error about casting.Solution structures using DATA_ELEMENT are redefined as BOOLEAN. PI_PCB_STRUCT { ... DATA_ELEMENT pi_fixed_size -> BOOLEAN pi_fixed_size DATA_ELEMENT pi_fifo_suspend -> BOOLEAN pi_fifo_suspend ... }*******************************************************************************PM_DEFS.HSYMPTOM: Compiler warning. The BOOLEAN data type is defined at DATA_ELEMENTand some compilers issued a warning and possibly an error about casting.Solution structures using DATA_ELEMENT are redefined as BOOLEAN. PM_PCB_STRUCT { ... DATA_ELEMENT pm_fifo_suspend -> BOOLEAN pm_fifo_suspend ... }*******************************************************************************QU_DEFS.HSYMPTOM: Compiler warning. The BOOLEAN data type is defined at DATA_ELEMENTand some compilers issued a warning and possibly an error about casting.Solution structures using DATA_ELEMENT are redefined as BOOLEAN. QU_QCB_STRUCT { ... DATA_ELEMENT qu_fixed_size -> BOOLEAN qu_fixed_size DATA_ELEMENT qu_fifo_suspend -> BOOLEAN qu_fifo_suspend ... }*******************************************************************************SM_DEFS.HSYMPTOM: Compiler warning. The BOOLEAN data type is defined at DATA_ELEMENTand some compilers issued a warning and possibly an error about casting.Solution structures using DATA_ELEMENT are redefined as BOOLEAN. SM_SCB_STRUCT { ... DATA_ELEMENT sm_fifo_suspend -> BOOLEAN sm_fifo_suspend ... }*******************************************************************************TC_DEFS.HModified the task and HISR control blocks to change DATA_ELEMENT to BOOLEANand to add tc_su_mode and tc_module to both control blocks.tc_su_mode is a mode switch counter.tc_module contains the address of the Module control block.These new fields are only in PLUS when NU_SUPERV_USER_MODE or NU_MODULE_SUPPORTare defined. TC_TCB_STRUCT { ... DATA_ELEMENT tc_delayed_suspend -> BOOLEAN tc_delayed_suspend DATA_ELEMENT tc_preemption -> BOOLEAN tc_preemption DATA_ELEMENT tc_signal_active -> BOOLEAN tc_signal_active DATA_ELEMENT tc_timer_active -> BOOLEAN tc_timer_active ... UNSIGNED tc_su_mode -> Added UNSIGNED tc_module -> Added } TC_HCB_STRUCT { ... UNSIGNED tc_su_mode -> Added UNSIGNED tc_module -> Added }*******************************************************************************TC_EXTR.HAdded function prototypes. TCC_Validate_Resume is only defined when NU_NO_ERROR_CHECKING is defined.BOOLEAN TCC_Validate_Resume(OPTION resume_type, NU_TASK *task_ptr);These are target dependent functions.VOID TCT_Restore_Interrupts(VOID);INT TCT_Local_Control_Interrupts(INT new_level);Added macro NU_CHECK_STACK. This macro is only defined when NU_ENABLE_STACK_CHECK is defined else it is defined as VOID.#define NU_CHECK_STACK() TCT_Check_Stack()*******************************************************************************TM_DEFS.HSYMPTOM: Compiler warning. The BOOLEAN data type is defined at DATA_ELEMENTand some compilers issued a warning and possibly an error about casting.Solution structures using DATA_ELEMENT are redefined as BOOLEAN. TM_APP_TCB_STRUCT { ... DATA_ELEMENT tm_enabled -> BOOLEAN tm_enabled ... } *******************************************************************************ERC.CCreated function ERC_Assert which increments a global variable ERD_Assert_CountThis function only exists when NU_DEBUG is defined.void ERC_Assert(CHAR *test, CHAR *name, UNSIGNED line);*******************************************************************************ERD.CDefined the global variable ERD_Assert_Count. This variable only exists whenNU_DEBUG is definedUNSIGNED ERD_Assert_Count;*******************************************************************************ERI.CAdded ERD_Assert_Count to the initialize function. This variable is onlyinitialized if it is defined by NU_DEBUG.*******************************************************************************INC.CAdded calls to MRC_Initialize and MSC_Initialize.MRC_Initialize is the memory region initialization function.MSC_Initialize is the module support initialization function.These functions are only called when NU_MODULE_SUPPORT is defined. Thesefunctions are part of the MMU\Module product and are maintained within thatproduct.*******************************************************************************TCC.CBecause of the high importance of threads to MMU\Module some initialization andfunction calls have been added to several parts of this file.To get access to the module support data types the header file ms_defs.h hasbeen included.#if defined(NU_MODULE_SUPPORT) && (NU_MODULE_SUPPORT > 0)#include "module/inc/ms_defs.h" /* MS_Module typedef */#endifAn external variable has been defined to determine the current module.Also 2 private functions have prototypes defined here.#if defined(NU_MODULE_SUPPORT) && (NU_MODULE_SUPPORT > 0)/* Define service routines "privately" imported from other components */extern MS_MODULE* msd_current_module;STATUS MSC_Bind_Module_HISR(MS_MODULE* module, TC_HCB* hisr);STATUS MSC_Bind_Module_Task(MS_MODULE* module, TC_TCB* task);#endif /* NU_MODULE_SUPPORT */The new field tc_su_mode in TC_TCB and TC_HCB are initialized in TCC_Create_Task and TCC_Create_HISR respectively.TCC_Create_Task binds all new tasks to the current module. if(TCD_Current_Thread != NU_NULL) { status = MSC_Bind_Module_Task( (MS_MODULE*)(((TC_TCB*)(TCD_Current_Thread))->tc_module), task); } else /* It must be initialization time, so use the current module */ { status = MSC_Bind_Module_Task(msd_current_module, task); } TCC_Delete_HISR binds all new HISRs to the current module. if(TCD_Current_Thread != NU_NULL) { status = MSC_Bind_Module_HISR( (MS_MODULE*)(((TC_TCB*)(TCD_Current_Thread))->tc_module), hisr); } else /* It must be initialization time, so use the current module */ { status = MSC_Bind_Module_HISR(msd_current_module, hisr); } TCC_Signal_Shell does a force to User mode. /* Call the application signal handling function, if there still is one. */ if (task -> tc_signal_handler) { NU_SUPERV_USER_VARIABLES#if (defined(NU_SUPERV_USER_MODE)) && (NU_SUPERV_USER_MODE > 0) UNSIGNED savedMode = task->tc_su_mode; task->tc_su_mode = 1; /* Force transition to User mode */#endif /* Switch to user mode */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -