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

當(dāng)前位置:首頁(yè) > 消費(fèi)電子 > 消費(fèi)電子
[導(dǎo)讀]1 引言英特爾公司于2003年底推出了性能最為強(qiáng)勁的PXA27x系列嵌入式處理器,PXA27x系列嵌入式處理器基于ARMv5E的Xscale核心,最高頻率可達(dá)624MHz.作為一款性能極其強(qiáng)勁的嵌入

1 引言

英特爾公司于2003年底推出了性能最為強(qiáng)勁的PXA27x系列嵌入式處理器,PXA27x系列嵌入式處理器基于ARMv5E的Xscale核心,最高頻率可達(dá)624MHz.作為一款性能極其強(qiáng)勁的嵌入式處理器,配合嵌入式Linux或Wince操作系統(tǒng),PXA270理論上可以支持任何媒體格式,并通過(guò)軟件升級(jí),支持未來(lái)媒體格式。它最初出現(xiàn)在PDA(比如惠普HP4700)和智能手機(jī)(如MOTO E680)上。因此它的擴(kuò)展接口相當(dāng)豐富,擴(kuò)展接口有SD/SDIO/MMC、CF/PCMCIA、CMOS/CCD CAMERA、藍(lán)牙、USB1.1、OTG等。

Socket接口是TCP/IP網(wǎng)絡(luò)的API,socket接口定義了許多函數(shù)或例程,程序員可以用它們來(lái)開(kāi)發(fā)TCP/IP網(wǎng)絡(luò)上的應(yīng)用程序。要學(xué)Internet上的TCP/IP網(wǎng)絡(luò)編程,必須理解Socket接口。Socket接口設(shè)計(jì)者最先是將接口放在Unix操作系統(tǒng)里面的。如果了解Unix系統(tǒng)的輸入和輸出的話,就很容易了解Socket了。網(wǎng)絡(luò)的Socket數(shù)據(jù)傳輸是一種特殊的I/O,Socket也是一種文件描述符。

2 系統(tǒng)設(shè)計(jì)

系統(tǒng)的設(shè)計(jì)分為服務(wù)器端和客戶(hù)端設(shè)計(jì)兩部分,服務(wù)器端為運(yùn)行Linux操作系統(tǒng)的PC機(jī),客戶(hù)端為PXA270系統(tǒng),在該系統(tǒng)中移植和構(gòu)建Linux嵌入式操作系統(tǒng),兩者通過(guò)Switch交換機(jī)進(jìn)行網(wǎng)絡(luò)通信。

2.1 系統(tǒng)工作原理

在Linux 操作系統(tǒng)中,Socket 屬于文件系統(tǒng)的一部分,網(wǎng)絡(luò)通信可以被看作是對(duì)文件的讀取。Linux 擁有POSIX 標(biāo)準(zhǔn)庫(kù)函數(shù),Socket()、Bind()、Sendto()、Recvfrom()等庫(kù)函數(shù)可以方便地實(shí)現(xiàn)客戶(hù)/ 服務(wù)器模型中數(shù)據(jù)的傳送與接收。系統(tǒng)設(shè)計(jì)主要的目的是完成服務(wù)器和客戶(hù)端網(wǎng)絡(luò)通信的實(shí)現(xiàn)。首先啟動(dòng)宿主機(jī)和客戶(hù)機(jī)的操作系統(tǒng)Linux,然后每個(gè)模塊加載網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序,最后通過(guò)TCP/IP協(xié)議建立雙方的通信鏈路,完成Socket通信,詳細(xì)情況如圖1所示。

2.2 嵌入式TCP/IP協(xié)議架構(gòu)

TCP/IP(TransmissionControlProtocol/InternetProtocol)的簡(jiǎn)寫(xiě),中文譯名為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,又叫網(wǎng)絡(luò)通訊協(xié)議,這個(gè)協(xié)議是Internet最基本的協(xié)議、Internet國(guó)際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),簡(jiǎn)單地說(shuō),就是由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成的。TCP/IP定義了電子設(shè)備(比如計(jì)算機(jī))如何連入因特網(wǎng),以及數(shù)據(jù)如何在它們之間傳輸?shù)臉?biāo)準(zhǔn)。TCP/IP是一個(gè)四層的分層體系結(jié)構(gòu)。高層為傳輸控制協(xié)議,它負(fù)責(zé)聚集信息或把文件拆分成更小的包。低層是網(wǎng)際協(xié)議,它處理每個(gè)包的地址部分,使這些包正確的到達(dá)目的地。

嵌入式系統(tǒng)作為T(mén)CP服務(wù)器,在三次握手建立連接的過(guò)程中,嵌入式系統(tǒng)作為監(jiān)聽(tīng)狀態(tài)的服務(wù)器,處于LISTEN狀態(tài),等待對(duì)方發(fā)起連接。當(dāng)它接收到SYN數(shù)據(jù)片,立即發(fā)出SYN+ACK的數(shù)據(jù)片確認(rèn)收到對(duì)方的SYN,此時(shí)變?yōu)镾YN_ RECEIVED狀態(tài)。再接收到對(duì)方返回的一個(gè)包含ACK的空數(shù)據(jù)片則三次握手完成,進(jìn)入ESTABLISHED狀態(tài),最后進(jìn)行TCP數(shù)據(jù)通訊。

 

 

圖1 系統(tǒng)的原理示意圖

嵌入式系統(tǒng)建立連接時(shí)初始化序列號(hào),然后根據(jù)對(duì)方發(fā)包中的值來(lái)確定序列號(hào),不記憶序列號(hào),不能識(shí)別重復(fù)報(bào)文。嵌入式服務(wù)器僅僅在服務(wù)器端響應(yīng)客戶(hù)端的請(qǐng)求,接收一個(gè)發(fā)送一個(gè)確認(rèn)回答,不考慮失序問(wèn)題。同時(shí)接收到TCP請(qǐng)求后,將存儲(chǔ)于發(fā)送緩沖區(qū)中的數(shù)據(jù)立即發(fā)送即可,只需一個(gè)數(shù)據(jù)包就能完成,也不需考慮失序問(wèn)題。

因?yàn)榍度胧较到y(tǒng)采用滑動(dòng)窗口為1的傳輸方式,即發(fā)送一次數(shù)據(jù)包就等待返回應(yīng)答,因此當(dāng)接收不到確認(rèn)包,就認(rèn)為自己發(fā)送的包丟失,直接發(fā)送上次發(fā)送的數(shù)據(jù)。TCP的連接中,當(dāng)客戶(hù)機(jī)異常導(dǎo)致連接崩潰時(shí),嵌入式系統(tǒng)發(fā)數(shù)據(jù)時(shí)會(huì)被回復(fù)復(fù)位信號(hào),回到初始狀態(tài)。嵌入式TCP/IP協(xié)議如圖2所示。

嵌入式系統(tǒng)是"控制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置"(devicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants)。從中可以看出嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機(jī)械等附屬裝置。目前國(guó)內(nèi)一個(gè)普遍被認(rèn)同的定義是:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。

3 客戶(hù)端/服務(wù)器端功能設(shè)計(jì)

在TCP/IP網(wǎng)絡(luò)中,通信的兩個(gè)進(jìn)程間相互作用的主要模式是客戶(hù)/服務(wù)器模式,即客戶(hù)端向服務(wù)器端發(fā)出服務(wù)請(qǐng)求,服務(wù)器接收到請(qǐng)求后,提供相應(yīng)的服務(wù)??蛻?hù)/服務(wù)器模式在操作過(guò)程中采取的是主動(dòng)請(qǐng)求方式。

 

 

圖2 嵌入式TCP/IP圖解

3.1 客戶(hù)端程序設(shè)計(jì)

socket是面向客戶(hù)/服務(wù)器模型而設(shè)計(jì)的,針對(duì)客戶(hù)和服務(wù)器程序提供不同的socket系統(tǒng)調(diào)用。客戶(hù)隨機(jī)申請(qǐng)一個(gè)socket(相當(dāng)于一個(gè)想打電話的人可以在任何一臺(tái)入網(wǎng)電話上撥號(hào)呼叫),系統(tǒng)為之分配一個(gè)socket號(hào);服務(wù)器擁有全局公認(rèn)的socket,任何客戶(hù)都可以向它發(fā)出連接請(qǐng)求和信息請(qǐng)求(相當(dāng)于一個(gè)被呼叫的電話擁有一個(gè)呼叫方知道的電話號(hào)碼)。

客戶(hù)端可以向服務(wù)器端發(fā)送連接請(qǐng)求,并且客戶(hù)端也可以接收到來(lái)自服務(wù)器端發(fā)送回來(lái)的數(shù)據(jù)??蛻?hù)端可以判斷當(dāng)前自己的工作狀態(tài),如連接的建立,啟動(dòng)的成功和數(shù)據(jù)包通信的個(gè)數(shù)等??蛻?hù)端程序設(shè)計(jì)主要按以下的步驟完成函數(shù)的調(diào)用:

①建立自己的Socket(并驗(yàn)證建立成功);

②啟動(dòng)連接(并驗(yàn)證建立成功);

③返回連接信息;

④接收收到的數(shù)據(jù);

⑤判斷數(shù)據(jù)的屬性。

客戶(hù)端程序設(shè)計(jì)的程序基本流程如圖3所示。

 

 

圖3 客戶(hù)端程序簡(jiǎn)單示意圖

客戶(hù)端打開(kāi)通信通道,并連接到服務(wù)器所在主機(jī)的特定端口,向服務(wù)器發(fā)送請(qǐng)求報(bào)文,等待并接收應(yīng)答,請(qǐng)求結(jié)束后關(guān)閉通信通道并終止通信??蛻?hù)端主要程序如下:

Int main(int argc,char *argv[])

if(argc!=3)

printf("error!!!please enter the remote IP and PORT please!!! the form like 192.168.0.* 4000\n");

mysocket=socket(AF_INET,SOCK_STREAM,0); //建立一個(gè)套接字

if(mysocket==-1)

printf("error!!! failed to created the new socket,program end here\n");

printf("OK-- you have successful created a socket named mysocket\n");

return(0); //socket 建立不成功,回初始位置

connectcheck=connect(mysocket,(struct sockaddr*)&addr_remote,sizeof(struct sockaddr));

//調(diào)用connect函數(shù)連接服務(wù)器端

if(connectcheck==-1)

printf("error!!!sorry you have failed to connect the remote server!!try again !program end here\n");

// connect不成功回初始位置

printf("OK-- Now you have successful connect the server,this server IP =%s,and it's PORT =%s,now you can communicat with this server!!!!!!!\n ",argv[1],argv[2])

//打印服務(wù)器IP地址和端口號(hào)

while(1)

bzero(gotbuffer,long);

number=recv(mysocket,gotbuffer,long,0);

//調(diào)用阻塞函數(shù)

if(number==-1)

printf("error!!! some thing wrong !let you can not got the data form server,program end here\n");

return(0);

gotbuffer[number]='\0';

close(mysocket);[!--empirenews.page--]

3.2 服務(wù)器端程序設(shè)計(jì)

服務(wù)器端可以快速的做出客戶(hù)端的連接請(qǐng)求反映,服務(wù)器端反映來(lái)自客戶(hù)端的連接參數(shù),如連接的IP、連接時(shí)間、連接的當(dāng)前狀態(tài)等。服務(wù)器啟動(dòng)后根據(jù)請(qǐng)求提供以下服務(wù):

①打開(kāi)通信通道并告知本地主機(jī),在某一公認(rèn)地址上接收客戶(hù)請(qǐng)求;

②等待客戶(hù)請(qǐng)求到達(dá)該端口;

③接收到重復(fù)服務(wù)請(qǐng)求,處理該請(qǐng)求并發(fā)送應(yīng)答信號(hào);

④返回第二步,等待另一客戶(hù)請(qǐng)求;

⑤關(guān)閉服務(wù)器。

服務(wù)器端程序設(shè)計(jì)的流程如圖4所示。

客戶(hù)端與服務(wù)器端進(jìn)程的作用是非對(duì)稱(chēng)的,因此編碼不同。同時(shí),服務(wù)器進(jìn)程一般是先于客戶(hù)請(qǐng)求請(qǐng)求而啟動(dòng)的,只要系統(tǒng)運(yùn)行,該服務(wù)進(jìn)程一直存在,直到正?;驈?qiáng)迫終止。服務(wù)器端主要程序如下:

mysocket=socket(AF_INET,SOCK_STREAM,0);

//建立新的套接字

if(mysocket==-1)

printf("error!!! failed to created mysocket\n");

return(0); //socket建立不成功,回初始位置

mybindcheck=bind(mysocket,(struct sockaddr*)&addr_local,sizeof(struct sockaddr));

if(mybindcheck==-1)

printf("error!!!failed to bind the IP and port with mysocket\n");

return(0);

 

 

圖4 服務(wù)器端程序簡(jiǎn)單示意圖

{ printf("OK--you have successed bind your IP with port %d\n",port);

listencheck=listen(mysocket,howmany);

if(listencheck==-1)

printf("error!!! you have failed listen this port,program end here\n");

return(0); //調(diào)用監(jiān)聽(tīng)函數(shù)

sin_size=sizeof(struct sockaddr_in);

newsocket=accept(mysocket,(struct sockaddr*)&addr_remote,&sin_size);

//調(diào)用接收函數(shù)

if(newsocket==-1)

printf("error!!!failed to got remote connect this server,program end here\n");

return(0); //建立新的socket失敗返回

printf("OK-- now have created the newsocket to use this own connection,use this communicate with clint%s\n",inet_ntoa(addr_remote.sin_addr),port);

printf("OK-- server have successed got connect from clint IP = %s,port = %d,now connecting is running;\n",inet_ntoa(addr_remote.sin_addr),port)

pid_t pid;

pid=fork(); //調(diào)用fork()建立子進(jìn)程

if(pid>0)

printf("OK-- i am a father procces,child proccess will continue for you,it's ID= %d,now end newsock and use old socket to listen again…… \n",pid);

close(newsocket);

printf("OK-- i am a child procces,i am responsible for this new communicate,blow i will do for connect\n");

printf("OK-- please enter your data which you want to send n");

while(1)

bzero(sendbuffer,long);

scanf("%s",sendbuffer);

sendcheck=send(newsocket,sendbuffer,strlen(sendbuffer),0); //發(fā)送數(shù)據(jù)

if(sendcheck==-1)

printf("error!!!failed to send to remote\n");

close(newsocket);

else

printf("OK--now you have send %d byte data to remote!!!pleases send again!!!!\n",sendcheck);

4 應(yīng)用與測(cè)試

 

 

圖5 數(shù)據(jù)發(fā)送驗(yàn)證客戶(hù)端

系統(tǒng)測(cè)試前,服務(wù)器端通過(guò)以太網(wǎng)和客戶(hù)端實(shí)現(xiàn)連接。客戶(hù)端構(gòu)建了linux嵌入式操作系統(tǒng),客戶(hù)端的程序通過(guò)嵌入式交叉編譯環(huán)境進(jìn)行調(diào)試。測(cè)試前應(yīng)保證網(wǎng)絡(luò)的順暢和串口的操作正常。

啟動(dòng)服務(wù)器端,運(yùn)行Linux操作系統(tǒng),并建立新的用戶(hù)終端,然后運(yùn)行服務(wù)器端socket通信程序。

啟動(dòng)客戶(hù)端,運(yùn)行Linux嵌入式操作系統(tǒng),配置IP地址為192.168.15.15,運(yùn)行客戶(hù)端socket通信程序。

服務(wù)器端和客戶(hù)端連接,在服務(wù)器端會(huì)有詳細(xì)的連接請(qǐng)求顯示出來(lái),如IP地址、服務(wù)器當(dāng)前狀態(tài),通信模式等。服務(wù)器開(kāi)始發(fā)送數(shù)據(jù),客戶(hù)端開(kāi)始接收來(lái)自服務(wù)器的數(shù)據(jù),驗(yàn)證是否正確。圖5為數(shù)據(jù)發(fā)送驗(yàn)證客戶(hù)端。

5 結(jié)論

通過(guò)在PXA270中增加嵌入式操作系統(tǒng)Linux的基礎(chǔ)上實(shí)現(xiàn)一個(gè)較為簡(jiǎn)單的網(wǎng)絡(luò)通信模塊,驗(yàn)證了嵌入式系統(tǒng)socket通行的可行性,實(shí)現(xiàn)嵌入式系統(tǒng)基于TCP/IP協(xié)議的網(wǎng)絡(luò)接入,針對(duì)各種智能設(shè)備如家用電器、工業(yè)控制裝置或儀器、安全監(jiān)控系統(tǒng)、汽車(chē)電子接入互聯(lián)網(wǎng)變得簡(jiǎn)單容易。

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

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉