www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]討論的Flash三種在線燒寫技術(shù)在實際工程中均得到實際運用。采用TMS320F2812作為控制器的數(shù)據(jù)采集系統(tǒng).利用Flash在線燒寫技術(shù)開發(fā)的試驗程序,可以根據(jù)需求及時更新,有助于產(chǎn)品維護。為了工程技術(shù)人員在實際項目開發(fā)中根據(jù)工程階段和現(xiàn)場環(huán)境選擇合適的燒寫方法,文中給出了關(guān)鍵部分程序。經(jīng)過比較發(fā)現(xiàn),基于JTAG口的燒寫技術(shù)適用于研發(fā)調(diào)試階段,而串口燒寫Flash技術(shù)更適用于維護階段.大大提高系統(tǒng)的可維護性和可擴展性,如在封閉和復(fù)雜環(huán)境下進行外場加載和控制時,該技術(shù)具有較好的實用價值。

1 引言

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

2 F2812片內(nèi)Flash簡介

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

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

3 基于JTAG的燒寫技術(shù)

3.1 CCS插件燒寫技術(shù)

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

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

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

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

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

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

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

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

4 串口燒寫FlaSh技術(shù)

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


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

4.1 頂層軟件

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

4.2 底層軟件

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

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


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

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

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

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

4.3 底層軟件的定位

電復(fù)位后,XMP/MC引腳為低電平.目標DSP處于計算機模式,CPU將從內(nèi)部Boot Rom獲得復(fù)位向量。復(fù)位向量指向Boot Rom并執(zhí)行其內(nèi)部的Bootloader程序,執(zhí)行完畢后確定從內(nèi)部Flash啟動.程序指針跳轉(zhuǎn)到Flash的Ox3F7FF6處.這個地址是同定的,因此底層軟件程序必須燒寫在以這個地址為起始地址的空間內(nèi),或者在0x3F7FF6燒寫一條跳轉(zhuǎn)指令,上電復(fù)位后通過跳轉(zhuǎn)指令跳轉(zhuǎn)到底層軟件程序。

4.4 用戶應(yīng)用程序的定位

用戶應(yīng)用程序從main函數(shù)開始,但DSP首先必須調(diào)用_c_int00函數(shù)建立C語言的運行環(huán)境,主要包括:建立初始化系統(tǒng)堆棧,把.cinit段中的數(shù)據(jù)表拷貝到.bss段。對全局和靜態(tài)變量初始化等。_c_int00執(zhí)行結(jié)束后調(diào)用main函數(shù)開始運行用戶應(yīng)用程序。因此_c_int00函數(shù)的首地址才是整個程序的入口點。底層軟件程序執(zhí)行結(jié)束后應(yīng)該調(diào)用_c_int00函數(shù),而不是main函數(shù),可用跳轉(zhuǎn)指令實現(xiàn),參考程序如下:

5 結(jié)語

討論的Flash三種在線燒寫技術(shù)在實際工程中均得到實際運用。采用TMS320F2812作為控制器的數(shù)據(jù)采集系統(tǒng).利用Flash在線燒寫技術(shù)開發(fā)的試驗程序,可以根據(jù)需求及時更新,有助于產(chǎn)品維護。為了工程技術(shù)人員在實際項目開發(fā)中根據(jù)工程階段和現(xiàn)場環(huán)境選擇合適的燒寫方法,文中給出了關(guān)鍵部分程序。經(jīng)過比較發(fā)現(xiàn),基于JTAG口的燒寫技術(shù)適用于研發(fā)調(diào)試階段,而串口燒寫Flash技術(shù)更適用于維護階段.大大提高系統(tǒng)的可維護性和可擴展性,如在封閉和復(fù)雜環(huán)境下進行外場加載和控制時,該技術(shù)具有較好的實用價值。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

  從二十世紀七十年代起至今,我國的工業(yè)機器人數(shù)量已經(jīng)比較龐大,在機器人的某些技術(shù)方面也達到了世界先進水平,但總體來說,西方發(fā)達國家的工業(yè)機器人技術(shù)仍領(lǐng)先我國很多年。究其原因不難發(fā)現(xiàn):我國研究工

關(guān)鍵字: tms320f2812 伺服系統(tǒng) 工業(yè)機器人 控制系統(tǒng)

盡管Linux系統(tǒng)在IT世界中隨處可見,但是對Linux需要一定的了解,無論他們是使用哪種語言的程序員。下面,千鋒展示了最新的視頻教程,以便初學(xué)者可以快速入門。

關(guān)鍵字: Linux 技術(shù)教程 測試環(huán)境 視頻教程

如果要在Linux上的Eclipse中開發(fā)Java項目,則可以從其他位置訪問該項目。 您可以從遠程桌面使用teamviewer運行Linux計算機,但這可能很慢。 您也可以從普通的ssh終端編輯,編譯和運行Java項目。...

關(guān)鍵字: eclipse java Linux 技術(shù)教程

作為Linux愛好者,我不能說我是Linux世界中的老司機,但也算是半個老司機了。我最開始了解Linux是在校園里。教授教我們?nèi)绾卧赪indows下使用虛擬機創(chuàng)建環(huán)境, 然后安裝Linux。我在校園里首先學(xué)到的是Red...

關(guān)鍵字: box Linux virtual vmware Windows 技術(shù)教程 workstation

好奇開發(fā)人員使用哪些Linux命令嗎? 有什么技巧呢? 讓我們帶你走進程序開發(fā)人員的日常工作吧。

關(guān)鍵字: Linux 技術(shù)教程 localhost sudo

純單片機干不了大事,必須得配上各種外設(shè),那么了解單片機與傳感器之間的數(shù)據(jù)通信就顯得必不可少了。常見的單片機數(shù)據(jù)通信方式有SPI,IIC,RS232,單總線等等。每種通信方式都有相應(yīng)的時序圖,分析時序圖并完成代碼的編寫是單...

關(guān)鍵字: 單片機 總線傳輸 技術(shù)教程 時序圖

隔離可防止系統(tǒng)兩個部分之間的直流電和異常的交流電,但仍然支持兩個部分之間的信號和電源傳輸。隔離通常能夠阻止電氣組件或人員遭受危險電壓和電流浪涌的傷害;用于保護人員的隔離稱為增強型隔離。I2C已成為許多系統(tǒng)中流行的全球標準...

關(guān)鍵字: i2c 總線 技術(shù)教程 隔離器

串行接口常用于芯片至芯片和電路板至電路板之間的數(shù)據(jù)傳輸。隨著系統(tǒng)帶寬不斷增加至多吉比特范圍,并行接口已經(jīng)被高速串行鏈接。

關(guān)鍵字: FPGA 技術(shù)教程 接口 通信

定時器是單片機的重要功能模塊之一,在檢測、控制領(lǐng)域有廣泛應(yīng)用。定時器常用作定時時鐘,以實現(xiàn)定時檢測,定時響應(yīng)、定時控制,并且可以產(chǎn)生ms寬的脈沖信號,驅(qū)動步進電機。

關(guān)鍵字: 51單片機 中斷 定時器 技術(shù)教程

智能家居在當下可是很受歡迎的存在,說道智能,當然離不開網(wǎng)絡(luò),那么智能家居中的設(shè)備是如何連接到互聯(lián)網(wǎng)的呢?今天我就帶你認識一下使用比較廣泛的wifi模塊-----ESP8266

關(guān)鍵字: esp8266 wifi模塊 技術(shù)教程 無線
關(guān)閉