在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于S3C2410A處理器實現增強型網絡驅動的應用方案

電子設計 ? 來源:微計算機信息 ? 作者:錢華明;趙斌 ? 2021-05-14 17:13 ? 次閱讀

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所示。

在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芯片的增強型網絡驅動的具體實現方法。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19336

    瀏覽量

    230197
  • 嵌入式
    +關注

    關注

    5086

    文章

    19143

    瀏覽量

    306044
  • 操作系統
    +關注

    關注

    37

    文章

    6847

    瀏覽量

    123420
收藏 人收藏

    評論

    相關推薦

    S3C2410A如何在外擴的SDRAM中調試程序?

    菜鳥求助:S3C2410A只有4K的RAM,硬件設計的時候誤用了個SDRAM,想用仿真在線調試,如何將程序下載到SDRAM中調試?
    發表于 01-23 20:52

    S3C2410處理器

    S3C2410處理器通過GPD端口連接LED1-4四個燈,試著畫出其電路連接圖,并變成實現其逐一點亮功能。
    發表于 11-23 21:50

    s3c2410處理器指令的意思是什么?

    呵呵,s3c2410...在vivi中的s3c2410.h文件中設置時鐘時 有這么一段mrc p15,0,r1,c1,c0,0orr r1,r1,#0xc0000000;mcr p15
    發表于 02-25 12:34

    Nucleus PLUS在S3C2410A上的移植過程和方法是什么?

    Nucleus PLUS啟動過程Nucleus PLUS移植過程Nucleus PLUS在S3C2410A上的移植過程和方法
    發表于 04-25 07:05

    Nucleus PLUS在S3C2410A上的移植過程和方法,總結的太棒了

    本文詳細介紹了Nucleus PLUS在S3C2410A上的移植過程和方法,移植后的代碼在深圳優龍科技有限公司的FS2410開發板上運行正常,可以實現多任務調度、任務間通信和中斷響應。
    發表于 04-26 06:38

    怎么設計一種基于ARM9 S3C2410A的智能車載系統?

    本文設計一種基于ARM9 S3C2410A的智能車載系統,它能夠通過GPS全球定位系統和GPRS無線通信技術,實現車輛定位以及車輛與控制中心之間的數據通信,構建CAN總線控制模塊用于采集車輛主要部分的工作狀態,實時監控汽車的主要技術參數,并通過LCD模塊顯示車載信息的綜合
    發表于 05-17 06:03

    s3c2410中文資料下載

    s3c2410中文資料手冊:2.1概述:有第1章,第2章,第十六章,第五章,第六章. S3C2410A采用了非常先進的ARM920T內核,它是由ARM(Advanced RISC Machines)公司研制的。 2.2處理
    發表于 07-10 23:52 ?1584次下載

    s3c2410中文手冊(第1,2,3,5,6,8,16章)

    s3c2410中文手冊,S3C2410A采用了非常先進的ARM920T內核,它是由ARM(Advanced RISC Machines)公司研制的。S3C2410A采用了非常先進的ARM920T內核,它是由ARM(Advance
    發表于 08-04 12:33 ?17次下載

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

    VxWorks 下增強型網絡驅動是一個鏈路層驅動程序,它通過MUX 層函數與網絡協議層進行通信,分析了基于
    發表于 09-12 17:15 ?16次下載

    基于S3C2410A的嵌入式系統的U-Boot移植

    基于S3C2410A的嵌入式系統的U-Boot移植 0 引 言    ARM嵌入式處理器已被廣泛應用于消費電子產品、無線通信、網絡通信和工業控制等領域。其中,ARM9的芯片
    發表于 12-24 17:08 ?1309次閱讀
    基于<b class='flag-5'>S3C2410A</b>的嵌入式系統的U-Boot移植

    基于S3C2410A設計的工程地震儀方案

    摘要:闡述基于三星ARM處理器S3C2410A和嵌入式操作系統Windows CE.net構造微型工程地震儀的設計原理和實現方法。在現有
    發表于 07-21 16:40 ?1176次閱讀
    基于<b class='flag-5'>S3C2410A</b>設計的工程地震儀<b class='flag-5'>方案</b>

    S3C2410A USER'S MANUAL

    S3C2410A USER'S MANUAL
    發表于 10-25 14:59 ?15次下載
    <b class='flag-5'>S3C2410A</b> USER'<b class='flag-5'>S</b> MANUAL

    基于S3C2410處理器和Linux實現嵌入式網關的設計

    介紹了一種基于ARM9的嵌入式以太網的設計方案。基于ARM內核微處理器S3C2410的功能特點及其外擴組成部分,分析了以太網控制芯片RTL8019AS的性能以及與
    的頭像 發表于 06-22 14:28 ?2647次閱讀
    基于<b class='flag-5'>S3C2410</b>微<b class='flag-5'>處理器</b>和Linux<b class='flag-5'>實現</b>嵌入式網關的設計

    基于S3C2410A的嵌入式織物密度檢測裝置研究

    電子發燒友網站提供《基于S3C2410A的嵌入式織物密度檢測裝置研究.pdf》資料免費下載
    發表于 10-19 10:36 ?1次下載
    基于<b class='flag-5'>S3C2410A</b>的嵌入式織物密度檢測裝置研究

    S3C2410A存儲控制中文數據手冊

    S3C2410A的存儲控制提供訪問外部存儲所需要的存儲控制信號。S3C2410A的存儲
    發表于 10-20 16:12 ?2次下載
    <b class='flag-5'>S3C2410A</b>存儲控制<b class='flag-5'>器</b>中文數據手冊
    主站蜘蛛池模板: 天堂资源wwww在线看| 欧美一区二区三区免费看| 美女扒开尿囗给男生桶爽| 免费看黄色小视频| 日本在线黄| 最好看的2019中文字幕1| 美女被异性狂揉下部羞羞视频| 日本一区二区三区视频在线| www.免费| 免费黄色大片视频| 亚洲视频三区| 中文天堂最新版在线中文| 性色在线视频| 日本人亚洲人成人| 久久久久久综合| 欧美色视频日本片免费高清| 欧美精品首页| 欧美一级精品| 久久国产精品久久久久久久久久| 狠狠色狠狠色综合日日小蛇| 看免费一级片| 国产精品不卡片视频免费观看| 午夜影院免费在线观看| 夜夜做夜夜爽| 午夜三级成人三级| 精品久久香蕉国产线看观看亚洲| 日本xxx69| 一级一片免费视频播放| 五月天综合婷婷| 岛国最新资源网站| 午夜va| 国产精品久久久久久久牛牛| avtom影院永久转四虎入口| 91福利专区| 中文字幕欧美日韩| 四虎精品视频| 色男人在线| 黄网站免费大全| 天天做天天爱天天爽综合区| 特黄一级视频| 久久天天干|