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