999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

DSP28335嵌入式系統的SCI在線編程方法實現

2013-12-07 05:54:29羅秋鳳
河北科技大學學報 2013年4期
關鍵詞:程序方法

羅秋鳳,葉 慧,李 勇,高 源

(1.南京航空航天大學無人機研究院,江蘇南京 210016;2.南京航空航天大學自動化學院,江蘇南京 210016)

DSP28335嵌入式系統的SCI在線編程方法實現

羅秋鳳1,葉 慧2,李 勇2,高 源2

(1.南京航空航天大學無人機研究院,江蘇南京 210016;2.南京航空航天大學自動化學院,江蘇南京 210016)

為了解決嵌入式系統主流控制器DSP28335程序升級維護不便、成本高的問題,提出了一種通過異步串行通信接口SCI向片內FLASH在線編程的方法。將特定的GPIO引腳狀態配置為SCI引導模式,DSP芯片上電自檢后調用BootLoader中的SCI_Boot函數,將燒寫控制程序通過SCI口下載到片上SARAM,然后調用API功能函數將用戶程序固化到FLASH。實驗結果表明,該方法有效可行,簡單方便,可脫離JTAG仿真器進行操作,提高了傳輸距離,降低了成本。

DSP28335;SCI引導;API函數;在線編程

DSP28335是TI公司新推出的一款具有強大的控制和信號處理能力的32位浮點型數字信號處理器[1],主頻高達150 MHz,片上集成了256 KWord的FLASH存儲器、34 KWord的SARAM,8 KWord的Boot ROM以及多種先進的外設,可廣泛應用于工業控制、移動通信、軍事安全等領域[2]。

隨著電子技術的發展和用戶需求的提升,對已投入使用的DSP嵌入式設備軟件的維護和更新也越來越頻繁,當進行程序升級時,要擦除芯片內容并重新燒寫新的程序代碼和數據[3],通常使用TI公司的CCS燒寫插件并通過仿真器JTAG口對片上FLASH進行編程的方法[4-6]。雖然該方法簡單易用,但一般只是在程序的開發和調試階段使用,在復雜的工作環境中,直接取下設備、連接仿真器存在較大困難,或現場還存在不能拆開設備情況。因多數嵌入式設備都有通信端口如USB,CAN,SCI,SPI或無線通信口等,因此可通過通信端口對FLASH進行燒寫可以有效解決這個問題[7-10]。

本文在詳細介紹了DSP28335 SCI引導模式的上電加載思想和串口在線編程的原理后,研究了一種通過異步串行通信SCI口對片上FLASH進行燒寫的方法。

1 API功能函數的選擇與介紹

圖1 通過FLASH API燒寫DSP示意圖Fig.1 Diagram of DSP by FLASH API programmer

DSP片上FLASH存儲器中放置的是用戶/應用程序和初始化代碼,要實現嵌入式終端的在應用編程(IAP)功能,需要采用專門的定制方案,即利用TI公司提供的應用程序接口庫(API)[11]文件,其中包含用于對FLASH及一次性編程單元OTP進行操作的各種函數,利用API函數進行擦除、編程和校驗FLASH的方法如圖1所示。

1.1擦除函數Erase( )

擦除FLASH時每次最小只能擦除一個扇區,不能對其中的某一位進行擦除,剩余沒有指定的扇區內容保持不變。

函數原型(Defined inFlash2833x_API_Library.h)

extern Uintl6 Flash2833x _Erase

(Uintl6 SectorMask,//定義標示位來指示擦除的扇區;

FLASH_ST *FeraseStat,//定義FLASH結構的狀態指針FeraseStat,執行擦除操作后狀態返回值,判斷操作是否成功;)。

1.2編程函數Program( )

該函數對用戶指定的FLASH扇區或一次性編程單元OTP上進行編程,編程時將位由1變為0,一次編程一個字存儲單元。

函數原型(Defined inFlash2833x_API_Library.h)

extern Uintl6 Flash2833x_Program

(Uintl6 *FlashAddr //定義指向需要燒寫到FLASH或OTP區域的起始地址指針;

Uintl6 *BufAddr //定義程序當前存放在內存RAM空間的首地址指針;

Uint32 Length //定義編程到FLASH或OTP的16位數據的總長度;

FLASH_ST *FprogStatus //定義FLASH結構的狀態指針,返回FLASH的燒寫狀態;)。

1.3校驗函數Verify( )

因為編程函數在燒寫時自身已經進行過狀態反饋校驗,因此該函數是在編程結束后進行的完整性校驗。實際上就是將接收緩沖區(RAM空間)和FLASH或OTP中寫入的數據進行比較,如果完全相同,就表明終端已將接收緩沖區中的數據全部正確地寫入了FLASH中。

函數原型(Defined inFlash2833x_API_Library.h)

extern Uintl6 Flash2833x_Verify

Uintl6 *startAddr //定義指向已經燒寫的FLASH或OTP區域的起始地址指針

Uintl6 *BufAddr //定義程序搬移到內存RAM空間的首地址指針

Uint32 Length //定義編程到FLASH或OTP的16位數據的總數長度

FLASH_ST *FVerifyStatus //定義FLASH結構的狀態指針,返回FLASH的校驗狀態

2 串口在線編程方案

通常要實現IAP功能還需要一個獨立的存儲器,這是由FLASH的特性決定的。當對FLASH進行編程操作時,整個FLASH會被加上高于普通工作電壓的編程電壓,致使對FLASH讀取不穩定,系統無法在該FLASH空間中運行。

考慮到API函數的調用需遵循嚴格的時序要求,否則不能實現功能[12]。DSP28335帶有34 KWord×16位的片上RAM,在讀寫訪問時可以全速運行,即等待周期為零,因此把FLASH API函數加載到片上RAM空間執行是切實可行的。同時,RAM中要留有足夠空間,以便存放復制到RAM中的FLASH編程函數。且編程不是實時進行,從上位機接收到的待編程的用戶代碼必須先放入緩沖區,所以還需要在RAM中分配一個足夠大的空間用于保存接收到的編程代碼。以DSP28335為核心處理器的終端完全具備開發IAP系統的硬件條件。圖2說明了3種裝載FLASH API的方法。

圖2 3種裝載FLASH API的方法Fig.2 Three methods to load the FLASH API library

由于API算法嵌入在燒寫控制程序(KPL)中,通過KPL調用API算法來進行對FLASH的操作。

方法A:通過JTAG口將KPL代碼直接下載到片上RAM,這種方法主要是通過CCS/仿真器或SDFLASH軟件實現。

方法B:通過SCI,SPI,Parallel,I2 C,eCAN中的任何一種BootLoader將KPL從片外空間直接下載到片上SARAM。

方法C:將KPL燒寫固化到FLASH,OTP或XINTF中,編程前將需要執行FLASH編程任務的API函數復制到獨立的存儲器SARAM內,然后從其中運行,再燒寫FLASH操作。

這3種方法中,方法B和方法C都能滿足系統遠程升級的要求。為了簡單方便,本文討論的是用方法B來燒寫FLASH。

3 SCI BootLoader引導機理

引導加載程序BootLoader是位于片內Boot ROM中的一段用于引導的程序,在系統上電復位后才會執行,從而完成一系列的初始化和引導操作[13-14]。BootLoader包含了一系列的引導加載器函數,用來將預先存儲到外部非易失的存儲介質的代碼拷貝到快速的存儲介質片上RAM中,并自動執行。

為了滿足不同系統的需求,BootLoader提供了16種可選擇的引導模式,BootLoader通過查詢GPIO12,GPIO13,GPIO14,GPIO15這4個通用I/O引腳的狀態,判斷選擇相應的引導模式。本文通過串口實現軟件編程和升級,將模式選擇端口配置為SCI-A啟動模式。

3.1SCI引導啟動流程

系統上電復位完成后,首先調用BootLoader中的第1個初始化引導程序(InitBoot),該程序主要把器件初始化成C28X工作模式,然后讀取安全代碼模塊的密碼,如果CSM密碼被擦除(全1)則自動解鎖,否則CSM仍被鎖定。對密碼讀取完成后,BootLoader將調用SelectBootMode(引導模式選擇)函數,該函數將4個通用I/O引腳配置為輸入,然后檢測引腳的狀態,依次進行選擇判斷,確定為SCI-A引導模式后,SCI_Boot(SCI-A引導加載器)函數將從外部設備復制數據到DSP的片上SARAM存儲介質中,程序下載完成后返回輸入數據流決定的入口地址,以便引導結束后執行應用程序,SCI引導啟動流程如圖3所示。

圖3 SCI引導啟動流程Fig.3 SCI boot procedure

3.2SCI引導加載過程

綜上所述,BootLoader通過異步方式將代碼數據從SCI-A傳輸到片內存儲器是整個引導流程的關鍵和核心。

BootLoader選擇SCI引導模式后,開始了引導加載流程:SCI_Boot函數將主機發送的第一個字和8位數據流的關鍵字0x08AA進行比較,匹配有效后開始按一定順序重復讀入傳輸的每個數據塊內容,一旦檢測到數據塊大小等于0,就表示所有數據塊下載完成,然后指向BootLoader的指針將跳轉到由數據流中確定的程序入口地址處,接著開始執行應用程序,基本流程圖如圖4所示。

SCI下載模式是一種異步傳輸方式,只支持8位數據流格式,其通用結構如表1所示。

圖4 SCI_Boot程序加載的執行流程Fig.4 Execution flow of SCI_Boot program loader

表1 8位數據結構

4 程序代碼格式轉換

為了能夠使用DSP28335的BootLoader功能,首先必須制作包含BootLoader所需的完整數據流的引導表,建立引導表的總體步驟如下。

4.1COFF文件生成

TI公司提供的DSP集成開發環境CCS[15]對整個工程文件進行編譯、鏈接后生成.out為后綴的二進制通用對象文件格式(COFF)文件。它有著復雜的結構,不僅包含了以段的形式組織的代碼和數據,而且還包含了文件頭、符號表、段地址、初始化段入口等信息,但是該文件格式的模塊化結構與實際的內存存儲區間不匹配,不能直接用來加載到RAM或寫入FLASH,需要將其轉換成內存能識別的數據格式(二進制文件.BIN)。

4.2HEX文件生成

HEX文件是指機器代碼的十六進制文件,并且是用一定格式的ASCII碼來表示。對于2000系列的DSP,TI公司提供了文件格式轉換工具hex2000.exe,可將COFF格式轉化成HEX格式。具體格式如下:ASCII HEX,Extened Tektronix,Intel MCS-86(tatel),Motorola-S,TI-Tagged。

進行十六進制轉換可以通過單條命令再加各種選項的方法實現,也可以將命令和有關選項匯總到一個文件(稱為命令文件)中,然后再利用該文件完成十六進制轉換。

4.2.1 命令文件建立

以Intel MCS-86(tatel)為例給出燒寫控制程序KPL的命令文件編寫格式:

-KPL.out //被轉換的輸入文件,由CCS產生

-memwidth 16 //16位存儲器系統

-datawidth 32 //DSP的字長32位

-boot //將程序中的各段都轉換到引導表

-sci8 //8位數據寬度的SCI引導格式

-map KPL-hex.map //數據流對應的map地址文件

-o KPL.hex //生成的數據流文件名為KPL.hex

-i //輸出文件為INTEL格式

保存到hex2000.exe所在的文件夾目錄,并將文件命名。文件名: KPL-hex.cmd,然后從開始菜單—運行—cmd,輸入命令文件hex2000.exe KPL-hex.cmd,運行即可生成KPL.hex文件。生成的HEX文件格式如圖5所示。

圖5 Intel HEX格式Fig.5 Intel HEX format

4.2.2 Intel HEX格式解析

Intel HEX文件是記錄文本行的ASCII文本文件,在Intel HEX文件中,每一行是一個HEX記錄,由十六進制數組成的機器碼或者數據常量。

以第1行為例,來解析該文件,“:”號表示一行的開始,第1,2個字符表示本行包含數據的長度0x20即32個;第3~6個字符表示數據存儲的起始地址,這里表示從0x0000地址開始存儲32個字符數據;第7,8個字符0x00即為普通數據記錄類型;之后的32個字符就是本行包含的數據,每兩個字符表示一個字節數據,總共有16個字節。

4.3BIN文件生成

BIN文件是按照“順序格式”表示的二進制機器代碼,由于HEX文件中數據域ASCII碼表示的十六進制與二進制是一一對應的,這些二進制數據應串行地保存在程序空間。

選用的平臺是DSP28335,使用FLASH,RAM作為程序/數據存儲器,因為DSP的存儲字長是16 bit,所以4個十六進制ASCII碼表示一條機器指令或者地址。根據HEX文件的協議格式,在VC6.0平臺上開發了HEX文件到BIN文件轉換程序,原理是從文件中依次讀出字符,根據“:”判斷每行的開始,然后每兩位ASCII碼字符轉換成一個十六進制字節數,然后將該字節數重新以ASCII碼形式保存。這時生成的代碼數據是內存可以識別的可執行代碼,可以通過FLASH讀寫函數寫到用戶指定的地址空間中,從而實現在線編程。

5 實驗驗證

圖6 BIN格式Fig.6 BIN format

以嵌入式DSP28335最小系統核心板為測試平臺,通過串口連接線將上位機和核心板對接,上電前設定I/O引腳GPIO15=1,GPIO14=1,GPIO13=1,GPIO12=0,配置為SCI-A引導模式。打開上位機在線編程調試軟件,設置異步串口通信方式為波特率115 200 bps,8位數據位,無校驗,1個停止位。

實驗開始前,先運行上位機在線編程調試界面,點擊打開文件按鈕,選擇保存的KPL.hex,對該文件進行格式轉換,生成的KPL.bin文件格式(以十六進制顯示)如圖6所示。

該文件可存儲為.txt文本格式,里面詳述了關鍵字、保留位、入口地址、數據塊存儲地址、數據塊長度、數據字等信息,即為符合數據流加載的標準和要求的引導表。

DSP上電后,調試界面打開KPL.bin文件,并選擇發送到RAM空間,傳輸成功后KPL開始運行并接管CPU的控制權,等待PC機握手指令并反饋應答信號。握手成功后,接收PC機發送的用戶程序的BIN文件,根據選擇的FLASH扇區調用API擦寫函數,對用戶程序進行編程,若校驗通過則FLASH燒寫成功,如圖7所示。

本實驗中,燒寫的程序為控制GPIO1口輸出占空比為1/3的PWM脈沖波形。當程序燒寫結束后,將GPIO15,GPIO14,GPIO13,GPIO12引腳配置為FLASH引導模式,重新上電后發現GPIO1有規律地輸出預期的波形,通過觀察示波器捕捉到的波形如圖8所示。

圖7 擦除、燒寫及校驗成功后狀態Fig.7 Success staus of erasing, programming and verification

圖8 GPIO1引腳波形Fig.8 GPIO1 pin waveform

6 結 語

系統介紹了通過串口實現DSP28335程序在線編程的原理、軟硬件框圖以及步驟流程,提出了一種可以脫離仿真器,只需要一根串口電纜便可以完成DSP程序固化的方法。在TMS320F28335最小系統的實驗電路板上進行了測試驗證,結果表明該方案正確可行、便于操作,在工程應用中具有重要的實際意義,并對TI公司其他系列DSP系統的FLASH編程具有很強的通用性和借鑒價值。如果應用程序代碼較大,而片上RAM,FLASH空間有限,燒寫過程用戶代碼無法緩存到片內RAM,而后再完全編程至片內FLASH中時,則須擴展外部RAM和FLASH等存儲器,修改燒寫引導程序中的CMD文件中的地址空間分配代碼即可。

/

[1] Texas Instruments.TMS320F28335 Digital Signal Controllers Data Manual[M].[S.l.]:[s.n.],2007.

[2] 蘇奎峰, 呂 強, 鄧志東,等.TMS320X28XXX原理與開發[M].北京:電子工業出版社,2009.

SU Kuifeng, LYU Qiang, DENG Zhidong. Principles and Development of TMS320X28XXX[M]. Beijing: Publishing House of Electronics Industry, 2009.

[3] 黃正謹. 在線系統編程技術及其應用[M]. 南京:東南大學出版社,2007.

HUANG Zhengjin. Online System Programming Technology and Its Application[M].Nanjing: Southeast University Press, 2007.

[4] 孫 軼,許少尉.TMS320F2812芯片的FLASH燒寫技術[J].航空計算技術, 2006, 36(5):46-49.

SUN Yi, XU Shaowei. TMS320F28l2 on-chip FLASH programming technique [J]. Aeronautical Computing Technique,2006, 36(5):46-49.

[5] 李 靜,張樹團. TMS320F2812片內FLASH在線燒寫技術研究[J].國外電子元器件,2008,10(6):34-37.

LI Jing,ZHANG Shutuan. Research on on-line programming techniques for FLASH in TMS320F2812[J]. International Electronic Elements,2008, 10(6):34-37.

[6] 陳若珠, 胡金平, 李戰明. TMS320VC5509在線燒寫Flash并自舉啟動方法研究[J].微型機與應用, 2011, 30(2):9-11.

CHEN Ruozhu,HU Jinping,LI Zhanming.Research of on-line programming external Flash and bootloading based on TMS320VC5509 [J]. Microcomputer & Its Applications, 2011, 30(2):9-11.

[7] 張 祿,張興敢,柏業超,等.便攜式可在線編程雷達信號模擬器[J].南京大學學報(自然科學版), 2010,46(4): 359-365.

ZHANG Lu,ZHANG Xinggan,BAI Yechao,et al. A portable and online programmable radar signal simulator[J].Journal of Nanjing University (National Science), 2010,46(4):359-365.

[8] 張 艷, 鮑可進. 整車控制器BootLoader的設計與實現[J].計算機工程,2011,37(12): 233-235.

ZHANG Yan, BAO Kejin.Design and implementtion of BootLoader for vehicle control unit [J]. Computer Engineering, 2011,37(12): 233-235.

[9] 徐 佩,向靜波.基于F2812的多處理器串行加載系統設計[J].航空計算技術,2011,41(4):98-101.

XU Pei,XIANG Jingbo.Design of serial loading system for multiprocessor based on F2812[J]. Aeronautical Computer Technique,2011,41(4):98-101.

[10] 馬喜強,劉維亞,鄭喜鳳.基于多通信方式實現DSP程序在線編程[J].電子器件, 2013,36(1): 112-115.

MA Xiqiang, LIU Weiya,ZHENG Xifeng.On-line programming of DSP based on multiple communications [J]. Electron Devices,2013,36(1):112-115.

[11] Texas Instruments. TMX320F281x Flash API Rev[M].[S.l.]:[s.n.], 2007.

[12] 林志貴,鐘晴晴.HCS08系列FLASH在線編程方法比較與分析[J].天津工業大學學報,2011,30(5): 71-75.

LIN Zhigui,ZHONG Qingqing.Analysis and comparison of in-circuit programming for FLASH in HCS08Mcu family [J]. Journal of Tianjin Polytechnic University ,2011,30(5): 71-75.

[13] Texas Instruments. TMS320F2833x Boot ROM Reference Guide[M].[S.l.]:[s.n.], 2008.

[14 ] 殷樹明, 王宜懷. 嵌入式系統中多用戶程序在線編程技術[J].計算機工程,2009,35(5):37-39.

YIN Shuming, WANG Yihuai. Technology of multi-program in-circuit programming in embedded system[J]. Computer Engineering, 2009, 35(5):37-39.

[15] Texas Instruments.TMS320C28x Optimizing C/C++Compiler User's Guide[M].[S.l.]:[s.n.],2009.

SCI online programming for DSP28335 embedded system

LUO Qiufeng1, YE Hui2, LI Yong2, GAO Yuan2

(1.Department of UAV, Nanjing University of Aeronautics & Astronautics, Nanjing Jiangsu 210016, China; 2.Department of Automation, Nanjing University of Aeronautics & Astronautics, Nanjing Jiangsu 210016, China)

In order to solve the problems of maintenance inconvenience and higher cost in the mainstream embedded DSP28335 system, this paper proposes an online on-chip FLASH programming method through asynchronous serial communication interface (SCI),. The particular state of the GPIO pins is configured as a SCI boot mode and the DSP chips calls SCI_Boot function of BootLoader after power-on self-test, Then, the burning control program is downloaded to the on-chip SARAM by the SCI_interface and calls the API functions to the user program to burned into the FLASH. The experiment shows that the method is effective and feasible, simple and convenient, can be broken away from the JTAG emulator for operation, which has improved the transmission distance and reduced the costs.

DSP28335; SCI_Boot; API function; online programming

1008-1542(2013)04-0318-07

10.7535/hbkd.2013yx04012

TP311

A

2013-04-11;

2013-05-27;責任編輯:李 穆

羅秋鳳(1970-),女,江西吉安人,高級工程師,碩士,主要從事無人飛行器相關的自動檢測與故障診斷方面的研究。

E-mail:YQWL2002@126.com

猜你喜歡
程序方法
學習方法
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 久久这里只有精品23| 色噜噜狠狠狠综合曰曰曰| 欧美另类图片视频无弹跳第一页| 99re这里只有国产中文精品国产精品 | 东京热一区二区三区无码视频| 国产精选自拍| 无码aaa视频| 亚洲成人www| 欧美日本在线| 55夜色66夜色国产精品视频| 国产麻豆福利av在线播放| 91破解版在线亚洲| 日韩免费成人| 8090午夜无码专区| 亚洲精品福利视频| 香蕉eeww99国产精选播放| 2020亚洲精品无码| 黄色国产在线| 激情午夜婷婷| 久久久久久国产精品mv| 亚洲国产成熟视频在线多多 | 久久国产精品影院| 成人国产精品视频频| 欧美国产日本高清不卡| 国产丝袜第一页| 免费欧美一级| 久久久久亚洲av成人网人人软件 | 婷婷亚洲最大| 国产第一页亚洲| 波多野结衣爽到高潮漏水大喷| 黄网站欧美内射| 免费A级毛片无码免费视频| 成年看免费观看视频拍拍| 国产欧美日韩综合在线第一| 91啪在线| 国产精品香蕉在线| 巨熟乳波霸若妻中文观看免费| 日本道中文字幕久久一区| 欧美在线视频不卡第一页| 国产成人精品亚洲77美色| 亚洲国产精品人久久电影| 亚洲AⅤ波多系列中文字幕 | 久久久久久尹人网香蕉| 国产无人区一区二区三区| 国产微拍精品| av在线无码浏览| 2021国产精品自产拍在线| 另类专区亚洲| 国产内射在线观看| 欧美激情综合一区二区| 久久夜色精品| 在线a视频免费观看| 伊人婷婷色香五月综合缴缴情| 99久久亚洲综合精品TS| 久久人人97超碰人人澡爱香蕉 | 亚洲福利视频一区二区| 国产v精品成人免费视频71pao| 国产地址二永久伊甸园| 国产一区二区三区视频| 人妻免费无码不卡视频| 精品福利视频导航| 中文国产成人精品久久| 国产成人精品高清不卡在线| 免费va国产在线观看| 五月婷婷欧美| 久久人搡人人玩人妻精品| 一级毛片在线播放| 毛片久久网站小视频| 精品丝袜美腿国产一区| 波多野结衣久久高清免费| 亚洲综合专区| 亚洲视频免费在线看| 91九色国产porny| 国产内射一区亚洲| 99久久国产自偷自偷免费一区| 最新国产高清在线| 91精品国产一区| 特黄日韩免费一区二区三区| 久久综合伊人 六十路| 永久成人无码激情视频免费| 国产一区二区三区在线精品专区| 国产熟女一级毛片|