新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM學(xué)習(xí)中LPC2104的Boot與Remap詳解

ARM學(xué)習(xí)中LPC2104的Boot與Remap詳解

作者: 時(shí)間:2012-08-30 來源:網(wǎng)絡(luò) 收藏

至此,Flash塊對(duì)內(nèi)存地址空間的占用情況如下:

1、除去因被暫時(shí)注銷了映射關(guān)系的那小部分64字節(jié)的Flash子塊外,Flash塊作為一個(gè)整體占用的地址編碼空間為0x00000040—0x0001FFFF;

2、同時(shí),load子塊又占用了0x7FFFE000—0x7FFFFFF的地址編碼空間,load子塊中的異常向量表部分占用了0x00000000—0x0000003F。

因此,load子塊中的異常向量表部分實(shí)際上是占用了重復(fù)占用了三段地址編碼空間:0x00000000—0x0000003F、0x0001E000—0x0001E03F以及0x7FFFE000—0x7FFFE03F。

圖2中,存儲(chǔ)器的映射順序?yàn)椋篗emory Map-〉Reset -〉Bootload

SRAM塊和內(nèi)核外圍模塊的映射關(guān)系在Remap之后保持不變,可參見圖1。

  * - 本貼最后修改時(shí)間:2005-3-10 17:31:19 修改者:andrewpei

  * - 修改原因:Append

Boot

有效的異常向量表地址編碼空間是0x00000000—0x0000003F(嚴(yán)格來說應(yīng)該是0x00000000—0x0000001F)。處理器復(fù)位后的Boot動(dòng)作就是從0x00000000處起始字中取出跳轉(zhuǎn)指令,開始程序的執(zhí)行。由于處理器復(fù)位后,映射到0x00000000—0x0000003F地址空間的異常向量表源于Bootload子塊,因此CPU實(shí)際上開始執(zhí)行的是Philips在芯片出廠前寫入的Bootload程序。

進(jìn)入Bootload后,程序首先檢查看門狗溢出標(biāo)志是否置位。

若看門狗溢出標(biāo)志置位,則表明當(dāng)前的系統(tǒng)復(fù)位是內(nèi)部軟復(fù)位,CPU下一步將對(duì)Flash塊中的異常向量表進(jìn)行加和校驗(yàn)。如果加和檢驗(yàn)結(jié)果為零,Bootload程序?qū)⒊蜂NBootload子塊中異常向量表部分在0x00000000—0x00000003F地址空間上的映射,恢復(fù)Flash塊的異常向量表在這64字節(jié)地址空間上的映射關(guān)系(如圖3),然后跳轉(zhuǎn)到異常向量表地址0x00000000處轉(zhuǎn)入用戶程序的執(zhí)行。如果加和校驗(yàn)結(jié)果不為零,Bootload程序?qū)⑦M(jìn)行UART0接口的波特率自動(dòng)偵測(cè),隨時(shí)響應(yīng)ISP宿主機(jī)的編程請(qǐng)求,執(zhí)行處理器芯片的ISP編程工作。

  若Bootload沒有發(fā)現(xiàn)看門狗溢出標(biāo)志置位,則表明當(dāng)前的系統(tǒng)復(fù)位是外部硬復(fù)位,CPU將采樣P0.14引腳的外部邏輯電平輸入。如果為0,Bootload執(zhí)行UART0的自動(dòng)波特率偵測(cè),隨時(shí)響應(yīng)ISP宿主機(jī)的編程請(qǐng)求;如果為1,Bootload的后續(xù)動(dòng)作將與前面檢測(cè)到看門狗溢出標(biāo)志置位的程序執(zhí)行完全相同。

Remap(可選)

最后這一步可選的Remap動(dòng)作完全處于用戶的控制之下,Remap的對(duì)象是片內(nèi)SRAM存儲(chǔ)器塊的異常向量部分,共計(jì)64字節(jié)大小。用戶可以編程決定何時(shí)Remap、Remap之后是否再修改異常向量表以及如何修改異常向量表等等。需要強(qiáng)調(diào)的是,引發(fā)Remap動(dòng)作的指令與建立SRAM塊中異常向量的所有功能代碼全部駐留在Flash塊的用戶編程區(qū)中,是用戶應(yīng)用軟件的一部分。

曾經(jīng)有網(wǎng)友對(duì)Philips在LPC2000系列處理器中引入這個(gè)可選的Remap功能提出質(zhì)疑:LPC2000系列處理器片內(nèi)的Flash塊被分割成了兩組,每組都配備了相互獨(dú)立的128位寬度的讀取緩沖,在絕大多數(shù)情況下,CPU從Flash塊的訪問是全速進(jìn)行的,不存在有等待的狀況;另一方面,一般應(yīng)用LPC2000的嵌入式系統(tǒng)并不需要?jiǎng)討B(tài)地改變異常向量表。因此,對(duì)片內(nèi)SRAM進(jìn)行Remap后,并不能提高處理器對(duì)異常的響應(yīng)能力,實(shí)際意義不大。

事實(shí)上,LPC2000系列處理器引入SRAM的Remap功能對(duì)于IAP操作具有重要的意義。相對(duì)于其它基于ARM7DMI內(nèi)核的處理器而言,LPC2000系列處理器有一個(gè)獨(dú)具特色的功能—IAP。在IAP擦除/寫入操作時(shí),片上Flash塊,包括該塊上的異常向量部分,是無法被訪問讀取的,為了在IAP擦除/寫入操作時(shí)有效地響應(yīng)異常,必須在調(diào)用IAP擦除/寫入操作之前,將SRAM中的異常向量部分提前映射到系統(tǒng)的異常向量表地址空間上。(待續(xù))


上一頁 1 2 下一頁

關(guān)鍵詞: LPC2104 Boot Remap

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉