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