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