李學(xué)海,范興娟
(石家莊郵電職業(yè)技術(shù)學(xué)院 電信系,河北 石家莊 050021)
計算機技術(shù)應(yīng)用
重復(fù)燒寫OTP單片機的方法設(shè)計
李學(xué)海,范興娟
(石家莊郵電職業(yè)技術(shù)學(xué)院 電信系,河北 石家莊 050021)
在充分研究了OTP類單片機片載程序存儲器的功能分布、位元結(jié)構(gòu)、工藝特點、指令特點、燒寫規(guī)律的前提下,選擇凌陽科技公司的一款OTP單片機作為教學(xué)目標(biāo)或?qū)嶒災(zāi)P?創(chuàng)新性地規(guī)劃設(shè)計了一種全新的操作算法和解決方案,解決了重復(fù)燒寫和高效利用OTP單片機的實驗技術(shù)和實踐教學(xué)中的實際問題。對于此類單片機的初學(xué)者、教學(xué)者和應(yīng)用項目開發(fā)者具有實用價值和啟發(fā)意義。
OTP單片機;重復(fù)燒寫;實驗技術(shù);實踐教學(xué)
程序燒寫器(writer),國外也稱編程器(programmer),是實現(xiàn)將調(diào)試好的機器碼程序(.bin或.hex)固化到單片機片載程序存儲器內(nèi)部的一種專用工具??蔁龑憜纹瑱C分為OTP(one-time programmable)型和MTP(multi-time programmable)型,其中MTP型(又包含窗口式EPROM型和Flash型)可供用戶多次擦寫、重復(fù)利用;而OTP型只供用戶一次性燒寫。對于單片機的實驗教學(xué)、技能訓(xùn)練或者應(yīng)用開發(fā),如果每燒寫一次就廢棄一顆單片機,將是很大的浪費。筆者試圖以創(chuàng)新性思維破解重復(fù)燒寫OTP型單片機的難題,甚至以零成本來重復(fù)利用這種單片機[1]。
在我國,從事單片機學(xué)習(xí)、研究、教學(xué)、應(yīng)用、開發(fā)的群體十分龐大,單片機的需求量也很大。單片機片載程序存儲器的燒寫編程,對于那些進行單片機教學(xué)演示、學(xué)習(xí)實驗的人們,或者基于單片機的電子項目開發(fā)者,都是必須經(jīng)歷的一個關(guān)鍵環(huán)節(jié),并且這個環(huán)節(jié)往往還需要多次、反復(fù)進行。
針對早期的窗口式EPROM單片機成本高、離線燒寫、紫外線擦除等缺點,美國Microchip公司率先推出價格低廉的OTP單片機PIC12C和PIC16C系列[2],成就了一個單片機產(chǎn)銷量超百億片的世界頂級企業(yè)。隨后許多世界著名公司也推出此類產(chǎn)品[3-10]。這類單片機產(chǎn)品受到了那些生產(chǎn)批量大、價格敏感度高的家用電器等電子產(chǎn)品制造商的歡迎和首選。
隨著技術(shù)進步和Flash型單片機的問世,窗口式EPROM型單片機因陶瓷封裝的成本過高、利用紫外線擦除操作不方便、擦寫次數(shù)少、壽命短等原因而退出了市場。盡管Flash型單片機擦寫方便、價格低廉,深受單片機初學(xué)者的青睞,但是有些型號的單片機,廠家并不提供Flash版本。這些廠家通過壓縮單片機的研制成本,降低單片機的生產(chǎn)成本,把主要目標(biāo)瞄準(zhǔn)用量大的大客戶,諸如格蘭仕、美的等的家電企業(yè)。
其實OTP型單片機就是不開天窗的EPROM型單片機,因為它沒有擦除手段,所以只供用戶燒寫一次。它以塑料封裝取代陶瓷封裝,大大降低了封裝成本,從而具有明顯的價格優(yōu)勢。OTP型單片機的可靠性也明顯優(yōu)于Flash型單片機,但是有些廠家不提供同等型號單片機的Flash版本,這會給初學(xué)者和實驗教學(xué)帶來一些不便。因此,一旦解決了OTP型單片機的多次燒寫和重復(fù)利用難題,不僅可以獲得一種新的實驗技術(shù)或?qū)嶒灧椒?而且對于OTP型單片機的應(yīng)用推廣和實驗教學(xué)也具有積極意義。
凌陽(Sunplus)科技公司是一家華人創(chuàng)辦的國際著名微電子企業(yè),其消費性集成電路產(chǎn)銷量名列世界前茅。
該公司推出的SPMC65P系列單片機屬于8位的通用單片機系列,是針對家電產(chǎn)品以及工業(yè)控制領(lǐng)域的高抗干擾性、高性價比的工業(yè)級芯片。SPMC65P系列單片機從低檔到高檔,可以滿足不同客戶的需求,包括不帶ADC的I/O控制型單片機、帶ADC的I/O控制型單片機等。SPMC65P系列采用的8位通用CPU內(nèi)核是凌陽公司在6502的基礎(chǔ)上改進而成的(稱為65B02),除了支持6502的全部指令之外,還擴充了一些位操作指令[9-10]。
凌陽生產(chǎn)的SPMC65P系列單片機,其硬件結(jié)構(gòu)、寄存器的映射關(guān)系等都是相同的,不同的只是片內(nèi)外圍硬件模塊的多寡。SPMC65P系列單片機根據(jù)片內(nèi)資源的情況,劃分了兩類:(1)不帶ADC的通用單片機系列;(2)帶ADC的通用單片機系列。SPMC65P2408A單片機是目前SPMC65P系列上市型號中資源較全的芯片,其突出特點是,內(nèi)部資源豐富、性價比非常高、電磁兼容性好[9-10]。
為了吸引更多的大客戶,減少家電制造商的研發(fā)投入,加快其電器產(chǎn)品上市速度,凌陽還免費提供了許多設(shè)計成功的產(chǎn)品案例。例如,空調(diào)機、豆?jié){機、微波爐、電冰箱、電磁爐、電飯煲、報警器主機、電動自行車、電動跑步機、智能IC卡燃?xì)獗?、CAN總線智能節(jié)點等,并且軟硬件全部開源。
在構(gòu)思對一次性燒寫型單片機進行多次重復(fù)燒寫的方法時,需要精心分析和周密考慮以下幾個方面的因素。
3.1 OTP存儲位元的特性
此類存儲器的每個存儲位元(cell),即能夠存儲一位二進制數(shù)(比特)的最小單位,是由一個浮動?xùn)艠O場效應(yīng)晶體管構(gòu)成的。這個場效應(yīng)管的浮柵是一個與周圍絕緣的孤島形導(dǎo)體,利用該導(dǎo)體內(nèi)部是否存在積累電荷來記錄一個比特數(shù)據(jù)。在原始狀態(tài)或空白狀態(tài)下,導(dǎo)體內(nèi)沒有蓄積電荷,場效應(yīng)管處于截止?fàn)顟B(tài),其漏極呈現(xiàn)高電平,以此來表示存儲位元中存儲的是一位“1”。在利用高電壓進行燒寫操作時,如果寫入的是“1”,則場效應(yīng)管不發(fā)生任何改變;如果寫入的是“0”,則會在高電壓激發(fā)下使一些載流子擊穿絕緣層而進入場效應(yīng)管的浮柵導(dǎo)體,這樣就在導(dǎo)體內(nèi)部形成一定的蓄積電荷,使得場效應(yīng)管變?yōu)閷?dǎo)通狀態(tài),其漏極呈現(xiàn)低電平,以此來表示存儲位元中存儲的是一位“0”。
每個存儲位元具有以下特性:(1)在原始狀態(tài)或空白狀態(tài)下,存儲的內(nèi)容為1;(2)如果原來內(nèi)容是1,在燒寫0時,內(nèi)容變?yōu)?;(3)如果原來內(nèi)容是1,在燒寫或重復(fù)燒寫1時,內(nèi)容不變;(4)如果原來內(nèi)容是0,在燒寫或重復(fù)燒寫0時,內(nèi)容不變;(5)如果原來內(nèi)容是0,在燒寫或重復(fù)燒寫1時,內(nèi)容不變;(6)一旦寫入0后,其內(nèi)容再也無法恢復(fù)為1(空白值)[1]。
由存儲位元的特性可得出結(jié)論:OTP存儲位元在1的基礎(chǔ)上燒寫0,只有1次機會;而在1的基礎(chǔ)上燒寫1,在0的基礎(chǔ)上燒寫0或1的次數(shù)則不受限制。
3.2 單片機指令集的編碼特點
SPMC65P指令系統(tǒng)的全部指令有182條,其操作碼字段都是利用8位二進制數(shù)編碼的,并且指令總長度不固定[9-10]。8位二進制數(shù)碼理論上可以有28= 256種不同的編碼狀態(tài),而182條指令僅利用了其中的一部分。其中有2種特殊的編碼需要特別地注意,即全1的“FFH”和全0的“00H”。前者對應(yīng)著OTP存儲器單元的空白狀態(tài),后者對應(yīng)著OTP存儲器單元的所有存儲位全部被改寫。
(1) 機器碼為“FFFFH”的指令是“SET $FF,7”,既是一條2字節(jié)指令,又是一條位操作指令,也是一條把bit7置1的指令,還是一條攜帶著字節(jié)單元地址編碼的指令。其實現(xiàn)的具體功能是將0頁RAM的FFH單元的bit7設(shè)置為1,并且不影響任何標(biāo)志位。如果保留RAM的FFH單元不用,就可以認(rèn)為這條位操作指令不會產(chǎn)生任何影響或者沒有帶來任何后果,只是耗費2個系統(tǒng)周期的執(zhí)行時間而已。需要注意的是:操作碼字段為“FFH”的指令也必然是一條2字節(jié)的“SET aa,7”。當(dāng)CPU遇到FFH時,會自動順延再提取一個字節(jié)作為SET指令的第二字節(jié),即把FFH鄰接的高地址單元內(nèi)容“aa”提取出來,作為被SET指令進行位操作的目標(biāo)字節(jié)單元(aa為隨機編碼,這里應(yīng)該是用戶程序中第一條指令編碼的第一個字節(jié)內(nèi)容)。假若這樣一條指令被執(zhí)行,不僅指令本身帶來破壞,更重要的是破壞了用戶程序代碼的本來提取順序,導(dǎo)致用戶程序不能被正常執(zhí)行。因此,必須設(shè)法避免上述情況發(fā)生。
(2) 機器碼為“00H”的指令是“BRK”,這是一條單字節(jié)的軟件中斷指令。盡管SPMC65P單片機產(chǎn)品手冊在資料層面上刪除了該指令,但是在語言工具層面以及硬件芯片層面上,該指令仍然是存在的[9-10]。該指令一旦被CPU執(zhí)行,將會進入可屏蔽中斷服務(wù)程序。為了避開該指令帶來的負(fù)面影響,應(yīng)盡量避免執(zhí)行BRK指令。
在被燒寫的用戶程序中,合理地安排和填充上述兩種指令代碼,是重復(fù)利用OTP單片機的算法基礎(chǔ)。
3.3 單片機片載OTP的分布特點
單片機SPMC65P2408A的OTP EPROM存儲器的寬度為8 bit、長度為8 212(=4+4+12+8 186+6)個字節(jié)單元。如果按功能劃分,所有OTP存儲空間可以分為5個功能區(qū)段,從低地址到高地址依次是:(1)4字節(jié)(7FE0H—7FE3H)存放系統(tǒng)配置字節(jié);(2)4字節(jié)(7FF0H—7FF3H)為芯片串號;(3)12字節(jié)(7FF4H—7FFFH)存放產(chǎn)品信息;(4)8186(即8K- 6)字節(jié)(E000H—FFF9H)用于存儲程序代碼;(5)6字節(jié)(FFFAH—FFFFH)順序存放3個用戶矢量,即NMI矢量、復(fù)位矢量和IRQ矢量[9-10]。
這些OTP存儲器的功能區(qū)段與Q-Writer和FortisIDE的操作界面存在以下對應(yīng)關(guān)系。
(1) 系統(tǒng)配置字節(jié)。是在FortisIDE開發(fā)界面中由用戶進行設(shè)置的(其中加密位除外)。在圖1所示的Mast Option選項卡中,對于其中6個選項的設(shè)置,將會記錄到OTP中對應(yīng)的4個系統(tǒng)配置字節(jié)中。FortisIDE開發(fā)環(huán)境自動對于這些選項進行了默認(rèn)設(shè)置,所對應(yīng)的系統(tǒng)配置字節(jié)值為:(7FE0H—7FE3H)=E7H,FFH,FEH,FFH。
圖1 Mast Option卡頁
(2) 芯片串號。是在Q-Writer燒寫器操作界面中由用戶進行設(shè)定的。Q-Writer系統(tǒng)默認(rèn)的芯片串號值為:(7FF0H—7FF3H)=FFH,FFH,FFH,FFH[11-12]。
(3) 產(chǎn)品信息。也是在Q-Writer燒寫界面中由用戶進行設(shè)定的。Q-Writer系統(tǒng)默認(rèn)的12字節(jié)產(chǎn)品信息值為:(7FF4H—7FFFH)=FFH,FFH,…,FFH[11-12]。
(4) 程序代碼。就是在FortisIDE開發(fā)界面中,利用匯編器和連接器對于源程序(.asm),進行匯編和連接之后所生成的機器碼程序(.bin)。
(5) 用戶矢量。在FortisIDE開發(fā)環(huán)境下,始終作為源程序中不可缺少的一個組成部分,并且以一個獨特的邏輯段——矢量段的面貌出現(xiàn)在源程序中。在匯編、連接之后將被定位到地址最高的FFFAH—FFFFH的6個字節(jié)單元中。
(6) 加密信息位。位于系統(tǒng)配置字節(jié)空間的加密位具有特殊性。將其改寫為“0”來實施程序保護的唯一方法是在Q-Writer界面中設(shè)置了一條加密命令“Secure”。
3.4 原配燒寫器的工作特點
凌陽科技公司為SPMC65P準(zhǔn)備的套裝開發(fā)工具——仿真+燒寫一體化開發(fā)裝備,采用的是一套硬件裝備配合兩套支持軟件的搭配方式:支持仿真器功能的PC機端軟件為FortisIDE,支持燒寫器功能的PC機端軟件為Q-Writer[11-12]。
(1) 燒寫器需要與支持軟件Q-Writer相互配合才能工作。
(2) 在Q-Writer燒寫界面中不能在下傳和上傳程序窗口內(nèi)修改程序代碼。
(3) 在燒寫過程中,Q-Writer是把一顆單片機內(nèi)部的所有OTP單元劃分為兩個相對獨立的部分,分別利用兩條操作命令(Program和Secure),并且分別經(jīng)歷兩次不同的燒寫活動來單獨實現(xiàn)燒寫的。
(4) 對于一次代碼燒寫活動,燒寫器總是把除了加密信息之外的所有OTP單元全部燒寫一遍,而并不管具體程序的代碼長度是多少。
(5) 在一次代碼燒寫過程中,總是從低地址到高地址的OTP單元逐單元燒寫。
(6) 在代碼燒寫過程中,每燒寫完一個字節(jié)單元,都會再讀回到上傳緩沖區(qū)中來,并且與下傳緩沖區(qū)的原始代碼字節(jié)進行比較。只有所有OTP單元完全對應(yīng)相同才會宣告成功。
(7) 在伴隨燒寫過程所同步進行的比較活動中,如果發(fā)現(xiàn)某一個OTP單元內(nèi)容不同于下傳緩沖區(qū)的原始代碼,則會宣告失敗。
(8) 只要發(fā)現(xiàn)有任何一個OTP單元燒寫失敗就會立刻停止燒寫,同時也就放棄了對于后面高地址單元的燒寫行為。
(9) 由于無論操作模式如何定義,自動燒寫命令Function>Auto Run都是從空檢操作開始的。只有芯片空白時才能夠繼續(xù)后面的燒寫操作。因此,在對于非空白片進行非首次的重復(fù)燒寫時,該命令絕對不能使用。
了解了OTP本身的固有特性以及燒寫器的工作特點之后,就可以設(shè)法達(dá)到重復(fù)利用的目的。實質(zhì)上,一片OTP單片機被重復(fù)利用的過程,就是在一個較大的OTP存儲空間內(nèi),多次布局一些較小的實驗程序代碼的過程,其重復(fù)利用的效率和質(zhì)量,就取決于對所有OTP空間重復(fù)布局方法的好壞[1]。
SPMC65P2408A單片機的OTP,其主體部分的容量為8 KB。重復(fù)燒寫的實現(xiàn)方法是采取分塊措施,重復(fù)利用這8 KB的OTP,分割方案如圖2所示。
圖2 SPMC65P2408A的OTP分割方案
把8 KB的OTP從低地址到高地址分割為一大一小的兩塊。大塊為7680字節(jié),用于分段、分次燒寫程序代碼;小塊為512字節(jié),用于分段、分次燒寫一條中斷程序入口指令JMP。
這里設(shè)計的OTP分割方案,暫時沒有考慮利用率極低的非屏蔽中斷NMI。假如單片機應(yīng)用項目中確實有必要啟用NMI功能,在本方案的基礎(chǔ)上實現(xiàn)起來也很容易。例如,將大塊末尾的0.5 KB再分離出來,安置NMI服務(wù)程序的入口指令,參照可屏蔽中斷程序的布局及其IRQ中斷矢量的設(shè)置等處理方法。
盡管“JMP xxxx”指令的代碼長度只有3個字節(jié),但是每次燒寫時還是為它分配了4字節(jié),以避免SET指令帶來的破壞。同理,當(dāng)用戶代碼長度為奇數(shù)字節(jié)時,為了湊成偶數(shù),要在程序開端添加一條空操作指令“NOP”(也可以在程序的任何部位插入NOP)。
如果按照如圖2所示的分割方案,一片SPMC65P2408A單片機最多可以提供126次的燒寫機會,理由是:(512-6)字節(jié)÷4字節(jié)/次 =126次(取整)。如果一片SPMC65P2408A單片機的市場價為8元人民幣,均攤到每次燒寫的成本約為0.06元,況且開發(fā)一個小型項目也許用不著燒試多達(dá)126次。
在按照上述方法重復(fù)利用OTP單片機的過程中,當(dāng)剩余的OTP存儲器空間只有2 KB左右時就停止燒試。也就是不要再繼續(xù)把該單片機用作練習(xí)品,而是把它保留起來以用于燒寫成熟程序,即把它當(dāng)作項目最終定型的單片機使用。具有2 KB程序空間的單片機,還是能夠滿足大部分小型電子產(chǎn)品項目的需要。因此,前面多次燒試的成本就幾乎可以忽略不計。
重復(fù)燒寫OTP單片機的方法和算法的實現(xiàn),考慮到了OTP程序存儲器的結(jié)構(gòu)特點、SPMC65P單片機的指令特點、原配燒寫器的工作特點、匯編器和連接器的處理方式等諸多因素。因此,這是一項基礎(chǔ)性、實用性的研究成果,也是一種用于OTP型單片機教學(xué)或者學(xué)習(xí)的新的實驗技術(shù),是經(jīng)過筆者精心設(shè)計、反復(fù)推敲、大量試驗和不斷改進之后探索出來的,并且經(jīng)過了多年來的實用檢驗,效果理想。筆者希望與從事單片機教學(xué)研究的教師、初學(xué)者、應(yīng)用項目開發(fā)者共同分享該研究成果,并使這一經(jīng)濟實用的研究成果得到推廣。
References)
[1] 李學(xué)海.重復(fù)利用OTP單片機方法探討[C]//2003年全國單片機及嵌入式系統(tǒng)學(xué)術(shù)年會暨多國產(chǎn)品展示會論文集.北京:北京航空航天大學(xué)出版社:59-67.
[2] 李東星.PIC16C5X系列單片機應(yīng)用設(shè)計[M].北京:電子工業(yè)出版社,1996.
[3] 李學(xué)海.EM78單片機實用教程:基礎(chǔ)篇[M].北京:電子工業(yè)出版社,2003.
[4] 李學(xué)海.EM78單片機實用教程:提高篇[M].北京:電子工業(yè)出版社,2003.
[5] 李齊雄,鄭顏雄,蔡孟昌.HOLTEK HT48系列單片機原理及應(yīng)用實例[M].北京:北京航空航天大學(xué)出版社,2005.
[6] 周航慈.PHILIPS 51LPC系列單片機原理及應(yīng)用設(shè)計[M].北京:北京航空航天大學(xué)出版社,2001.
[7] 張迎新.ST7通用單片機原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2004.
[8] 楊榮.海爾單片機原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2011.
[9] 李學(xué)海.凌陽8位單片機:基礎(chǔ)篇[M].北京:北京航空航天大學(xué)出版社,2005.
[10] 李學(xué)海.凌陽8位單片機:提高篇[M].北京:北京航空航天大學(xué)出版社,2006.
[11] 凌陽科技.SPMC65系列單片機在線仿真編程器使用說明書V1.0 [EB/OL].[2014-06-05].http://wenku.baidu.com/view/bfa1966027d3240c8447efdf.html.
[12] 凌陽科技.SPMC65系列單片機學(xué)習(xí)板使用說明書V1.0 [EB/OL].[2014-06-05].http://wenku.baidu.com/view/bfa1966027d3240c8447efdf.html.
Design of repeat programming OTP microcontroller
Li Xuehai,Fan Xingjuan
(Department of Telecommunications ,Shijiazhuang Posts and Telecommunications Technical College, Shijiazhuang 050021,China)
The OTP microcontroller with one-time programming,economical,safe and reliable,suitable for mass production,etc.,has been widely used by a large number of users. In the full study functional distribution of the on-chip OTP microcontroller program memory,the bit cell structure,process characteristics,instruction features,regular programming, this article chooses a Chinese-made OTP microcontroller as an object or experimental model of teaching,planning and designing a kind of unprecedented operation algorithms and solutions of experimental techniques, in practical teaching solving the repeat programming and efficient use. Such microcontroller beginners,teachers and developers of application project in particular have the practical value and instructive meaning.
OTP microcontroller;repeat programming;experimental techniques;practical teaching
2014- 06- 17
河北省高等教育教學(xué)改革項目(Z2010315);河北省高等教育教學(xué)改革項目(Z2010316);河北省高職高專電子信息類專業(yè)教學(xué)指導(dǎo)委員會科研項目(DZJZW201309)
李學(xué)海(1959—),男,河北南皮,本科,高級工程師,研究方向為嵌入式控制技術(shù)、電子設(shè)計技術(shù)和程控交換技術(shù).
E-mail:lixuehai@tom.com
TP368.1
A
1002-4956(2015)1- 0138- 04