- VxWorks設備驅動開發詳解
- 曹桂平等編著
- 3058字
- 2019-01-09 15:53:23
1.2 VxWorks操作系統基本特點
VxWorks是專門為實時嵌入式系統設計開發的操作系統內核,為程序員提供了高效的實時多任務調度、中斷管理、實時的系統資源以及實時的任務間通信。在各種CPU平臺上提供了統一的編程接口和一致的運行特性,盡可能地屏蔽了不同CPU之間的底層差異。程序員可以將精力盡可能多地放在應用程序本身,而不必再去關心系統資源的管理?;赩xWorks操作系統的應用程序可以在不同CPU平臺上輕松移植。
VxWorks是美國Wind River System公司(以下簡稱風河公司,即WRS公司)推出的一個實時操作系統。WRS公司組建于1981年,是一個專門從事實時操作系統開發與生產的軟件公司,該公司在實時操作系統領域被世界公認為是最具有領導作用的公司。
VxWorks是一個運行在目標機上的高性能、可裁減的嵌入式實時操作系統。它以其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中,如衛星通信、軍事演習、彈道制導、飛機導航等。在美國的F-16、FA-18戰斗機、B-2隱形轟炸機和愛國者導彈上,1997年4月在火星表面登陸的火星探路者上也使用了VxWorks。
VxWorks是一種功能強大而且比較復雜的操作系統,包括了進程管理、存儲管理、設備管理、文件系統管理、網絡協議及系統應用等幾個部分。VxWorks只占用了很小的存儲空間,并可高度裁減,保證了系統能以較高的效率運行。所以,僅僅依靠人工編程調試,很難發揮它的功能并設計出可靠、高效的嵌入式系統,必須要有與之相適應的開發工具。Tornado II就是為開發VxWorks應用系統提供的集成開發環境,Tornado II中包含的工程管理軟件可以將用戶自己的代碼與VxWorks的核心有效地組合起來,可以按用戶的需要裁減配置VxWorks內核;vxSim原型仿真器可以讓程序員在不用目標機的情況下,直接開發系統原型,做出系統評估;功能強大的CrossWind調試器可以提供任務級和系統級的調試模式,可以進行多目標機的聯調;優化分析工具可以幫助程序員用多種方式真正觀察、跟蹤系統的運行,排除錯誤,優化性能。
1.2.1 操作系統內核結構——微內核和宏內核
1.宏內核
宏內核也稱為單內核(Monolithic kernel),將內核從整體上作為一個大過程實現,并同時運行在一個單獨的地址空間。所有的內核服務都在一個地址空間運行,相互之間直接調用函數,簡單高效。單內核是一個很大的進程,它的內部又被分為若干模塊(或層次或其他)。但是在運行的時候,它是一個單獨的二進制大映像,其模塊間的通信是通過直接調用其他模塊中的函數實現的,而不是消息傳遞。
2.微內核
在微內核(Micro kernel)中,大部分內核都作為單獨的進程在特權狀態下運行,它們通過消息傳遞進行通信。在典型的情況下,每個概念模塊都有一個進程。因此,假如在設計中有一個系統調用模塊,那么就必然有一個相應的進程來接收系統調用,并和能夠執行系統調用的其他進程(或模塊)通信以完成所需任務。在這些設計中,微內核部分經常只是一個消息轉發站:當系統調用模塊要給其他系統模塊發送消息時,消息直接通過內核轉發,這種方式有助于實現模塊間的隔離。(某些時候,模塊也能夠直接給其他模塊傳遞消息。)在一些微內核的設計中,更多的功能(如I/O等)也都被封裝在內核中。但是最根本的思想還是要保持微內核盡量小,這樣只需要把微內核本身進行移植,就能夠完成將整個內核移植到新的平臺上。其他模塊都只依賴于微內核或其他模塊,并不直接依賴于硬件。
微內核設計的一個長處是在不影響系統其他部分的情況下,用更高效的實現代替現有系統模塊的工作將會更加容易。我們甚至能夠在系統運行時將研發出的新系統模塊或需要替換現有模塊的模塊直接而且迅速地加入系統。另外一個長處是不需要的模塊將不會被加載到內存中,因此,微內核能夠更有效地利用內存。
通常,嵌入式操作系統(如VxWorks)采用微內核設計結構,以節省內存空間,而通用操作系統(如Linux)則采用宏內核設計結構。
1.2.2 VxWorks內核——高性能的微內核設計
處于VxWorks嵌入式實時操作系統核心的是高性能的微內核Wind。這個微內核支持所有的實時特征:快速任務切換、中斷支持、搶占式和時間片輪轉調度等。微內核設計減少了系統開銷,從而保證了對外部事件的快速、確定的反應。
運行環境也提供了有效的任務間通信機制,允許獨立的任務在實時系統中與其行動相協調。開發者在開發應用程序時可以使用多種方法:用于簡單數據共享的共享內存,用于單CPU的多任務間信息交換的消息隊列和管道、套接口,用于網絡通信的遠程過程調用,用于處理異常事件的信號等。為了控制關鍵的系統資源,它提供了三種信號燈:二進制、計數、有優先級繼承特性的互斥信號燈。
1.2.3 VxWorks開發支持——可裁減的運行軟件
VxWorks之所以設計為具有可裁減性,是為了使開發者能夠根據自己的應用程序需要,而不是根據操作系統的需要來分配稀少的內存資源。從需要幾千字節(KB)內存的深層嵌入式設計到需要更多的操作系統功能復雜的高端實時系統,開發者也許需要從100多個不同的選項中進行選擇,以產生上百種配置方式。許多獨立的模塊都是在開發時要使用而在產品中卻不再使用的。而且,這些子系統本身也是可裁減的,這樣就允許開發者為最廣泛的應用程序進行更為優化的VxWorks運行環境配置。例如,如果應用程序不需要某些功能模塊,就可以將它移出ANSI C運行庫;如果應用程序不需要某些特定的內核同步對象,這些對象也可以忽略。還有,TCP、UDP、套接口和標準Berkeley服務也可以根據需要將之移出或移入網絡協議棧。
上述配置選項可以通過Tornado II的項目工具圖形接口輕易地選擇。開發者也可以使用Tornado II的自動裁剪特性,自動分析應用程序代碼并合并合適的選項。
1.2.4 VxWorks網絡支持——綜合的網絡工具
VxWorks是第一個支持工業標準TCP/IP的實時操作系統。創新的傳統伴隨著VxWorks TCP/IP協議棧,它支持最新的Berkeley網絡特性,包括:
● IP、IGMP、CIDR、TCP、UDP、ARP。
● RIP v.1/v.2。
● Standard Berkeley sockets and zbufs。
● NFS Client and Server、ONC、RPC。
● Point-to-Point Protocol。
● BOOTP、DNS、DHCP、TFTP。
● FTP、rlogin、telnet、rsh。
WindRiver也支持可選的WindNet產品:SNMP v.1/v.2c、OSPF v.2、STREAMS。WindRiver還通過提供工業級最廣泛的網絡開發環境來加強這些核心技術,這主要是通過WindLink for Tornado II伙伴計劃來實現的。高級的網絡解決方案還包括:
● ATM、SMDS、frame relay、ISDN、SS7、X.25、V5廣域網網絡協議。
● IPX/SPX、AppleTalk、SNA局域網網絡協議。
● 分布式網絡管理的RMON、CMIP/GDMO,基于Web網的解決方案。
● CORBA分布式計算機環境。
1.2.5 VxWorks移植性支持
1.兼容POSIX 1003.1b標準
VxWorks支持POSIX 1003.1b的規定和1003.1中有關基本系統調用的規定,包括:過程初始化、文件與目錄、I/O初始化、語言服務、目錄處理,而且VxWorks還支持POSIX 1003.1b的實時擴展,主要包括:異步I/O、記數信號量、消息隊列、信號、內存管理和調度控制。
2.平臺的選擇
WindRiver還提供現成的一整套商業和評估版。VxWorks開放的設計具有高度的可移植性,并且支持幾乎所有的處理器,這樣,應用程序就可以在不同的體系結構之間毫不費力地移植。
3.方便移植到用戶硬件上
能否將操作系統和應用程序以一種合適的方式進行移植是嵌入式軟件開發方面的關鍵。如果事先就考慮了操作系統和應用程序代碼的可移植性,那么這個過程就會變得非常容易。這需要明確劃分低級的依賴于硬件的代碼和高級的應用程序和操作系統代碼,這樣,移植時只需要改變整個依賴于硬件的低級代碼,而不需要改變操作系統和應用程序。
依賴于硬件的這一層稱為板級支持包(BSP,Board Support Package)。板級支持包是運行VxWorks的任何目標板都需要的。BSP Developer’s Kit使開發者很容易在用戶硬件上使用VxWorks;如果使用商業硬件,WindRiver提供了2000個板級支持包。當為用戶版開發板級支持包時,開發者可以獲得大量的標準設備驅動程序,這些程序對應所有的目標體系。
1.2.6 VxWorks操作系統選件
操作系統選件產品為開發者提供了意想不到的特性和操作系統擴展。這些選件主要包括:
● 板級支持包開發工具(BSP Developer’s Kit)。
● 支持閃存文件系統的TrueFFS for Tornado II。
● 支持圖形應用程序。
● 支持虛擬內存管理VxVMI。
● 支持多處理的VxMP、VxDCOM和VxFusion。
- 單片機基礎及應用項目式教程
- FPGA嵌入式項目開發三位一體實戰精講
- 51單片機逆向學習實戰教程(電子設計與嵌入式開發實踐叢書)
- 零起點學Proteus單片機仿真技術
- ANSYS Workbench 17.0有限元分析從入門到精通
- 嵌入式系統Linux內核開發實戰指南(ARM平臺)
- 基于STM32的嵌入式系統設計與實踐
- 嵌入式Linux與物聯網軟件開發:ARM處理器開發自學教程
- 單片機原理與接口技術
- 嵌入式Linux軟硬件開發詳解:基于S5PV210處理器
- STC 32位 8051單片機原理與應用
- 嵌入式系統:基于項目的分析和設計
- 單片機開發從入門到精通(第2版)
- 基于Quartus II的FPGA/CPLD設計實例精解
- 從零開始學TensorFlow2.0