基于HMS30C7202嵌入式系統的通信程序設計

發(fā)布時(shí)間:2010-12-21 20:15    發(fā)布者:conniede
關(guān)鍵詞: arm , HMS30C7202 , TCP , UDP
1 引言

嵌入式系統是繼IT網(wǎng)絡(luò )技術(shù)之后,又一個(gè)新的技術(shù)發(fā)展方向。由于嵌入式系統具有體積小,性能強,功耗低,可靠性高以及面向行業(yè)應用的突出特征,目前已經(jīng)廣泛的應用于軍事國防,消費電子,網(wǎng)絡(luò )通信,工業(yè)控制等各個(gè)領(lǐng)域。隨著(zhù)計算機技術(shù)與通信技術(shù)的發(fā)展,嵌入式系統的研究與開(kāi)發(fā)有著(zhù)越來(lái)越重要的實(shí)際意義,F階段Internet的普及,使市場(chǎng)對嵌入式設備的網(wǎng)絡(luò )功能和性能提出了更高的要求。8/16位單片機的速度和內存較難滿(mǎn)足嵌入式設備的網(wǎng)絡(luò )要求,因此32位RISC處理器越來(lái)越受到青睞。ARM公司自1990年正式成立以來(lái),在32位CPU開(kāi)發(fā)領(lǐng)域不斷取得突破,已經(jīng)處于業(yè)界領(lǐng)軍地位,加上其設計的芯核具有功耗低、成本低等顯著(zhù)優(yōu)點(diǎn),因此獲得眾多的半導體廠(chǎng)家和整機廠(chǎng)商的大力支持,在32位嵌入式應用領(lǐng)域獲得了巨大的成功。

嵌入式系統的網(wǎng)絡(luò )服務(wù)通信設備作為嵌入式系統重要的一個(gè)組成部分具有很強的實(shí)用性和研究?jì)r(jià)值,為遠程的控制和網(wǎng)內信息傳輸提供了一個(gè)很好的手段。本文基于A(yíng)RM720T內核的HMS30C7202嵌入式系統和Redhat9.0操作系統,對基于TCP/IP協(xié)議的嵌入式板機網(wǎng)絡(luò )通信程序的設計與開(kāi)發(fā)技術(shù)進(jìn)行了研究,實(shí)現了板機之間的通信,為以后網(wǎng)絡(luò )服務(wù)在實(shí)際環(huán)境中的應用打下了堅實(shí)的基礎。

2. HMS30C7202開(kāi)發(fā)板簡(jiǎn)介

HMS30C7202是32位高集成度低功耗微處理器,是由ARM720T內核和其他一些外圍接口器件組成,支持8K的數據與指令Cache,支持段式和頁(yè)式存儲的MMU,寫(xiě)緩沖器及AMBA接口。HMS30C7202采用0.25mm低功耗CMOS工藝片內電壓2.5V,I/O支持3.3V電壓,采用了256管腳QFP/BGA封裝。HMS30C7202片上資源十分豐富,具有極高的集成度,非常適用于嵌入式系統應用。主要應用于PDA,智能電話(huà),個(gè)人音頻設備等場(chǎng)合。芯片HMS30C7202支持的內外圍設備包括多通道DMA(直接存儲器存。,3個(gè)定時(shí)器和一個(gè)看門(mén)狗定時(shí)器,智能中斷控制器,存儲器控制器(如ROM,Flash,SRAM,SDRAM),電源管理單元LCD控制器,定時(shí)時(shí)鐘(32 .768kHz晶振),紅外通訊接口(支持SIR),4個(gè)串口(兼容16C550),PS2外部鍵盤(pán)/鼠標接口,2通道PWM接口,矩陣鍵盤(pán)控制接口(8*8),普通I/O口,MMC/SMC卡接口,2個(gè)CAN接口,USB接口,片內ADC接口模塊(可用于電池檢測,音頻輸入,觸摸屏),片內DAC接口模塊(8bit立體音頻輸出),3個(gè)PLL時(shí)鐘JTAG調試接口等。

網(wǎng)絡(luò )傳輸是現在最為重要的數據傳輸途徑之一,由于HMS30C7202本身并沒(méi)有以太網(wǎng)控制模塊,所以需要一個(gè)與之匹配的控制芯片,比如CS8900,CS8900是單芯片全雙工的以太網(wǎng)控制器,配合必要的數字和模擬電路合成了完整的以太網(wǎng)電路,其主要結構包括ISA總線(xiàn)接口,802.3MAC,buffer,串行EEPRCM接口和帶有10BABE—T和AUI模擬前端。HMS30C7202通過(guò)操作CS8900的控制寄存器和讀寫(xiě)CS8900的內部數據寄存器,實(shí)現網(wǎng)絡(luò )的鏈路層連接。


                                     (CS8900與開(kāi)發(fā)板連接示意圖)

3 . TCP/IP協(xié)議簡(jiǎn)介

TCP/IP協(xié)議是一組包括TCP (Transfer Controln Protocol)協(xié)議和IP(Internet Protocol)協(xié)議,UDP(User Datagram Protocol)協(xié)議、ICMP(Internet Control Message Protocol)協(xié)議和其他一些協(xié)議的協(xié)議組。

絕大多數的客戶(hù)-服務(wù)器應用程序都使用TCP或UDP

TCP(傳輸控制協(xié)議)以連接為基礎,也就是說(shuō)兩臺電腦必須先建立一個(gè)連接,然后才能傳輸數據。事實(shí)上,發(fā)送和接收的電腦必須一直互相通訊和聯(lián)系。

UDP(使用者數據報協(xié)議)它是一個(gè)無(wú)連接服務(wù),數據可以直接發(fā)送而不必在兩臺電腦之間建立一個(gè)網(wǎng)絡(luò )連接。它和有連接的TCP相比,占用帶寬少,但是你不知道你的數據是否真正到達了你的客戶(hù)端,而客戶(hù)端收到的數據也不知道是否還是原來(lái)的發(fā)送順序。
在此次程序的編寫(xiě)和調試過(guò)程中我們應用TCP協(xié)議。

4. 程序設計

此程序設計是自動(dòng)售貨機實(shí)現網(wǎng)絡(luò )化的重要基礎,是校園網(wǎng)絡(luò )化建設的組成部分之一,F階段高校內部自動(dòng)售貨機多為投幣消費模式,貨幣識別系統是實(shí)現此種消費模式的重要硬件設備,此設備成本高,穩定性差,制約了自動(dòng)售貨機的普及。通過(guò)在自動(dòng)售貨機中嵌入ARM,并實(shí)現嵌入式系統的網(wǎng)絡(luò )化,可以實(shí)現自動(dòng)售貨機的刷卡式消費,而且可以遠程查詢(xún)自動(dòng)售貨機的狀態(tài)信息,使管理者及時(shí)掌握自動(dòng)售貨機的狀態(tài)。所以此程序的設計實(shí)現具有很強的現實(shí)意義。

此程序設計是基于客戶(hù)機和服務(wù)器模式進(jìn)行的(如下圖)。服務(wù)器上建立套接字,綁定后用listen()函數監聽(tīng)綁定端口,通過(guò)accept()函數準備接收或發(fā)送信息?蛻(hù)端同樣建立套接字,但是不綁定端口,直接通過(guò)connect()函數與服務(wù)器建立連接,進(jìn)而發(fā)送或接受數據。


本文分別以ARM板為服務(wù)器端和客戶(hù)端來(lái)介紹具體程序。分別實(shí)現了兩種模式下的TCP通信。即:ARM板作為服務(wù)器端,PC機作為客戶(hù)端。ARM板作為客戶(hù)端,PC機作為服務(wù)器端。用以太網(wǎng)口連接,實(shí)現信息的通訊。

模式一

ARM板作為服務(wù)器端,PC機作為客戶(hù)端。按流程編寫(xiě)具體程序如下:

#define MYPORT 3490 //服務(wù)器監聽(tīng)的端口

#define BACKLOG 10 //能夠同時(shí)接受的連接數量

int sockfd,newfd; //在sockfd上進(jìn)行監聽(tīng),用newfd接受新的連接

struct sockaddr_in my_addr; //存放自己的地址信息

struct sockaddr_in their_addr; //存放連接者的地址信息

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

perror("socket");

exit(1);

} //建立套接字,判斷是否出錯,如果出錯,返回出錯信息

my_addr.sin_family = AF_INET; //主機字節順序

my_addr.sin_port = htons(MYPORT); //網(wǎng)絡(luò )字節順序

my_addr.sin_addr.s_addr = INADDR_ANY; //將本機IP自動(dòng)填充

bzero(&(my_addr.sin_zero),8); //結構其他部分清零

if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1)

{

perror("bind");

exit(1);

} //綁定本地IP地址和端口

if (listen(sockfd, BACKLOG) == -1)

{

perror("listen");

exit(1);

} //監聽(tīng)端口

while(1)

{

sin_size = sizeof(struct sockaddr_in);

if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size))

== -1) {

perror("accept");

continue;

} //返回新的套接字描述符,就是跟遠程計算機的連接,第一個(gè)套接字描述符仍然在機器原來(lái)的哪個(gè)端口listen()

if (!fork()) //建立子進(jìn)程處理連接

if (numbytes=(recv(new_fd, buf, maxdatasize,0)) == -1)

{

perror("recv");

exit(1);

} //接收客戶(hù)端發(fā)送的信息進(jìn)緩沖區

close(newfd); //關(guān)閉套接字

程序實(shí)現在A(yíng)RM板上監聽(tīng)3490端口,準備接收建立連接的遠程計算機送來(lái)的信息。

printf("Received: %s",buf);可以顯示緩沖區中遠程計算機送來(lái)的信息。

模式二

ARM板作為客戶(hù)端,PC機作為服務(wù)器端。按流程編寫(xiě)程序如下:

#define PORT 3490 //定義遠程端口信息

#define DEST_IP "210.43.8.21" //定義遠程計算機IP信息

struct sockaddr_in their_addr; //定義結構存放遠程計算機地址

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

perror("socket");

exit(1);

} //建立套接字

if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr))

== -1)

{

perror("connect");

exit(1);

} //連接遠程計算機

if ((send(sockfd, "hello,my world!\n", MAXDATASIZE, 0)) == -1)

{

perror("send");

exit(1);

} //向服務(wù)器發(fā)送數據

close(sockfd); //發(fā)送完成關(guān)閉套接字

程序實(shí)現了從ARM板通過(guò)3490端口連接遠程計算機,連接成功后發(fā)送數據。

此程序實(shí)現了板機之間的信息通訊,為自動(dòng)售貨機與服務(wù)器之間的通信打下了堅實(shí)基礎。為自動(dòng)售貨機的網(wǎng)絡(luò )化提供了一個(gè)可行的手段。

5.總結

TCP/IP協(xié)議已成為目前最為重要的以太網(wǎng)協(xié)議,TCP通信已經(jīng)成為嵌入式系統有線(xiàn)通信的主要方式。ARM板既可以作為客戶(hù)端也可以作為服務(wù)器端,這種通信方式應用廣泛,具有很高的研究?jì)r(jià)值。

本文作者創(chuàng )新點(diǎn)在于對基于TCP/IP協(xié)議的嵌入式板機網(wǎng)絡(luò )通信程序的設計與開(kāi)發(fā)技術(shù)進(jìn)行了研究,給出了基于TCP協(xié)議的板機通信程序的編寫(xiě)方法,實(shí)現了PC機與ARM板的通信。為以后基于網(wǎng)絡(luò )的嵌入式系統的應用和通訊程序開(kāi)發(fā)打下了堅實(shí)的基礎。
本文地址:http://selenalain.com/thread-47397-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页