arm的儲存器對映與儲存器重對映機制
今天終於明白了arm的儲存器對映與儲存器重對映機制,我覺得這一切都是為了中斷向量得到有效的執行啊。下面可以進一步了學習啦! 先前在課上在聽老師講arm的儲存器對映與儲存器重對映時,聽明白了arm的儲存器對映是怎麼個回事!
1.儲存器對映:處理器產生的位址按其某種規則轉移到具體的實體地址;使用者可見的,開機後固定不變的。
2.儲存器重對映:重新修改區域性(64位元組異常向量表);可選操作,穩定執行時由使用者需要進行改變(使用者程式)。
今天在zlg的eazyarm板子上,對照著自帶的實驗冊做儲存器重對映的實驗,需要設定memmap暫存器,此時不是很明白這個memmap暫存器該怎麼設定,看了幾遍arm書上的相關章節,終於明白了實驗程式的具體原理,也明白了memmap設定的作用: memmap=0:開機預設值,boot裝載模式----向量表(0x00000000-0x0000003c)對映的是bootblock中的0x7fffe000-0x7ffff03c中的值;晶元復位時,啟動boot裝載程式,boot裝載程式檢查p0.14口的狀態和使用者的異常向量,判斷是進入isp狀態還是啟動使用者程式,若啟動使用者程式,則自動設定memmap=1(片內flash啟動)或3(片外程式儲存器啟動)。很奇怪的,我在實驗中,當使用無片內flash的lpc2210時即使設定p0.14為高低都沒關係,晶元會跳過繼而執行片外flash中的**. memmap=1:中斷向量表就在片內flash中,位址就是0x00000000-0x0000003c,相當於沒有對映; memmap=2:最為主要的設定,即是重對映的關鍵之所在,當設定memmap=2 時,中斷向量表(0x00000000-0x0000003c)對映的是片內sram中的0x40000000-0x4000003c中的值,而因為是sram,所以在程式執行的過程中是可以改變的,這樣就可以達到重對映的目的啦(中斷向量表可以隨時修改)。 memmap=3:中斷向量表就在片外flash中,中斷向量表(0x00000000-0x0000003c)對映到是片外flash中的0x80000000-0x8000003c中的值;功能上與memmap=1時的差不多,因為一旦程式固化到flash中,即為唯讀,只是數值對映而已!以上是我初學這塊內容的體會,不知道**有沒出錯,萬一有錯了還請高手指正啊。
ARM儲存器對映 重對映與啟動
儲存器對映是指把晶元中或晶元外的flash,ram,外設,bootblock等進行統一編址。即用位址來表示物件。這個位址絕大多數是由廠家規定好的,使用者只能用而不能改。使用者只能在掛外部ram或flash的情況下可進行自定義。arm7tdmi的儲存器對映可以有0x00000000 0xfffffff...
儲存器的重對映
儲存器的重對映的原因是什麼?重對映到底是怎樣進行對映的?如果不進行重對映會有什麼影響?通常系統啟動都是從0位址處開始,但是為了支援不同的儲存介質,不同的儲存介質被分配了乙個非0位址區域。這就是為什麼要進行重對映。因此重對映主要發生在兩種情況下,一系統啟動的過程中 二如果中途遇到需要在不同的儲存器之間...
儲存器對映
通過賦予每個任務不同的虛擬 物理 位址轉換 對映,支援不同任務之間的保護。位址轉換 函式在每乙個任務中定義,在乙個任務中的 虛擬位址 空間對映到 物理記憶體 的乙個部分,而另乙個任務的虛擬位址空間對映到物理儲存器中的另外區域。就是把乙個位址連線到另乙個位址。例如,記憶體單元a的位址為x,把它對映到位...