www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于S3C44B0X+μcLinux的嵌入式以太網(wǎng)設計與分析

  隨著半導體技術的飛速發(fā)展,嵌入式產(chǎn)品已經(jīng)廣泛應用于軍事、消費電子、網(wǎng)絡通信、工業(yè)控制等各個領域,網(wǎng)絡化是嵌入式系統(tǒng)發(fā)展的必然趨勢。嵌入式Linux 作為具有開放的源代碼、優(yōu)秀的網(wǎng)絡性能、可裁減等諸多優(yōu)點的操作系統(tǒng),非常適合用于具有網(wǎng)絡功能的嵌入式系統(tǒng)。本文介紹了以S3C44B0X 的ARM處理器和RTL8019AS 以太網(wǎng)控制器為基礎的網(wǎng)絡接口設計,并闡述了怎樣在嵌入式操作系統(tǒng)μcLinux 下實現(xiàn)對網(wǎng)卡的驅(qū)動。

  S3C44B0X 處理器介紹

  ARM是業(yè)界著名的芯片設計IP 供應商,其32 位RISC 微處理器占據(jù)了全球80%以上的市場份額。ARM7 系列處理器也是目前市場上最成熟、應用最廣的處理器。SAMSUNG 公司推出的S3C44B0X 就是以ARM7TDMI 為內(nèi)核的一款16/32 位RISC 處理器。它采用0.25μm CMOS 工藝制造,為手持設備和一般應用提供了高性價比和高性能的微處理器解決方案。S3C44B0X 通過提供全面的、通用的片上外設,大大減少了外圍的元器件配置,從而使系統(tǒng)成本大為降低。S3C44B0X 芯片的內(nèi)部結構如圖1 所示。

網(wǎng)絡接口的電路設計

  在介紹電路設計之前,先簡要介紹一下網(wǎng)絡控制器RTL8019AS 的情況。RTL8019AS 是臺灣REALTEK公司生產(chǎn)的一款性價比很高的、帶有即插即用功能的全雙工以太網(wǎng)控制器。它內(nèi)部集成了兩塊RAM,一塊16KB,地址為0x4000~0x7FFF;一塊32 字節(jié),地址為0x0000~0x001F。16K 的RAM用作收發(fā)數(shù)據(jù)的緩沖區(qū),一般將0x4000~0x46FF 作為發(fā)送緩沖區(qū),0x4700~0x7FFF 作為接收緩沖區(qū)。圖2 是針對S3C44B0X,用RTL8019AS、74LV138(3- 8 譯碼器)、FB2022(網(wǎng)卡變壓器)設計的以太網(wǎng)接口電路。

  該電路數(shù)據(jù)寬度為16 位,使用外部中斷EXINT3。處理器的片選信號nGCS1 和A16、A17、A18 通過74LV138 輸出為網(wǎng)卡的使能控制端。nOE 和nWE控制網(wǎng)卡的讀寫,nRESET 控制網(wǎng)卡的復位,F(xiàn)B2022起變壓濾波的作用。


  μcLinux 操作系統(tǒng)和網(wǎng)絡驅(qū)動開發(fā)介紹

  本系統(tǒng)為什么要選擇μcLinux

  Linux以其開放的源代碼、強大的網(wǎng)絡功能等諸多優(yōu)點而成為當今流行的操作系統(tǒng)之一。μcLinux 從Linux 內(nèi)核派生而來,沿襲了Linux 的大部分特性,專門針對沒有MMU(存儲器管理單元)的CPU,并且為嵌入式系統(tǒng)做了很多小型化工作,它內(nèi)核小,但功能強大,系統(tǒng)健壯,并且具有廣泛的硬件支持特性,是一個優(yōu)秀的嵌入式操作系統(tǒng)。S3C44B0X 正是一款沒有MMU 的處理器,所以在該系統(tǒng)中,操作系統(tǒng)選擇μcLinux 是非常合適的。

  μcLinux 下網(wǎng)絡驅(qū)動開發(fā)簡介

  μcLinux 和Linux 下驅(qū)動的實現(xiàn)過程基本相同。linux 將所有的設備看作具體的文件,通過文件系統(tǒng)層對設備進行訪問。所以在linux/uclinux 的框架結構中,和設備相關的處理可以分為兩個層次— —文件系統(tǒng)層和設備驅(qū)動層。設備驅(qū)動層屏蔽具體設備的細節(jié),文件系統(tǒng)層則向用戶提供一組統(tǒng)一的規(guī)范的用戶接口。這種設備管理方法可以很好的做到“設備無關性”,使linux/uclinux 可以根據(jù)硬件外設的發(fā)展進行方便的擴展,比如要實現(xiàn)一個設備驅(qū)動程序,只要根據(jù)具體的硬件特性向文件系統(tǒng)提供一組訪問接口即可。整個設備管理子系統(tǒng)的結構如圖3 所示。

  在Linux/μclinux 中,整個網(wǎng)絡接口驅(qū)動程序的框架可分為四層,從上到下分別為協(xié)議接口層、網(wǎng)絡設備接口層、提供實際功能的設備驅(qū)動功能層、以及網(wǎng)絡設備和網(wǎng)絡媒介層。這個框架在內(nèi)核網(wǎng)絡模塊中已經(jīng)搭建好了,我們在設計網(wǎng)絡驅(qū)動程序時,要做的主要工作就是根據(jù)上層網(wǎng)絡設備接口層定義的net_device結構和底層具體的硬件特性,完成設備驅(qū)動的功能。在網(wǎng)絡驅(qū)動程序部分主要有兩個數(shù)據(jù)結構,一個是sk_buff,TCP/IP 中不同協(xié)議層間以及和網(wǎng)絡驅(qū)動程序之間數(shù)據(jù)包的傳遞都是通過這個結構體來完成的,這個結構體主要包括傳輸層、網(wǎng)絡層、連接層需要的變量,決定數(shù)據(jù)區(qū)位置和大小的指針,以及發(fā)送接收數(shù)據(jù)包所用到的具體設備信息等。它的詳細定義可參閱內(nèi)核源代碼。

  另一個就是net_device 結構,它的定義在中。這個結構是網(wǎng)絡驅(qū)動程序的核心,它定義了很多供系統(tǒng)訪問和協(xié)議層調(diào)用的設備標準的方法,包括供設備初始化和往系統(tǒng)注冊用的init 函數(shù),打開和關閉網(wǎng)絡設備的open 和stop 函數(shù),處理數(shù)據(jù)包發(fā)送的函數(shù)hard_start_xmit,以及中斷處理函數(shù)等,接口狀態(tài)統(tǒng)計函數(shù)等。

RTL8019AS 驅(qū)動程序的實現(xiàn)[!--empirenews.page--]

  嵌入式系統(tǒng)開發(fā)中,設備驅(qū)動的編寫會占用很大的工作量。下面詳細介紹在本系統(tǒng)中網(wǎng)卡驅(qū)動程序設計的步驟。

  * 初始化函數(shù)

  static int RTL8019_init(struct net_device *dev)

  {

  調(diào)用ether_setup (dev) 函數(shù)設置通用的以太網(wǎng)接口;

  填充net_device 數(shù)據(jù)結構的屬性字段;

  調(diào)用kmalloc 申請需要的內(nèi)存空間;

  手動設置MAC 地址;

  }

  * 設備打開與關閉函數(shù)

  static int RTL8019_open(struct net_device *dev)

  {

  關閉中斷;

  注冊中斷號和I/O 地址;

  初始化設備的寄存器;

  使能中斷;

  }

  設備關閉函數(shù)與打開函數(shù)的動作相反。

  * 數(shù)據(jù)包發(fā)送函數(shù)

  static int RTL8019_sendpacket(struct sk_buff *skb,

  struct net_device *dev)

  {

  將標志位tbusy 打開;

  將數(shù)據(jù)包寫入RTL8019 的發(fā)送緩沖區(qū),啟動DMA 發(fā)送功能;

  釋放緩沖區(qū);

  }

  * 數(shù)據(jù)包接收函數(shù)

  static int RTL8019_rx( int irq, void *dev_id, structpt_regs *regs)

  {

  申請skb 緩存區(qū)存儲新的數(shù)據(jù)包;

  從硬件中讀取新到達的數(shù)據(jù);

  調(diào)用函數(shù)netif_rx(),將新的數(shù)據(jù)包向網(wǎng)絡協(xié)議的上一層傳送;

  }


  最后,將驅(qū)動程序編譯進內(nèi)核,由于μcLinux 不支持模塊動態(tài)加載,因此必須使用靜態(tài)編譯的方法。如果一切正常的話,使用ifconfig、route add 命令設置IP地址和子網(wǎng)掩碼,網(wǎng)卡就能正常工作了。

  結束語

  RTL8019AS 以太網(wǎng)控制器以其優(yōu)良的性能在嵌入式系統(tǒng)中得到了廣泛的應用,而μcLinux行通信和交換數(shù)據(jù)。試驗表明,用HPI 接口在C5416和S3C4510B 間通信滿足嵌入式系統(tǒng)的實時性要求。

 

 
 
 

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

摘 要:從硬件與軟件方面介紹了基于PXI技術的1553B總線通訊模塊的設計,并對PXI總線接口設計、驅(qū)動程序的開發(fā)、 SDRAM存儲器的控制和1553B總線通信協(xié)議實現(xiàn)等關鍵技術進行了詳細的闡述,為航空領域測控系統(tǒng)開發(fā)P...

關鍵字: PXI技術 驅(qū)動程序 SDRAM存儲器 1553B總線

PnP全稱Plug-and-Play,譯文為即插即用。PnP的作用是自動配置低層計算機中的板卡和其他設備,然后告訴對應設備都做了什么。PnP的任務是把物理設備和軟件設備驅(qū)動程序相配合,并操作設備,在每個設備和它的驅(qū)動程序...

關鍵字: PnP 驅(qū)動程序 操作設備

作?者:道哥,10年嵌入式開發(fā)老兵,專注于:C/C、嵌入式、Linux。關注下方公眾號,回復【書籍】,獲取Linux、嵌入式領域經(jīng)典書籍;回復【PDF】,獲取所有原創(chuàng)文章(PDF格式)。目錄kill命令和信號使用kill...

關鍵字: 信號 應用程序 驅(qū)動程序

驅(qū)動程序本質(zhì)上是軟件代碼,主要作用是計算機系統(tǒng)與硬件設備之間完成數(shù)據(jù)傳送的功能,只有借助驅(qū)動程序,兩者才能通信并完成特定的功能。

關鍵字: 驅(qū)動程序 硬件設備 UNIX

驅(qū)動程序(Device Driver)全稱為“設備驅(qū)動程序”,是一種可以使計算機和設備通信的特殊程序,可以說相當于硬件的接口,操作系統(tǒng)只能通過這個接口,才能控制硬件設備的工作,假如某設備的驅(qū)動程序未能正確安裝,便不能正常...

關鍵字: 驅(qū)動程序 聲卡 設備

作?者:道哥,10年嵌入式開發(fā)老兵,專注于:C/C、嵌入式、Linux。關注下方公眾號,回復【書籍】,獲取Linux、嵌入式領域經(jīng)典書籍;回復【PDF】,獲取所有原創(chuàng)文章(PDF格式)。目錄API函數(shù)編寫驅(qū)動程序編寫應用...

關鍵字: 編寫 驅(qū)動程序 字符設備驅(qū)動

作?者:道哥,10年嵌入式開發(fā)老兵,專注于:C/C、嵌入式、Linux。關注下方公眾號,回復【書籍】,獲取Linux、嵌入式領域經(jīng)典書籍;回復【PDF】,獲取所有原創(chuàng)文章(PDF格式)。目錄示例程序目標編寫驅(qū)動程序編寫應...

關鍵字: GPIO 編寫 驅(qū)動程序

打印機 在我們的辦公區(qū)域?qū)嵱眯允欠浅姷?,不僅可以提高辦公的效率,而且還能節(jié)省用戶時間,是一款非常不錯的辦公小助手。長時間使用, 打印機驅(qū)動程序無法使用 ,怎么回事呢?用戶一定要做出詳細了解,是否需要重新安裝,下面我們一...

關鍵字: 驅(qū)動程序 打印機驅(qū)動

作?者:道哥,10年嵌入式開發(fā)老兵,專注于:C/C、嵌入式、Linux。關注下方公眾號,回復【書籍】,獲取Linux、嵌入式領域經(jīng)典書籍;回復【PDF】,獲取所有原創(chuàng)文章(PDF格式)。目錄混亂的API函數(shù)舊的API函數(shù)...

關鍵字: 驅(qū)動程序 字符設備驅(qū)動

作?者:道哥,10年嵌入式開發(fā)老兵,專注于:C/C、嵌入式、Linux。關注下方公眾號,回復【書籍】,獲取Linux、嵌入式領域經(jīng)典書籍;回復【PDF】,獲取所有原創(chuàng)文章(PDF格式)。目錄學習的困惑實踐環(huán)境編譯進內(nèi)核編...

關鍵字: 內(nèi)核 編譯 驅(qū)動程序

嵌入式軟件

15715 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉