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