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