基于AVR高性能單片機(jī)的以太網(wǎng)接口設(shè)計(jì)
2 系統(tǒng)軟件實(shí)現(xiàn)
2.1 RTL8019AS地址空間與寄存器
RTL8019AS內(nèi)部的16 KB的RAM用于收發(fā)緩沖,地址為Ox4000~0x7FFF,收發(fā)緩沖以頁(yè)為單位,每頁(yè)256 B,共64頁(yè),如果某頁(yè)沒(méi)有完全填滿數(shù)據(jù),則下包數(shù)據(jù)也不能繼續(xù)使用該頁(yè),只能使用新的頁(yè)。一般將前12頁(yè)作為發(fā)送緩沖區(qū),分為兩個(gè)6頁(yè)的緩沖區(qū)(因?yàn)橐粋€(gè)最大數(shù)據(jù)包占6頁(yè)),兩個(gè)發(fā)送緩沖區(qū)交替使用,可提高發(fā)送效率,后52頁(yè)作為接收緩沖區(qū)。該RAM是雙端口的,具有兩套總線,一套是RTL8019AS讀寫該RAM,即本地DMA;另一套是單片機(jī)讀寫該RAM,即遠(yuǎn)程DMA,要接收和發(fā)送數(shù)據(jù)包就必須對(duì)這塊RAM進(jìn)行DMA讀寫。
RTL8019AS具有32位I/O地址,地址偏移量為00H~1FH,本系統(tǒng)中對(duì)應(yīng)于300H~31FH,其中,00H~0FH為16個(gè)寄存器地址,寄存器分為4頁(yè),與NE2000兼容的只有前3頁(yè),第4頁(yè)是RTL8019AS自己定義的,對(duì)于其他兼容NE2000的芯片無(wú)效,所以為了保證驅(qū)動(dòng)程序?qū)λ蠳E2000兼容的網(wǎng)卡都有效,不要去操作第4頁(yè)的寄存器。10H~17H為8個(gè)遠(yuǎn)程DMA地址,都可以用來(lái)做遠(yuǎn)程DMA地址,使用其中一個(gè)即可,微控制器通過(guò)讀寫數(shù)據(jù)端口10H~17H實(shí)現(xiàn)對(duì)緩沖區(qū)的訪問(wèn)。18H~1FH共8個(gè)地址為復(fù)位端口,它們功能一樣,使用其中一個(gè)即可,用于RTL8019AS的熱復(fù)位。
2.2 嵌入式TCp/IP實(shí)現(xiàn)
TCP/IP協(xié)議族是一組不同層次上的多個(gè)協(xié)議的組合,分為鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。對(duì)于8位單片機(jī)來(lái)說(shuō),由于其處理速度和存儲(chǔ)能力的問(wèn)題,要實(shí)現(xiàn)完整的TCP/IP協(xié)議棧是比較困難的,因此要根據(jù)其特點(diǎn)及自己的需求,對(duì)協(xié)議進(jìn)行裁剪,保留其核心部分。該系統(tǒng)只實(shí)現(xiàn)了ARP,IP,ICMP,UDP,TCP協(xié)議,采用C語(yǔ)言編寫。
在鏈路層上,首先要解決RTL8019AS的驅(qū)動(dòng)問(wèn)題,驅(qū)動(dòng)程序包括三部分:以太網(wǎng)接口芯片初始化程序、發(fā)送數(shù)據(jù)程序和接收數(shù)據(jù)程序,它們屏蔽了底層硬件處理細(xì)節(jié),同時(shí)向上層軟件提供與硬件無(wú)關(guān)的接口。驅(qū)動(dòng)程序?qū)⒁逊庋b好的待發(fā)送數(shù)據(jù)按指定格式寫入芯片并啟動(dòng)發(fā)送命令,8019會(huì)自動(dòng)把數(shù)據(jù)包轉(zhuǎn)換成物理幀格式在信道上傳輸;反之,8019收到物理信號(hào)后將其還原成數(shù)據(jù),按指定格式存放在芯片RAM中以便主機(jī)程序取用,下面給出部分初始化程序,主要是對(duì)一些寄存器進(jìn)行設(shè)置,其中,reg00~regof為宏定義,代表RTL8019AS內(nèi)地址偏移量為00H~0FH的寄存器地址。
低通濾波器相關(guān)文章:低通濾波器原理
雙絞線傳輸器相關(guān)文章:雙絞線傳輸器原理
評(píng)論