實時控制軟件系統設計第三週做業-楊靜梧

VxWorks實時操做系統性能分析

VxWorks實時多任務的嵌入式操做系統,它主要包括任務調度、I/O功能、文件系統、中斷管理、內存管理、網絡功能、內存管理、BSP(系統啓動模塊)等。它的多任務的實現是由中斷驅動的,即在每一個系統時鐘中斷中,實現任務的調度。VxWorks中的任務有優先級的概念。與其它嵌入式操做系統相比,它有以下優勢:html

-任務之間的切換快,任務間通訊手段多樣
VxWorks的任務有優先級的概念,其任務調度也是基於優先級考慮的,是搶佔式的,VxWorks的任務有256個等級,0—255,其調度算法有兩種:徹底搶佔式的和循環分配式的。VxWorks爲任務間的通訊和同步提供了豐富的手段,包括信號量、消息隊列、管道、信號等。ios

-中斷響應的延時短
VxWorks的中斷延時短,能夠知足實時的要求,而用戶能夠用C語言編寫中斷服務程序,而無需掌握彙編。須要注意的是,用戶中斷函數所使用的棧和應用任務的棧並不相同,而是由用戶指定的另一段空間,這樣在必定程度上保證了系統的安全性。git

-內存管理安全
VxWorks把內存分紅不少區域,包括內核區、用戶區,而且採用虛擬內存管理的方法,這樣大大提升了系統的安全性,而且增長了堆棧溢出的判斷。VxWorks中有虛擬內存的概念,內存是分頁管理的。即用戶所操做的內存地址其實是虛存,實際物理內存對於用戶而言是不可見的。 在VxWorks中,內存被分紅許多域,有內核域、應用域。內核域用來執行操做系統內核代碼和存放操做系統內核數據(如信號量、任務控制結構等),應用域用來 執行用戶任務代碼和存放用戶任務數據。各個域之間的數據是不可見的,每一個應用域都有本身的堆和棧,並且都有內核域在本域中的映像。github

-I/O功能豐富,硬件驅動全面
VxWorks提供了豐富的I/O功能(包括低層硬件驅動)供使用,包括:硬盤驅動,鍵盤驅動,網卡驅動,顯卡驅動,軟盤驅動和並行口驅動等。而且驅動程序還能夠由開發者本身動態添加、刪除而不用從新啓動系統。用戶可調用iosDrvInstall()函數來添加本身的硬件驅動,從而系統在操做相應設備時,會調用用戶的驅動來實現。算法

-文件系統強大
VxWorks提供了強大的本幾文件系統供使用。提供了與MS-DOS兼容的FAT32文件系統,另外還提供支持硬盤、CD-ROM、磁帶設備和FLASH的文件系統,而且在一個VxWorks系統中,容許多個文件系統同時存在。另外VxWorks提供的TrueFFS文件系統,是支持FLASH設備的;VxWorks提供的TSFS文件系統,是支持 網絡功能的,它能夠用來實現和Tornado服務器程序通訊,從而在服務器上存取本機文件。編程

-網絡功能全面
VxWorks的網絡功能也是很強大的,它提供的網絡驅動接口MUX,運行在IP層和數據鏈路層之間,從而用戶能夠在MUX中加進本身的協議,而且用戶還能夠增長本身的網絡驅動。安全

-對任務的實時監控
VxWorks提供了對系統的實時監控(Spy)功能,它能夠提供每一個任務運行所耗時間信息、系統所花在中斷上的時間信息以及CPU的空閒時間等,其單位是時鐘週期,並能夠以百分比的形式顯示。更強大的監視工具(仿真器)是WindView,用於程序調試。這樣能夠幫助用戶分析各個任務以及中斷的執行狀態是否正常。服務器

-BSP(啓動模塊)的支持
BSP模塊主要用於系統的初始化,包括硬件的初始化、加載系統庫並加載應用程序從而運行整個系統等,它能夠被掩膜到ROM中,從而不會被修改。網絡

-多CPU的支持
VxWorks的一個特色就是對於多CPU有較好的支持,運行在多個CPU上的任務能夠通訊,這是由VxMP模塊實現的,採用共享信號量和共享消息隊列以及共享內存管理的方法。採用共享信號量能夠同步不一樣CPU上的多個任務,就像在本機上使用同樣。採用共享消息隊列可讓在不一樣CPU上的任務之間交換數據。採用共享內存可讓在不 同CPU上的任務之間共享數據。函數

-系統各模塊是單獨的庫,能夠根據須要加載
VxWorks強大的靈活性體如今它的各個功能模塊都是單獨的庫,能夠根據須要在運行時動態加載。好比任務管理庫是taskLib,信號量庫是semLib,中斷管理庫是sysLib和intLib,網絡庫是sockLib,I/O庫是ioLib等,這些庫能夠根據須要在運行時動態加載、卸載,從而加強的系統的靈活性,節省了系統空間。

-專門的集成開發環境
WindRiver公司隨VxWorks操做系統提供了配套的Tornado集成開發環境,Tornado開發環境具備使用方便、功能全面的優勢。另外,tornado仿真器提供了強大的調試功能,可用來調試VxWorks的程序。它提供了網卡、串口或者PIPE(管道)來下載程序到目標板上調試。

參考:http://www.360doc.com/content/15/0305/11/9561082_452698594.shtml

團隊項目思考

-感興趣的任務
對於各個功能模塊,我的以爲對軌跡插補任務比較感興趣。就目前本身的理解就是首先接收到相關G指令以後,對G代碼進行解碼,而後根據解碼結果,控制脈衝輸出轉換成電機的轉速以及位移等物理量。其中主要的任務應該分兩塊兒,第一個就是G代碼的解碼模塊,第二個應該是運動物理量計算的運動控制模塊。

-團隊開發理解
我認爲團隊協做開發主要有幾個要注意的地方:(1)工做的分工首先要根據我的的興趣,特長來開展。讓擅長文字管理的人來管理文檔資料,擅於編程的人來管理代碼等等。(2)團隊協做開發要進行不一樣方面的管理,好比代碼管理,進度管理等。對於代碼管理,好比咱們先在github上建立issue,而後建立不一樣的分支,每一個人進行代碼的編寫測試的同時要造成工做日誌,也就是說我的工做的透明化,每一個人都可以看見其餘人的工做,這樣一方面可以控制各個分支的進度保持一致,同時也可以及時讓別人幫助發現問題。

-團隊任務角色 若是我在一個控制軟件設計團隊裏面,我我的比較傾向一是算法的設計,二是文檔的寫做的工做。傾向算法設計主要是本身對這方面相對比較感興趣;傾向文檔寫做主要是我認爲本身在這方面有一些經驗。

相關文章
相關標籤/搜索