Heap_Size EQU 0x00000800AREA HEAP, NOINIT, READWRITE, ALIGN=3__heap_baseHeap_Mem SPACE Heap_Size__heap_limit
# Heap_Size 0x00000800unsigned char Heap_Mem[Heap_Size] = {0};
__user_initial_stackheapLDR R0, = Heap_Mem ; 返回系統(tǒng)中堆內存起始地址LDR R1, =(Stack_Mem + Stack_Size)LDR R2, = (Heap_Mem + Heap_Size); 返回系統(tǒng)中堆內存的結束地址LDR R3, = Stack_MemBX LR
unsigned char mem_buffer[512];unsigned char *mem_offset = & mem_buffer;void *malloc(int size){unsigned char *tmp = mem_offset;mem_offset += size;return (void *)tmp;}void free(void *mem){mem_offset = mem;}
# MEM_BUFFER_LEN 5 //內存塊的數量# MEM_BUFFER_SIZE 256 //每塊內存的大小//內存池的描述,使用聯合體,體現窮人的智慧。就如,我一同學說的:一個字節(jié),恨不得掰成8個字節(jié)來用。typedef union mem {struct list_head list;unsigned char buffer[MEM_BUFFER_SIZE];}mem_t;static union mem gmem[MEM_BUFFER_LEN];LIST_HEAD(mem_pool);//分配內存void *mem_pop(){union mem *ret = NULL;psr_t psr;psr = ENTER_CRITICAL();if(!list_empty(&mem_pool)) { //有可用的內存池ret = list_first_entry(&mem_pool, union mem, list);//printf("mem_pool = 0x%p ret = 0x%p\n", &mem_pool, &ret->list);list_del(&ret->list);}EXIT_CRITICAL(psr);return ret;//->buffer;}//回收內存void mem_push(void *mem){union mem *tmp = NULL;psr_t psr;tmp = (void *)mem;//container_of(mem, struct mem, buffer);psr = ENTER_CRITICAL();list_add(&tmp->list, &mem_pool);//printf("free = 0x%p\n", &tmp->list);EXIT_CRITICAL(psr);}//初始化內存池void mem_pool_init(){int i;psr_t psr;psr = ENTER_CRITICAL();for(i=0; ilist_add(&(gmem[i].list), &mem_pool);//printf("add mem 0x%p\n", &(gmem[i].list));}EXIT_CRITICAL(psr);}
免責聲明:本文內容來源于網絡,文章版權歸原作者所有,意在傳播相關技術知識&行業(yè)趨勢,供大家學習交流,若涉及作品版權問題,請聯系刪除或授權事宜。
End
華清遠見武漢中心位于武漢市洪山區(qū)武漢工程大學(武昌校區(qū))科技孵化器11 樓,學生的食宿與活動十分便捷,實驗設備、師資力量、教學管理等方面全國一流。武漢中心擁有專業(yè)級講師及資深工程師, 師資力量雄厚;擁有國內最先進的人工智能、云/大數據等開發(fā)硬件專業(yè)實驗設備,其中85%以上的實驗設備由華清遠見自主研發(fā);擁有以人為本的高級班主任老師,科學的教學管理制度。主要課程有嵌入式人工智能、Java大數據開發(fā)、Html5全棧開發(fā)、Python+人工智能等,并為每一位學員提供專業(yè)的就業(yè)指導,高薪就業(yè)的學員不計其數,做良心教育,做專業(yè)教育,做受人尊敬的職業(yè)教育。
免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯系我們,謝謝!





