#include "malloc.h" #include ////////////////////////////////////////////////////////////////////////////////// //������ֻ��ѧϰʹ�ã�δ��������ɣ��������������κ���; //ALIENTEK MiniSTM32������ //�ڴ���� �������� //����ԭ��@ALIENTEK //������̳:www.openedv.com //�޸�����:2014/3/12 //�汾��V1.0 //��Ȩ���У�����ؾ��� //Copyright(C) ������������ӿƼ����޹�˾ 2009-2019 //All rights reserved ////////////////////////////////////////////////////////////////////////////////// //�ڴ��(4�ֽڶ���) __align(4) u8 membase[MEM_MAX_SIZE]; //SRAM�ڴ�� //�ڴ����� u16 memmapbase[MEM_ALLOC_TABLE_SIZE]; //SRAM�ڴ��MAP //�ڴ������� const u32 memtblsize=MEM_ALLOC_TABLE_SIZE; //�ڴ���С const u32 memblksize=MEM_BLOCK_SIZE; //�ڴ�ֿ��С const u32 memsize=MEM_MAX_SIZE; //�ڴ��ܴ�С //�ڴ��������� struct _m_mallco_dev mallco_dev= { mem_init, //�ڴ��ʼ�� mem_perused, //�ڴ�ʹ���� membase, //�ڴ�� memmapbase, //�ڴ����״̬�� 0, //�ڴ����δ���� }; //�����ڴ� //*des:Ŀ�ĵ�ַ //*src:Դ��ַ //n:��Ҫ���Ƶ��ڴ泤��(�ֽ�Ϊ��λ) void mymemcpy(void *des,void *src,u32 n) { u8 *xdes=des; u8 *xsrc=src; while(n--)*xdes++=*xsrc++; } //�����ڴ� //*s:�ڴ��׵�ַ //c :Ҫ���õ�ֵ //count:��Ҫ���õ��ڴ��С(�ֽ�Ϊ��λ) void mymemset(void *s,u8 c,u32 count) { u8 *xs = s; while(count--)*xs++=c; } //�ڴ�����ʼ�� void mem_init(void) { mymemset(mallco_dev.memmap, 0,memtblsize*2);//�ڴ�״̬���������� mymemset(mallco_dev.membase, 0, memsize); //�ڴ�������������� mallco_dev.memrdy=1; //�ڴ�����ʼ��OK } //��ȡ�ڴ�ʹ���� //����ֵ:ʹ����(0~100) u8 mem_perused(void) { u32 used=0; u32 i; for(i=0;i=0;offset--) //���������ڴ������ { if(!mallco_dev.memmap[offset])cmemb++; //�������ڴ�������� else cmemb=0; //�����ڴ������ if(cmemb==nmemb) //�ҵ�������nmemb�����ڴ�� { for(i=0;i