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

一種VxWork下文件傳輸方法的研究與實現

2013-04-12 00:00:00王浩賈亮李永田
現代電子技術 2013年24期

摘 要: 在某項目開發過程中,為了滿足數據采集系統中DSP應用程序在線FLASH更新的需求,首先借助Tornado開發環境自帶的FTP服務器將應用程序下載到系統控制器內存,再封裝成數據包分次傳輸,最后實現應用程序更新。該方案解決了某些應用場合下數據轉存空間小于需要傳輸的文件時需分包多次傳輸的問題,整個軟件開發過程都是在Tornado開發編譯環境下進行的,能夠完成對應用程序文件進行分包無差錯傳輸。實際應用表明,按照該方案設計的軟件程序可以很好地實現FLASH在線更新,具有分包傳輸、數據準確的特點,達到了設計要求。

關鍵詞: VxWorks; FTP; 分包傳輸; 在線更新

中圖分類號: TN919?34; TP311.1 文獻標識碼: A 文章編號: 1004?373X(2013)24?0050?05

Research and implementation of file transfer method under VxWork

WANG Hao1, JIA Liang1, LI Yong?tian2

(1. Electronic and Information Engineering Institute, Shenyang Aerospace University, Shenyang 110136, China;

2. Beijing Fangtian Changjiu Science and Technology Ltd, beijing 100084, China)

Abstract: In a project development process, in order to meet the needs of online Flash update of DSP application program in data acquisition system, first of all, the application program is downloaded to the system controller memory by means of the Tornado development environment built?in FTP server, then encapsulated into packets to transmit, and finally the application program update is realized. The program solves the problem that when data dump space is less than the size of data transfer file, and the subpackage transmission in several times is required. The entire software development process is performed in the Tornado development environment, which is able to complete the subpackage error?free transmission of application files. The practical application shows that the software program designed according to the scheme can achieve a good Flash online update, has the characteristics of subpackage transmission and data accuracy, and can meet the design requirements.

Keywords: VxWorks; FTP; subpackage transmission; online update

隨著計算機技術、半導體技術以及軟件技術的飛速發展,嵌入式微處理器的性能也得到不斷提高,嵌入式操作系統的種類更是層出不窮,從而使得嵌入式系統在越來越多的領域得到更加廣泛的應用。其中,美國Wind River System公司于1983年設計開發的一種嵌入式實時操作系統(RTOS)VxWorks憑借其可移植性強等優點得到了廣泛的應用[1]。VxWorks提供的系統接口要比其他操作系統豐富,因此選擇它來作為嵌入式采集系統的軟件控制平臺,可以大大提高開發的效率[2]。本文應用Motorola公司的MCP?750PowerPC嵌入式CPCI單板機作為系統控制器及北京方天長久科技有限公司的FTC?6010作為數據采集板組成數據采集系統。在開發過程中,考慮到了數據采集板有可能工作在不方便拆卸的場合,無法使用下載器對數據采集板上的DSP進行應用程序的更新,本文的研究重點就是實現對數據采集板上的DSP應用程序進行在線FLASH更新,從而擺脫下載器的束縛。基于以上考慮,規定了一份適合于本數據采集系統需要的分包文件傳輸協議,并在此基礎上用C語言封裝了一個基于VxWorks下的功能模塊,此功能模塊的設計成功的實現了DSP程序在線FLASH更新,滿足了開發的需要。

1 數據采集系統分析介紹

1.1 系統總體結構及軟硬件開發環境

數據采集系統基于CPCI總線實現,系統總體結構及軟硬件開發環境如圖1所示,上位機Tornado IDE(VxWorks集成開發環境)通過以太網絡和MCP?750PowerPC嵌入式單板機相連,MCP?750作為CPCI總線控制器通過CPCI總線控制數據采集板(FTC?6010),同時通過串口輸出信息到上位機,便于操作。

圖1 系統總體結構及軟硬件開發環境

1.2 DSP應用程序在線FLASH更新時數據流向

圖2簡要給出了DSP應用程序在線FLASH更新時數據的流向,上位機使用FTP通過網絡 將應用程序的二進制文件下載到系統控制器的內存中,再從系統控制器的內存中通過CPCI總線將文件傳送至數據采集板上DSP外接的FLASH中,最后實現FLASH的更新。在傳送過程中,由于系統控制器與數據采集板上的DSP需要通過DPSRAM進行交互,而DPSRAM的存儲空間有限,此時就需要將應用程序文件分包進行傳輸,傳輸協議的制定就顯得至關重要了,需要保證數據傳輸正確,傳輸過程不丟包。

圖2 DSP應用程序在線FLASH更新時數據流向

2 FTP文件傳輸

2.1 FTP介紹

文件傳輸協議(File Transfer Protocol,FTP)是TCP/IP 的一種具體應用,工作在OSI 模型的第7層, TCP 模型的第4層, 即應用層。FTP要求客戶向服務器提供用戶注冊名和口令, 服務器拒絕非法用戶的訪問。但是鏈接一旦建立成功, 一個或多個文本或圖像二進制文件都能被傳送, FTP 不必擔心可靠性和連接的管理, 因為FTP 依靠TCP 正確執行這些功能[3]。Tornado開發環境自帶FTP服務器,常見用于系統成功引導后,下載VxWorks的運行時映象,需正確配置用戶名,密碼和路徑[4]。

2.2 VxWorks下FTP程序的編寫

可以直接使用VxWorks提供的幾個API函數進行FTP程序的編寫,實現從上位機將應用程序文件下載到系統控制器的內存中的目的,這里主要介紹三個:ftpXfer、ftpReplyGet和ftpCommand,幾個函數的原型和主要用法如下[5]:

ftpXfer的作用是初始化通過FTP傳輸的文件。

STATUS ftpXfer

char * host,

/*ftp服務器的IP地址,點分十進制,格式類似于\"10.0.0.1\" */

char * user, /*訪問ftp服務器的用戶名 */

char * passwd, /*訪問ftp服務器的密碼 */

char * acct, /*一般不用,直接填寫為空字符串就可以了*/

char * cmd, /*發送給FTP服務器的命令,例如讀取命令為\"RETR\"*/

char * dirname, /*待訪問文件所在的目錄*/

char * filename, /*待訪問文件的文件名*/

int * pCtrlSock, /*存儲返回的文件描述符,也就是常說的fd*/

int * pDataSock /*存儲返回的待訪問文件的文件描述符*/

此例程按以下順序發起通過FTP服務器傳輸文件:

(1)建立一個連接到指定的主機上的FTP服務器;

(2)在指定的主機上設置好用戶名,密碼和賬號;

(3)發送文件傳輸類型命令;

(4)發送文件所在的目錄以及文件名命令;

(5)將指定的轉移命令和指定的文件名作為參數,建立一個數據連接。典型的傳輸命令為STOR %S:寫入到一個遠程文件;RETR%S:讀取一個遠程文件。

由此產生的控制和數據連接文件描述符分別通過pCtrlSock和pDataSock返回。

調用這個程序后,數據可以被讀取或寫入到遠程服務器返回的文件描述符pDataSock中。當所有傳入的數據被讀取(讀取數據套接字由EOF表示)和/或所有傳出的數據已寫入,應關閉數據套接字fd。

這時候應該調用函數ftpReplyGet(),用來接收控制套接字的最后的回復。

int ftpReplyGet

int ctrlSock, /*連接FTP control socket文件描述符fd*/

BOOL expecteof /* TRUE = EOF expected, FALSE = EOF is error */

若沒有錯誤,應調用函數ftpCommand()關閉control socket。

int ftpCommand

int ctrlSock, /* 連接FTP control socket文件描述符fd */

char * fmt, /* 待傳遞的ftp命令 */

int arg1, /* ftp命令的參數*/

int arg2,

int arg3,

int arg4,

int arg5,

int arg6

如果FTP命令不涉及數據傳輸(例如文件刪除或重命名),pDataSock應該是NULL,在這種情況下,不會建立數據連接。函數返回為OK或ERROR(有socket不能創建或不能進行連接)。

FTP文件傳輸的全部過程如圖3所示。

圖3 VxWorks下FTP文件傳輸過程

程序關鍵代碼如下:

/* initiate a transfer via a remote FTP server to read a remote file */

if(ERROR==ftpXfer(UNIX_HOST,USER,PASSWD,\"\",\"RETR %s\",W_DIR,FILE,ctrlSock,

dataSock))

{

perror(\"Error in initiating a transfer via a remote FTP server\");

return ERROR;

}

/* read the remote file data to buffer */

while((NumBytes=read(dataSock,buff,sizeof(buff)))>0)

{

buff+=NumBytes;

}

if(NumBytes<0)

{

perror (\"Error in reading\"); /* read error */

return (ERROR);

}

close(dataSock);

/* Get an FTP command reply to see whether EOF is encountered */

if(ftpReplyGet(ctrlSock,TRUE)!=FTP_COMPLETE)

{

perror (\"positive completion failed\");

return (ERROR);

}

/* Send QUIT FTP command */

if(ftpCommand(ctrlSock,\"QUIT\",0,0,0,0,0,0)!=FTP_COMPLETE)

{

perror (\"QUIT FTP command positive completion failed\");

return (ERROR);

}

close (ctrlSock);

3 分包文件傳輸協議的制定與實現

3.1 分包文件傳輸協議制定

通過本文前兩節的分析和應用,文件已經成功的從上位機下載到了系統控制器的內存當中,本節著重介紹如何從系統控制器的內存中將文件封裝成數據包分次傳送給DPSRAM,如何通知DSP將數據包取走,如何得到DSP的應答之后傳送下一個數據包,如何判斷數據包全部傳送完成等,簡而言之,就是分包文件傳輸協議的制定,圖4用流程圖的形式對整個過程進行了詳細的描述。

下面以數據包包含的信息要素為例介紹分包文件傳輸協議,每個數據包包含以下信息要素,如圖5所示。

系統控制器將數據包寫入DPSRAM之后,會發起DPSRAM左端口中斷,DSP檢測到中斷后從DPSRAM中取走數據包。

控制命令字的主要作用是告知DSP,此數據包數據空間中的數據是用于FLASH更新用的,需要將其寫入FLASH中。

數據包長度的主要作用是告知DSP即將要讀取的數據包中數據空間的長度,以便DSP將其寫入到FLASH對應的空間中。

圖4 分包文件傳送過程

圖5 數據包的信息要素

數據包序號的主要作用是告知DSP,此次傳輸的是第幾個數據包,防止傳輸過程中丟包。

數據寫入標記分為3種:根據數據包序號,如果傳輸的是第一個數據包,則表示數據包傳輸開始;如果傳輸的是中間的數據包,則表示數據包繼續傳輸;如果接收到的是最后一個數據包,則表示數據包傳輸完成。

CRC校驗和的主要作用是便于DSP比較數據傳輸之前的檢驗和與自己根據接收到的數據計算出來的校驗和是否一致,借此判斷數據傳輸過程中有無丟數現象發生。文件總的大小的主要作用是告知DSP需要擦除多大的FLASH空間用于存儲更新后的文件。

3.2 分包文件傳輸協議實現

協議的實現主要用到了以下幾個關鍵函數:

(1)數據包協議頭的封裝

UINT32 gfWriteLong(UINT32 x,UINT32 y)

{

*(UINT32*)x=y;

return y;

}

此函數用于封裝數據包協議頭,將數據包協議頭信息寫入相應的地址空間中。

(2)CRC校驗和算法[6]

本文采用一種按位計算的方法計算校驗和,和DSP計算出來的校驗和相比較,防止數 據傳輸過程中出現差錯,關鍵代碼如下:

UINT32 gfCRCCheckSum(char *ptr,unsigned long len)

{

unsigned char i;unsigned long crc=0;

while(len??!=0)

{

for(i=0x80;i!=0;i/=2)

{

if((crc0x8000)!=0)

{

crc*=2;

crc^=0x1021;

}

else

{

crc*=2;

}

if((*ptri)!=0)

{

crc^=0x1021;

}

}

ptr++;

}

return crc;

}

(3)應答機制

應答機制的作用是得到DSP接收完一個數據包之后反饋回來的信息(用數值表示),如為數據傳輸正確,則打印出提示提示語句后接著傳送下一個數據包;如為校驗和出錯,則說明數據包傳送過程中發生了丟數等現象,打印出語句后直接結束退出;如為FLASH更新完成,則說明所有數據包傳送完成,且正確的寫入到FLASH中了,打印出提示語句后直接結束退出;如為FLASH更新出錯,則說明所有數據包傳送完成,但沒有正確的寫入到FLASH中,打印出提示語句后直接結束退出。

關鍵代碼如下:

STATUS gfDSPACKCMD(int handle,UINT32 ACKAddress)

{

UINT32 ACKCMD;

ACKCMD=*(*ACKAddress);

switch(ACKCMD)

{

case DSP_ACK_OK:

printf(\"\nData Packet Send Success and Data Right!\n\n\");

break;

case ERROR_CHECKSUM:

printf(\"\nData packet CRC CheckSum ERROR!\n\");

break;

case FLASH_UPDATE_OK:

printf(\"\n\nFlash Data Updates Over!!!\n\");

break;

case ERROR_FLASH_DATA:

printf(\"\nFlash data write error!\n\");

break;

default:

printf(\"\nAcknowledge command word error!\n\");

break;

}

return OK;

}

4 實際應用

基于以上分析研究,編寫了相應的程序,并在數據采集系統中進行了多次試驗,試驗結果如表1所示,從試驗結果可以看出,本文所介紹的方法可以保證數據傳輸的準確性,滿足了DSP程序在線FLASH更新的需求。

表1 FLASH更新測試結果

5 結 論

本文結合實際項目開發過程中遇到的實際問題,概述了一種 VxWorks下簡單文件傳輸的原理和具體的軟件實現方法。實際應用證明,按照此種方式編寫的程序代碼簡單,實用,可以很好的進行文件數據分包傳輸。

參考文獻

[1] 李署東,吳昊,杜祝.VxWorks下點對點簡單文件傳輸的實現[J].中國水運,2011,11(1):84?87.

[2] 唐曉平.VxWorks在cPCI高速數據采集系統中的應用研究[D].長沙:國防科學技術大學,2008.

[3] 黃世權.FTP協議分析和安全研究[J].微計算機信息,2008,24(2?3):93?94.

[4] 馮先成,李寒,張鐵男.基于MPC850 VxWorks系統的BSP設計[J].計算機與數字工程,2012,40(6):39?43.

[5] Wind River Systems, Inc. VxWorks reference manual 5.3.1 [S]. California: Wind River Systems, Inc, 1998.

[6] 孫連科.用C語言實現CRC計算[J].電腦知識與技術,2009,5(18):5601?5602.

主站蜘蛛池模板: 亚洲精品无码AV电影在线播放| 美女无遮挡被啪啪到高潮免费| 日韩美毛片| 欧洲日本亚洲中文字幕| 欧美日韩国产综合视频在线观看| 欧美激情伊人| 国产美女一级毛片| 72种姿势欧美久久久久大黄蕉| 真实国产精品vr专区| 欧美日韩中文国产va另类| 国产乱子伦无码精品小说| 免费国产在线精品一区| 曰韩人妻一区二区三区| 美女高潮全身流白浆福利区| 国产尤物视频在线| 国产香蕉一区二区在线网站| 97久久免费视频| 91精品视频播放| 国产H片无码不卡在线视频| 91免费国产高清观看| 中文字幕无码中文字幕有码在线| 在线免费不卡视频| 国产精品女熟高潮视频| 日韩欧美高清视频| 欧美天堂在线| 久久综合色天堂av| 五月激情综合网| 亚洲中文字幕在线观看| 久久无码免费束人妻| 欧美精品影院| 四虎影院国产| 国产成年女人特黄特色毛片免 | 久久国产亚洲偷自| 91在线激情在线观看| 青草91视频免费观看| 亚洲久悠悠色悠在线播放| 亚洲AⅤ综合在线欧美一区| 伊人久久久久久久| 日本三级欧美三级| 性喷潮久久久久久久久| 久久免费观看视频| 一级黄色网站在线免费看| 91久久国产综合精品女同我| 最新国产午夜精品视频成人| 亚洲欧美自拍中文| 日韩精品一区二区深田咏美 | 国产精品美女在线| 久久久久青草线综合超碰| 亚洲中文字幕23页在线| 国产精品久久久精品三级| 久久久久88色偷偷| 97久久免费视频| 欧美啪啪网| 国产色伊人| 人妻丰满熟妇AV无码区| 国产剧情国内精品原创| 在线视频亚洲欧美| 在线国产毛片| 中文字幕有乳无码| 成人福利在线免费观看| 亚洲第七页| 日韩高清中文字幕| 色噜噜综合网| 国产免费看久久久| a亚洲天堂| 99在线视频网站| 一本色道久久88亚洲综合| 婷婷丁香色| 日韩 欧美 小说 综合网 另类| 免费av一区二区三区在线| 久久99久久无码毛片一区二区 | 成人在线不卡| 亚洲日韩高清在线亚洲专区| 欧美国产在线看| 内射人妻无套中出无码| 99手机在线视频| 精品91视频| 国产精品网址在线观看你懂的| 国产福利小视频在线播放观看| 欧美中文字幕第一页线路一| 久久久精品久久久久三级| 日韩一级二级三级|