利用F206片內(nèi)Flash進行在線編程
關(guān)鍵詞:DSP TMS320F206 Flash 在線編程
引言
TMS320F206(簡稱F206)是德州儀器公司一種較新型的高性能數(shù)字信號處理器芯 片,采用靜態(tài)CMOS工藝技術(shù)設(shè)計,功耗低、抗干擾能力強。其結(jié)構(gòu)簡單,指令執(zhí)行速度快(單周期指令的執(zhí)速度為50ns),指令的源代碼與C1XX和C2XX系列保持兼容并且向上兼容TI公司的第5代DSP(C5X系列)。同時,F(xiàn)206處上集成的32K16位的Flash存儲器由二塊相互獨立的16K16位的Flash存儲器組成(Flash0和Flash1),可分別獨立地對它們進行讀取、擦除和編程等操作。第二塊Flash工作模式的切換分別由片上2個I/O映射寄存器控制。通常情況下,這二塊Flash存儲器,一塊用于存放固化程序,程序調(diào)試完成后通過DSP仿真頭將程序直接寫入Flash中;另一塊可用于存放重要參數(shù),可通過鍵盤、通信端口以及運行程序自動地將數(shù)據(jù)寫入Flash中,從而實現(xiàn)對Flash存儲器的“在線”擦、寫。F206及F24x在程序地址空間的映射如圖1所示。
圖1
1 實現(xiàn)F206在線編程需要注意的幾點
①進行硬件設(shè)計時,必須將F206的Vccp引腳直接接于+5V電源上。
②片內(nèi)CPU的工作時鐘不得高于20MHz。如果用倍頻連接方式,則輸入時鐘頻率不得高于10MHz,否則會使擦、寫過程出現(xiàn)錯誤,從而導(dǎo)致“在線”擦、寫失敗。
③正常情況下F206的擦、寫次數(shù)壽命是1000次。因此,對Flash塊的“在線”編程應(yīng)該做到一次擦除、多次寫入,直到整個Flash存儲塊寫滿后再重新擦除,這樣可以充分延長Flash存儲器的使用壽命。
④不要將寫Flash的程序和被寫數(shù)據(jù)放在同一塊Flash存儲器上(后面說明)。由于F206的中斷向量從0000H單元開始,所以第一塊Flash存儲器(Flash0)用于保存固化程序,另一塊Flash存儲器用于存放重要參數(shù),進行“在線”編程。
2 Flash存儲器的特點
存儲器的操作有讀和寫兩種基本操作,各種類型存儲器的讀操作都相同,而寫操作則各不相同。RAM型存儲器的讀/寫操作幸免通過址/數(shù)據(jù)總線和片選、讀/寫控制線來完成;EEPROM型存儲器讀操作和RAM相同,寫操作由片內(nèi)定時完成擦除和編程操作,并有一個狀態(tài)信號線來指示寫操作是否完成;PROM型存儲器的寫操作則由特殊工具來完成,系統(tǒng)中只有讀操作;Flash型存儲器的寫操作則由清“0”、置“1”和編程操作構(gòu)成。清“0”和置“1”操作按扇區(qū)(一塊存儲區(qū)),如F206的一塊存儲區(qū)的大小為32個字,F(xiàn)lash0的起始地址為0000H,F(xiàn)lash1的起始地址為40000H,每個Flash塊包含512個扇區(qū)。
Flash存儲器的寫操作由控制寄存器控制,狀態(tài)寄存器反饋的信息指示操作過程。Flash型存儲器的寫操作既可以“在線”完成,也可以由特殊工具來完成。由此可見,對Flash型存儲器的訪問由兩部分構(gòu)成,一為Flash存儲單元,二為Flash寄存器。訪問存儲單元和寄存器公用一組外部總線,究竟是訪問存儲單元還是訪問寄存器則由工作模式?jīng)Q定。作在訪問存儲單元模式(只讀)時,從數(shù)據(jù)總線上讀到的是存儲單元中的數(shù)據(jù);工作在訪問寄存器模式(讀/寫)時,從數(shù)據(jù)總線讀到的是寄存器的狀態(tài)信息。因此,如果將寫Flash的程序和將寫入數(shù)據(jù)放在同一塊Flash上,則對Flash寫操作時需要切換工作模式,從而導(dǎo)致取指令時取到的是狀態(tài)信息,F(xiàn)lash寫操作失敗,所以不能將程序和數(shù)據(jù)放在同一塊Flash存儲器上。
3 F206進行Flash“在線”擦寫的基本步驟
(1)模式切換
Flash的“在線”編程由清“0”、置“1”和數(shù)據(jù)寫入等操作組成。進行這些操作前首先要將Flash由存儲器工作模式(mode 1)切換至于寄存器工作模式(mode 0)。F206中Flash存儲器工作模式由映射于I/O地址中的兩個寄存器控制,分別為F_ACCESS0寄存器(FFE0h)和F_ACCESS1寄存器(FFE1h)。向Flash模式控制寄存器的最低位寫入0,則Flash工作于寄存器模式;反之寫入1,則工作于存儲器模式。復(fù)位后,自動處于存儲器模式。如圖2所示,兩種工作模式之間切換后,F(xiàn)lash內(nèi)容變化。處于模式1時,F(xiàn)lash存儲器顯示的是其所存儲的數(shù)據(jù);處于模式0時,F(xiàn)lash存儲器顯示寄存器的內(nèi)容,并且以4個為一組重復(fù)顯示于整個Flash塊中。
F206的Flash存儲器塊中只有4個寄存器SEG_CTR、TST、WADRS、WDATA,其余都是重復(fù)顯示相同的內(nèi)容,其功能如下所述。
*SEG_CTR:片段控制寄存器,其高8位(MSBS)用于選擇相應(yīng)片段。該位置“1”,則使能相應(yīng)的片段,可以進行擦寫。因此F206中16K16的Flash塊分為8個片段,每個片段2KB.低8位(LSBS)用來控制Flash塊的擦除、寫入、校驗等操作,如圖3所示(各個控制位的具體設(shè)置方法請查閱TI相關(guān)參考資料)。
*TST:測試寄存器,通常不用。(保留,用于測試。)
*WADRS:寫地址寄存器,用于存儲寫操作地址。
*WDATA:寫數(shù)據(jù)寄存器,用于存放寫操作數(shù)據(jù)。
(2)清“0”操作
清“0”操作按扇區(qū)進行,F(xiàn)206的Flash每一區(qū)的大小為32個字(WORD)。進行清“0”操作就是對Flash存儲單元的非零位(即值為“1”)寫入0,使各數(shù)據(jù)位的邊緣保持一致;通常的做法是將Flash存儲單元中的數(shù)據(jù)讀出,與FFFFh進行異或(XOR)后,再寫回Flash存儲單元中。清“0”操作后,需調(diào)用VER0功能對Flash塊進行0校驗。
(3)置“1”操作
置“1”操作按扇區(qū)進行,對每個存儲單元寫入“1”;執(zhí)行置“1”操作后需要調(diào)用VER1功能進行校驗。置“1”操作后,F(xiàn)lash塊存儲單元的值均為FFFFh。如果置“1”正確,則可以進行下一步的數(shù)據(jù)寫入數(shù)據(jù)。
圖3
(4)數(shù)據(jù)寫入
數(shù)據(jù)只能寫入已經(jīng)置“1”的存儲單元,對于同F(xiàn)lash存儲單元只能寫一入一次;如要改變存儲單元中的內(nèi)容,必須重新進行清“0”和置“1”的操作后才能寫入新的數(shù)據(jù)。否則,會使存儲單元中各個數(shù)據(jù)位的“邊緣”不一致,從單元中讀出的數(shù)據(jù)與寫入的數(shù)據(jù)不一致。由于Flash擦除次數(shù)有限,因此不可能每次修改和定改數(shù)據(jù)時都進行擦除操作,而應(yīng)將每次修改后的參數(shù)(表)連續(xù)寫在已置“1”但沿未寫入數(shù)據(jù)的Flash存儲單元中,并對參數(shù)(表)作起始和結(jié)束的標(biāo)記(如55AA);程序調(diào)用參數(shù)(表)時可以很方便地找到最新修改的參數(shù)(表),當(dāng)已置“1”的Flash存儲單元已寫完,再重新進行清“0”和置“1”操作后,從Flash塊的起始位置(對F206的Flash1存儲塊為4000h)寫入新的數(shù)據(jù),這樣可以充分延長F206片內(nèi)Flash的使用。
結(jié)語
本文對TI公司的TMS320F206為例,介紹了DSP進行Flash“在線”編程的方法,具有較強的實用價值。筆者將該技術(shù)用于由F206構(gòu)成的微機過流保護裝置中,使得保護裝置的現(xiàn)場校驗、調(diào)試和動作值整定都非常方便。對于具有三個Flash塊的TMS320FL2407系列,只要找出相應(yīng)Flash塊控制寄存器,也能用同樣的方法進行“在線”編程。Flash進行“在線”編程的程序較為復(fù)雜,進行編程時需要加入一定的時間延時,編程時可參閱TI公司的例程,該例程可以從TI公司的網(wǎng)頁www.ti.com下載。由于篇幅有限,此處不作詳細介紹。
評論