基于S3C4480X的嵌入式以太網(wǎng)接口設計
5驅動(dòng)程序設計
本文引用地址:http://dyxdggzs.com/article/266271.htm5.1程序設計思路
在本設計方案中,驅動(dòng)程序主要包含3個(gè)函數,即系統的初始化函數、接收數據包函數、發(fā)送數據包函數。 初始化部分完成RTL8019AS在使用之前的初始化工作,包括設置相關(guān)工作模式的寄存器、分配和初始化接收和發(fā)送緩沖區、初始化網(wǎng)卡接收地址等。

MAR0-MAR7-多點(diǎn)地址寄存器:這8個(gè)寄存器的值是根據多播地址數組的值生成的,提供對多播地址的過(guò)濾,過(guò)濾掉一些不屬于自己接收多播數據包。
這里均設為FFH,接所有多播地址的數據包:

下面6條語(yǔ)句設置MAC地址,寄存器為PAR0~PAR5:實(shí)際地址寄存器,這些寄存用來(lái)對目標地址數據包進(jìn)行比較,以確定接收或者拒絕接收。地址放在數組add[6]中。

5.2數據的傳輸和發(fā)送
數據的傳輸和發(fā)送由本地DMA傳輸和與遠程DMA傳輸兩部分完成,前者大部分工作由RTL8019AS自動(dòng)完成,我們要做的是設置收發(fā)緩沖區的大小及指針變量,這些工作在RTL8019AS的初始化時(shí)已完成,因此只需要編寫(xiě)遠程DMA讀寫(xiě)函數。對遠端DAM口的讀寫(xiě),不同的只是數據傳輸方向,這里,僅以讀操作為例,即編寫(xiě)從RTL8019AS接收緩沖區取數據包到S3C4480X。(注意:遠程DMA的寫(xiě)函數,即向RTL8019AS發(fā)送緩沖區寫(xiě)數據函數--send_data()省略。)

5.3以太網(wǎng)接口通信函數流程
這里采用中斷和查詢(xún)相結合的方式來(lái)決定是否發(fā)送和接收數據。當RTL8019AS的ISR(中斷狀態(tài)寄存器)的任意一中斷位置位時(shí),S3C4B0X都要對其進(jìn)行中斷相應(在這里只關(guān)注第0中斷位和第1中斷位,即分別反映RTL8019AS已正確接收到數據和已成功發(fā)送數據包,因此在初始化函數中將其他位屏蔽)。這時(shí)要對ISR進(jìn)行訪(fǎng)問(wèn),來(lái)判斷是何種中斷,進(jìn)而作出相應的響應,如圖4所示。

6結束語(yǔ)
本設計經(jīng)過(guò)軟硬件的調試,并已成功地進(jìn)行以太網(wǎng)數據傳輸。由于S3C4480X出眾的性?xún)r(jià)比及豐富的外圍接口,通過(guò)擴展本設計可以應用到嵌入式儀器儀表、工業(yè)數據采集網(wǎng)絡(luò )、嵌入式網(wǎng)絡(luò )控制等許多領(lǐng)域。
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
脈寬調制相關(guān)文章:脈寬調制原理 鎖相環(huán)相關(guān)文章:鎖相環(huán)原理
評論