嵌入式設備系統有無操作系統的區別

        隨着通信、電子物聯網的飛速發展,每天都有各種各樣的芯片被研發出來,而要想知道這些芯片怎樣工作以及工作後的作用,則離不開軟硬件工程師的努力,任何一個計算機系統都是系統中軟硬件協作的結果,沒有硬件的軟件是空中樓閣,沒有軟件的硬件是一堆廢鐵,硬件是軟件運行的基礎。軟件上所有操作最終都會被硬件以硬件工作的時序進行工作,硬件建造出來是固定的,而軟件則很靈活,可以根據場景適應多種應用,兩者相輔相成,缺一不可。

       設備驅動,顧名思義就是"驅使硬件設備行動",設備驅動直接與硬件打交道,按照硬件datasheet要求的方式上下電、讀寫寄存器、中斷處理、通信、DMA搬運等等。驅動充當着硬件和應用之間的橋樑,所以驅動有時候既要和硬件工程師溝通設備的運行方式,又要和應用工程師討論調用方法。

一、無操作系統

      在早期的軟件中,程序不在複雜的情況下工作比較單一,控制着不太複雜的系統,例如食堂刷卡機、公交刷卡機、微波爐、冰箱等,功能都比較簡單,並不需要多任務調度、文件系統、內存管理等複雜功能,單任務架構完全可以很好地支持它們的工作。可能一個無限循環加上按鍵、中斷的處理就能完成功能設計。在這種情況下,應用和驅動分割的不是那麼清楚,一般可能就是一個人完成了應用和驅動,每種芯片可能根據工作方式寫了一組接口,比如A芯片讀寄存器AreadReg,B芯片讀寄存器BreadReg,應用需要根據芯片使用進行接口調用,在這種情況下,設備驅動的接口被直接提交給了應用軟件工程師, 應用軟件沒有跨越任何層次就直接訪問了設備驅動的接口。 設備驅動包含的接口函數也與硬件的功能直接吻合, 沒有任何附加功能。甚至把應用和驅動寫在同一文件中,不符合軟件設計的高內聚低耦合的要求。

二、有操作系統

      不管有無操作系統,設備驅動都是必須的,有了操作系統後,驅動程序需要融入到內核,應用和驅動直接的紐帶是固定的,驅動工程師需要按照操作系統規定的接口進行設計,所以存在操作系統時,驅動變成了硬件和內核直接的橋樑,它對外呈現的是統一的接口,例如:write()、read()、驅動程序有Aread()、Bread(),操作系統會根據實際使用的設備調用相應的驅動,不用每次都重新匹配,應用工程師也完全不必關心硬件變化。

      有了操作系統後,驅動會變得稍顯複雜,但是和它能帶來的好處而且無足輕重,不用關心內存管理、文件系統管理等等,更加高效、快速、方便的管理嵌入式硬件的有限資源,能完成很複雜的的控制,並且對於應用開發來說十分方便。

      當然,要根據實際情況去選擇是否需要操作系統,比較簡單的單任務環境中,就完全沒有必要了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章