中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統的硬件設備驅動有什么作用

發布時間:2021-09-26 11:44:53 來源:億速云 閱讀:134 作者:iii 欄目:系統運維

本篇內容介紹了“Linux系統的硬件設備驅動有什么作用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

什么是驅動?
最通俗的解釋就是“驅使硬件設備行動”
 
作用?
設備驅動與底層硬件直接打交道,按照硬件設備的具體工作方式讀寫設備寄存器,完成設備的輪詢、中斷處理、DMA通信,進行物理內存向虛擬內存的映射,最終使通信設備能夠收發數據,使顯示設備能夠顯示文字和畫面,使存儲設備能夠記錄文件號數據
 
計算機系統的硬件主要有cpu、存儲器、外設組成。但是隨著IC制造工藝的發展,目前,芯片的集成度越來越高,往往cpu內部就集成了存儲器和外設適配器。ARM處理器集成了UART、I2C控制器(2==平方)、USB控制器、SDRAM控制器等
Linux系統的硬件設備驅動有什么作用

驅動針對的對象是存儲器和外設(包括cpu內部集成的存儲器和外設),而不是針對cpu核。Linux將存儲器和外設分為3個基礎大類:字符設備、塊設備、網絡設備
 
字符設備之那些必須以串行順序依次進行訪問的設備,如觸摸屏、磁帶驅動器、鼠標等。可設備可以按照任意順序進行訪問,以塊為單位進行操作,如硬盤、軟驅等。字符設備不經過系統的快速緩沖,而塊設備經過系統的快速緩沖。但是,字符設備和塊設備并沒有明顯的界限,如flash設備符合塊設備的特點,但是我們仍然可以把它作為一個字符設備來訪問
 
在Linux系統中,網絡設備面向數據包的接收和發送而設計,它并不對應于文件系統的節點。內核與網絡設備的通信和內核與字符設備、塊設備的通信方式完全不同。
Linux系統的硬件設備驅動有什么作用

如上圖所示,除網絡設備外,字符設備與塊設備都被映射到Linux文件系統的文件和目錄,通過文件系統的系統調用接口open()、write()、read()、close()等函數即可訪問字符設備和塊設備。塊設備比字符設備復雜,在它上面會首先建立一個磁盤/Flash文件系統,如FAT、Ext3、YAFFS、JFFS等FAT、Ext3、YAFFS、JFFS規范了文件和目錄在存儲介質上的組織
 
應用程序可以使用Linux的系統調用接口編程,也可由使用c庫函數,出于可移植性的考慮,后者更值得推薦。c庫函數本身也是通過系統調用接口而實現的
 
在嵌入式系統的設計中,LED一般直接由cpu的GPIO控制。GPIO一般有兩組寄存器控制,即一組控制寄存器和一組數據寄存器。控制寄存器可設置GPIO口的工作方式為輸入或輸出。當引腳設置為輸出時,向數據寄存器的對應位寫入1和0會分別在引腳上產生高電平和低電平;當引腳設置為輸入時,讀取數據寄存器的對應位可獲得引腳上相應的電平信號。

驅動設計的硬件基礎
處理器的分類,如下圖所示:
Linux系統的硬件設備驅動有什么作用

存儲器可分為只讀存儲器(ROM)、閃存(Flash)、隨機存取存儲器(RAM)、光介質存儲器和磁介質存儲器
 
Nor Flash和cpu的接口屬于典型的類SRAM接口,不需要增加額外的控制電路。Nor Flash的特點是可芯片內執行,程序可以直接在Nor內運行。而Nand Fash和cpu的接口必須由相應的控制電路進行轉換,當然也可以通過地址線或GPIO產生Nand Flash接口的信號。Nand Flash以塊方式進行訪問,不支持芯片內執行。
 
Flash的編程原理都是只能將1寫為0,而不能將0寫完1.所以在Flash編程之前必須將對應的塊擦除,而擦除的過程就是把所有的位都寫為1的過程,塊內的所有字節變為1xFF
 
存儲器的分類,如下圖所示:
Linux系統的硬件設備驅動有什么作用

原理圖分析:通過閱讀電路板的原理圖獲得各種存儲器、外設所使用的硬件資源,主要包括存儲器和外設控制芯片所使用的片選、中斷、DMA資源。通過分析片選得出芯片的內存、I/O基地址,通過分析中斷、DMA信號獲得芯片使用的中斷號和DMA通道,歸納出類似下表:
Linux系統的硬件設備驅動有什么作用

時序分析:對驅動工程師或硬件工程師而言,時序分析的意思是讓芯片之間的訪問滿足芯片手冊中時序圖信號有效的先后順序、采樣建立時間和保持時間的要求,在電路板工作不正常的時候,準確的定位時序方面的問題
Linux系統的硬件設備驅動有什么作用

內核及內核編程
在設備驅動方面,Linux2.6相對于Linux2.4有較大的改動,這主要表現在內核API中增加了不少新功能(如內存池)、sysfs文件系統、內核模塊從.o變為.ko、驅動模塊編譯方式、模塊使用計數、模塊加載和卸載函數的定義等方面
 
Linux內核主要有進程調度、內存管理、虛擬文件系統、網絡接口和進程間通信等5個子系統組成,如下圖:
Linux系統的硬件設備驅動有什么作用

在設備驅動編程中,當請求的資源不能滿足時,驅動一般會調度其他線程執行,并使驅動對應的進程進入睡眠狀態,直到它請求的資源被釋放,才會被喚醒而紀念日就緒狀態
 
在設備驅動編程中,如果需要幾個并發執行的任務,可以啟動內核線程,啟動內核線程的函數為:int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
 
Linux內存管理完成為每個進程進行虛擬內存到物理內存的轉換。一般而言,Linux的每個進程享有4GB的內存空間,0-3GB屬于用戶空間,3-4GB屬于內核空間,內核空間對常規內存、I/O設備內存以及高端內存存在不同的處理方式
 
虛擬文件系統隱藏了各種硬件的具體細節,為所有的設備提供了統一的接口。而且,它獨立于各個具體的文件系統,是對各種文件系統的一個抽象,它使用super block存放文件系統相關信息,使用索引節點inode存放文件的物理信息,使用目錄項dentry存放文件的邏輯信息
 
Linux系統只能通過系統調用和硬件中斷完成從用戶空間到內核空間的控制轉移。

“Linux系統的硬件設備驅動有什么作用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广昌县| 伽师县| 中卫市| 大足县| 盱眙县| 铜山县| 太原市| 鞍山市| 五大连池市| 宁津县| 牡丹江市| 外汇| 旬邑县| 泰和县| 千阳县| 通州区| 华容县| 离岛区| 将乐县| 三亚市| 南阳市| 攀枝花市| 正蓝旗| 新化县| 且末县| 唐海县| 株洲市| 咸阳市| 敦煌市| 景泰县| 珠海市| 禹州市| 济南市| 莆田市| 西藏| 游戏| 治多县| 灵丘县| 互助| 丹凤县| 灌阳县|