嵌入式linux開發 (十八) 內存管理(2) ARM內存管理

硬件對內存的管理

  • armv7v8
ARM是統一編址的,也就是外設和(內存A)進行統一的編址,共同形成了4G物理地址空間(32位爲例子)。
內存控制器屬於外設,內存屬於(內存A).
一個soc內部及外擴的內存都屬於(內存A).
存儲器架構
	哈佛架構
  • cortex-M cortex-A
MPU MMU 的概念定義及實現定義
MPU:
	The memory protection unit (MPU) is used to manage the CPU accesses to memory to prevent one task to accidentally corrupt the memory or resources used by any other active task
MMU:
	Complex operating systems typically use a virtual memory system to provide separate, protected address spaces for different processes. 
	Processes are dynamically allocated memory and other memory mapped system resources under the control of a Memory Management Unit (MMU). 
	The MMU allows fine-grained control of a memory system through a set of virtual to physical address mappings and associated memory properties held within one or more structures known as Translation Lookaside Buffers (TLBs) within the MMU. 
  • 具體芯片
定義了內部內存的大小
定義了內存控制器的IP
定義了是否有MPU,是否有MMU
  • 內存控制器
ARM對(內存A)的管理統一編址,其實是通過內存控制器管理的.
內存控制器控制的內存包括所有的(內存A)
	內部內存(sram)
	通過內存控制器所屬管腳接GPIO外擴的(1-n片)內存芯片(sram,sdram,ddr sdram,ddr2,ddr3,ddr4,ddr5)

內存控制器給每片芯片(內外部ram)分配了不同的地址範圍.

初始化及讀寫內存
初始化
	對於外部內存,初始化內存控制器即可.
	對於內部內存,無需初始化.(因爲在soc生產出來後,內部內存芯片是已知的,所以廠家完全可以硬編碼初始化內存控制器)
讀寫內存
	內存控制器給每片芯片(內外部ram)分配了不同的地址範圍.
	如果要讀寫每片內存的話,例如該內存芯片中有個地址爲0x08000000,要寫爲0x12345678,並將其打印出來,用C語言表示爲:: *(volatile unsigned int *)(0x08000000)=0x12345678;: printf("%d\n",*(volatile unsigned int *)(0x08000000));
  • 內存安全控制
MPU與MMU
MPU : 
	將內存分塊,給不同的訪問權限.
	對代碼分塊,給不同的訪問權限.
	當代碼對內存訪問時,比較權限關係,從而判定權限是否越界.
MMU : 
	在MPU基礎上,增加虛擬地址與物理地址的轉換

軟件對內存的管理

硬件對多個內存塊編碼了不同的地址範圍.
軟件該怎麼管理這些地址範圍呢?(管理不包括初始化)
根據軟件的發展,有不同的管理方式,針對以下分類
MPU-MMU-no
	以cortex-M的STM32F407ZGT6(不使能MPU) 爲例
MPU-with
	以cortex-M的STM32F407ZGT6 爲例
MMU-With
	s3c2440 和 I.MX6ULL 在這方面一致,以 I.MX6ULL 爲例 

其他


----------------------統一編址
ARM是統一編址的,也就是外設和內存進行統一的編址,共同形成了4G物理地址空間(32位爲例子)。

----------------------獨立編址
獨立編址是說,內存和外設分別編址,同樣一個32根地址線的處理器,內存可用的地址空間爲4G,外設可用的地址空間也爲4G.
同樣的地址怎麼區分是訪問內存還是外設呢,獨立編址裏採用了不同的地址總線來區分是訪問內存還是訪問外設,也就是說,獨立編址就是內存一根總線,外設一根總線,他們互不干涉,通過指令來加以區分,目前主流電腦上一般都採用獨立編址。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章