<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > TMS320F2812片內Flash在線燒寫技術

          TMS320F2812片內Flash在線燒寫技術

          作者: 時間:2011-05-06 來源:網絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/172807.htm

          (以下簡稱F2812)是美國德州儀器公司(TI)新一代32位定點數(shù)字信號處理器(DSP),主要應用于逆變器控制、電機控制等領域,并擁有工作頻率高達150 MHz的32位DSP內核處理器,可以高效可靠地實現(xiàn)自適應控制和狀態(tài)控制等。因此,TMS320F28X系列DSP已成為自動控制領域的首選控制器件。F2812擁有高達128 KBx16位的F1ash程序存儲器,可以滿足大多數(shù)程序存儲需要。在研究基于JTAG接口的兩種常用燒寫(CCS插件燒寫281x_API函數(shù)庫燒寫)的基礎上,提出了一種利用RS485與PC機的串行通訊實現(xiàn)燒寫的方法。

          F2812Flash簡介 原理與開發(fā)
          F2812帶有128 KBxl6位的Flash存儲器,分為4個8 KBxl6位和6個16 KBxl6位的扇區(qū),用戶可以單獨擦除、編程和驗證Flash的一個扇區(qū)而不會影響其他扇區(qū),但不能用F1ash的一個扇區(qū)執(zhí)行Flash的算法對其他扇區(qū)擦除或編程。F1ash還可映射到程序數(shù)據空間,因此它既可用于執(zhí)行代碼,也可存儲數(shù)據信息。

          TI代碼產生工具所產生的目標文件是一種模塊化文件格式一一COFF格式,即.out文件。程序中的代碼和數(shù)據在COFF格式文件中以段形式形成,不同的段存放不同類型的內容.應用中通過編寫連接器命令文件(.cmd)將這些段正確地分配到DSP的地址空間,DSP集成開發(fā)環(huán)境CCS經編譯鏈接之后。生成.out文件和.map文件。.map文件詳細描述了.cmd文件中定義的各段起始地址以及使用長度。而out文件為COFF格式,DSP能夠識別,但不能直接燒寫到Flash,必須將.out文件轉換為Flash能識別的數(shù)據格式,即.hex的數(shù)據文件。利用CCS轉換和.hex轉換工具HEX2000進行轉換。

          基于JTAG的燒寫技術

          3.1 CCS插件燒寫技術

          利用燒寫插件完成Flash的燒寫無需數(shù)據轉換,只需通過程序調試生成.out文件即可。由于調試階段程序的.cmd文件存放在F2812的RAM,而燒寫階段程序則存放在Flash,即調試階段程序的重新定位不能在CCS環(huán)境下運行,需要編寫兩個不同的.cmd文件。

          3.2 Flash281x_API函數(shù)燒寫技術

          F1ash281x API函數(shù)庫燒寫技術是利用TI公司的編程算法.該算法定義良好,操作簡單,而且可以脫離燒寫插件,真正實現(xiàn)燒寫。

          編程算法中函數(shù)定義如下:(1)擦除扇區(qū)的函數(shù)為Uintl6F1ash2812 Erase(SectorMask,F(xiàn)Status),其中,SectorMask為擦除指定扇區(qū);Fstatus為狀態(tài)值,判斷操作是否成功。(2)燒寫程序到F1ash函數(shù)為Uintl6 Flash2812_Program(FlashAddr,BuffAddr,Length,F(xiàn)Status),其中FlashAddr為程序在Flash中燒寫的起始地址;BuffAddr為程序當前存放在內存空間的首地址:Length為程序長度;Fstatus為狀態(tài)值,判斷操作是否成功。(3)校驗燒寫到Flash中的程序為Uintl6 Flash2812_Verifv(&FlashAddr,&BuffAddr,Length,&FStatus)。

          Flash28x_API函數(shù)燒寫步驟如下:

          (1)先將.hex格式數(shù)據下載到F2812的內存.在CCS環(huán)境下完成File→Data→Load,并存放地址和數(shù)據長度兩個參數(shù),其中數(shù)據長度可以通過HEX轉換為.map文件獲得。

          (2)編寫基于Flash281x_API函數(shù)的燒寫程序。先擦除相應的Flash扇區(qū),通過Flash2812_Erase函數(shù)完成;將數(shù)據的起始地址和數(shù)據長度兩個參數(shù)分別賦給FlashAddr和Length變量,然后調用Flash2812_Program函數(shù)開始燒寫,最后調用Flash2812_Verify函數(shù)確定燒寫是否成功。

          Flash API與用戶工程建立關聯(lián)后,目標代碼通過調用API函數(shù),實現(xiàn)對Flash的擦除、燒寫和校驗等操作,F(xiàn)lash的密碼保護值不全為0,否則Flash將被鎖死導使無法解鎖。

          串口燒寫FlaSh技術

          基于JTAG的燒寫技術必須在CCS環(huán)境下通過JTAG接口實現(xiàn)。雖然基于JTAG接口的兩種燒寫方法易于操作,方便調試,但常常受空間和傳輸距離限制。比如一臺DSP系統(tǒng)安裝在復雜、封閉的環(huán)境下,當程序需要更新或升級時,利用JTAG接口難以實現(xiàn)Flash的燒寫。而通過串口燒寫技術采用“程序”燒寫“程序”的方法則不受限制。前一個“程序”指已固化程序,用于實現(xiàn)串口燒寫的時機判斷、數(shù)據接收及燒寫的具體實施等,該程序使用了Flash281x_API庫編程算法;而后一個“程序”是用戶的應用目標代碼。

          實現(xiàn)串口燒寫技術軟件分為PC機內用于數(shù)據發(fā)送的頂層軟件和目標機內的底層軟件。頂層軟件可實現(xiàn)用戶程序的解析等;而底層軟件可實現(xiàn)由串口發(fā)送的數(shù)據燒寫至Flash。F2812 DSP每次上電復位,先運行底層軟件,判斷是否需要重新燒寫Flash。若需要,則將串口發(fā)送的目標代碼燒寫至F2812片內Flash指定扇區(qū);否則將繼續(xù)執(zhí)行原有的用戶目標代碼。

          4.1 頂層軟件

          頂層軟件可實現(xiàn)用戶程序的解析等工作。其用戶程序為.oul文件,頂層軟件主要完成.hex文件的解析,并將解析后的有用數(shù)據發(fā)送至目標DSP。.hex文件的組織格式嚴格,只要提取數(shù)據在內存中的存放地址和數(shù)據長度就可以按照要求將數(shù)據發(fā)送給目標DSP。如果用戶程序很大而目標DSP的內存空間不足時,該過程還可以分段進行。頂層軟件可以使用VC++或者LabVIEW等實現(xiàn)。

          4.2 底層軟件

          底層軟件用于實現(xiàn)將串口發(fā)來的數(shù)據燒寫至Flash.涉及到用戶程序的正確定位和復位后的啟動過程,是整個軟件設計的重點。底層軟件主要實現(xiàn)以下功能:

          (1)燒寫程序搬移功能。由于F2812片上Flash不支持在其中一個扇區(qū)運行程序去擦除或燒寫其他扇區(qū),故完成接收數(shù)據和燒寫Flash工作的這部分程序需搬移至片內RAM或片外RAM上運行。實現(xiàn)程序搬移的函數(shù)為:

          其中,SourceAddr為Flash中程序的起始地址,即源程序開始地址;SourceEndAddr為Flash中程序的結束地址,即源程結束序地址;DestAddr為搬移至內存的首地址。

          (2)上電復位查詢功能。上電復位后查詢一個通用I/O端口的狀態(tài)以確定是否需要燒寫程序。這個通用I/O端口可由用戶自行確定,但I/O端口占用后其特殊功能便不可用,上電復位后保證其確定狀態(tài),否則會不間斷燒寫程序或者不能正確跳轉到用戶應用程序。

          (3)接收PC機發(fā)送的數(shù)據并保存到目標DSP內存。這是在串口接收中斷服務子程序中完成的,并確定用于數(shù)據保存的這部分內存未占用。

          (4)接收結束后將內存中的數(shù)據燒寫至指定Flash扇區(qū),這由Flash28lx_APl庫函數(shù)完成。圖1為底層應用軟件流程圖。

          逆變器相關文章:逆變器原理


          逆變器相關文章:逆變器工作原理



          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();