位址對映,儲存器對映

2021-06-29 12:22:22 字數 1385 閱讀 3322

學習乙個事項的時候,注意三點:是什麼,有什麼用(功能),如何配置(實現、操作)。

1,為了保證

cpu執行指令時可正確訪問

儲存單元

,需將使用者程式

中的邏輯

位址轉換

為執行時由機器

直接定址

的實體地址,這一過程稱為位址對映。

2,位址對映結構

在tornado\target\h\vmlib.h檔案中

typedef struct phys_mem_desc

phys_mem_desc;

virtualaddr:你要對映的

虛擬位址

len;要進行對映的位址長度

有如下狀態:

#define vm_state_mask_valid 0x03

#define vm_state_mask_writable 0x0c

#define vm_state_mask_cacheable 0x30

#define vm_state_mask_mem_coherency 0x40

#define vm_state_mask_guarded 0x80

不同的cpu晶元型別還有其特殊狀態

有如下狀態:

#define vm_state_valid 0x01

#define vm_state_valid_not 0x00

#define vm_state_writable 0x04

#define vm_state_writable_not 0x00

#define vm_state_cacheable 0x10

#define vm_state_cacheable_not 0x00

同樣不同的cpu晶元型別還有其特殊狀態

3,初始化結構

在 tornado\target\config\ads860\syslib.c 檔案中:

phys_mem_desc   sysphysmemdesc [  ] = ,

, ……

, };

上面結構中是預設位址對映。

在tornado\target\src\config\ usrmmuinit.c 檔案中

通過函式usrmmuinit使位址對映生效

如你定義flash位址為0x04000000開始的8mbyte位址,則可以如下進行位址對映 ,

靜態重定位

當使用者程式被裝入記憶體時,一次性實現邏輯位址到實體地址的轉換,以後不再轉換(一般在裝入記憶體時由軟體完成)。

動態重定位

在程式執行過程中要訪問資料時再進行位址變換(即在逐條指令執行時完成位址對映。一般為了提高效率,此工作由硬體位址對映機制來完成。由硬體支援,軟體硬體結合完成。硬體上一般需要一對暫存器的支援)。

儲存器對映

通過賦予每個任務不同的虛擬 物理 位址轉換 對映,支援不同任務之間的保護。位址轉換 函式在每乙個任務中定義,在乙個任務中的 虛擬位址 空間對映到 物理記憶體 的乙個部分,而另乙個任務的虛擬位址空間對映到物理儲存器中的另外區域。就是把乙個位址連線到另乙個位址。例如,記憶體單元a的位址為x,把它對映到位...

儲存器對映

引言 隨著半導體工藝技術與處理器設計技術的不斷提高,嵌入式處理器的速度愈來愈快 而非易失性儲存器的讀取速度卻遠遠跟不上cpu的發展。傳統的微控制器執行模式 機器 儲存在非易失性儲存器 如rom,flash 在執行時由cpu直接從其中取出指令執行 逐漸顯得力不從心。如果繼續沿用傳統的程式執行模式,那麼...

儲存器對映

位段 bit band 是指提供位操作的特殊寄儲存器區域。利用這個特性,可以直接驅動驅動gpio埠中的乙個引腳。rmw read modify write 多指令操作,即先讀取整個埠暫存器,而後修改對應的位,最後寫回埠暫存器的操作來控制和驅動埠的乙個引腳。微處理器的架構包括 1 指令集架構,包括指令...