uC/OS-II內核架構解析(6)---uC/OS-II內存管理

1. memPart基本原理

   uC/OS-II根據需要將內存空間分成多個內存分區,每個內存分區由具有相同大小的內存塊(Block)組成。主要包含在C源文件OS_MEM.C中。

  • OS_EXT OS_MEM OSMemTbl[OS_MAX_MEM_PART];

  • OS_EXT OS_MEM *OSMemFreeList;

  • memPart控制塊結構體:

  typedef struct os_men{

       void *OSMemAddr;                 //首地址

       void *OSMemFreeList;            //分區中空閒空間的起始地址

       INT32U OSMemBlkSize;         //分區中塊成員空間大小

       INT32U OSMemNBlks;           //塊結構數量

       INT32U OSMemNFree;           //剩餘空閒塊個數

       INT8U OSMemName[];

  }OS_MEM;

2010051115481719.jpg

2. memPart管理函數

  • OS_MEM *OSMemCreate(void *addr, INT32U nblks,

            INT32U blksize, INT8U *err);

2010051116491645.jpg

  • void *OSMemGet(OS_MEM *pmem, INT8U *err); //申請內存分區塊

  • INT8U OSMemPut(OS_MEM *pmem, void *pblk); //釋放內存分區塊

  • INT8U OSMemQuery(OS_MEM *pmem, OS_MEM_DATA*);

  • INT8U OSMemNameGet(OS_MEM *pmem, INT8U *pname, INT8U *err);

  • INT8U OSMemNameSet(OS_MEM *pmem, INT8U *pname, INT8U *err);

2010051116472069.jpg

3. memPart幾個問題

   (1)能不能一次申請1B的堆空間

   (2)uC/OS-II在申請棧空間和堆空間時有什麼不同


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章