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

          新聞中心

          EEPW首頁 > 電源與新能源 > 設計應用 > ARM片外Flash存儲器IAP解決辦法

          ARM片外Flash存儲器IAP解決辦法

          作者: 時間:2012-04-29 來源:網絡 收藏

            以芯片為處理器核的嵌入式應用系統(tǒng),以其小體積、低功耗、低成本、高性能、豐富的片內資源以及對操作系統(tǒng)的廣泛支持,得到了人們越來越多的青睞。在應用編程(InApplicatAiONProgram)就是這樣的自修改程序。它先在RAM存儲器中寫人數(shù)據(jù)值,然后使PC指向該存儲段,把該段作為程序段來執(zhí)行。很多7芯片自帶處理器,應用其自帶的處理器可以方便地對其片內集成的進行在應用編程,但幾乎所有的核芯片均不支持片外IAP處理,因為片外是用戶選型的,芯片生產廠家無法先知先覺,而不同其編程時序也不盡相同,導致芯片生產廠家無法提供通用的IAP代碼。那么,如何對嵌入式系統(tǒng)的片外Flash存儲器進行在應用編程呢?這里分兩種情況:一是普通代碼存放在片外單獨1片F(xiàn)lash中,IAP代碼在另一片F(xiàn)lash中完成,此時只要依據(jù)Flash的操作時序執(zhí)行IAP代碼,完成擦除或寫入操作即可。這種情況雖然簡單,但應用了2片F(xiàn)lash;而IAP代碼很小,一般完全可以集成到1片中,所以這里對這種情況不予考慮。另一種情況是1片F(xiàn)lash中既要存儲普通代碼,又要實現(xiàn)IAP。

            針對嵌入式應用系統(tǒng)片外Flash存儲器IAP無現(xiàn)成方案的問題,介紹一種基于代碼重入思想的片外存儲器IAP解決方案。結合LPC2210及SST39VFl60芯片,簡介兩款芯片特點,給出應用連接框圖;分析IAP實現(xiàn)要點,并給出IAP的實現(xiàn)代碼。下面以Phnips公司的LPC2210 和 Silicon storageTechnology 公司的SST39VFl60為例,詳細討論這種情況IAP的解決方案。

            1 硬件結構

            1.1 LPC2210介紹

            Philips公司的LPC22lO是一款基于支持實時仿真和嵌入式跟蹤的16/32位ARM7TDMI-SCPU的微控制器。芯片采用144腳封裝,有16 KB片內靜態(tài)RAM,開放外部總線;通過外部存儲器接口可將外部存儲器配置成4組,每組的容量高達16 Mb,數(shù)據(jù)寬度8/16/32位均可;具有多個32位定時器、8路lO位PWM輸出、多個串行接口(包括2個16C550工業(yè)標準UART、高速I2C接口和2個sPI接口)以及9個外部中斷、多達76個可承受5 V電壓的通用I/O口,同時內嵌實時時鐘和看門狗,片內外設功能豐富強大;片內晶振頻率范圍l~30 MHz,通過片內PLL可實現(xiàn)最大為60 MHz的CPU工作頻率,具有2種低功耗模式——空閑和掉電,通過外部中斷將處理器從掉電模式中喚醒,并可通過個別使能/禁止外部功能來優(yōu)化功耗。以上特性,使其特別適用于工業(yè)控制、醫(yī)療系統(tǒng)、訪問控制和POS機,同時也非常適合于通信網關協(xié)議轉換器,嵌入式軟Modem,以及其他各種類型的應用。

            1.2 SST39VFl60介紹

            SILICON StoraLge Technology公司的SST39VFl60是一個lM×16b的CMOS多功能Flash器件,單電壓的讀和寫操作,電壓范圍3.O~3.6 V,提供48腳TSOP和48腳TFBGA兩種封裝形式。

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

            1.3 硬件連接

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

            系統(tǒng)結構示意圖

            2 軟件實現(xiàn)

            2.1 IAP實現(xiàn)要點分析

            在嵌入式應用系統(tǒng)中,通常要求記錄一些現(xiàn)場的傳感、交互輸入數(shù)據(jù),通常把數(shù)據(jù)記錄在Flash存儲器中,以便下次上電能獲取以前的數(shù)據(jù)。如果系統(tǒng)程序和數(shù)據(jù)分開存儲,那么只要對存放數(shù)據(jù)的Flash器件進行編程即可。然而大多數(shù)嵌入式系統(tǒng),程序和需保存的數(shù)據(jù)都共存于同一Flash存儲器中,那么是否也如前所述,可對Flash存儲器直接編程呢?理論和實踐都表明不可以。先從理論上計算:LPC22lO允許的芯片核工作頻率(CCLK)范圍是10~60 MHz,存儲器讀訪問長度由存儲器組配置寄存器BCFG中讀訪問的長度域控制WSTl控制,其最大可用長度為35個CCLK,而SST39VFl60的扇區(qū)擦除典型時間為18 ms。下面是計算算式:

            TRDmax=RDLenmax/CCLKmin=35/10×10一6=3.5 μs.TD=18 ms》3.5μs其中:TRDmax—最大讀訪問時間;RDLenmix——最大讀訪問可用長度;CCLKmin——最小核工作時鐘頻率;Tp——扇區(qū)擦除典型時間。

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

            為了解決在同一Flash芯片存放程序并IAP這一問題,引進代碼重映射的思想。所謂重映射就是代碼先自復制到指定存儲區(qū),然后跳轉到指定區(qū)的起點開始執(zhí)行。這里,lAP程序先自復制到LPC2210片內SRAM中,然后跳轉到SRAM執(zhí)行l(wèi)AP代碼。前面說過,ARM7為馮middot;諾依曼結構,這就為IAP程序重映射提供了可能。

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

            2.2 扇區(qū)擦除

            事先編程在Flash中的程序先自復制到SRAM指定的位置,然后,賦PC為SRAM中扇區(qū)編程代碼段的起點ERASEPART。程序于SRAM中的ERASEPART起點開始執(zhí)行,按照SST39VF160扇區(qū)擦除的時序要求開始擦除。按照ARM公司提出的ATPCS規(guī)定,C語言程序調用匯編程序時,寄存器R0一R3傳遞參數(shù),返回值由寄存器RO傳遞原則,扇區(qū)擦除程序的一個參數(shù),要擦除的扇區(qū)號,由RO傳遞;返回參數(shù)置于R0,扇區(qū)擦除成功返回“1”,否則返回“0”。

            2.3 字編程

            程序于SRAM中的PROGRAMPART起點開始執(zhí)行,按照SST39VFl60字編程的時序要求開始編程。入口參數(shù)有三個,依次為編程地址、數(shù)據(jù)起始地址、編程數(shù)據(jù)長度。字編程成功返回“1”,否則返回“0”。

            3 結論

            文中提出的IAP代碼重入到SR—kM執(zhí)行的方法,有效地解決了應用無片內程序存儲器的32位ARM處理器的嵌入式系統(tǒng)IAP難題,有很大的應用價值。

          pos機相關文章:pos機原理


          存儲器相關文章:存儲器原理




          關鍵詞: ARM Flash存儲器 IAP

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();