<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          1、除去因被暫時(shí)注銷(xiāo)了映射關(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之后保持不變,可參見(jiàn)圖1。

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

            * - 修改原因:Append

          Boot

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

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

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

            若Bootload沒(méi)有發(fā)現(xiàn)看門(mé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è)到看門(mén)狗溢出標(biāo)志置位的程序執(zhí)行完全相同。

          Remap(可選)

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

          曾經(jīng)有網(wǎng)友對(duì)Philips在LPC2000系列處理器中引入這個(gè)可選的Remap功能提出質(zhì)疑:LPC2000系列處理器片內(nèi)的Flash塊被分割成了兩組,每組都配備了相互獨(dú)立的128位寬度的讀取緩沖,在絕大多數(shù)情況下,CPU從Flash塊的訪(fǎng)問(wèn)是全速進(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擦除/寫(xiě)入操作時(shí),片上Flash塊,包括該塊上的異常向量部分,是無(wú)法被訪(fǎng)問(wèn)讀取的,為了在IAP擦除/寫(xiě)入操作時(shí)有效地響應(yīng)異常,必須在調(diào)用IAP擦除/寫(xiě)入操作之前,將SRAM中的異常向量部分提前映射到系統(tǒng)的異常向量表地址空間上。(待續(xù))


          上一頁(yè) 1 2 下一頁(yè)

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

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();