從事手機平台研發也有一年多了,總結了一下有關手機記憶體方面的知識希望對新手有所裨益。如果有高手路過檢視之餘如有紕漏之處還請不吝賜教~
說明:傳統「燒機」流程將軟體燒錄到flash中,軟體bootloader部分在nor flash中, 軟體的其他部分燒錄到nand flash 。
強調一點:上圖左邊部分是flash仍是由nor flash和nand flash兩部分組成, 從軟體的角度我粗略地分成了ro和rw 。 ro部分具有「唯讀」屬性,通常包含指令**(指令當然是唯讀的啦)和宣告成const的全域性資料。rw具有「讀寫」屬性,一般包含初始值非零的全域性資料。當然還有zi段, zi段包含初始值為零的全域性資料,因為都是0所以在燒機到flash的時候沒有必要占有實際的空間。
「加電開機」過程將rw段拷貝到ram中,zi段也將在這裡占有實際的空間。那麼剩餘的部分可以用作執行緒棧和堆(一般實際系統中堆都是用乙個大的全域性陣列分配出來了所以可以說堆是在zi部分)。注意到在最後面有乙個」co_f_nand」是」copy from nand flash」的簡寫(下圖中會做說明)。
說明: 上圖中flash分成了nor flash和nand flash兩段。nor flash除了具有一
般flash掉電不丟失資料、可讀可寫的特點外, 它的讀取和sdram以及sram是一樣的. 可以直接執行裝載在nor flash裡面的**,因此我們將bootloader部分燒錄到nor flash中。 而nand flash讀寫是按塊的,通常每塊的大小是512位元組。 nand flash裡面的指令通常要預載入到sdram中,再由cpu取指。需要特別注意的是一般嵌入式系統會從nand flash劃分出一段作為硬碟使用(因為它完全滿足硬碟的特點:按塊「讀寫」,掉電不丟失。)
嵌入式系統 記憶體管理
教材 嵌入式系統及應用,羅蕾 李允 陳麗蓉等,電子工業出版社 嵌入式實時作業系統在記憶體管理方面需要考慮如下因素 快速而確定的記憶體管理 通常的作業系統都至少具有基本的記憶體管理方法 提供記憶體分配與釋放的系統呼叫 不使用虛擬儲存技術 在嵌入式實時作業系統中一般不使用虛擬儲存技術,以避免頁面置換所帶...
嵌入式 記憶體分配管理
嵌入式 記憶體分配管理 嵌入式的記憶體一般都非常的小,最進在學習lwip協議棧的移植,在正點原子的學習資料中找到了許多關於怎麼移植協議棧的東西,其中使用到了記憶體的分配管理技術,能夠高效的管理和使用記憶體,學習之後整理了放在這裡。一 記憶體分配管理函式 函式名函式說說明 輸入 輸出 memory i...
嵌入式 linux 檢視記憶體
在windows系統中檢視記憶體 root scs 2 tmp free total used free shared buffers cached mem 3266180 3250004 16176 0 110652 2668236 buffers cache 471116 2795064 swa...