<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    基于ARM9的VxWorks增強型網絡驅動設計

    發布時間:2010-4-7 21:46    發布者:我芯依舊
    關鍵詞: VxWorks , 驅動 , 設計 , 網絡 , 增強型
    VxWorks是美國風河公司(Wind River)推出的具備網絡功能的實時嵌入式操作系統。VxWorks以其良好的可靠性和卓越的實時性被廣泛應用于航海、軍事、航窄、通信等高精尖技術及實時性要求極高的領域中。vxWorks在各種CPU平臺上提供了統一的編程接口和一致的運行特性,盡可能屏蔽不同CPU之間的底層差異。所以,VxWorks可以方便地移植到不同的CPU平臺上,如ARM、PowerPC、x86等。

    增強犁網絡驅動(Enhanced Network Driver,END)是一個使用MUX(多路復用)功能來與網絡協議進行通信的數據鏈路層驅動。本文主要研究基于sumsang公司S3C2410A處理器的網絡硬件環境下VxWorks嵌入式操作系統增強型網絡驅動程序的構建和編寫。

    1 S3C2410A的網絡硬件平臺

    S3C2410A微處理器是sumsang半導體公司為手持設備等相關應用設計的一款低功耗、高集成度的處理器,包含一個ARM920T芯片。S3C2419A內嵌的CS8900A作為主控芯片的以太網模塊,是一款低成本的以太局域網控制器,包含片上RAM、10Base-T傳輸和接收濾波器,以及帶24mA驅動的直接ISA總線接口,還集成了一個10Mbps的以太網收發器.以及所有用于和局域網通信的模擬及數字電路,通過一個電磁隔離器E2023直接和局域網相連。RJ45為網絡接頭,可連接10M/100M的網絡集線器。CS8900A工作在全艤工模式下.支持包括用于流控的暫停操作的IEEE802.3MAC控制層協議。其硬件原理圖如圖1所示。

    2 增強型網絡驅動END

    VxWorks支持兩種模式的網絡設備驅動程序,即BSD 4.3網絡驅動程序和可裁剪的增強型網絡設備驅動SENS。SENS(Sealable Enhanced Network Stack)是由BSD 4.3 TCP/IP網絡協議棧發展而來的,并包含了許多原協議棧沒有的協議。而且SENS在實現新的協議時增加了一些新特性,如在IP協議實現時增加了多播功能。為實現網絡接口程序可替換,WindRiver專為SENS設計了一種增強的網絡驅動程序END。SENS模型包含3個部分:協議驅動程序、多路復用接口(MUX)和增強的網絡驅動(END)。在驅動程序和上層協議之間,SENS模型提供了協議驅動層。在協議驅動層和END驅動層之間,SENS模型提供了MUX層,使其直接與END驅動程序進行交互。它們之間的結構關系如圖2所示。


    圖1 CS8900A硬件原理圖


    圖2 網絡協議棧結構圖

    在BSD 4.3模型下,VxWorks網絡驅動程序與協議緊密結合,它們依賴于彼此的數據結構;而在基于MUX模型下,網絡驅動程序和協議之間沒有內部交換數據,它們只通過MUX間接相互作用。MUX接口的作用便是分解網絡驅動程序和協議,使它們幾乎獨立。這種獨立使得添加新的驅動程序和協議變得非常簡單。

    3 END網絡驅動程序的裝載和啟動

    在基于S3C2410A的VxWorks BSP設計中,configNet.h文件定義了一個END_TBL_ENTRY結構的數組endDevTbl[],該數組將網絡設備驅動程序的裝載函數cs8900EndLoad()入口點及相關參數添加到網絡設備表endDevTbl[]中。endDevTbl[]數組描述了系統所有網絡設備的裝載入口點及其相關參數.其中的一個參數CS_LOAD_STRING進行資源字符串的初始化工作。資源字符串的描述和加載程序的處理有關,需要包含網卡基地址、中斷向量號、中斷號、偏移、配置值、MAC地址等。不同網卡的資源字符串有所不同,而且排列順序也沒有硬性的規定,只要提供的數據能滿足endLoad()的需要即可。

    在使用編寫好的vxworks BSP引導操作系統時,系統將執行usrRoot()函數來實現以下功能:首先初始化網絡任務的工作隊列,然后調用tNetTask()任務來處理網絡任務工作隊列中的任務。tNetTask()通過調用muxDevLoad()來裝載網絡接口驅動,在tNetTask()中已經定義了網絡驅動設備的endLoad()接入點,muxDevLoad()也要執行endLoad()。endLoad()執行設備初始化并返回一個名為END_OBJ的結構體。MUX在END_OBJ上加一個指針,指向能夠將數據包向MUX上層發送的函數。然后MUX把返同的END_OBJ加入到END_OBJ結構鏈表中。當從muxDevLoad()返回后,網絡設備就準備好可以使用了。設備裝載完成后,muxDevload()調用muxDevStart()啟動函數,該函數通過intConnect()和intEnable()實現中斷服務的注冊并打開中斷宏。當有數據交換時,打開中斷服務程序,調用排列網絡任務處理函數netJobAdd(),指派網絡系統任務tNeflask(),由tNetTask()數據接收和發送任務。其網絡設備的驅動程序安裝順序如圖3
    所示。


    圖3 END加載順序圖

    在VxWorks中添加END網絡驅動,需要在文件config.h中添加#define INCLUDEEE_NETWORK和#define INCLUDE_END。在configNet.h中添加END驅動的入口函數#define LOAD_FUNC_0 cs8900aLoad和一些相關的初始化字符串。這樣就會在生成的BSP中包含END/MUX。

    調試時,配置Tomado的目標服務器(Target Server),通過選擇Tools->Target Server->Configure來啟動目標服務器的配置程序.選擇wbdrpc后臺,選中Add description to menu,根據BSP中的配置填寫IP地址。

    4 END驅動程序相關函數的設計

    END網絡驅動程序相關處理函數的設計是網絡驅動和管理的關鍵部分,它包括ioctl、收/發處理、中斷處理函數和網絡驅動程序函數。

    (1) ioctl函數的編寫

    ioctl函數主要完成網卡的啟動和停止,以及MAC地址的設置等,由文件cs8900aEnd.c中的es8900aloctl()函數實現。在函數中可以通過輸入命令行參數分別對設置MAC地址請求、獲取MAC地址請求、設置設備標志、獲取設備標志、啟動輪詢操作、結束輪詢操作、返網MIB信息、返同第一個最小的緩沖區和返同頭的大小等進行參數設置。

    (2)數據接收函數的編寫

    為了保證數據幀接收的實時性,在cs8900aRecv()函數中使用中斷的方式處理數據幀的接收。中斷中應盡可能做較少的處理,所以當網絡設備產生中斷時,用戶中斷服務程序最好包含任務級別的處理服務程序.可以通過調用netJobAdd()實現。它接收一個程序指針和多達5個附加自變量,可以將應用程序用來處理數據包的入口點設定為任務級別。然后把任務放入tNetTask隊列,可以用tNetTask來處理任務級別的網路處理。只要tNetTask隊列中有函數,它就會一直工作,直到隊列為空,進入睡眠狀態。

    當有數據到達網絡設備時,觸發中斷進入中斷服務程序cs8900aEndInt。在中斷服務程序里查看中斷狀態寄存器,如果ReceiveComplete位為高則進入cs8900aMacRxInt()。在cs8900aMacRxInt()中關閉中斷.并調用BeOobAdd()將cs8900aEndHandleRcvInt()添加到tNetTask要處理的網絡任務隊列中。cs8900aEndHandleRevlnt()主要完成以下工作:

    通過netClBtkGet()來預定一個clBlk結構;

    通過netClBlkJoin()把clBlk結構鏈接到包含數據包的cluster;

    通過netMblkGet()來預定一個mBlk結構;

    通過netMblkClJoin()把mBlk連接到clBlk、cluster;

    通過netClusterGel()重新預定一個cluster給收緩沖描述符供下次接收使用;

    重新開啟中斷。

    (3)數據發送函數的編寫

    數據幀的發送不采用中斷模式,直接調用底層驅動發送函數cs8900aEndSend()。發送的步驟如下:1.用戶凋用write()通過socket套接字訪問網絡;2.網絡協議拷貝到網絡緩沖區,并調用協議驅動的發送程序;3.協議驅動發送程序調用muxSend()啟動發送;4.muxSend()通過調用send()回調函數,把緩沖區傳遞給END;5.數據發送程序cs8900aEndSend()調用netMblkToBufCopy()將數據拷貝到緩沖中,并立即發送出去?截愅瓿珊,調用netMblkClChainFree()釋放所有鏈中的mBlk緩沖并歸還到內存池。

    (4)修改cs8900a.h文件

    由于S3C2410A芯片內部集成了MAC控制器,由芯片內部寄存器進行控制。因此不需要為網卡模塊另外分配外設端口或映射寄存器地址。雖然S3C2410A芯片和物理層接口芯片在外部足兩個部分,但是從開發的角度看它們是一個整體。在cs8900a.h文件中主要完成一些基本配置的設定:

    #define CS_CHIP_FRAME_BUF_SIZE    (2048)
    #define CS_PKTPG_DMA_NUM    (0x0024)
    #define CS_INIT_DMA_NUM    (3)
    #define CS_INIT_INT_NUM   (0)
    #define CS_CHIP_MEM_BASE    (0x28100000)
    #define CS_CHlP_IO_BASE   (0x28000000)
    #define CS_CHIP_IO_0FFSET   (0x300)
    #define CS_CHIP_MEM_OFFSET    (0)

    (5)修改cs8900aEND.c文件

    cs8900aEND.c  主要完成設備驅動程序函數的編寫:
    //從MIB獲取硬件地址
    #define END_HADDR(pEnd) ((pEnd)->mib2Tbl.ifPhysAddress.phyAddress)
    #defitae END_HADDR_LEN(pEnd) ((pEnd)->mib2Tbl.ifPhysAddress.addrLength)
    //配置設定
    #define END_BUFSIZ  (ETHERMTU+SIZEOF_ETHERHEADER+6)
    #define END_SPEED_10M    10000000    /*10Mbs*/
    #define END_SPEED     END_SPEED_10M
    //定義名稱
    #define  DRV_NAME    "cs"
    ......

    然后添加驅動控制結構,其結構如下:

    typedef struct end device
    {
    END_0BJ end    //繼承的END_OBJ結構
    int unit;     //設備單元數
    int ivecBdmaTx;    //bdmaTx中斷向量
    int ivecBdmaRx;    //bdmaRx中斷向量
    ......
    UCHAR csAddr[6];    //以太網地址
    CACHE_FUNS * cacheFuns;   //高速緩沖功能函數指針
    ......
    }

    該結構中的內容是根據網絡設備和用戶需要而設計的,其中END_OBJ結構必須包含。并放置在結構的第一項。

    5 結束語

    VxWorks下增強型網絡驅動是一個鏈路層驅動程序,它通過MUX層函數與網絡協議層進行通信,本文分析了基于samsung公司的S3C2410A處理器的VxWorks操作系統嵌入式網絡硬件平臺,闡述了VxWorks操作系統下增強型網絡接口結構,并根據硬件的設計環境詳盡描述并給出了適合該硬件系統的END型網卡驅動的編寫及其在vxWorks系統中的加載,滿足系統網絡傳輸的要求。由于硬件環境不間,所以不同開發板上END的設計會在驅動的初始化、發送和接收函數的配置上有所不同,但根據相應的硬件用戶手冊稍加改動即可使用,對其他開發板的網絡驅動開發具有一定的參考和借鑒價值。

    本文作者創新點:本文闡述了vxworks操作系統下增強型網絡驅動的構成原理,給出了基于S3C2410A芯片的增強型網絡驅動的具體實現方法。


    作者:錢華明,趙斌      來源:《微計算機信息》(嵌入式與SOC)2009年第4-2期
    本文地址:http://www.portaltwn.com/thread-10233-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • 更佳設計的解決方案——Microchip模擬開發生態系統
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 想要避免發生災難,就用MPLAB SiC電源仿真器!
    • 我們是Microchip
    • 貿澤電子(Mouser)專區

    相關在線工具

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷