国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于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://m.qingdxww.cn/thread-10233-1-1.html     【打印本頁】

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

廠商推薦

  • Microchip視頻專區
  • PIC32CM LS60 Curiosity Pro評估工具包
  • PIC32CM LS00 Curiosity Pro評估工具包
  • dsPIC® DSC集成電機驅動器:非常適合在緊湊空間內進行實時控制
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色吧综合| 色综合中文字幕色综合激情| 全免费观看一级| 亚洲国产视频一区| 亚洲精品美女在线观看播放| 亚洲国产一成人久久精品| 青草免费在线观看| 欧美精品无需播放器在线观看| 午夜日韩在线| 妖精视频一区二区三区| 亚洲欧美在线观看| 亚洲欧美中文日韩v在线观看| 日韩美女va毛片在线播放 | 亚洲欧洲小视频| 日韩欧美国产综合| 天天综合色天天综合网| 青青国产在线| 日本二本道| 亚色中文| 性生活黄色毛片| 亚洲国产精品久久久久网站| 日本精品在线观看视频| 亚洲午夜视频在线| 一本久道久久综合婷婷| 四虎网站1515hh四虎免费| 亚洲欧美日韩在线精品一区二区 | 五月天国产精品| 亚洲嫩草影院久久精品| 日本不卡高清免费v| 亚洲欧美日韩国产综合久| 亚洲性一级理论片在线观看| 性亚洲无删减| 一级毛片a女人刺激视频免费| 日本免费第一区二区三区| 欧美精品91| 亚洲国产精品免费在线观看| 一本之道高清| 视频国产在线| 一级免费| 日韩免费片| 亚洲成人综合在线|