新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 以太網控制器接□模塊的程序設計

        以太網控制器接□模塊的程序設計

        作者: 時間:2011-07-20 來源:網絡 收藏

        1.軟件開發流程   

        由于數據幀最大為1518字節,而單片機PIC 16F877的內存容量只有368字節,因此就要利用接 口控制器RTL8019AS內置的16KB的SRAM,用作接收緩收區,并且單片機PlC16F877僅傳輸和處理數據報的有用 部分。在接收處理時,不使用中斷方式,而采用輪詢(Polling)方式,其幀接收流程為圖1所示。

        圖1 幀接收流程圖   (1)流程說明。

        幀接收流程完成NIC初始化后,主程序始終等待是否有數據幀到達,當收到數據幀后,判別接收幀的類型 字段,如果是0806h,轉入ARP接收處理;如果是0800h就轉入IP接收處理。

        如果是發給自己的ARP請求,則生成ARP應答交鏈路層裝幀后發送,否則丟棄;若經判斷數據幀為發給自己 的P數據報,則將IP數據報交IP協議處理。

        在IP協議處理中要對ICMP和rap報文進行區分,交各自的協議處理。當rap或ICMP協議有數據需要發送時, 則通知P層,IP協議將待發數據進行封裝,然后交給鏈路層裝幀發送。對其他數據報沒有必要應答,仍然繼 續輪詢。

        接口控制器RTL8019AS的接收緩沖區大約有14KB,但實際上,數據是以256字節為上限(作為一幀) 寫入的,假設1頁中寫入1幀(256字節),最大的緩沖容量為58個幀。一旦發生緩沖區溢出,程序將對以太 網接口控制器RTL8019AS重置,這期間接收的數據幀將全部廢棄扔掉。一旦發生溢出,使用上層協議的超時等來保證其可靠性。

        (2)初始化過程。

        ①從內置E2PROM中將必要的數據拷貝至RAM中。在Remote LO畫面中,即使改變IP Address或Port號,如果不進行重置,其變更值不會生效。

        ②如果液晶顯示器的端口號不是0的話,將對液晶顯示器進行初始化。該過程大概需要數十毫秒的時間。

        ③對RTL8019AS的RSTDRV端進行RESET,大概需要數毫秒完成該動作。這期間,   RTL8019AS讀取93C46的CONFIG1ˉCONFIG4。

        ④PIC經8019AS從93C46中讀MAC地址。

        ⑤將MAC地址寫入8019AS內的寄存器中,8019AS的初始化完畢。

        ⑥檢查JP2,轉入普通模式或輔助程序模式。

        ⑦在普通模式的最初,判別是否有取P地址(IP=0.0.0.0)的必要,如果必要,在DHCP服務器中,使用廣播通信方式將DHCP協議中的DISCOVER信息送出。

        上述處理完后,進入幀接收處理狀態。

          初始化過程如圖2~圖7所示。

        圖2 將必要的數據拷貝到RAM   圖3 將8019重置,讀CONFIG寄存器   

        圖4 取MAC地址

        圖5 將MAC地址寫入PAR寄存器    圖6 檢查動作方式   圖7 如果是DHCP的話,發出DISCOVER   

        (3)協議處理程序。

        ①ARP協議處理。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 塘沽区| 康平县| 浏阳市| 腾冲县| 女性| 行唐县| 泸水县| 盐亭县| 偏关县| 应用必备| 喀什市| 保德县| 宜宾县| 通州区| 太仆寺旗| 渑池县| 含山县| 公安县| 常宁市| 修武县| 成都市| 自治县| 大竹县| 韶关市| 合川市| 卫辉市| 宜丰县| 瓦房店市| 莱州市| 巴林左旗| 南开区| 阆中市| 淳安县| 高邮市| 南靖县| 日土县| 玉环县| 武鸣县| 武安市| 郧西县| 雅安市|