




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第1章操作系統(tǒng)基本概念4實(shí)時(shí)操作系統(tǒng)和分時(shí)操作系統(tǒng)的區(qū)別4嵌入式操作系統(tǒng)VxWorks簡介41.3 VxWorks的特點(diǎn)5可靠性5實(shí)時(shí)性51.3.3 可裁減性6對一個(gè)實(shí)時(shí)內(nèi)核的要求61.4 VxWorks的整體構(gòu)架7第2章 vxWorks驅(qū)動(dòng)開發(fā)預(yù)備72.1 VxWorks映像82.2 BSP主要文件目錄的組成及作用:11系統(tǒng)啟動(dòng)順序142.4 Vxworks驅(qū)動(dòng)概要17第3章 vxWorks 網(wǎng)絡(luò)驅(qū)動(dòng)開發(fā)21驅(qū)動(dòng)類別223.2 Vxworks 下網(wǎng)絡(luò)驅(qū)動(dòng)開發(fā)243.3 VxWorks網(wǎng)絡(luò)驅(qū)動(dòng)配置及分析60第4章 VxWorks系統(tǒng)中常見問題65前言 在通信,電子領(lǐng)域,目前主流的嵌入式操作系統(tǒng)
2、為linux 和vxworks。Linux多用于消費(fèi)電子產(chǎn)品,像大家熟悉的andriod,原始系統(tǒng)就是linux,也就是說andriod也是一種linux系統(tǒng)。還有大家熟悉的MP3,也是使用linux操作系統(tǒng)的。Linux因?yàn)閮r(jià)格便宜(開源的,不需要付licence),穩(wěn)定性好占據(jù)了一定的市場份額。 Vxworks是風(fēng)河系統(tǒng)1983開發(fā)的一款嵌入式實(shí)時(shí)操作系統(tǒng),多用于通信,導(dǎo)航,航天等領(lǐng)域。因?yàn)檫@些領(lǐng)域?qū)?shí)時(shí)性要求非常高,比如現(xiàn)在LTE 系統(tǒng)就是使用vxworks系統(tǒng),因?yàn)槭遣捎肨DD模式,而這種模式,顯然對實(shí)時(shí)性要求非常高。也就注定了vxwroks 在這些領(lǐng)域的特有優(yōu)勢。選擇linux還是v
3、xworks看自己的專業(yè)方向,還有自己的興趣所有。每個(gè)領(lǐng)域只要研究透徹,都是很有前途的。既然兩者都是主流的嵌入式操作系統(tǒng),其還是有很多相似性。小編也初步接觸過linux,發(fā)現(xiàn)具備一定的linux基礎(chǔ)對日后深入學(xué)習(xí)vxworks很有好處,很多思想都是相似的。另外,本人系小碩,目前的研究領(lǐng)域是vxworks驅(qū)動(dòng)開發(fā),主攻網(wǎng)絡(luò)驅(qū)動(dòng)開發(fā)。在平常的日常學(xué)習(xí)中,結(jié)合各位網(wǎng)友提供的資料(自己在百度上收集的),還有workbench 提供的document(自己翻譯,特別是針對網(wǎng)絡(luò)驅(qū)動(dòng)部分),希望對廣大嵌入式驅(qū)動(dòng)開發(fā)者有所幫助。聲明: 此文檔并不適合于vxworks初學(xué)者,因?yàn)檫@里,小編省去了很多vxwork
4、s下的基本知識,包括內(nèi)核中常用的進(jìn)程,信號量等等支持。也沒有提及集成開發(fā)環(huán)境tornado/vworkbench. 這里的探索重點(diǎn)是vxwroks底層的東西,包括啟動(dòng)過程,BSP開發(fā)等。 附錄:Vxworks的應(yīng)用領(lǐng)域嵌入式Vxworks系統(tǒng)的主要應(yīng)用領(lǐng)域主要有以下幾方面: 1.數(shù)據(jù)網(wǎng)絡(luò):如:以太網(wǎng)交換機(jī)、路由器、遠(yuǎn)程接入服務(wù)器等 2.遠(yuǎn)程通訊:如:電信用的專用分組交換機(jī)和自動(dòng)呼叫分配器,蜂窩電話系統(tǒng)等 3.醫(yī)療設(shè)備:如:放射理療設(shè)備 4.消費(fèi)電子:如:個(gè)人數(shù)字助理等 5.交通運(yùn)輸:如:導(dǎo)航系統(tǒng)、高速火車控制系統(tǒng)等 6.工業(yè):如:機(jī)器人 7.航空航天:如:衛(wèi)星跟蹤系統(tǒng) 8.多媒體:如:電視會(huì)議
5、設(shè)備 9.計(jì)算機(jī)外圍設(shè)備:如:X終端、I/O 系統(tǒng)等 總之,VxWorks的系統(tǒng)結(jié)構(gòu)是一個(gè)相當(dāng)小的微內(nèi)核的層次結(jié)構(gòu)。內(nèi)核僅提供多任務(wù)環(huán)境、進(jìn)程間通信和同步功能。這些功能模塊足夠支持VxWorks在較高層次所提供的豐富的性能的要求。第1章 操作系統(tǒng)基本概念實(shí)時(shí)操作系統(tǒng)和分時(shí)操作系統(tǒng)的區(qū)別 從操作系統(tǒng)能否滿足實(shí)時(shí)性要求來區(qū)分,可把操作系統(tǒng)分成分時(shí)操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng)。 分時(shí)操作系統(tǒng)按照相等的時(shí)間片調(diào)度進(jìn)程輪流運(yùn)行,分時(shí)操作系統(tǒng)由調(diào)度程序自動(dòng)計(jì)算進(jìn)程的優(yōu)先級,而不是由用戶控制進(jìn)程的優(yōu)先級。這樣的系統(tǒng)無法實(shí)時(shí)響應(yīng)外部異步事件。實(shí)時(shí)操
6、作系統(tǒng)能夠在限定的時(shí)間內(nèi)執(zhí)行完所規(guī)定的功能,并能在限定的時(shí)間內(nèi)對外部的異步事件作出響應(yīng)。分時(shí)系統(tǒng)主要應(yīng)用于科學(xué)計(jì)算和一般實(shí)時(shí)性要求不高的場合。實(shí)時(shí)性系統(tǒng)主要應(yīng)用于過程控制、數(shù)據(jù)采集、通信、多媒體信息處理等對時(shí)間敏感的場合。VxWorks簡介VxWorks操作系統(tǒng)是美國WindRiver公司于1983年設(shè)計(jì)開發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),是嵌入式開發(fā)環(huán)境的關(guān)鍵組成部分。良好的持續(xù)發(fā)展能力、高性能的內(nèi)核以及友好的用戶開發(fā)環(huán)境,在嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域占據(jù)一席之地。它以其良好的可靠性和卓越的實(shí)時(shí)性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中,如衛(wèi)星通訊、軍事演習(xí)
7、、彈道制導(dǎo)、飛機(jī)導(dǎo)航等。在美國的 F-16、FA-18 戰(zhàn)斗機(jī)、B-2 隱形轟炸機(jī)和愛國者導(dǎo)彈上,甚至連1997年4月在火星表面登陸的火星探測器上也使用到了VxWorks。Ø VxWorks操作系統(tǒng)是一個(gè)嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)。Ø VxWorks與其它實(shí)時(shí)OS一樣,基于以下兩個(gè)重要機(jī)制:Ø 多任務(wù)環(huán)境及任務(wù)間通信。Ø 硬件中斷處理。Ø VxWorks多任務(wù)內(nèi)核完成的功能是:實(shí)時(shí)調(diào)度,任務(wù)間通信及互斥。Ø 其它功能則作為系統(tǒng)庫圍繞在內(nèi)核周圍,它們可根據(jù)需要進(jìn)行剪裁。Ø VxWorks與非實(shí)時(shí)系統(tǒng)的不同之處在于:
8、6; VxWorks的優(yōu)先搶占機(jī)制基于調(diào)度,Ø VxWorks對外部事件的反應(yīng)和處理快,Ø VxWorks容量小并且可配置(微內(nèi)核結(jié)構(gòu))1.3 VxWorks的特點(diǎn)可靠性 操作系統(tǒng)的用戶希望在一個(gè)工作穩(wěn)定,可以信賴的環(huán)境中工作,所以操作系統(tǒng)的可靠性是用戶首先要考慮的問題。而穩(wěn)定、可靠一直是VxWorks的一個(gè)突出優(yōu)點(diǎn)。自從對中國的銷售解禁以來,VxWorks以其良好的可靠性在中國贏得了越來越多的用戶。實(shí)時(shí)性 實(shí)時(shí)性是指能夠在限定時(shí)間內(nèi)執(zhí)行完規(guī)定的功能并對外部的異步事件作出響應(yīng)的能力。實(shí)時(shí)性的強(qiáng)弱是以完成
9、規(guī)定功能和作出響應(yīng)時(shí)間的長短來衡量的。 VxWorks 的實(shí)時(shí)性做得非常好,其系統(tǒng)本身的開銷很小,進(jìn)程調(diào)度、進(jìn)程間通信、中斷處理等系統(tǒng)公用程序精練而有效,它們造成的延遲很短。VxWorks 提供的多任務(wù)機(jī)制中對任務(wù)的控制采用了優(yōu)先級搶占(Preemptive Priority Scheduling)和輪轉(zhuǎn)調(diào)度(Round-Robin Scheduling)機(jī)制,也充分保證了可靠的實(shí)時(shí)性,使同樣的硬件配置能滿足更強(qiáng)的實(shí)時(shí)性要求,為應(yīng)用的開發(fā)留下更大的余地。 1.3.3 可裁減性 用戶在使用操作系統(tǒng)時(shí),并不是操作系統(tǒng)中的每一個(gè)部件都要用
10、到。例如圖形顯示、文件系統(tǒng)以及一些設(shè)備驅(qū)動(dòng)在某些嵌入系統(tǒng)中往往并不使用。VxWorks 由一個(gè)體積很小的內(nèi)核及一些可以根據(jù)需要進(jìn)行定制的系統(tǒng)模塊組成。VxWorks 內(nèi)核最小為 8kB,即便加上其它必要模塊,所占用的空間也很小,且不失其實(shí)時(shí)、多任務(wù)的系統(tǒng)特征。由于它的高度靈活性,用戶可以很容易地對這一操作系統(tǒng)進(jìn)行定制或作適當(dāng)開發(fā),來滿足自己的實(shí)際應(yīng)用需要。 1.3.4對一個(gè)實(shí)時(shí)內(nèi)核的要求一個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核需滿足許多特定的實(shí)時(shí)環(huán)境所提出的基本要求,這些包括:多任務(wù):由于真實(shí)世界的事件的異步性,能夠運(yùn)行許多并發(fā)進(jìn)程或任務(wù)是很重要的。多任務(wù)提供了一個(gè)較好的對真實(shí)世界的匹配,因?yàn)樗试S對應(yīng)于許多外部
11、事件的多線程執(zhí)行。系統(tǒng)內(nèi)核分配CPU給這些任務(wù)來獲得并發(fā)性。搶占調(diào)度:真實(shí)世界的事件具有繼承的優(yōu)先級,在分配CPU的時(shí)候要注意到這些優(yōu)先級?;趦?yōu)先級的搶占調(diào)度,任務(wù)都被指定了優(yōu)先級,在能夠執(zhí)行的任務(wù)(沒有被掛起或正在等待資源)中,優(yōu)先級最高的任務(wù)被分配CPU資源。換句話說,當(dāng)一個(gè)高優(yōu)先級的任務(wù)變?yōu)榭蓤?zhí)行態(tài),它會(huì)立即搶占當(dāng)前正在運(yùn)行的較低優(yōu)先級的任務(wù)。任務(wù)間的通訊與同步:在一個(gè)實(shí)時(shí)系統(tǒng)中,可能有許多任務(wù)作為一個(gè)應(yīng)用的一部分執(zhí)行。系統(tǒng)必須提供這些任務(wù)間的快速且功能強(qiáng)大的通信機(jī)制。內(nèi)核也要提供為了有效地共享不可搶占的資源或臨界區(qū)所需的同步機(jī)制。任務(wù)與中斷之間的通信:盡管真實(shí)世界的事件通常作為中斷方
12、式到來,但為了提供有效的排隊(duì)、優(yōu)先化和減少中斷延時(shí),我們通常希望在任務(wù)級處理相應(yīng)的工作。所以需要雜任務(wù)級和中斷級之間存在通信。1.4 VxWorks的整體構(gòu)架VxWorks 支持多種處理器,對硬件不做假設(shè),可支持ARM.PPC,MPIS架構(gòu)處理器。第2章 vxWorks驅(qū)動(dòng)開發(fā)預(yù)備BSP定義:Board support packet,為各種目標(biāo)板的硬件功能提供了統(tǒng)一的軟件接口它們包括:Ø 硬件初始化Ø 中斷處理和產(chǎn)生Ø 硬件時(shí)鐘和定時(shí)器管理Ø 內(nèi)存映射和分配BSP還包括boot Rom和其它啟動(dòng)機(jī)制,sysLib和sysALib庫是VxWorks可移植的
13、核心,BSP庫是硬件與軟件的接口,處理硬件的初始化、中斷處理與產(chǎn)生、硬件時(shí)鐘與定時(shí)管理、局部和總線內(nèi)存空間的映射、內(nèi)存大小定義,等等2.1 VxWorks映像用戶通過定制VxWorks組件和進(jìn)行應(yīng)用程序開發(fā)所生成映像包括wind多任務(wù)微內(nèi)核,也包括BSP的引導(dǎo)代碼pVxworks映像的三部分組成u BSS段(Block Started by Symbol,未手動(dòng)初始化的數(shù)據(jù))u 代碼段u 數(shù)據(jù)段p兩大類Ø BootRom類型映像Ø VxWorks類型BootRom類型映像最小化、專用的VxWorks引導(dǎo)映像,實(shí)現(xiàn)最少的系統(tǒng)初始化用于啟動(dòng)裝載VxWorks映像,功能類似于PC
14、機(jī)的BIOS。BootRom運(yùn)行時(shí)建立起多任務(wù)環(huán)境usrRoot任務(wù)、網(wǎng)絡(luò)任務(wù)(tNettask)、TFFS任務(wù)和FTP任務(wù)等。運(yùn)行地點(diǎn)可能在ROM/Flash中執(zhí)行(例如ROM駐留型引導(dǎo)映像),也可能在RAM 中執(zhí)行。在系統(tǒng)中其對應(yīng)的編譯規(guī)則文件是BootRom類型分為三種BootRom_res一直運(yùn)行在rom中的映象,只把data段拷貝到ram里面。BootRom_uncmp非壓縮方式的映象,data段和text段都要拷貝到ram里 面,并在ram里面運(yùn)行。BootRom壓縮方式的映象,生成的時(shí)候編譯器會(huì)把除掉romlnit.s 和之外的目標(biāo)文件壓縮并“匯編”成一個(gè) ,最后和, 進(jìn)行鏈接,
15、生成bootrom映像。要全部拷貝到ram中,并必須要進(jìn)行解壓縮的工作。而這 些工作基本上都是在中進(jìn)行的。VxWorks類型映像系統(tǒng)的主映像,是系統(tǒng)最終要運(yùn)行的映像該映像在運(yùn)行時(shí)至少有一部分(如:數(shù)據(jù)段和BSS段)需要在 RAM中運(yùn)行。在系統(tǒng)中其對應(yīng)的編譯規(guī)則文件是Vxworks 類型映像運(yùn)行環(huán)境RAM運(yùn)行的壓縮的ROM運(yùn)行的 非壓縮的VxWorks類型四種映像l VxWorks:RAM運(yùn)行的VxWorks映像不包含引導(dǎo)程序,需要獨(dú)立的引導(dǎo)程序從本地存儲器或者經(jīng) 由網(wǎng)絡(luò)獲取該映像,然后將其下載到RAM中的 RAM_LOW_LADRS處運(yùn)行u VxWorks_romROM 自動(dòng)RAM 運(yùn)行的Vx
16、Works映像,不需要BootRom輔 助u VxWorks_romResidentROM啟動(dòng)ROM運(yùn)行的VxWorks映像,不需要BootRom輔助。包含引導(dǎo)代碼,在重啟時(shí)清空RAM,引導(dǎo)代碼只將data段拷 貝到RAM 中的RAM_LOW_ADRS處,系統(tǒng)的運(yùn)行是在ROM 中進(jìn)行的,啟動(dòng)速度快,需要的RAM 空間少,但是運(yùn)行速度慢 。u VxWorks_romCompressVxWorks_rom的壓縮形式VxWorks型vs BootROM型映像對于沒有自啟動(dòng)功能的VxWorks類型映像(如 VxWorks型),映像運(yùn)行前需一段程序?qū)⒃撚?像拷貝到RAM中運(yùn)行,BootRom類型映像完成
17、VxWorks系統(tǒng)下載, 完畢后BootRom的任務(wù)就結(jié)束了二者在系統(tǒng)初始化的時(shí)候,所做的功能基本相 同,BootRom類型映像調(diào)用,而 VxWorks類型映像調(diào)用映像鏈接方式可被靜態(tài)或動(dòng)態(tài)鏈接VxWorks在開發(fā)階段可動(dòng)態(tài)地下載目標(biāo)文件,并與 操作系統(tǒng)及其它目標(biāo)文件動(dòng)態(tài)鏈接。鏈接以后是浮動(dòng)的,只在裝載時(shí)才與絕對物理地址 相對應(yīng)。靜態(tài)VxWorks成品階段是采用靜態(tài)鏈接的。要對系統(tǒng)底層驅(qū)動(dòng)清楚,也就是對CPU及相關(guān)的硬件有所了解.主要是32微處理器(上電啟動(dòng)過程, download image的方式方法,讀寫ROM,地址空間分配,MMU,寄存器,中斷定義,.).參照硬件資料,多讀一些源碼會(huì)有所
18、幫助.Tornado 2 開發(fā)調(diào)試環(huán)境協(xié)議框圖主機(jī)開發(fā)(Host Development System)目標(biāo)機(jī)(Target System)Tornado 工具 WTX協(xié)議通信<=>EditorProjectShellDebuggerBrowserWindviewTarget Server|Target AgentVxWorks Target SimulatorWDB協(xié)議通信<=>ApplicationVxWorks OSVxWorks Target (WDB)Agent兩個(gè)主要兩個(gè)協(xié)議WTX協(xié)議(Wind River Tool eXchange): 用于開發(fā)機(jī)內(nèi)部To
19、rnado工具與Target Server之間通信.WDB協(xié)議(Wind DeBug): 用于主機(jī)Target Server與目標(biāo)機(jī)之間的通信.2.2 BSP主要文件目錄的組成及作用:Install_direction/target/config/All: 這個(gè)目錄下的文件是所有BSP文件共享的,不是特別需要不要更改里面的任何文件.configAll.h: 缺省定義了所有VxWorks的設(shè)置.如果不用缺省的設(shè)置,可在BSP目錄下的文件中用#define或#undef方式來更改設(shè)置.bootInit.c: 在后,完成Boot ROM的第二步初始化.程序從中的romInit()跳到這個(gè)文件中的ro
20、mStart().來執(zhí)行必要的解壓和ROM image的放置.bootConfig.c:完成Boot ROM image的初始化和控制.usrConfig.c: VxWorks image的初始化代碼.Install/target/config/comps/src: .intasll/target/config/bspname:包含系統(tǒng)或硬件相關(guān)的BSP文件.Makefile 一些命令行控制images的生成,參見 BSP設(shè)置部分及生成下載READMEBSP發(fā)布紀(jì)錄,版本,總的文檔包括所有涉及CPU主板的設(shè)置及定義(includes,definations),參見 BSP設(shè)置文件及生成下載網(wǎng)絡(luò)
21、驅(qū)動(dòng)的主要設(shè)置文件,主要對END驅(qū)動(dòng)設(shè)置.匯編語言文件,是VxWorks Boot ROM和ROM based image的入口,參見 系統(tǒng)啟動(dòng)部分匯編語言文件,程序員可以把自己的匯編函數(shù)放在這個(gè)文件里,在上層調(diào)用.VxWorks image的入口點(diǎn)_sysInit在這個(gè)文件里,是在RAM中執(zhí)行的第一個(gè)函數(shù)。 包含一些系統(tǒng)相關(guān)的函數(shù)例程,提供了一個(gè)board-level的接口,VxWorks和應(yīng)用程序可以以system-indepent的方式生成.這個(gè)文件還能包含目錄target/config/comps/src的驅(qū)動(dòng).可選文件用于Scsi設(shè)備設(shè)置和初始化.可選文件用于所有的串口設(shè)置和初始化.
22、ASIC文件包含VxWorks Boot ROM代碼VxWorks運(yùn)行在目標(biāo)機(jī)上,完整的,連結(jié)后的VxWorks二進(jìn)制文件.VxWorks.sym完全的,連結(jié)后帶有符號表的VxWorks二進(jìn)制文件完全的,連結(jié)后,standalone,帶有符號表的VxWorks二進(jìn)制文件BSP用"make"來編譯連接生成(Created),而不是用Tornado的工具. BSP和應(yīng)用程序都可以在"make"或"tornade"上開發(fā)(developed) 。BSP被設(shè)置包括以下驅(qū)動(dòng):² 中斷控制interrupt controller
23、8; 計(jì)時(shí)器timer(sys/aux)² 串口UART(serial)² 顯示屏LCD² 鍵盤Keyboard(opt)² 觸摸屏touch-screen(opt).系統(tǒng)啟動(dòng)順序VxWorks image 分為在ROM中運(yùn)行和在RAM中運(yùn)行兩種.兩者啟動(dòng)順序的區(qū)別在于sysInit()函數(shù)的調(diào)用.該函數(shù)在RAM運(yùn)行的VxWorks中初始化RAM.ROM中運(yùn)行的VxWorks VxWorks在ROM中運(yùn)行,即寫入ROM中的VxWorks是非壓縮的,不需要解壓,系統(tǒng)直接跳到ROM的首地址,運(yùn)行VxWorks.注意:ROM運(yùn)行的VxWorks并不支持所有的主
24、扳,應(yīng)以主扳手冊為準(zhǔn).文件中的romInit()->文件中的romStart()->文usrConfigusrInit()->sysHwInit()->usrKernelInit()->KernelInit(usrRoot,.)。Vxwroks在ROM 中運(yùn)行的優(yōu)勢 VxWorksVxWorks image的data段復(fù)制到RAM的LOCAL_LOW_ADRS, text部分留在ROM并在ROM中執(zhí)行.。ROM中運(yùn)行的VxWorks缺點(diǎn)是運(yùn)行速度慢.RAM中運(yùn)行的VxWorks VxWorks在RAM中運(yùn)行,即寫入ROM中的Boot或VxWo
25、rks Image是壓縮的,需要先解壓copy所有的text和data到RAM的LOCAL_LOW_ADRS中,下面sysInit()主要是初始化RAM用的,系統(tǒng)直接跳到RAM的首地址,運(yùn)行VxWorksusrInit()前面不壓縮,即romInit(),romStart()不能壓縮.啟動(dòng)過程文件中的romInit()->文件中的中的sysInit()->文件中的usrInit()->sysHwInit()->usrKernelInit()->KernelInit(usrRoot,.)。RAM運(yùn)行的Boot或VxWorks image的text段或data段會(huì)從R
26、OM復(fù)制到RAM,在RAM中運(yùn)行。其中usrRoot()是VxWorks啟動(dòng)的第一個(gè)任務(wù),由它來初始化 driver,network等。BootROM image 的啟動(dòng)過程最少的系統(tǒng)初始化,主要用于啟動(dòng)裝載VxWorks image.一般有壓縮和不壓縮兩種形式,如bootrom和boot_uncmp.與VxWorks image的區(qū)別在于一個(gè)Bootrom調(diào)用bootConfig.c,而VxWorks調(diào)用usrConfig.c. 啟動(dòng)順序文件中的romInit()->文件中的romStart()->文件bootConfig中的usrInit()->sysHwInit()-&
27、gt;usrKernelInit()->KernelInit(usrRoot,.) 其中是Boot ROM設(shè)置模塊.用于通過網(wǎng)絡(luò)加載VxWorks image.usrRoot()->bootCmdLoop(void)命令行選擇,或autobooting->bootLoad(pLine, &entry)載模塊到內(nèi)存(網(wǎng)絡(luò),TFFS,TSFS.)->netifAttach()->go(entry)->(entry)()從入口開始執(zhí)行,不返回.系統(tǒng)啟動(dòng)中幾個(gè)很重要的函數(shù)及其作用romInit()-power up,dis
28、able interrupt,put boot type on the stack,clears caches.romStart()-load Image Segments into RAM.usrInit()-Interrupt lock out,save imformation about boot type,handle all the Initialization before the kernel is actually started,then starts the kernel execution to create an initial task usrRoot().This
29、task completes the start up.sysHwInit()-Interrup locked,Initializes hardware,registers,activation kernel.KernelInit(usrRoot,.)- Initializes and starts the kernel. Defines system memory partition. Activates a task tUsrRoot to complete initalization. Unlocks inierrupts. Uses usrInit() initate stack. u
30、srRoot() 初始化內(nèi)存分區(qū)表(memory partition library) ,初始化系統(tǒng)系統(tǒng)時(shí)鐘(system clock) 。初始化輸入輸出系統(tǒng)(I/O system)-可選 Create devices-可選設(shè)置網(wǎng)絡(luò)(Configure network)-可選激活WDB目標(biāo)通信(Activate WDB agent)-可選調(diào)用程序(Activate application)VxWorks Image在RAM中解壓的位置RAM Low AddressRAM High AddressVxWorks運(yùn)行的位置Boot image由ROM解壓后Copy的位置,即bootRom區(qū)BSP配
31、置文件及生成下載VxWorks 在ROM中的情況ROM 低高地址位ROM 低地址位壓縮的VxWorks Imgage沒有壓縮的romInit.s和romStart()在ROM的起始位置,系統(tǒng)power up后,從這個(gè)起始位開始執(zhí)行,即執(zhí)行romInit(),起始位置由硬件定義,一般為0x00000000注:淺藍(lán)色為整個(gè)VxWorks Image.BSP配置文件及生成下載2.4 Vxworks驅(qū)動(dòng)概要總線類型PLB(processor local bus),VME,PCI,PCI-Express,RapidIO,Mii,Virtual,MF(multi function device bus),
32、USB,IIC,SPI.驅(qū)動(dòng)可以提供的服務(wù)配置 配置資源例如ns83902VxbEnd.c 設(shè)備驅(qū)動(dòng)中有這么一段devResourceGet (pHcf, "regWidth", HCF_RES_INT, (void *) ®isterWidth;這里的registerwidth 就是資源配置參數(shù)vxbInstParamByNameGet (pInst, "jumboEnable", VXB_PARAM_INT32, &val);這句話的意思是支持大包處理,jumboenable.這個(gè)就是參數(shù)配置又如:中有這么一段LOCAL VXB
33、_PARAMETERS rtgParamDefaults ="rxQueue00", VXB_PARAM_POINTER, (void *)&rtgRxQueueDefault,"txQueue00", VXB_PARAM_POINTER, (void *)&rtgTxQueueDefault,"jumboEnable", VXB_PARAM_INT32, (void *)0,NULL, VXB_PARAM_END_OF_LIST, NULL;內(nèi)存管理系統(tǒng)啟動(dòng)過程中分配內(nèi)存。 當(dāng)系統(tǒng)早期啟動(dòng)的過程中,那些最初被初始化的
34、設(shè)備驅(qū)動(dòng)是不能使用malloc,calloc.memPartAlloc() 等函數(shù)分配內(nèi)存的,因?yàn)檫@些方法要使用信號量等操作。這時(shí),只能使用如下函數(shù)分配內(nèi)存hwMemAlloc( ) 從一個(gè)靜態(tài)池中分配N 個(gè)字節(jié),并清零。hwMemFree( )將內(nèi)存分配給靜態(tài)池。注意hwMemAlloc( ) 和hmMemFree()是在系統(tǒng)啟動(dòng)初期分配和釋放內(nèi)存,一旦系統(tǒng)完成初始化,就可以使用標(biāo)準(zhǔn)的內(nèi)存分配哈數(shù)進(jìn)行分配。malloc( ), calloc( ), memPartAlloc( ),這里怎么沒有memalign()硬件訪問讀寫硬件寄存器vxbRead8( ) vxbRead16( ) vxbR
35、ead32( ) vxbRead64( ) vxbWrite8( ) vxbWrite16( ) vxbWrite32( ) vxbWrite64( )使用vxbus 訪問寄存器的宏定義在下面的路徑installDir/vxWorks-6.x/target/src/hwif/h/vxbus/vxbAccess.h 采用vxbRegMap( ). 進(jìn)行映射/* find the memory mapped window for the device registers */for (i = 0; i < VXB_MAXBARS; i+)if (pInst->regBaseFlagsi
36、 = VXB_REG_MEM)break;pDrvCtrl->feiBar = pInst->pRegBasei; /* store the base address */vxbRegMap (pInst, i, &pDrvCtrl->feiHandle); /* map the window */這段程序完成的功能是首先查找空間,找到VXB_REG_MEM 時(shí),跳出,將地址存儲到【pDrvCtrl 】中,同時(shí)調(diào)用函數(shù)完成映射,返回句柄,供繼續(xù)讀寫用。中斷處理vxbIntConnect( ) vxbIntDisconnect( ) vxbIntEnable( ) vx
37、bIntDisable( )同步任務(wù)水平的同步采用信號量(這里說mux),spinlock,中斷鎖。中斷水平的同步采用信號量(mux),添加item 到消息隊(duì)列。當(dāng)使用后者時(shí),在ISR 中使用msgsend 時(shí),timeout應(yīng)該為zero。 中斷水平的同步采用中斷鎖 intCpulock ,unCpuLockkey = intCpuLock ();/* access shared data structures. */intCpuUnlock (key); 注意 雖然中斷鎖很簡單,很有效,但是現(xiàn)在不怎么使用中斷鎖了,因?yàn)橐韵聝蓚€(gè)原因1. 增加了系統(tǒng)開銷。2. 在多個(gè)CPU 或vxwroks
38、SMP 模式下中斷鎖不起作用。第3章 vxWorks 網(wǎng)絡(luò)驅(qū)動(dòng)開發(fā)驅(qū)動(dòng)說明風(fēng)河早期的驅(qū)動(dòng)采用legacy driver ,在早期的版即vxWorks5.x 中使用,在新的版本中已經(jīng)不再提供legacy driver了,特別是使用SMP 的用戶,風(fēng)河強(qiáng)烈建議采用vxbus模型的驅(qū)動(dòng)。驅(qū)動(dòng)開發(fā)可利用到的資源包含網(wǎng)絡(luò)驅(qū)動(dòng),總線控制,定時(shí)器驅(qū)動(dòng),串行設(shè)備驅(qū)動(dòng)。installDir/vxWorks-6.xinstallDir/vxWorks-6.xinstallDir/vxWorks-6.xinstallDir/vxWorks-6.x關(guān)于定時(shí)器驅(qū)動(dòng)installDir/vxWorks-6.x這里的驅(qū)動(dòng)采
39、用vxbus 模型開發(fā),是從legacy driver遷移到vxbus的。installDir/vxWorks-6.x提供了PPC8260 的定時(shí)器驅(qū)動(dòng),采用legacydriver開發(fā)。驅(qū)動(dòng)類別注意開發(fā)驅(qū)動(dòng)對vxWorks的I/O 系統(tǒng)也要有所了解。通用類別: 串行設(shè)備。軟件提供open(),write(),ioctl() 調(diào)用。串行設(shè)備驅(qū)動(dòng)例程存放路徑installDir/vxWorks-6.x/target/src/hwif/sio 存儲設(shè)備 管理ram,tape ram,及其板上的flash 設(shè)備,ATA 盤,串行ata 盤,scsi 盤,usb flash 盤等。路徑:install
40、Dir/vxWorks-6.x/target/src/hwif/storage網(wǎng)絡(luò)接口驅(qū)動(dòng)MAC層驅(qū)動(dòng)installDir/vxWorks-6.x/target/src/hwif/endMAC 驅(qū)動(dòng)與MUX 相連。物理層驅(qū)動(dòng)installDir/vxWorks-6.x/target/src/hwif/miiPHY 與MAC 之間由MII 相連。NVRAM (非易失性RAM )驅(qū)動(dòng)installDir/vxWorks-6.x/target/src/hwif/nvram定時(shí)器驅(qū)動(dòng)installDir/vxWorks-6.x/target/src/hwif/timer定時(shí)器驅(qū)動(dòng)的作用:1. 告訴CP
41、U 某事件已經(jīng)消耗了指定時(shí)間2. 提供加減計(jì)數(shù)DMA 驅(qū)動(dòng)installDir/vxWorks-6.x/target/src/hwif/dmaBus Controller Drivers(總線控制器驅(qū)動(dòng))為不同的總線之間提供接口每一個(gè)CPU 在設(shè)計(jì)的時(shí)候都提供了一個(gè)與外界相連的接口,稱為總線接口。一般情況下,不考慮CPU類型,直接與總線相連,稱為PLB(processor local bus)。在某些情況下,需要將不同的總線之間進(jìn)行橋接,用到PCE 或VME.installDir/vxWorks-6.x/target/src/hwif/busCtlr作用: 總線控制器確定系統(tǒng)當(dāng)前是那種總線在工
42、作。2.總線控制器負(fù)責(zé)配置下行設(shè)備,使之能夠工作。3.總線控制器負(fù)責(zé)管理地址映射。USB 驅(qū)動(dòng) USB 主機(jī)設(shè)配驅(qū)動(dòng)installDir/vxWorks-6.x/target/src/hwif/busCtlr/usb/hcdUSB 類驅(qū)動(dòng)installDir/vxWorks-6.x/target/src/drv/usbInterrupt Controller Drivers(中斷控制器驅(qū)動(dòng)) 作用:當(dāng)設(shè)備產(chǎn)生中斷時(shí),中斷控制器負(fù)責(zé)將中斷傳遞個(gè)處理器,并且保證其他中斷源不再送往CPU當(dāng)其正在處理當(dāng)前中斷時(shí)。installDir/vxWorks-6.x/target/src/hwif/intCtl
43、rMultifunction DriversRemote Processing Element DriversinstallDir/vxWorks-6.x/target/src/hwif/cpuconsole 驅(qū)動(dòng)installDir/vxWorks-6.x/target/src/hwif/consoleResource DriversinstallDir/vxWorks-6.x/target/src/hwif/resource資源驅(qū)動(dòng)的功能是為外圍設(shè)備及其配置資源其他類 A/D D/A要寫驅(qū)動(dòng),首先要知道驅(qū)動(dòng)文件所在位置,這里有三個(gè)路徑存放與驅(qū)動(dòng)有關(guān)的文件installDir/vxWorks
44、-6.x/target/3rdpartyVxBus model device drivers written by third party developers that areinstalled as add-ons to an existing VxWorks installation.installDir/vxWorks-6.x/target/src/hwifDrivers written in compliance with the VxBus device model, distributed and supported by Wind River, and provided as
45、part of a standard product,installation or patch.installDir/vxWorks-6.x/target/src/drvWind River legacy drivers (not in VxBus compliance).這里的驅(qū)動(dòng)是采用legacy,模型(區(qū)別于vxbus模型),Legacy 模型用于驅(qū)動(dòng)開發(fā)是應(yīng)用在vxworks 早期版本中。驅(qū)動(dòng)源文件提供某些實(shí)體的邏輯實(shí)現(xiàn) Driver source fileinstallDir/vxWorks-6.x/target/src/hwifThird-party drivers are fo
46、und under:installDir/vxWorks-6.x/target/3rdpartyThe example in this section discusses the file locations3.2 Vxworks 下網(wǎng)絡(luò)驅(qū)動(dòng)開發(fā)說明:vxworks下網(wǎng)絡(luò)驅(qū)動(dòng)開發(fā),是本文檔要講述的重點(diǎn)。在本章節(jié)中,將重點(diǎn)介紹vxworks下驅(qū)動(dòng)開發(fā)要完成的工作,熟悉驅(qū)動(dòng)開發(fā)有關(guān)的源文件及其頭文件,根據(jù)具體情況進(jìn)行修改和配置。理解使用vxbus開發(fā)模型進(jìn)行驅(qū)動(dòng)開發(fā)的一般流程。知道在系統(tǒng)初始化過程系統(tǒng)是如何對網(wǎng)絡(luò)驅(qū)動(dòng)進(jìn)行初始化的,包括網(wǎng)絡(luò)驅(qū)動(dòng)的聲明,注冊等。在本章節(jié)中,讀者要重點(diǎn)關(guān)注與網(wǎng)絡(luò)驅(qū)動(dòng)有關(guān)
47、的頭文件,源文件(對于命名中有end這樣字眼的程序要多加留意),可以仔細(xì)研讀,發(fā)現(xiàn)其中的一般性。最后結(jié)合風(fēng)河代碼,給出一款網(wǎng)卡驅(qū)動(dòng)的開發(fā)方法。 vxWorks 網(wǎng)絡(luò)協(xié)議棧 與windows 下TCP/IP 協(xié)議棧相比,vxWorks增加了MUX 層。VxWorks下網(wǎng)絡(luò)驅(qū)動(dòng)的開發(fā)要掌握的基本概念1. 網(wǎng)絡(luò)驅(qū)動(dòng)包括MAC 層驅(qū)動(dòng)和PHY 驅(qū)動(dòng)。MAC層和PHY 層通過MII 連接。MII 是meidia independent interface的縮寫,是一種連接機(jī)制。其他媒介還有SGMII,GMII ,PLB 等等??梢酝ㄟ^配置MAC 相關(guān)的寄存器實(shí)現(xiàn)。2. Vworks 下網(wǎng)絡(luò)驅(qū)動(dòng)分為END
48、 模型驅(qū)動(dòng)和BSD 模型驅(qū)動(dòng)?,F(xiàn)在比較流行的還是END 模型驅(qū)動(dòng)。3. 寫vxWorks下的驅(qū)動(dòng)只要實(shí)現(xiàn)模板函數(shù)完成的功能即可,如endload(),endunload(),endpollsend(),endpollreceive()等。具體函數(shù)看數(shù)據(jù)結(jié)構(gòu)netfun,有需要實(shí)現(xiàn)的函數(shù)接口。這些接口在系統(tǒng)初始化硬件的過程中有mux層調(diào)用實(shí)現(xiàn)。驅(qū)動(dòng)開發(fā)者只需關(guān)心底層的這幾個(gè)函數(shù)實(shí)現(xiàn),無須關(guān)心mux層的實(shí)現(xiàn)方法。4. Socket 與vxWorks網(wǎng)絡(luò)驅(qū)動(dòng)的關(guān)系Socket 是在應(yīng)用層調(diào)用。起始在vxworks下表現(xiàn)為一種文件。通過socket在不同進(jìn)程之間傳遞信息。Socket 的發(fā)送接收功能,
49、說到底最后還是調(diào)用底層的驅(qū)動(dòng)send,receive實(shí)現(xiàn)。對vxwroks 網(wǎng)絡(luò)驅(qū)動(dòng)有一點(diǎn)了解之后,我們來重點(diǎn)學(xué)習(xí)END 驅(qū)動(dòng)了解什么是MUX這個(gè)圖表明MUX 在協(xié)議棧中的位置,與傳統(tǒng)TCP/IP 協(xié)議棧相比,增加了一層MUX,是數(shù)據(jù)鏈路層與IP層之間的接口。這里的協(xié)議層是與傳輸層及其往上應(yīng)用層的接口。與其他TCP/IP 協(xié)議相比VxWorks網(wǎng)絡(luò)協(xié)議棧增加一層MUX層。MUX層是VxWorks為方便在網(wǎng)絡(luò)接口硬件上實(shí)現(xiàn)多種協(xié)議而增加的一層。它主要用于管理底層的多種硬件的設(shè)備驅(qū)動(dòng),向上層不同協(xié)議提供統(tǒng)一的接口,降低了上層協(xié)議與底層物理硬件的藕合,使得網(wǎng)絡(luò)驅(qū)動(dòng)和上層協(xié)議彼此保持獨(dú)立,既方便在現(xiàn)有
50、硬件基礎(chǔ)上實(shí)現(xiàn)新的上層協(xié)議,也利于用新的硬件支持原有的上層協(xié)議。MUX與END的交互是通過提供一套可供底層調(diào)用接口服務(wù)來實(shí)現(xiàn)的,實(shí)現(xiàn)END驅(qū)動(dòng)必須遵循這套接口關(guān)系。如圖所示。MUX 與END 的接口關(guān)系圖3中右邊框中列出的函數(shù)是驅(qū)動(dòng)需要實(shí)現(xiàn)的函數(shù),供MUX 層調(diào)用在必要的時(shí)間調(diào)用,如當(dāng)上層使用該網(wǎng)卡發(fā)送數(shù)據(jù)時(shí),MUX 會(huì)調(diào)用該網(wǎng)卡END 驅(qū)動(dòng)提供的Send函數(shù),將數(shù)據(jù)提交給網(wǎng)卡芯片硬件。緩沖池?cái)?shù)據(jù)結(jié)構(gòu)網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)與上層協(xié)議進(jìn)行數(shù)據(jù)交換需要相應(yīng)的內(nèi)存緩沖,并且管理這些緩沖也需要相應(yīng)的函數(shù)。VxWorks提供了netBufLib函數(shù)庫用于創(chuàng)建和管理網(wǎng)絡(luò)設(shè)備用到的內(nèi)存緩沖池,網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)可以直接使用
51、也可以在此基礎(chǔ)上設(shè)計(jì)自己特定的內(nèi)存緩沖池。數(shù)據(jù)以簇的形式保存,數(shù)據(jù)結(jié)構(gòu)mBlks(內(nèi)存塊)和clBlks(簇塊)形成的數(shù)據(jù)鏈結(jié)構(gòu)則用于指定各個(gè)簇。在clBlk之上是mBlk結(jié)構(gòu)。該結(jié)構(gòu)存儲一個(gè)到clBlk的連接,也可以存儲一個(gè)到另一個(gè)mBlk的連接。通過mBlk的連接,可以引用任意數(shù)量的數(shù)據(jù),如圖4所示。圖4 mBlks 和clBlks 的數(shù)據(jù)結(jié)構(gòu)裝載及啟動(dòng)END 設(shè)備的系統(tǒng)函數(shù)主要用到以下幾個(gè):(1).muxDevLoad()該函數(shù)裝載指定設(shè)備的驅(qū)動(dòng)程序裝載函數(shù)。如果要裝載END 設(shè)備,系統(tǒng)必須調(diào)用muxDevLoad()函數(shù)。(2).muxDevStart()啟動(dòng)設(shè)備函數(shù)(3).muxBi
52、nd()muxBind()可以將協(xié)議綁定到指定的END 設(shè)備上。其調(diào)用過程是系統(tǒng)調(diào)用ipAttach()函數(shù),而該函數(shù)調(diào)用muxBind()函數(shù),綁定協(xié)議堆棧到MUX 上的一個(gè)指定的網(wǎng)絡(luò)接口。當(dāng)一個(gè)網(wǎng)絡(luò)接口被關(guān)閉時(shí),ipAttach()函數(shù)將釋放網(wǎng)絡(luò)接口所關(guān)聯(lián)的TCP/IP 堆棧模塊。裝載及啟動(dòng)END 設(shè)備驅(qū)動(dòng)程序的流程如下:使用指定的END 設(shè)備驅(qū)動(dòng)程序的BSP 引導(dǎo)VxWorks 系統(tǒng)時(shí),在引導(dǎo)過程中,系統(tǒng)將執(zhí)行任務(wù)tUsrRoot 來完成如下各項(xiàng):(1)初始化網(wǎng)絡(luò)任務(wù)的工作隊(duì)列;(2)創(chuàng)建tNetTask 任務(wù)來處理網(wǎng)絡(luò)任務(wù)工作隊(duì)列的條目;(3)調(diào)用muxDevLoad()裝載指定的網(wǎng)絡(luò)
53、驅(qū)動(dòng)程序;(4)調(diào)用muxDevStart()啟動(dòng)指定的網(wǎng)絡(luò)驅(qū)動(dòng)程序。tUsrRoot 任務(wù)調(diào)用MUX 設(shè)備裝載函數(shù)muxDevLoad()和設(shè)備啟動(dòng)函數(shù)muxDevStart(),通過這兩個(gè)函數(shù)來裝載和啟動(dòng)設(shè)備驅(qū)動(dòng)程序。muxDevLoad()函數(shù)會(huì)根據(jù)網(wǎng)絡(luò)設(shè)備表endDevTbl中的定義逐一調(diào)用各網(wǎng)絡(luò)設(shè)備的裝載函數(shù),其中這個(gè)函數(shù)是muxDevLoad()的一個(gè)輸入?yún)?shù)。muxDevStart()函數(shù)也會(huì)根據(jù)endDevTbl逐一調(diào)用網(wǎng)絡(luò)設(shè)備所定義的設(shè)備開始函數(shù)。至此MUX 的初始化以及END 驅(qū)動(dòng)程序的初始化工作已經(jīng)完成。但是網(wǎng)絡(luò)設(shè)備還是不可以使用,因?yàn)檫€需要將協(xié)議綁定到指定的END 指定
54、的設(shè)備上,這一步需要用muxBind()函數(shù)實(shí)現(xiàn)。在VxWorks 中,系統(tǒng)通過usrRoot()函數(shù)調(diào)用usrNetInit()函數(shù)完成MUX 的初始化、裝載網(wǎng)絡(luò)設(shè)備表endDevTbl中描述的所有設(shè)備并將IP 協(xié)議綁定到網(wǎng)絡(luò)引導(dǎo)設(shè)備上等工作。網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的安裝過程即圖5 所示的網(wǎng)絡(luò)初始化順序。圖5 網(wǎng)絡(luò)初始化順序發(fā)送數(shù)據(jù)在VxWorks 網(wǎng)絡(luò)系統(tǒng)中,發(fā)送數(shù)據(jù)的流程如圖6。圖6 數(shù)據(jù)發(fā)送通過對圖6 分析,主要包含以下幾個(gè)處理。(1) 用戶調(diào)用write()函數(shù),通過套接字訪問網(wǎng)絡(luò)。(2) 網(wǎng)絡(luò)協(xié)議拷貝需要發(fā)送的數(shù)據(jù)到網(wǎng)絡(luò)緩沖區(qū)中,并調(diào)用協(xié)議驅(qū)動(dòng)程序的發(fā)送程序。(3) 協(xié)議驅(qū)動(dòng)程序調(diào)用mu
55、xSend()啟動(dòng)發(fā)送循環(huán)。(4) muxSend()通過調(diào)用send()回調(diào)函數(shù),把緩沖區(qū)傳遞給END。(5) 數(shù)據(jù)發(fā)送程序把數(shù)據(jù)拷貝到設(shè)備緩沖區(qū)中,并把它放置到設(shè)備的發(fā)送隊(duì)列中。(6) 當(dāng)產(chǎn)生發(fā)送中斷時(shí),驅(qū)動(dòng)程序的中斷服務(wù)程序調(diào)度程序丟棄已發(fā)送的數(shù)據(jù)包,徹底清理發(fā)送隊(duì)列。接收數(shù)據(jù)在VxWorks 網(wǎng)絡(luò)系統(tǒng)中,接收數(shù)據(jù)的流程如圖7。通過對圖7 進(jìn)行分析,它主要包含以下幾個(gè)處理。(1)設(shè)備接收到數(shù)據(jù)包后直接把數(shù)據(jù)存放到預(yù)先分配的簇中。(2)當(dāng)接收到中斷時(shí),驅(qū)動(dòng)程序的中斷服務(wù)程序調(diào)度任務(wù)級接收程序進(jìn)行如下操作。clBlk 結(jié)構(gòu)和簇連接;mBlk 和clBlk 連接;最后構(gòu)成緩沖區(qū)。通過調(diào)用rec
56、eiveRtn()函數(shù),把緩沖區(qū)傳遞給更高級別的協(xié)議。(3)muxReceive()調(diào)用協(xié)議的stackRcvRtn()函數(shù),把成列的緩沖區(qū)傳遞給應(yīng)用。用戶使用read()函數(shù),通過套接字訪問網(wǎng)絡(luò)中的成列緩沖區(qū)驅(qū)動(dòng)程序的中斷處理中斷處理函數(shù)fei82557INT()處理設(shè)備中斷。根據(jù)中斷狀態(tài)調(diào)用相應(yīng)的中斷處理程序,如接收終端程序、發(fā)送中斷程序等。當(dāng)網(wǎng)絡(luò)接口產(chǎn)生中斷時(shí),系統(tǒng)調(diào)用中斷服務(wù)程序。為了將中斷阻塞減到最小,中斷驅(qū)動(dòng)程序只處理那些需要最小時(shí)間的工作,把其他耗時(shí)的任務(wù)排列到網(wǎng)絡(luò)任務(wù)的工作隊(duì)列中。為了排列任務(wù)級的包接收處理工作,網(wǎng)絡(luò)驅(qū)動(dòng)程序中斷服務(wù)程序必須調(diào)用netJobAdd()函數(shù)。在調(diào)用netJobAdd()函數(shù)時(shí),應(yīng)當(dāng)指定任務(wù)級處理數(shù)據(jù)包的驅(qū)動(dòng)程序入口。然后由netJobAdd()把函數(shù)指派到網(wǎng)絡(luò)系統(tǒng)任務(wù)tNetTask 的工作隊(duì)列中。VxWorks 通過tNetTask 處理任務(wù)級的網(wǎng)絡(luò)處理。tNetTask 調(diào)用隊(duì)列中處理程序如下:(1)包接收程序:把接收到的數(shù)據(jù)包上傳到網(wǎng)絡(luò)緩沖區(qū)的堆棧中,通過一個(gè)調(diào)用上傳給MUX。(2)釋放所有發(fā)送幀程序:程序調(diào)用netClFree()函數(shù)釋放發(fā)送緩沖區(qū)中所有已經(jīng)發(fā)送的數(shù)據(jù)幀。協(xié)議層執(zhí)行下列入口點(diǎn)s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度工傷人員傷殘?jiān)u定及賠償協(xié)議
- 2025年度集體合同協(xié)商中的勞動(dòng)爭議處理
- 2025年度幼兒園保安聘用合同標(biāo)準(zhǔn)范本
- 二零二五年度專業(yè)護(hù)工針對心血管疾病病人護(hù)理合同
- 2025年度中小企業(yè)發(fā)展基金借款連帶擔(dān)保人合同
- 2025年度單位食堂承包及員工滿意度提升協(xié)議
- 2025年度知識產(chǎn)權(quán)股份代持許可使用協(xié)議
- 2025年度國際文化交流項(xiàng)目合作誠意金協(xié)議
- 2025年度工程監(jiān)理個(gè)人勞動(dòng)合同(工程質(zhì)量安全管理)
- 2025年度航空航天器復(fù)合材料維修合同
- 2025云南昆明空港投資開發(fā)集團(tuán)招聘7人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 簡單的路線圖(說課稿)2024-2025學(xué)年三年級上冊數(shù)學(xué)西師大版
- 成都市2024-2025學(xué)年度上期期末高一期末語文試卷(含答案)
- 2025年教育局財(cái)務(wù)工作計(jì)劃
- Unit 5 Now and Then-Lesson 3 First-Time Experiences 說課稿 2024-2025學(xué)年北師大版(2024)七年級英語下冊
- 《中國心力衰竭診斷和治療指南2024》解讀
- 中小學(xué)智慧校園建設(shè)方案
- 中國食物成分表2020年權(quán)威完整改進(jìn)版
- 【MOOC】影視鑒賞-揚(yáng)州大學(xué) 中國大學(xué)慕課MOOC答案
- 危險(xiǎn)性較大的分部分項(xiàng)工程清單安全管理措施
- 高壓輸電線路質(zhì)量、檢查、驗(yàn)收培訓(xùn)課件
評論
0/150
提交評論