mem_manager.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #ifndef __MEM_MANAGER_H__
  2. #define __MEM_MANAGER_H__
  3. #include "c_types.h"
  4. /*------------------------±äÁ¿¶¨Òå------------------------*/
  5. #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE
  6. #ifndef IOT_SIP_MODE
  7. //#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 0x3fffc000 - (uint32)&_heap_start ) )//fix 16000 to 24000 on 14.2.26
  8. #else
  9. #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 8000 ) )
  10. #endif
  11. #define portBYTE_ALIGNMENT 8
  12. #define pdFALSE 0
  13. #define pdTRUE 1
  14. #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
  15. #if portBYTE_ALIGNMENT == 8
  16. #define portBYTE_ALIGNMENT_MASK ( 0x0007 )
  17. #endif
  18. #if portBYTE_ALIGNMENT == 4
  19. #define portBYTE_ALIGNMENT_MASK ( 0x0003 )
  20. #endif
  21. #if portBYTE_ALIGNMENT == 2
  22. #define portBYTE_ALIGNMENT_MASK ( 0x0001 )
  23. #endif
  24. #if portBYTE_ALIGNMENT == 1
  25. #define portBYTE_ALIGNMENT_MASK ( 0x0000 )
  26. #endif
  27. #ifndef portBYTE_ALIGNMENT_MASK
  28. #error "Invalid portBYTE_ALIGNMENT definition"
  29. #endif
  30. #define configUSE_MALLOC_FAILED_HOOK 1
  31. #define portPOINTER_SIZE_TYPE unsigned int
  32. #define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( heapSTRUCT_SIZE * 2 ) )
  33. //#define configADJUSTED_HEAP_SIZE ( configTOTAL_HEAP_SIZE - portBYTE_ALIGNMENT )
  34. //static unsigned char ucHeap[ configTOTAL_HEAP_SIZE ];
  35. static unsigned char *ucHeap;
  36. typedef struct A_BLOCK_LINK
  37. {
  38. struct A_BLOCK_LINK *pxNextFreeBlock; //The next free block in the list.
  39. size_t xBlockSize; //The size of the free block.
  40. } xBlockLink;
  41. static const unsigned short heapSTRUCT_SIZE = ( sizeof( xBlockLink ) + portBYTE_ALIGNMENT - ( sizeof( xBlockLink ) % portBYTE_ALIGNMENT ) );
  42. //static const size_t xTotalHeapSize = ( ( size_t ) configADJUSTED_HEAP_SIZE ) & ( ( size_t ) ~portBYTE_ALIGNMENT_MASK );
  43. static xBlockLink xStart, *pxEnd = NULL;
  44. //static size_t xFreeBytesRemaining = ( ( size_t ) configADJUSTED_HEAP_SIZE ) & ( ( size_t ) ~portBYTE_ALIGNMENT_MASK );
  45. /*------------------------º¯ÊýÉùÃ÷-----------------------------------*/
  46. static void prvInsertBlockIntoFreeList( xBlockLink *pxBlockToInsert ) ;//ICACHE_FLASH_ATTR;
  47. static void prvHeapInit( void ) ;//ICACHE_FLASH_ATTR;
  48. void vApplicationMallocFailedHook( void ) ;//ICACHE_FLASH_ATTR;
  49. void *pvPortMalloc( size_t xWantedSize ) ;//ICACHE_FLASH_ATTR;
  50. void vPortFree( void *pv ) ;//ICACHE_FLASH_ATTR;
  51. size_t xPortGetFreeHeapSize( void ) ;//ICACHE_FLASH_ATTR;
  52. void vPortInitialiseBlocks( void ) ;//ICACHE_FLASH_ATTR;
  53. /*-----------------------------------------------------------*/
  54. #endif