嵌入式MICREL網(wǎng)卡驅動(dòng)設計
在網(wǎng)卡發(fā)送模式正確初始化后,即可進(jìn)行數據發(fā)送操作。首先用戶(hù)層發(fā)出發(fā)送數據的請求,然后該請求通過(guò)HEROS系統協(xié)議棧發(fā)給MICREL網(wǎng)卡驅動(dòng)層,最后發(fā)出數據。發(fā)送前要注意:
(1)此時(shí)該網(wǎng)卡沒(méi)有在接收數據包,否則會(huì )引起時(shí)序混亂,導致網(wǎng)卡最后失效,所以在發(fā)送的時(shí)候要去判斷信號量micrel_int_1_flag是否為0,如果為0,則可以發(fā)送,為1則表明此時(shí)正在接收數據包,不可以發(fā)送。
(2)發(fā)送長(cháng)度要以四個(gè)字節對齊。GET_4BYTES_AUGNMENT(uOrgPktLen,len);
實(shí)際發(fā)送長(cháng)度為len。
2.4 接收處理函數
Micrel網(wǎng)卡接收寄存器的初始化框圖如圖3所示。在網(wǎng)卡接收模式正確初始化后,即可進(jìn)行數據接收操作。首先用戶(hù)層發(fā)出接收數據的請求,然后該請求通過(guò)HEROS系統協(xié)議棧發(fā)給MICREL網(wǎng)卡驅動(dòng)層,最后接收數據。接收時(shí)需注意:
(1)首先要從幀頭中獲取幀長(cháng)度byte_count,最大為1518,并且必須把byte_count按4個(gè)字節對齊;
(2)其次要將Micrel芯片的接收中斷關(guān)閉,接收完畢后,再打開(kāi)接收中斷。
(3)注意幀開(kāi)始的2個(gè)字節和最后4個(gè)字節不要讀到接收緩沖區。
3 結束語(yǔ)
本文介紹了以HEROS為核心、KS8851作為網(wǎng)絡(luò )接口芯片的終端接口,通過(guò)TCP/IP協(xié)議棧與本文討論的網(wǎng)卡驅動(dòng),用ping ip地址命令可以得到ICMP reply響應。MICREL芯片具有性?xún)r(jià)比高、連接方便等特點(diǎn),是進(jìn)行嵌入式以太網(wǎng)終端設計時(shí)的主要控制芯片之一。
tcp/ip相關(guān)文章:tcp/ip是什么
評論