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

          新聞中心

          EEPW首頁 > 網(wǎng)絡(luò)與存儲 > 設(shè)計應(yīng)用 > 片外Flash存儲器IAP的一種方案

          片外Flash存儲器IAP的一種方案

          ——
          作者:中國人民解放軍防空兵指揮學(xué)院 劉憶輝 魏銀庫 鄒程 張軍偉 時間:2007-01-26 來源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》 收藏

          引言

          以arm芯片為處理器核的嵌入式應(yīng)用系統(tǒng),以其小體積、低功耗、低成本、高性能、豐富的片內(nèi)資源以及對操作系統(tǒng)的廣泛支持,得到了人們越來越多的青睞。包括工業(yè)控制領(lǐng)域、無線通信領(lǐng)域、網(wǎng)絡(luò)應(yīng)用、消費(fèi)電子、成像和安全產(chǎn)品等,如今,arm微處理器及嵌入式技術(shù)的應(yīng)用幾乎已經(jīng)滲透到了各個領(lǐng)域。其中,arm7作為arm微處理器系列中的一員,是低功耗的32位risc處理器。samsung公司的s3c4510b、philips公司的lpc20xx、lpc21xx、lpc22xx系列等都是arm7處理器。這些為數(shù)繁多的arm7處理器,因其片內(nèi)外設(shè)不同而各擅所長,但都應(yīng)用同樣的arm7tdmi核(或arm7tdmi-s核,這是arm7tdmi的綜合版本,這兩種核對處理器應(yīng)用人員來說沒有區(qū)別)??梢哉f,arm7tdmi是目前使用最為廣泛的32位嵌入式risc處理器。arm7tdmi核應(yīng)用馮·諾依曼結(jié)構(gòu),處理器使用的中數(shù)據(jù)和程序指令不予區(qū)分,pc寄存器指向的單元,無論是rom區(qū)還是ram區(qū),只要符合arm指令的格式都可以執(zhí)行,這就為系統(tǒng)自修改提供了可能。在應(yīng)用編程iap(in application program)就是這樣的自修改程序。它先在ram中寫入數(shù)據(jù)值,然后使pc指向該存儲段,把該段作為程序段來執(zhí)行。很多arm7芯片自帶iap處理器,應(yīng)用其自帶的iap處理器可以方便地對其片內(nèi)集成的flash存儲器進(jìn)行在應(yīng)用編程,但幾乎所有的arm核芯片均不支持片外iap處理,因為片外flash存儲器是用戶選型的,芯片生產(chǎn)廠家無法先知先覺,而不同flash存儲器其編程時序也不盡相同,導(dǎo)致芯片生產(chǎn)廠家無法提供通用的iap代碼。那么,如何對嵌入式系統(tǒng)的片外flash存儲器進(jìn)行在應(yīng)用編程呢?這里分兩種情況:一是普通代碼存放在片外單獨(dú)1片flash中,iap代碼在另一片flash中完成,此時只要依據(jù)flash的操作時序執(zhí)行iap代碼,完成擦除或?qū)懭氩僮骷纯?。這種情況雖然簡單,但應(yīng)用了2片flash;而iap代碼很小,一般完全可以集成到1片中,所以這里對這種情況不予考慮,另一種情況是1片flash中既要存儲普通代碼,又要實現(xiàn)iap。下面以philips公司的lpc2210和silicon storage technology公司的sst39vf160為例,詳細(xì)討論這種情況iap的解決方案。

          1 硬件結(jié)構(gòu)

          1.1 lpc2210介紹

          philips公司的lpc2210是一款基于支持實時仿真和嵌入式跟蹤的16/32位arm7tdmi-s cpu的微控制器。芯片采用144腳封裝,有16kb片內(nèi)靜態(tài)ram,開放外部總線;通過外部存儲器接口可將外部存儲器配置成4組,每組的容量高達(dá)16mb,數(shù)據(jù)寬度8/16/32位均可;具有多個32位定時器、8路10位pwm輸出、多個串行接口(包括2個16c550工業(yè)標(biāo)準(zhǔn)uart、高速i2c接口和2個spi接口)以及9個外部中斷、多達(dá)76個可承受5v電壓的通用i/o口,同時內(nèi)嵌實時時鐘和看門狗,片內(nèi)外設(shè)功能豐富強(qiáng)大;片內(nèi)晶振頻率范圍1-30mhz,通過片內(nèi)pll可實現(xiàn)最大為60mhz的cpu工作頻率,具有2種低功耗模式--空閑和掉電,通過外部中斷將處理器從掉電模式中喚醒,并可通過個別使能/禁止外部功能來優(yōu)化功耗。以上特性,使其特別適用于工業(yè)控制、醫(yī)療系統(tǒng)、訪問控制和pos機(jī),同時也非常適合于通信網(wǎng)關(guān)協(xié)議轉(zhuǎn)換器、嵌入式軟modem,以及其他各種類型的應(yīng)用。

          1.2 sst39vf160介紹

          silicon storage technology公司的sst39vf160是一個1m×16b的coms多功能flash器件,單電壓的讀和寫操作,電壓范圍3.0-3.6v,提供48腳tsop和48腳tfbga兩種封裝形式。

          該器件主要操作包括讀、寫編程、扇區(qū)/塊擦除和芯片擦除操作。擦除和字編程必須遵循一定的時序,表1列出了扇區(qū)擦除和字編程過程及時序。擦除或編程操作過程中讀取觸發(fā)位dq6將得到"1"和"0"的循環(huán)跳變;而操作結(jié)束后讀dq6,得到的是不變的固定值。這是器件提供的寫操作狀態(tài)檢測軟件方法。

          1.3 硬件連接

          sst39vf160作為系統(tǒng)的程序存儲器,以lpc2210的cs0作為flash的片選信號,處理器配置boot引腳為16位數(shù)據(jù)總線寬度后,上電可直接執(zhí)行sst39vf160中代碼。此flash芯片為16位數(shù)據(jù)寬度,無字節(jié)控制總線,所以應(yīng)用中不使用lpc2210的bls引腳。系統(tǒng)結(jié)構(gòu)示意圖如圖1所示。

          本文引用地址:http://www.ex-cimer.com/article/20788.htm

          2.軟件實現(xiàn)

          2.1 iap實現(xiàn)要點(diǎn)分析

          在嵌入式應(yīng)用系統(tǒng)中,通常要求記錄一些現(xiàn)場的傳感、交互輸入數(shù)據(jù),通常把數(shù)據(jù)記錄在flash存儲器中,以便下次上電能獲得以前的數(shù)據(jù)。如果系統(tǒng)程序和數(shù)據(jù)分開存儲。那么只要對存放數(shù)據(jù)的flash器件進(jìn)行編程即可。然而大多數(shù)嵌入式系統(tǒng),程序和需保存的數(shù)據(jù)都共存于同一flash存儲器中,那么是否也如前所述,可對flash存儲器直接編程呢?理論和實踐都表明不可以。

          先從理論上計算:lpc2210允許的芯片核工作頻率(cclk)范圍是10-60mhz,存儲器讀訪問長度由存儲器組配置寄存器bcfg中讀訪問的長度域控制wst1控制,其最大可用長度為35個cclk,而sst39vf160的扇區(qū)擦除典型時間為18ms。下面是計算算式:

          trdmax=rdlenmax/cclkmin=35/10×10-6=3.5μs
          tp=18ms>>3.5μs
          其中:trdmax--最大讀訪問的時間;
          rdlenmax--最大讀訪問可用長度;
          cclkmin--最小核工作時鐘頻率;
          tp--扇區(qū)擦除典型時間。

          算式得出扇區(qū)擦除典型時間遠(yuǎn)大于最大讀訪問時間。這樣一來,如果再給某flash寫數(shù)據(jù),同時于其中預(yù)取指,那么因flash執(zhí)行命令期間,對其他操作不響應(yīng),預(yù)取出的必定是其數(shù)據(jù)引腳上的不確定數(shù)據(jù),預(yù)取指失敗。實踐也表現(xiàn),如果在程序執(zhí)行過程中,對同一flash進(jìn)行扇區(qū)擦除,必定引起預(yù)取指中斷。

          為了解決在同一flash芯片存放程序并iap這一問題,引進(jìn)代碼重映射的思想。所謂重映射就是代碼先自復(fù)制到制定存儲區(qū),然后跳轉(zhuǎn)到制定區(qū)的起點(diǎn)開始執(zhí)行。這里,iap程序先自復(fù)制到lpc2210片內(nèi)sram中,然后跳轉(zhuǎn)到sram執(zhí)行iap代碼。前面過說,arm7為馮·諾依曼結(jié)構(gòu),這就為iap程序重映射提供了可能。

          編寫可重映射代碼的關(guān)鍵是要解決程序中相對偏移的問題,arm7指令系列中涉及相對偏移的指令主要有l(wèi)dr/str以跳轉(zhuǎn)指令。這里的解決方案是:凡涉及偏移值的指令通通采用基址變址尋址方式,以pc寄存器作基址寄存器,以立即數(shù)為變址,這樣當(dāng)程序塊整塊移動時,要加載的數(shù)據(jù)或跳轉(zhuǎn)的地址與當(dāng)前pc值的偏移值固定,解決了相對偏移問題。

          2.2 扇區(qū)擦除

          事先編程在flash中的程序前自復(fù)制到sram制定的位置,然后,賦pc為sram中扇區(qū)編程代碼段的起點(diǎn)erasepart。程序于sram中的erasepart起點(diǎn)開始執(zhí)行,按照sst39vf160扇區(qū)擦除的時序要求開始擦除。按照arm公司提出的atpcs規(guī)定,c語言程序調(diào)用匯編程序時,寄存器r0-r3傳遞參數(shù),返回值由寄存器r0傳遞原則,扇區(qū)擦除程序的一個參數(shù),要擦除的扇區(qū)號,由r0傳遞;返回參數(shù)置于r0,扇區(qū)擦除成功返回"1",否則返回"0"。

          2.3 字編程

          程序于sram中的programpart起點(diǎn)開始執(zhí)行,按照sst39vf160字編程的時序要求開始編程。入口參數(shù)有三個,一次為編程地址、數(shù)據(jù)起始地址、編程數(shù)據(jù)長度。字編程成功返回"1",否則返回"0"。

          (編制注:擦除和編程程序見本刊網(wǎng)站www.mesnet.com.cn。)

          3.結(jié)論

          在嵌入式應(yīng)用系統(tǒng)中,iap是極為有效的一種技術(shù)。根據(jù)本文提出的方案,在實際應(yīng)用中只需針對選用的flash,更改特定的擦、寫操作代碼就可實現(xiàn)系統(tǒng)片外存儲器的在應(yīng)用編程。本文提出的iap代碼重入到sram執(zhí)行的方法,有效地解決了應(yīng)用無片內(nèi)程序存儲器的32位arm處理器的嵌入式系統(tǒng)iap難題,有很大的應(yīng)用價值。

          pos機(jī)相關(guān)文章:pos機(jī)原理




          關(guān)鍵詞: 存儲器

          評論


          相關(guān)推薦

          技術(shù)專區(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); })();