一種片外Flash存儲器IAP的方案
以ARM芯片為處理器核的嵌入式應用系統,以其小體積、低功耗、低成本、高性能、豐富的片內資源以及對操作系統的廣泛支持,得到了人們越來(lái)越多的青睞。包括工業(yè)控制領(lǐng)域、無(wú)線(xiàn)通信領(lǐng)域、網(wǎng)絡(luò )應用、消費電子、成像和安全產(chǎn)品等,如今,ARM微處理器及嵌入式技術(shù)的應用幾乎已經(jīng)滲透到了各個(gè)領(lǐng)域。其中,ARM7作為ARM微處理器系列中的一員,是低功耗的32位RISC處理器。
Samsung公司的S3C4510B、Philips公司的LPC20XX、LPC21XX、LPC22XX系列等都是ARM7處理器。這些為數繁多的ARM7處理器,因其片內外設不同而各擅所長(cháng),但都應用同樣的ARM7TDMI核(或ARM7TDMI-S核,這是ARM7TDMI的綜合版本,這兩種核對處理器應用人員來(lái)說(shuō)沒(méi)有區別)??梢哉f(shuō),ARM7TDMI是目前使用最為廣泛的32位嵌入式RISC處理器
ARM7TDMI核應用馮 ·諾依曼結構,處理器使用的存儲器中數據和程序指令不予區分,PC寄存器指向的存儲器單元,無(wú)論是ROM區還是RAM區,只要符合ARM指令的格式都可以執行,這就為系統自修改提供了可能。在應用編程IA(In Application Program)就是這樣的自修改程序。它先在RAM存儲器中寫(xiě)入數據值,然后使PC指向該存儲段,把該段作為程序段來(lái)執行。很多ARM7芯片自帶IAP處理器,應用其自帶的IAP處理器可以方便地對其片內集成的FLASH存儲器進(jìn)行在應用編程,但幾乎所有的ARM核芯片均不支持片外IAP處理,因為片外Flash存儲器是用戶(hù)選型的,芯片生產(chǎn)廠(chǎng)家無(wú)法先知先覺(jué),而不同Flash存儲器其編程時(shí)序也不盡相同,導致芯片生產(chǎn)廠(chǎng)家無(wú)法提供通用的IAP代碼。那么,如何對嵌入式系統的片外Flash存儲器進(jìn)行在應用編程呢?這里分兩種情況:一是普通代碼存放在片外單獨1片Flash中,IAP代碼在另一片Flash中完成,此時(shí)只要依據Flash的操作時(shí)序執行IAP代碼,完成擦除或寫(xiě)入操作即可。這種情況雖然簡(jiǎn)單,但應用了2片Flash;而IAP代碼很小,一般完全可以集成到1片中,所以這里對這種情況不予考慮,另一種情況是1片Flash中既要存儲普通代碼,又要實(shí)現IAP。下面以Philips公司的LPC2210和Silicon Storage Technology公司的SST39VF160為例,詳細討論這種情況IAP的解決方案。
1 硬件結構
1.1 LPC2210介紹
Philips公司的LPC2210是一款基于支持實(shí)時(shí)仿真和嵌入式跟蹤的16/32位ARM7TDMI-S CPU的微控制器。芯片采用144腳封裝,有16KB片內靜態(tài)RAM,開(kāi)放外部總線(xiàn);通過(guò)外部存儲器接口可將外部存儲器配置成4組,每組的容量高達16Mb,數據寬度8/16/32位均可;具有多個(gè)32位定時(shí)器、8路10位PWM輸出、多個(gè)串行接口(包括2個(gè)16C550工業(yè)標準UART、高速I(mǎi)2C接口和2個(gè)SPI接口)以及9個(gè)外部中斷、多達76個(gè)可承受5V電壓的通用I/O口,同時(shí)內嵌實(shí)時(shí)時(shí)鐘和看門(mén)狗,片內外設功能豐富強大;片內晶振頻率范圍1-30MHz,通過(guò)片內PLL可實(shí)現最大為60MHz的CPU工作頻率,具有2種低功耗模式--空閑和掉電,通過(guò)外部中斷將處理器從掉電模式中喚醒,并可通過(guò)個(gè)別使能/禁止外部功能來(lái)優(yōu)化功耗。以上特性,使其特別適用于工業(yè)控制、醫療系統、訪(fǎng)問(wèn)控制和POS機,同時(shí)也非常適合于通信網(wǎng)關(guān)協(xié)議轉換器、嵌入式軟Modem,以及其他各種類(lèi)型的應用。
1.2 SST39VF160介紹
Silicon Storage Technology公司的SST39VF160是一個(gè)1M×16b的COMS多功能FLASH器件,單電壓的讀和寫(xiě)操作,電壓范圍3.0-3.6V,提供48腳TSOP和48腳TFBGA兩種封裝形式。
該器件主要操作包括讀、寫(xiě)編程、扇區/塊擦除和芯片擦除操作。擦除和字編程必須遵循一定的時(shí)序,表1列出了扇區擦除和字編程過(guò)程及時(shí)序。擦除或編程操作過(guò)程中讀取觸發(fā)位DQ6將得到"1"和"0"的循環(huán)跳變;而操作結束后讀DQ6,得到的是不變的固定值。這是器件提供的寫(xiě)操作狀態(tài)檢測軟件方法。
1.3 硬件連接
SST39VF160作為系統的程序存儲器,以L(fǎng)PC2210的CS0作為Flash的片選信號,處理器配置Boot引腳為16位數據總線(xiàn)寬度后,上電可直接執行SST39VF160中代碼。此Flash芯片為16位數據寬度,無(wú)字節控制總線(xiàn),所以應用中不使用LPC2210的BLS引腳。系統結構示意圖如圖1所示。
評論