TMS320F2812程序的遠程升級方法
2.2 Flash在線(xiàn)寫(xiě)入
F2812的Flash數據寫(xiě)入通常包括擦除、燒寫(xiě)和校驗3個(gè)步驟:
①擦除就是將Flash內的數據0位都變成1,經(jīng)過(guò)正確的擦除步驟后,Flash內所有16位數據都變?yōu)?xFFFF。
②燒寫(xiě)程序數據的過(guò)程就是將待寫(xiě)入的數據中對應為0位寫(xiě)入,使得Flash中的相對應位變?yōu)?,1對應的位保持不變。
③校驗過(guò)程在燒寫(xiě)結束后,是將燒寫(xiě)入的數據讀出,并與原來(lái)的數據進(jìn)行比較。全部正確,則數據寫(xiě)入Flash完成;若校驗不正確,則必須重新擦除和寫(xiě)入,5次校驗未能通過(guò),數據燒寫(xiě)失敗。
F2812的Flash燒寫(xiě)與較早的C2000系列如F2407有所不同,程序的擦除、燒寫(xiě)和校驗主要通過(guò)調用Flash_Erase()、Flash_Program()、Flash_Verify()這3個(gè)函數來(lái)完成。這3個(gè)Flash的操作函數已封裝在TI公司開(kāi)發(fā)的庫文件Flash2812_API_V210.lib內,使用時(shí)只需在編譯時(shí)將該庫文件加入即可,非常方便使用者調用,具體的使用方法可參閱相關(guān)的參考資料。
需要注意的是,對Flash的所有操作函數都必須首先載入到具有0等待周期的RAM內才能執行,否則Flash的燒寫(xiě)過(guò)程將會(huì )出錯。執行在線(xiàn)寫(xiě)入前,需要先調用函數Flash_MemCopy(),將Flash_Erase()、Flash_Program()、Flash_Verify()這3個(gè)函數的執行代碼調入F2812的RAM空間內。Flash_MemCopy()也是封裝在Flash2812_API_V210.lib庫文件內的函數。本文引用地址:http://dyxdggzs.com/article/163475.htm
3 程序遠程升級
程序的遠程升級功能就是通過(guò)升級應用程序模塊的數內容來(lái)實(shí)現的,其主要步驟如下:
首先,程序數據的提取。監控程序原文件經(jīng)過(guò)CCS編譯后,生成*.OUT的公共目標格式COFF文件。通常用仿真器燒寫(xiě)程序時(shí),公共目標格式文件,即*.out文件,由CCS的Flash燒寫(xiě)插件對其進(jìn)行解讀,并將數據輸出到F2812內進(jìn)行燒寫(xiě)。本文用C++Builder開(kāi)發(fā)了一個(gè)專(zhuān)用工具軟件,根據公共目標格式文件的結構,對*.OUT文件進(jìn)行解讀,并提取出應用程序模塊段(.MyPrg)內的程序數據,并將數據通過(guò)GPRS通信模塊進(jìn)行遠程傳送。其次,程序數據的分割。GPRS通信平臺要求每個(gè)數據包小于或等于256字節,因此,需要將提取到的程序數據進(jìn)行分割,由專(zhuān)用工具軟件將應用程序模塊分割為若干個(gè)196字節大小的數據包,根據通信協(xié)議與F2812監控系統進(jìn)行遠程通信。
最后,程序數據的寫(xiě)入。程序數據經(jīng)GPRS遠程通信接收完畢后,可向F2812監控裝置發(fā)程序升級指令。根據預先分段設定,即調用Flash操作函數Flash_Erase()、Flash_Program()、Flash_Vetify(),將數據寫(xiě)入用戶(hù)自定段.Myprg所在的地址區域,完成程序的遠程升級。
結 語(yǔ)
本文從工程的實(shí)際需要出發(fā),分析和闡述了C2000系列的TMS320F2812程序遠程升級的步驟和方法,有效解決在線(xiàn)遠程運行系統的程序升級的難題,對其他類(lèi)似系統的程序升級也具有借簽意義。
評論