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