0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)之二I/O設(shè)備框架

冬至子 ? 來源:Lu_盼盼 ? 作者:Lu_盼盼 ? 2023-10-12 10:26 ? 次閱讀

之前沒有接觸過驅(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ì)操作邏輯簡單的設(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è)備,如看門狗等??撮T狗設(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è)與使用序.

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 驅(qū)動(dòng)器
    +關(guān)注

    關(guān)注

    52

    文章

    8099

    瀏覽量

    145813
  • 看門狗
    +關(guān)注

    關(guān)注

    10

    文章

    558

    瀏覽量

    70707
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1261

    瀏覽量

    39837
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RT-Thread記錄(十、全面認(rèn)識(shí) I/O 設(shè)備模型)

    學(xué)完 RT-Thread 內(nèi)核,從本文開始熟悉了解 RT-Thread I/O 設(shè)備管理相關(guān)知識(shí)。
    的頭像 發(fā)表于 06-30 10:38 ?4045次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(十、全面認(rèn)識(shí) <b class='flag-5'>I</b>/<b class='flag-5'>O</b> <b class='flag-5'>設(shè)備</b>模型)

    RT-Thread記錄(十四、I/O 設(shè)備模型之ADC設(shè)備

    我曾經(jīng)考慮過把 RT-Thread 常用的設(shè)備都寫完,其實(shí)通過前面的《全面認(rèn)識(shí) RT-Thread I/O
    的頭像 發(fā)表于 07-04 12:28 ?4298次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(十四、<b class='flag-5'>I</b>/<b class='flag-5'>O</b> <b class='flag-5'>設(shè)備</b>模型之ADC<b class='flag-5'>設(shè)備</b>)

    RT-Thread記錄(十二、UART設(shè)備—使用測試)

    從 UART 設(shè)備開始學(xué)會(huì)使用 RT-Thread I/O 設(shè)備模型
    的頭像 發(fā)表于 07-02 12:42 ?4880次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(十二、UART<b class='flag-5'>設(shè)備</b>—使用測試)

    RT-Thread記錄(十三、I/O 設(shè)備模型之PIN設(shè)備

    講完UART設(shè)備之后,我們已經(jīng)熟悉RT-Thread I/O 設(shè)備模型了,回頭看看基本的 PIN 設(shè)備
    的頭像 發(fā)表于 07-03 11:28 ?4551次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(十三、<b class='flag-5'>I</b>/<b class='flag-5'>O</b> <b class='flag-5'>設(shè)備</b>模型之PIN<b class='flag-5'>設(shè)備</b>)

    基于RT-Thread的RoboMaster電控框架設(shè)計(jì)

    由于 RT-Thread 穩(wěn)定高效的內(nèi)核,豐富的文檔教程,積極活躍的社區(qū)氛圍,以及設(shè)備驅(qū)動(dòng)框架、Kconfig、Scons、日志系統(tǒng)、海量的軟件包……很難不選擇
    發(fā)表于 09-06 15:21 ?637次閱讀

    RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南基礎(chǔ)篇—以先楫bsp的hwtimer設(shè)備為例

    RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》書籍是RT-thread官方出品撰寫,系統(tǒng)講解RT-thread
    的頭像 發(fā)表于 02-20 16:01 ?1564次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>指南基礎(chǔ)篇—以先楫bsp的hwtimer<b class='flag-5'>設(shè)備</b>為例

    RT-Thread 的 IO 設(shè)備模型框架是由哪些部分組成的呢

    RT-ThreadI/O 設(shè)備模型框架是由哪些部分組成的呢?接下來由小編給大家詳細(xì)介紹一下。1、R
    發(fā)表于 03-11 18:17

    詳解RT-Thread I2C設(shè)備驅(qū)動(dòng)框架及相關(guān)函數(shù)

    摘要本應(yīng)用筆記以驅(qū)動(dòng) I2C 接口的 6 軸傳感器 MPU6050 為例,說明了如何使用 I2C 設(shè)備驅(qū)動(dòng)接口
    發(fā)表于 10-25 12:02

    詳細(xì)講解RT-Thread I2C設(shè)備驅(qū)動(dòng)框架及相關(guān)函數(shù)

    本應(yīng)用筆記以驅(qū)動(dòng)I2C接口的6軸傳感器MPU6050為例,說明了如何使用I2C設(shè)備驅(qū)動(dòng)接口開發(fā)應(yīng)
    的頭像 發(fā)表于 03-29 10:52 ?2w次閱讀
    詳細(xì)講解<b class='flag-5'>RT-Thread</b> <b class='flag-5'>I</b>2C<b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>框架</b>及相關(guān)函數(shù)

    RT-Thread設(shè)備模型框架及創(chuàng)建注冊(cè)設(shè)備的實(shí)現(xiàn)

    RT-Thread設(shè)備模型框架及創(chuàng)建注冊(cè)設(shè)備的實(shí)現(xiàn)方式介紹如下:
    的頭像 發(fā)表于 05-28 10:38 ?2132次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>設(shè)備</b>模型<b class='flag-5'>框架</b>及創(chuàng)建注冊(cè)<b class='flag-5'>設(shè)備</b>的實(shí)現(xiàn)

    RT-Thread文檔_I/O 設(shè)備模型

    RT-Thread文檔_I/O 設(shè)備模型
    發(fā)表于 02-22 18:31 ?0次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>I</b>/<b class='flag-5'>O</b> <b class='flag-5'>設(shè)備</b>模型

    RT-Thread文檔_I2C 總線設(shè)備

    RT-Thread文檔_I2C 總線設(shè)備
    發(fā)表于 02-22 18:35 ?0次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>I</b>2C 總線<b class='flag-5'>設(shè)備</b>

    淺析RT-Thread設(shè)備驅(qū)動(dòng)框架

    RT-Thread 設(shè)備框架屬于組件和服務(wù)層,是基于 RT-Thread 內(nèi)核之上的上層軟件。設(shè)備框架
    的頭像 發(fā)表于 08-07 15:39 ?1875次閱讀

    基于RT-Thread的RoboMaster電控框架

    由于 RT-Thread 穩(wěn)定高效的內(nèi)核,豐富的文檔教程,積極活躍的社區(qū)氛圍,以及設(shè)備驅(qū)動(dòng)框架、Kconfig、Scons、日志系統(tǒng)、海量的軟件包
    的頭像 發(fā)表于 09-20 15:16 ?695次閱讀

    RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》基礎(chǔ)篇--以先楫bsp的hwtimer設(shè)備為例

    一、概述(一)RT-Thread設(shè)備驅(qū)動(dòng)RT-Thread設(shè)備驅(qū)動(dòng)
    的頭像 發(fā)表于 02-24 08:16 ?1310次閱讀
    《<b class='flag-5'>RT-Thread</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)</b>指南》基礎(chǔ)篇--以先楫bsp的hwtimer<b class='flag-5'>設(shè)備</b>為例