新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于Web的單片機遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

基于Web的單片機遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

作者: 時間:2012-05-24 來源:網(wǎng)絡(luò) 收藏

基于Web的單片機遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

圖4 軟件框圖

3.2 RTL8019 接收與發(fā)送數(shù)據(jù)

1.RTL8019 芯片初始化主要是將網(wǎng)卡設(shè)置成正常的模式,跟外部網(wǎng)絡(luò)連接。清除所有中斷標(biāo)志位,讓芯片開始工作。

2.對RTL8019 接收數(shù)據(jù)操作,有查詢和中斷兩種方式。因為的速度和PC 機相差太遠(yuǎn),而且還有一些采集任務(wù),本系統(tǒng)不采用中斷方式,用查詢方式。在查詢方式下,通過查詢CURR 和BNRY 兩個寄存器的值來判斷是否收到一幀數(shù)據(jù)。當(dāng)BNRY+1 與CURR不相等,說明接收緩沖區(qū)接收到了新的數(shù)據(jù)幀。圖5 為RTL8019 報頭格式,接收部分子程序如下:

UCHAR xdata * rcve_frame(void) //如收到有效數(shù)據(jù)包,返回收到的數(shù)據(jù),否則返回NULL

基于Web的單片機遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

圖5 RTL8019 報頭格式

3.數(shù)據(jù)的發(fā)送包含三個步驟:封裝數(shù)據(jù)包;通過遠(yuǎn)程DMA 將數(shù)據(jù)包送入RTL8019AS的數(shù)據(jù)發(fā)送緩沖區(qū);通過RTL8019 的本地DMA 將數(shù)據(jù)送入FIFO 進(jìn)行發(fā)送。具體過程如下:

(1)包在發(fā)送前應(yīng)該按規(guī)定的格式封裝好,格式如下圖6 所示:

基于Web的單片機遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

圖6 MAC 幀首部

(2)把上面的數(shù)據(jù)包通過遠(yuǎn)程DMA 寫入RTL8019AS 的數(shù)據(jù)發(fā)送緩沖區(qū);

(3)啟動本地DMA,把數(shù)據(jù)發(fā)送出去,數(shù)據(jù)包長度最小為60 字節(jié),最大1514 字節(jié)。

發(fā)送子程序為:void send_frame(UCHAR xdata * outbuf,UINT len)//發(fā)送一個數(shù)據(jù)包3.3 TCP/IP 協(xié)議棧的實現(xiàn)。

3.3.1 ARP 協(xié)議的實現(xiàn)

ARP 地址解析協(xié)議的本質(zhì)是完成網(wǎng)絡(luò)地址到物理地址的映射。物理地址有以太網(wǎng)和令牌環(huán)網(wǎng)兩種基本類型,網(wǎng)絡(luò)地址特指IP 地址。具體到以太網(wǎng),使用的是動態(tài)綁定轉(zhuǎn)換的方法,但是會遇到許多細(xì)節(jié)問題,例如減少廣播,ARP 包丟失,物理地址變更(更換網(wǎng)卡)、移動(移動設(shè)備到另一子網(wǎng))、消失(關(guān)機)等。一般是設(shè)置ARP 高速緩存,通過學(xué)習(xí)、老化、更新、溢出算法處理ARP 映射表來解決這些問題。整個ARP 處理過程,主要用5 個函數(shù)實現(xiàn)。

在實現(xiàn)網(wǎng)卡驅(qū)動程序后,所有ARP 處理操作就是填寫ARP 包。主要程序代碼編制如下:

(1)void init_arp(void)//完成ARP 表初始化,概括說就是ARP 表state 字段清0

(2)void arp_send(UCHAR * hwaddr,ULONG ipaddr,UCHAR msg_type)//完成ARP 請求

(3)void arp_rcve(UCHAR xdata * inbuf)// 完成響應(yīng)操作

(4)UCHAR xdata * arp_resolve(ULONG dest_ipaddr) //完成從cache 里面查找對應(yīng)//IP 地址的物理地址,如果沒有,就發(fā)送ARP 請求

3.3.2 IP 協(xié)議的實現(xiàn)

網(wǎng)際協(xié)議 IP 是TCP/IP 協(xié)議族中最為核心的協(xié)議,它的主要功能是負(fù)責(zé)把數(shù)據(jù)交付給主機,當(dāng)目標(biāo)主機與原主機處于不同的物理網(wǎng)絡(luò)中時,IP 負(fù)責(zé)把數(shù)據(jù)包路由到相應(yīng)的目標(biāo)網(wǎng)絡(luò)上。Internet 上所有的數(shù)據(jù)都以IP 數(shù)據(jù)包格式傳輸。IP 協(xié)議最大的特點是提供不可靠的和無連接的數(shù)據(jù)包傳送服務(wù)。IP 協(xié)議主要實現(xiàn)以下兩個子程序:

(1) void ip_send(UCHAR xdata*outbuf,ULONG ipaddr, UCHAR proto_ id,DINT len)//發(fā)送IP 數(shù)據(jù);該子程序用來創(chuàng)建一個發(fā)送數(shù)據(jù)報。

(2) void ip_rcve(UCHAR xdata *inbuf) //接收IP 數(shù)據(jù);該子程序檢測一個外來數(shù)據(jù)包,并對數(shù)據(jù)包作相應(yīng)的處理。

單片機相關(guān)文章:單片機教程


單片機相關(guān)文章:單片機視頻教程


單片機相關(guān)文章:單片機工作原理




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉