123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #ifndef __MEM_MANAGER_H__
- #define __MEM_MANAGER_H__
- #include "c_types.h"
- /*------------------------±äÁ¿¶¨Òå------------------------*/
- #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE
- #ifndef IOT_SIP_MODE
- //#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 0x3fffc000 - (uint32)&_heap_start ) )//fix 16000 to 24000 on 14.2.26
- #else
- #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 8000 ) )
- #endif
- #define portBYTE_ALIGNMENT 8
- #define pdFALSE 0
- #define pdTRUE 1
- #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
- #if portBYTE_ALIGNMENT == 8
- #define portBYTE_ALIGNMENT_MASK ( 0x0007 )
- #endif
- #if portBYTE_ALIGNMENT == 4
- #define portBYTE_ALIGNMENT_MASK ( 0x0003 )
- #endif
- #if portBYTE_ALIGNMENT == 2
- #define portBYTE_ALIGNMENT_MASK ( 0x0001 )
- #endif
- #if portBYTE_ALIGNMENT == 1
- #define portBYTE_ALIGNMENT_MASK ( 0x0000 )
- #endif
- #ifndef portBYTE_ALIGNMENT_MASK
- #error "Invalid portBYTE_ALIGNMENT definition"
- #endif
- #define configUSE_MALLOC_FAILED_HOOK 1
- #define portPOINTER_SIZE_TYPE unsigned int
- #define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( heapSTRUCT_SIZE * 2 ) )
- //#define configADJUSTED_HEAP_SIZE ( configTOTAL_HEAP_SIZE - portBYTE_ALIGNMENT )
- //static unsigned char ucHeap[ configTOTAL_HEAP_SIZE ];
- static unsigned char *ucHeap;
- typedef struct A_BLOCK_LINK
- {
- struct A_BLOCK_LINK *pxNextFreeBlock; //The next free block in the list.
- size_t xBlockSize; //The size of the free block.
- } xBlockLink;
- static const unsigned short heapSTRUCT_SIZE = ( sizeof( xBlockLink ) + portBYTE_ALIGNMENT - ( sizeof( xBlockLink ) % portBYTE_ALIGNMENT ) );
- //static const size_t xTotalHeapSize = ( ( size_t ) configADJUSTED_HEAP_SIZE ) & ( ( size_t ) ~portBYTE_ALIGNMENT_MASK );
- static xBlockLink xStart, *pxEnd = NULL;
- //static size_t xFreeBytesRemaining = ( ( size_t ) configADJUSTED_HEAP_SIZE ) & ( ( size_t ) ~portBYTE_ALIGNMENT_MASK );
- /*------------------------º¯ÊýÉùÃ÷-----------------------------------*/
- static void prvInsertBlockIntoFreeList( xBlockLink *pxBlockToInsert ) ;//ICACHE_FLASH_ATTR;
- static void prvHeapInit( void ) ;//ICACHE_FLASH_ATTR;
- void vApplicationMallocFailedHook( void ) ;//ICACHE_FLASH_ATTR;
- void *pvPortMalloc( size_t xWantedSize ) ;//ICACHE_FLASH_ATTR;
- void vPortFree( void *pv ) ;//ICACHE_FLASH_ATTR;
- size_t xPortGetFreeHeapSize( void ) ;//ICACHE_FLASH_ATTR;
- void vPortInitialiseBlocks( void ) ;//ICACHE_FLASH_ATTR;
- /*-----------------------------------------------------------*/
- #endif
|