之前沒有接觸過驅動開發的人,看到“設備框架”這個名詞可能會感到迷茫。大家不妨先思考這樣一個問題:“為什么不同廠家、不同價格、不同形狀的鼠標,插到電腦上之后都能正常工作?“這是因為各家生產的鼠標者遵循同一套標準,操作系統只要按照這個標準去操作鼠標就可以得到它想要的效果。
“設備框架”就是針對某一類外設,抽象出來一套統一的操作方法以及接入標準。有了這一層抽象,框架上層的應用要訪問外設(比如攝像頭)是,就不用關具體的廠家或者產地了。只要按照框架提供的操作方法,就可以控制攝像頭拍照、攝像了。這套設備框架也為生產廠家提供了方便,他們不需要關心應用具體會怎么使用,只要按照設備框架提供的接入標準設計產品,生產出來就可以在市面上銷售了。
在嵌入式領域,RT- Thread了提供了這樣的一層抽象,用于屏蔽嵌入式上的硬件差異,為應用層提供統一的操作方法,也為底層提供統一的接入標準。
應用程序通過I/O設備管理接口獲得正確的設備驅動,然后通過這個設備驅動與底層I/O硬件設備進行數據(或控制)交互。
I/O設備管理層實現了對設備驅動的封裝。應用程序通過I/O設備層提供的標準接口訪問底層設備,因此設備驅動程序的升級、更替不會對上層就用產生影響。這種方式使得設備的硬件操作相關的代碼能夠獨立于應用程序而存在,雙方只需要關注各自的功能實現,從而降低了代碼的耦合性、復雜性,提高了系統的可靠性。I/O設備管理層所飲食的I/O設備管理接口有rt_thread_findopenreadwritecloseregister等。
設備驅動框架層是對同類硬件設備驅動的抽象,將不同廠家的同類硬件設備驅動中相同的部分抽取出來,將不同部分留出接口,由驅動程序實現。
設備驅動層是一組驅使硬件設備工作的程序,實現了訪問硬件設備的功能,它負責創建和注冊I/O設備。設備驅動層注冊設備有以下兩種方式。
第一種方式,
使用I/O設備管理層接口直接注冊,在設備驅動文件中通過rt_device_register()接口注冊到I/O設備管理器中。這種方式是針對操作邏輯簡單的設備,可以不經過設備驅動框架層,直接將設備注冊到I/O設備管理器中。
1)設備驅動根據設備模型定義,創建出具體硬件訪問能力的設備實例,將該設備通過rt_device_register接口注冊到I/O設備管理器中。
2)應用程序通過rt_device_find()找到設備,然后使用I/O設備管理接口來該問硬件。
第二種方式
通過設備驅動框架層提供的注冊函數進行注冊,注冊函數一般命名為rt_hw_xx_register(),設備驅動框架層的注冊函數又調用了I/O設備管理接口的注冊函數rt_device_register(),從而進行設備注冊。此種注冊方式是針對一些不能使用I/O設備管理接口完成操作的設備,如看門狗等。看門狗設備注冊的主要步驟如下。
1)看門狗設備驅動程序根據看門狗設備模型定義,創建出具備硬件訪問能力的看門狗設備實例,并將該看門狗設備通過rt_hw_watchdog_register()接口注冊到看門狗設備驅動框架中。
2)看門狗設備驅動框架通過rt_device_register()接口將看門狗設備注冊到I/O設備管理器中。
3)應用程序通過rt_device_find()接口查找到設備,然后使用I/O設備管理接口來該問看門狗硬件。
看門狗設備注冊與使用序.
-
驅動器
+關注
關注
53文章
8271瀏覽量
147061 -
看門狗
+關注
關注
10文章
566瀏覽量
70949 -
RT-Thread
+關注
關注
31文章
1305瀏覽量
40386
發布評論請先 登錄
相關推薦
評論