一種嵌入式系統(tǒng)的內(nèi)存分配方案
區(qū)返回給緩沖池。如果定義了回調(diào)函數(shù),將在歸還緩沖之間調(diào)用回調(diào)函數(shù)。參數(shù)為緩沖池結(jié)構(gòu)和緩沖區(qū)指針。①緩沖池MAGIC標(biāo)記是否完好。②如果定義回調(diào)函數(shù)、調(diào)用之。如果返回錯(cuò)誤,則設(shè)置錯(cuò)誤號(hào)。③將緩沖區(qū)添加到空閑鏈表中頭部。注意該函數(shù)有2點(diǎn):①回調(diào)函數(shù)返回錯(cuò)誤,照樣歸還緩沖區(qū)。②沒有檢查緩沖區(qū)是否二次釋放,這一點(diǎn)與Intel的驅(qū)動(dòng)程序不同。另外,TMS的緩沖池沒有BLOCK要領(lǐng),不需要判斷哪個(gè)CELL屬于哪個(gè)BLOCK,簡化了操作。 5 小結(jié) 許多嵌入式應(yīng)用在RTOS提供的malloc/free的基礎(chǔ)上編寫自己的內(nèi)存管理方案。編寫這樣的內(nèi)存管理方案,目的無非有兩個(gè):一是減少對(duì)malloc/free的依賴,從而避免由之帶來的內(nèi)存碎片、時(shí)間不確定等總是;另一個(gè)是增強(qiáng)程序的查錯(cuò)能力,送還內(nèi)存使用錯(cuò)誤。對(duì)于在嵌入式系統(tǒng)中廣泛存在的數(shù)據(jù)庫類型的內(nèi)存需求,即分配多個(gè)固定尺寸的內(nèi)存單元的要求,“一閃分配,多次使用”的方案無疑是一種很好的解決之道。文中介紹的2個(gè)例子很好地體現(xiàn)了它的優(yōu)越性。 |