memory_manager.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef _MEMORY_H
  2. #define _MEMORY_H
  3. #include "includes.h"
  4. #include <stdint.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #define AXISRAMSIZE 512 * 1024
  8. #define SRAM1SIZE 128 * 1024
  9. #define SRAM2SIZE 128 * 1024
  10. #define SDRAMSIZE 28 * 1024 * 1024
  11. /* 定义链表结构。这是用来连接自由块的他们的记忆地址 */
  12. typedef struct A_BLOCK_LINK
  13. {
  14. struct A_BLOCK_LINK *pxNextFreeBlock; /* 列表中的下一个自由块 */
  15. size_t xBlockSize; /* 自由块的大小 */
  16. } BlockLink_t;
  17. typedef struct
  18. {
  19. volatile uint8_t *pMemory; /* 创建内存地址 */
  20. volatile size_t size; /* 创建内存大小 */
  21. BlockLink_t pStart; /* 创建内存开始 链表标记 */
  22. BlockLink_t *pEnd; /* 创建内存结束 链表标记 */
  23. volatile size_t Free; /* 内存当前最小剩余 */
  24. volatile size_t MinFree; /* 内存历史最小剩余 */
  25. } MemoryStruct;
  26. extern MemoryStruct SRAM0;
  27. extern MemoryStruct SRAM1;
  28. extern MemoryStruct SRAM2;
  29. extern MemoryStruct SDRAM;
  30. /*内存初始化*/
  31. extern void pMemoryInit(MemoryStruct *mem);
  32. /*内存申请*/
  33. extern void *pMemoryMalloc(MemoryStruct *mem, size_t xWantedSize);
  34. /*内存重申请*/
  35. extern void *pMemoryReMalloc(MemoryStruct *mem1, MemoryStruct *mem2, void *ptr, size_t size);
  36. /*内存释放*/
  37. extern void pMemoryFree(MemoryStruct *mem, void *pv);
  38. /*内存当前剩余*/
  39. extern size_t pMemoryGetFreeMemorySize(MemoryStruct *mem);
  40. /*内存历史最小剩余*/
  41. extern size_t pMemoryGetMinimumEverFreeMemorySize(MemoryStruct *mem);
  42. #endif