關(guān)于ARM芯片地址重映射的形象解釋
普通的單片機(jī)把可執(zhí)行代碼和數(shù)據(jù)存放到存儲器中。單片機(jī)中的CPU從儲器中取指令代碼和數(shù)據(jù)。其中存儲器中每個物理存儲單元與其地址是一一對應(yīng)而且是不可變的。如下圖,CPU讀取0x00000000地址上存儲單元的過程。
ARM比較復(fù)雜。ARM芯片與普通單片機(jī)在存儲器地址方面的不同在于:ARM芯片中有些物理存儲單元的地址可以根據(jù)設(shè)置變換。就是說一個物理存儲單元現(xiàn)在對應(yīng)一個地址,經(jīng)過設(shè)置以后,這個存儲單元就對應(yīng)了另外一個地址了。圖3是隨意舉了個例子(不要與ARM芯片對應(yīng)),旨在說明地址重映射的過程。圖3表示把0x00000000地址上的存儲單元映射到新的地址0x00000007上。CPU存取0x00000007就是存取0x00000000上的物理存儲單元。
下面圖4,圖5是對ARM芯片的兩種地址重映射方式的圖示。
圖4
圖5
圖5描述示了ARM芯片的另外一種映射方式。這個映射可以由用戶決定采用還是不采用(相關(guān)代碼在工程文件的startup.s中,這個文件是第三方提供,用戶可以修改)。這個映射主要是為了提高應(yīng)用程序異常相應(yīng)得速度。當(dāng)我們把應(yīng)用程序存放在片內(nèi)FLASH的時候,異常向量表存放在0x00000000~0x0000003F存儲單元內(nèi)。每次發(fā)生異常,CPU從0x00000000~0x0000003F地址上取異常向量。但是對RAM的存取速度遠(yuǎn)高于對FLASH的存取速度,所以為了提高異常相應(yīng)速度我們采取以下做法:
評論