1 引言 在系統中編程(ISP)技術的出現是對傳統編程方法的突破,它是指在用戶設計的微控制器系統中為配置新的系統功能對器件進行重新編程的技術,在線將程序代碼(固件)下載到程序存儲器中。繼SST公司推出具備ISP功能的FlashFlex51 [1]系列微控制器之后,PHILISPS、WINBOND、LG、ATMEL、SynCMOS等公司相繼推出具備ISP/IAP (In-Application Programming)功能的51系列微控制器[2]。這些器件的性能增強還表現在:(1)內部ROM采用Flash存儲器,容量達到32~64k字節,內部RAM容量達到512~1024字節;(2)增加特殊功能寄存器,控制功能進一步增強;(3)內部配置看門狗定時器復位電路;(4)為降低 EMI可禁止ALE輸出;(5)雙DPTR指針等,這些功能使得微控制器外部擴展進一步簡化,形成了真正的"單片"結構。在POS收費終端機中更換了SynCMOS公司的SM2965作為主處理器,不用修改硬件利用微控制器串行口即可方便地實現ISP功能。本文主要分析SM2965的ISP功能特點及在使用中的注意事項。 2 SM2965的特點 和標準的80C52相比,SM2965有以下特點: ①編程電壓5V;②64k字節片內Flash存儲器,分為128個頁,每頁512字節(包括實現ISP功能的下載程序空間);③實現ISP功能下載程序空間大小可設置為 N×200H(N=0~8); ④256字節的片內RAM+768字節的片內擴展RAM(ERAM);⑤看門狗定時器;⑥對PLCC和QFP封裝型號增加了P4口:P4.0~P4.3;⑦為降低EMI,無必要時可禁止ALE信號輸出;⑧復位后硬件檢測程序存儲器空間0000H地址如為空(即#0FFH),則自動跳到ISP功能程序入口地址。 3 SM2965存儲器結構 3.1 程序存儲器 SM2965內部集成了64k字節的Flash存儲器作為程序存儲器,地址范圍為0000H~0FFFFH,用于存放執行用戶程序的應用程序和執行ISP功能的下載程序兩部分內容。 執行ISP功能的下載程序空間最大可配置到4K 字節,空間大小=N×200H字節,N=0表示不配置下載程序,64K字節Flash 存儲器全部用于應用程序;N=1表示0FE00H~0FFFFH共有200H個字節配置給下載程序空間使用,從0000H~FDFFH供應用程序使用; N=8表示下載程序空間達到最大配置,為4K字節。N 的大小只能通過商用編程器配置,一旦在編程器上配置為 N≠0,在系統中無法改變ISP空間的配置。 SM2965程序空間組成如圖1所示。 0FFFFH-(N×200H)為下載程序的入口地址。 3.2 數據存儲器 SM2956在標準的80C52內核的基礎上,增加了8個特殊功能寄存器,用于實現SM2965增加的功能和768字節的片內擴展數據存儲器Expanded Ram(ERAM),使片內數據存儲器總容量達到1K字節。數據存儲器組成如圖2。SM2965增加的特殊功能寄存器見表1。 4 與ISP功能有關的特殊功能寄存器 4.1 ISP特殊功能寄存器介紹 與ISP功能有關的特殊功能寄存器有FAH、 FAL、FDAT、SCONF和FCR,其中FAH×256+FAL為編程狀態下的目標地址,FDAT為編程數據。 SCONF為系統控制寄存器,SCONF中的位2 與ISP功能有關,SCONF各位定義如下: WDR R R R R ISPE OME ALE1 MSB LSB SCONF的3~6位保留未用,SCONF復位狀態為00000010B。 WDR:看門狗定時器溢出位; OME:片內擴展數據存儲器ERAM選擇位,1 選擇片內,0 選擇片外; ALEI:ALE輸出禁止位; ISPE:為ISP功能總允許/禁止位,為1允許,為0禁止。ISPE設置為0,將屏蔽全部ISP功能。在執行應用程序時將ISPE=0可有效防止Flash存儲器內容被非法改寫。 Flash控制寄存器FCR在編程時起關鍵作用,其各位定義如下: MSB LSB 其中FCR的2~6位保留未用,FCR復位狀態為00000000B。 START:ISP功能啟動位; START=1,啟動ISP功能,具體功能由F1、 F0決定;START=0,無ISP操作。 在START位置1后,SM2965硬件自動鎖存地址和數據并獲得程序指針控制權直到ISP功能結束,START自動復位為0。下載程序中無須檢查 START的狀態。 F1~F0 ISP功能選擇位 F1F0 ISP功能 00 字節編程 01 芯片寫保護 10 頁面擦除 11 整片擦除 Flash存儲器的一個頁面為200H字節。執行ISP 功能,需要指定Flash存儲器地址;執行字節編程功能,Flash存儲器地址為編程字節的目標地址;執行頁面擦除功能,該地址為該頁面內任一地址;執行整片擦除和芯片寫保護,則為0000H~0FFFFH 范圍內任一地址;執行整片擦除,SM2965將擦除ISP下載程序空間外的所有Flash存儲器;執行芯片寫保護功能,SM2965存儲器讀出內容全部為"00H"。 4.2 ISP特殊功能寄存器使用舉例 例1:字節編程,#2CH編程到地址2005H MOV SCONF, #04H ;開放全部ISP功能 MOV FAH, #20H ;目標地址高地址20H MOV FAL, #05H ;目標地址低地址 05H MOV FDAT, #2CH ;寫入數據:2CH MOV FCON, #80H ;設置START位為1,啟動字節編程功能,將22H固化到1005H,ISP功能結束后,START自動復位為0,PC指向下一條指令 例2:擦除Flash頁面,如擦除253CH地址所對應的頁面以512字節為一頁,253CH處于頁面地址范圍為2400H~25FFH,執行下面程序后,該頁面全部寫成#0FFH。 MOV SCONF, #04H ;開放全部ISP功能 MOV FAH, #25H ;目標地址高地址25H或24H MOV FAL, #3CH ;目標地址低地址3CH或任意 MOV FDAT, #00H ;寫入數據:00H或任意 MOV FCON, #82H ;設置START位為1,啟動頁面擦除功能。ISP功能結束后,START自動復位為0,PC指向下一條指令 5 應用中的問題 SM2965的ISP開發靈活方便,硬件上不需要任何輔助配件,應用系統線路無須做任何變動,可由設計者自定義任何編程通信協議,經計算機或簡單工具通過任何I/O口或UART口送入SM2965中,不像其它具有ISP的MCU那樣必須針對特定的管腳和特殊的TIMMING協議才能實現。但在不同應用中仍需注意以下幾點: (1)SM2965程序空間可分為執行ISP功能的下載程序和執行用戶程序的應用程序兩部分,下載程序空間的大小可在商用編程器上配置,一旦配置被寫入,下載程序在系統應用中將保持不變。下載程序空間最大可配置到4 kB,該空間除存放下載程序外,還應將固定的應用程序(如主監控程序)也放在該空間內,而把需要頻繁更新的應用程序放在在線可編程的應用程序空間中。 (2)對于在應用系統中僅更新部分應用程序的情況,如改變系統運行時的一些重要參數或者把SM2965的Flash當作EEPROM使用,則在系統中不可以執行芯片寫保護和整片擦除功能。這時芯片內的應用程序是可通過編程器讀出的。為了防止非法讀取,這些重要參數可通過加密算法(如DES密碼算法)形成密文后再存儲到應用程序空間,應用中通過下載程序空間(讀不出)的密碼算法和密鑰將密文還原為明文。 (3)對于在應用系統中更新全部應用程序的情況,則要注意Flash空間0000H地址的代碼寫入順序的問題,這是因為SM2965芯片復位后硬件檢測Flash空間0000H地址如為空(即#0FFH),則自動跳到下載程序的入口地址,否則從0000H地址執行應用程序。所以對于更新全部應用程序時,在下載程序中首先執行整片擦除,然后開始從第1頁即0200H地址編程,最后編程第0頁,從0001H地址開始,所有地址編程全部確認(CRC校驗)無誤時,再編程0000H地址。 (4)用主機進行遠程下載更新程序時,為了解決干擾產生的誤碼問題,可把應用程序代碼分為若干個短數據包,每個數據包帶有CRC,下載程序應首先把數據包存入緩沖區,對CRC判斷正確后再進行編程。 (5)在執行下載程序前,如果啟動了SM2965 內部的看門狗定時器,在下載程序中應首先禁止看門狗定時器,以防止硬件復位造成下載失敗。 (6)對于更新全部應用程序的情況,下載完畢后建議通過硬件看門狗復位啟動系統,而不要使用跳轉指令。 出現開始使用SM2965時,經常會出現下載失敗,要通過商用編程器重新編程SM2965的問題,采取上述措施后,近兩年來未發生一例下載失敗的現象。 |