1.ARM7TDMI的存儲(chǔ)器 ARM7TDMI的存儲(chǔ)器可分為內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器,。 (1)內(nèi)部存 儲(chǔ)器:又可分為片內(nèi)FLASH程序存儲(chǔ)器和片內(nèi)靜態(tài)RAM,。 @片內(nèi)FLASH程序存儲(chǔ)器 LPC2000系列除了LPC2220/2210/2290(最后位為0的無(wú)片內(nèi)Flash)外,其他都帶有容量不等的片內(nèi)Flash,,片內(nèi)Flash可 用作代碼和數(shù)據(jù)的存儲(chǔ),。片內(nèi)Flash通過(guò)128位寬度的總線(局部總線)與ARM內(nèi)核相連,具有很高的速度,,加上存儲(chǔ)器加速功能,,可以在Flash直接 運(yùn)行程序,而無(wú)需把程序復(fù)制到RAM中運(yùn)行,。 對(duì)片內(nèi)FLASH編程有三種方法實(shí)現(xiàn): a. 通過(guò)內(nèi)置JTAG接口,; b. 通過(guò)在系統(tǒng)編程(ISP),使用UART0通信,; c. 通過(guò)在應(yīng)用編程(IAP),,使用此法可實(shí)現(xiàn)用戶程序運(yùn)行時(shí)對(duì)Flash進(jìn)行擦除或編程,這樣為數(shù)據(jù)存儲(chǔ)和現(xiàn)場(chǎng)固件的升級(jí)帶來(lái)了極大的靈活性,。 @靜態(tài)RAM LPC2000系列ARM的片內(nèi)RAM為靜態(tài)RAM(SRAM),,芯片容量根據(jù)不同的芯片有所不同,它們主要用作代碼或數(shù)據(jù)的存儲(chǔ),。 (2) 片外存儲(chǔ)器 在CPU外部擴(kuò)展連續(xù)的存儲(chǔ)器芯片稱為片外存儲(chǔ)器,。 LPC2200系列ARM芯片具備符合ARM公司的PL090標(biāo)準(zhǔn)的外部存儲(chǔ)器接口,通過(guò)它可連接8位,,16位,,32位的片外存儲(chǔ)器。最多可擴(kuò)展4個(gè) BANK的存儲(chǔ)器組,,每個(gè)存儲(chǔ)器組的尋址范圍最大為16M字節(jié),。而實(shí)際應(yīng)用中使用16位總線寬度性價(jià)比最高,。 LPC2100系列ARM芯片不具備這種總線接口,只能通過(guò)片內(nèi)外設(shè)來(lái)模擬總線時(shí)序來(lái)操作片外存儲(chǔ)器,。 對(duì)于外擴(kuò)的SRAM只需一條LDR(STR)指令即可進(jìn)行數(shù)據(jù)的讀(寫(xiě))操作,,而對(duì)于外擴(kuò)的Flash(NOR型),可使用LDR指令讀取數(shù)據(jù),,但不能使用STR指令直接寫(xiě)數(shù)據(jù),,需要根據(jù)Flash 芯片的寫(xiě)操作時(shí)序進(jìn)行控制,實(shí)現(xiàn)FLASH的擦除編程,。而如果要進(jìn)行程序的燒寫(xiě)的話,,需要在CPU內(nèi)運(yùn)行一個(gè)裝載程序(loader程序, 由用戶自行編寫(xiě)),,把從串口接受的代碼數(shù)據(jù)寫(xiě)入到片外Flash中,。 2.存儲(chǔ)器的地址映射 ARM處理器產(chǎn)生的地址叫虛擬地址,把這個(gè)虛擬地址按照某種規(guī)則轉(zhuǎn)換到另一個(gè)物理地址去的方法稱為地址映射,。這個(gè)物理地址表示了被訪問(wèn)的存儲(chǔ)器的位置,。它是一個(gè)地址范圍,該范圍內(nèi)可以寫(xiě)入程序代碼,。 為存儲(chǔ)器分配地址的過(guò)程稱為存儲(chǔ)器映射,。 AHB為先進(jìn)的高性能總線,,VPB為VLSI外設(shè)總線,外設(shè)區(qū)域都為2M字節(jié),,可各分配128個(gè)外設(shè),。每個(gè)外設(shè)空間的規(guī)格都為16K字節(jié),這樣就簡(jiǎn)化了每個(gè)外設(shè)的地址譯碼,。 AHB外設(shè)是掛接在芯片內(nèi)部AHB總線上的外設(shè)部件,,具有較高的速度,如向量中斷控制器部件和外部存儲(chǔ)器控制器部件等,;而VPB外設(shè)是掛接在芯片內(nèi)部VPB總線(由AHB總線轉(zhuǎn)換而來(lái))上的外設(shè)部件,,速度通常比AHB外設(shè)要慢, 如GPIO部件和UART部件等,。ARM處理器訪問(wèn)這些外設(shè)的控制寄存器時(shí)就像訪問(wèn)內(nèi)存一樣,,是由LDR(STR)指令即可完成讀(寫(xiě)),也就是外設(shè)的控 制寄存器與存儲(chǔ)器是統(tǒng)一編址的,。所有寄存器不管規(guī)格大小,,地址都是字對(duì)齊。不可能對(duì)一個(gè)寄存器的最高字節(jié)執(zhí)行單獨(dú)的讀或?qū)懖僮鳌?/font> 小知識(shí):向量中斷控制器的寄存器沒(méi)有按順序放在AHB外設(shè)中,而是固定在地址的最高端,,是因?yàn)檫@里離異常向量表最近(地址0x00000000與0xFFFFFFFF可認(rèn)為是彼此相鄰的),,在發(fā)生IRQ或FIQ異常時(shí),只需一條指令即可訪問(wèn)到向量中斷控制器的相關(guān)寄存器,。 存儲(chǔ)器中有一部分保留地址和一部分未分配區(qū)域的地址,。訪問(wèn)這兩部分地址,ARM處理器將產(chǎn)生預(yù)取指中止或數(shù)據(jù)中止異常,。 保留的區(qū)域有: a.片內(nèi)FLASH中未分配的地址; b.片內(nèi)RAM與外部存儲(chǔ)器之間保留給片內(nèi)存儲(chǔ)器的地址空間,; c.外部存儲(chǔ)器中無(wú)法用外部存儲(chǔ)器控制器(EMC)來(lái)訪問(wèn)的地址空間,; d.AHB和VPB空間保留的區(qū)域。 未分配的區(qū)域包括AHB和VPB外設(shè)空間中未分配的區(qū)域,。 |
|