125 lines
3.9 KiB
C
Raw Normal View History

2021-07-28 13:15:22 +08:00
#ifndef __MALLOC_H
#define __MALLOC_H
#include "sys.h"
//////////////////////////////////////////////////////////////////////////////////
/*****************************************************************************/
//<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41><EFBFBD><E2BAAF><EFBFBD>
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
/*****************************************************************************/
//////////////////////////////////////////////////////////////////////////////////
#ifndef NULL
#define NULL 0
#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
#define SRAMIN 0 //AXI<58>ڴ<EFBFBD><DAB4><EFBFBD>,AXI<58><49>512KB
#define SRAMEX 1 //<2F>ⲿ<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>(SDRAM),SDRAM<41><4D>32MB
#define SRAM12 2 //SRAM1/2/3<>ڴ<EFBFBD><DAB4><EFBFBD>,SRAM1+SRAM2,<2C><>256KB
#define SRAM4 3 //SRAM4<4D>ڴ<EFBFBD><DAB4><EFBFBD>,SRAM4<4D><34>64KB
#define SRAMDTCM 4 //DTCM<43>ڴ<EFBFBD><DAB4><EFBFBD>,DTCM<43><4D>128KB,<2C>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>CPU<50><55>MDMA(ͨ<><CDA8>AHBS)<29><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>!!!!
#define SRAMITCM 5 //ITCM<43>ڴ<EFBFBD><DAB4><EFBFBD>,DTCM<43><4D>64 KB,<2C>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>CPU<50><55>MDMA(ͨ<><CDA8>AHBS)<29><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>!!!!
#define SRAMBANK 6 //<2F><><EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD>SRAM<41><4D><EFBFBD><EFBFBD>.
//mem1<6D>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨.mem1<6D><31>H7<48>ڲ<EFBFBD><DAB2><EFBFBD>AXI<58>ڴ<EFBFBD>.
#define MEM1_BLOCK_SIZE 64 //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>СΪ64<36>ֽ<EFBFBD>
#define MEM1_MAX_SIZE 256*1024 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> 256K,H7<48><37>AXI<58>ڴ<EFBFBD><DAB4>ܹ<EFBFBD>512KB
#define MEM1_ALLOC_TABLE_SIZE MEM1_MAX_SIZE/MEM1_BLOCK_SIZE //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>С
//mem2<6D>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨.mem2<6D><32><EFBFBD>ⲿ<EFBFBD><E2B2BF>SDRAM<41>ڴ<EFBFBD>
#define MEM2_BLOCK_SIZE 64 //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>СΪ64<36>ֽ<EFBFBD>
#define MEM2_MAX_SIZE 64*1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>28912K,<2C><><EFBFBD><EFBFBD>SDRAM<41>ܹ<EFBFBD>64MB,LTDCռ<43><D5BC>2MB,<2C><>ʣ62MB.
#define MEM2_ALLOC_TABLE_SIZE MEM2_MAX_SIZE/MEM2_BLOCK_SIZE //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>С
//mem3<6D>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨.mem3<6D><33>H7<48>ڲ<EFBFBD><DAB2><EFBFBD>SRAM1+SRAM2<4D>ڴ<EFBFBD>
#define MEM3_BLOCK_SIZE 64 //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>СΪ64<36>ֽ<EFBFBD>
#define MEM3_MAX_SIZE 240 *1024 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>240K,H7<48><37>SRAM1+SRAM2<4D><32>256KB
#define MEM3_ALLOC_TABLE_SIZE MEM3_MAX_SIZE/MEM3_BLOCK_SIZE //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>С
//mem4<6D>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨.mem4<6D><34>H7<48>ڲ<EFBFBD><DAB2><EFBFBD>SRAM4<4D>ڴ<EFBFBD>
#define MEM4_BLOCK_SIZE 64 //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>СΪ64<36>ֽ<EFBFBD>
#define MEM4_MAX_SIZE 60 *1024 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>60K,H7<48><37>SRAM4<4D><34>64KB
#define MEM4_ALLOC_TABLE_SIZE MEM4_MAX_SIZE/MEM4_BLOCK_SIZE //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>С
//mem5<6D>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨.mem5<6D><35>H7<48>ڲ<EFBFBD><DAB2><EFBFBD>DTCM<43>ڴ<EFBFBD>,<2C>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>CPU<50><55>MDMA<4D><41><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>!!!!!!
#define MEM5_BLOCK_SIZE 64 //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>СΪ64<36>ֽ<EFBFBD>
#define MEM5_MAX_SIZE 120 *1024 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>120K,H7<48><37>DTCM<43><4D>128KB
#define MEM5_ALLOC_TABLE_SIZE MEM5_MAX_SIZE/MEM5_BLOCK_SIZE //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>С
//mem6<6D>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨.mem6<6D><36>H7<48>ڲ<EFBFBD><DAB2><EFBFBD>ITCM<43>ڴ<EFBFBD>,<2C>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>CPU<50><55>MDMA<4D><41><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>!!!!!!
#define MEM6_BLOCK_SIZE 64 //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>СΪ64<36>ֽ<EFBFBD>
#define MEM6_MAX_SIZE 60 *1024 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>60K,H7<48><37>ITCM<43><4D>64KB
#define MEM6_ALLOC_TABLE_SIZE MEM6_MAX_SIZE/MEM6_BLOCK_SIZE //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>С
//<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct _m_mallco_dev
{
void (*init)(u8); //<2F><>ʼ<EFBFBD><CABC>
u16 (*perused)(u8); //<2F>ڴ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>
u8 *membase[SRAMBANK]; //<2F>ڴ<EFBFBD><DAB4><EFBFBD> <20><><EFBFBD><EFBFBD>SRAMBANK<4E><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
u32 *memmap[SRAMBANK]; //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
u8 memrdy[SRAMBANK]; //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
};
extern struct _m_mallco_dev mallco_dev; //<2F><>mallco.c<><63><EFBFBD><EFBFBD><E6B6A8>
void mymemset(void *s,u8 c,u32 count); //<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
void mymemcpy(void *des,void *src,u32 n);//<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
void my_mem_init(u8 memx); //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>/<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>)
u32 my_mem_malloc(u8 memx,u32 size); //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>(<28>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>)
u8 my_mem_free(u8 memx,u32 offset); //<2F>ڴ<EFBFBD><DAB4>ͷ<EFBFBD>(<28>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>)
u16 my_mem_perused(u8 memx) ; //<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>(<28><>/<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>)
////////////////////////////////////////////////////////////////////////////////
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
void myfree(u8 memx,void *ptr); //<2F>ڴ<EFBFBD><DAB4>ͷ<EFBFBD>(<28>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>)
void *mymalloc(u8 memx,u32 size); //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>(<28>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>)
void *myrealloc(u8 memx,void *ptr,u32 size);//<2F><><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ڴ<EFBFBD>(<28>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>)
#endif
/*****************************************************************************/
//<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41><EFBFBD><E2BAAF><EFBFBD>
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
/*****************************************************************************/