⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 history.txt

📁 已移植到TI OMAP1610处理器的Nucleus操作系统源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                                    Nucleus PLUS         

                            *****************************

**********************************************************************************
Version 1.14                                                      October 16, 2002
**********************************************************************************

This update contains bug fixes and enhancements. The following is a description of
the fixed bugs:

Nucleus MMU code was imported from the 1.13ma release. This is discussed in more
detail 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 following
functions in ERC.C:

ERC_Allocate_Memory
ERC_Deallocate_Memory
ERC_Memory_To_Debug
ERC_Append_Debug_Allocation
ERC_Remove_Debug_Allocation

The following data types and data structures were created for NU_DEBUG_MEMORY

ER_DEBUG_ALLOCATION
ERD_AllocationCount
ERD_AllocationSequence
ERD_TotalMemoryAllocated
ERD_TotalMemoryAllocations
ERD_MaxTotalMemoryAllocated
ERD_MaxTotalMemoryAllocations
ERD_RecentAllocation
ERD_MemoryAllocationHead
ERD_MemoryAllocationFoot

NU_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.h
was 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_Entry
function 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.C

SYMPTOM:  Broken memory pool linked list.  After DMS_Allocate_Aligned_Memory is
called 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 the
function 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/Module
product. The following is a description of the fixed bugs and enhancements:

DM_DEFS.H

SYMPTOM:  Compiler warning.  The BOOLEAN data type is defined at DATA_ELEMENT
and 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.H

Added 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.H

Added additional macros NU_CHECK, NU_ASSERT and NU_ASSERT2.  These macros
are 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.H

SYMPTOM:  Compiler warning.  The BOOLEAN data type is defined at DATA_ELEMENT
and 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.H

SYMPTOM:  Compiler warning.  The BOOLEAN data type is defined at DATA_ELEMENT
and 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.H

SYMPTOM:  Compiler warning.  The BOOLEAN data type is defined at DATA_ELEMENT
and 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.H

SYMPTOM:  Compiler warning.  The BOOLEAN data type is defined at DATA_ELEMENT
and 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.H

SYMPTOM:  Compiler warning.  The BOOLEAN data type is defined at DATA_ELEMENT
and 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.H

Modified the task and HISR control blocks to change DATA_ELEMENT to BOOLEAN
and 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_SUPPORT
are 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.H

Added 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.H

SYMPTOM:  Compiler warning.  The BOOLEAN data type is defined at DATA_ELEMENT
and 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.C

Created function ERC_Assert which increments a global variable ERD_Assert_Count
This function only exists when NU_DEBUG is defined.

void ERC_Assert(CHAR *test, CHAR *name, UNSIGNED line);

*******************************************************************************

ERD.C

Defined the global variable ERD_Assert_Count.  This variable only exists when
NU_DEBUG is defined

UNSIGNED ERD_Assert_Count;

*******************************************************************************

ERI.C

Added ERD_Assert_Count to the initialize function.  This variable is only
initialized if it is defined by NU_DEBUG.

*******************************************************************************

INC.C

Added 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.  These
functions are part of the MMU\Module product and are maintained within that
product.

*******************************************************************************

TCC.C

Because of the high importance of threads to MMU\Module some initialization and
function 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 has
been included.

#if defined(NU_MODULE_SUPPORT) && (NU_MODULE_SUPPORT > 0)
#include        "module/inc/ms_defs.h"      /* MS_Module typedef */
#endif

An 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 */
            NU_USER_MODE();

            /* Call signal handler.  (always in User mode) */
            (*(task -> tc_signal_handler))(signals);

            /* Return to supervisor mode */
            NU_SUPERVISOR_MODE();

#if (defined(NU_SUPERV_USER_MODE)) && (NU_SUPERV_USER_MODE > 0)
            task->tc_su_mode = savedMode;   /* Restore original nesting count */
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -