色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

《RT-Thread設備驅動開發指南》基礎篇--以先楫bsp的hwtimer設備為例

先楫半導體HPMicro ? 2024-02-24 08:16 ? 次閱讀

一、概述


(一)RT-Thread設備驅動


《RT-Thread設備驅動開發指南》書籍是RT-thread官方出品撰寫,系統講解RT-thread IO設備驅動開發方法,從三方面進行講解。

基礎篇:對RT-thread以及設備框架進行介紹,再分別介紹基于IO框架中常用的外設設備,分別是UARTPIN、SPI/QSPI、HWTIMER、PWM、RTC、ADCDAC、WDT。

進階篇:介紹基于IO框架中稍比基礎篇復雜的外設設備,分別是SDIO、Touch、LCD、sensor、MTD nor、MTD nand、脈沖編碼器、加解密設備、PM設備。

高級篇:介紹更為復雜的外設設備,分別是WLAN、ETH、audio mic、audio sound、USBCAN


(二)先楫hpmicro bsp


為了深入了解本書的內容,得有一個單片機平臺進行案例剖析,除了本書籍以STM32arm平臺進行介紹,還可以以先楫hpmicro單片機系列的riscv平臺進行講解。

剛好先楫在rtthread的bsp貢獻上,也是十分豐富。無論是在rtthread studio的bsp包上,還是rtthread倉庫的bsp支持上,都有提供了對應的支持。

rtthread studio的SDK支持,包括了先楫目前所有的MCU系列。


fb06ad0c-d2a9-11ee-9118-92fbcf53809c.png


而在RT-thread上,bsp包的驅動支持上,也包括了rtthread大部分設備驅動。


fb10119e-d2a9-11ee-9118-92fbcf53809c.png


二、開發方法


(一)層級結構


RT-Thread 提供了一套簡單的 I/O 設備模型框架,如下圖所示,它位于硬件和應用程序之間,共分成三層,從上到下分別是 I/O 設備管理層、設備驅動框架層、設備驅動層。


fb152cec-d2a9-11ee-9118-92fbcf53809c.png


而作為單片機的定時器外設hwtimer功能,要對接到該IO設備框架,需要實現hwtimer設備的操作方法、設備的注冊、以及驅動的配置和驅動驗證。本文也是基于該開發方法進行闡述。

上述對應的三層驅動層,在源碼上,可以device->hwtimer->drv_hwtimer,其中drv_hwtimer是先楫官方實現的對接框架的驅動層。


fb20ec6c-d2a9-11ee-9118-92fbcf53809c.png


而設備驅動框架層,提供了ops操作接口,分別以下的接口需要驅動開發者實現注冊。


fb24a9ce-d2a9-11ee-9118-92fbcf53809c.png


(二)創建hwtimer設備


對hwtimer設備來說,在驅動開發時,需要先從rt_hwtimer_t結構中派生出新的hwtimer設備模型,然后根據自己的設備類型定義私有數據域。

同樣先楫的hwtimer drivers也定義了自己的由rt_hwtimer_t派生出來的hwtimer設備。


fb2ab986-d2a9-11ee-9118-92fbcf53809c.png


當然一個MCU也支持多個hwtimer,一個hwtimer驅動可以支持多個hwtimer設備,可以通過使能BSP_USING_GPTMRx進行開啟


fb30146c-d2a9-11ee-9118-92fbcf53809c.png


(三)實現hwtimer設備的操作方法


該操作方法就是上述所說的ops操作結構,屬于驅動共用部分,也就是多個hwtimer設備可以共用一個ops操作。同樣先楫也實現了該操作方法,并且注冊到自身的hwtimer的父類hwtimer的ops中。


fb372504-d2a9-11ee-9118-92fbcf53809c.png

fb3ced4a-d2a9-11ee-9118-92fbcf53809c.png


簡單舉例個操作方法的實現,比如獲取設備當前值count_get,原型如下:

rt_uint32_t (*count_get)(struct rt_hwtimer_device *timer);

而先楫實現的count_get是以上的hpm_hwtimer_count_get,可以看到,內部是先從timer獲取廠家自身定義的hwtimer設備,再從里面獲取硬件定時器的基地址控制句柄,然后使用先楫自身的驅動API獲取定時器的計數值進行返回。



fb4a7cf8-d2a9-11ee-9118-92fbcf53809c.png



(四)注冊hwtimer設備


注冊hwtimer設備,rtthread的IO設備框架提供了一個API:rt_device_hwtimer_register


fb4e763c-d2a9-11ee-9118-92fbcf53809c.png


從傳參句柄可知道,注冊時需要提供設備句柄timer,設備名稱name,用戶自定義data作為傳參。

在先楫的drv_hwtimer的驅動中,創建了個全局的hwtimer設備數組,里面包含了hwtimer的所有信息,包括設備名稱。然后在注冊初始化當中,輪詢該數組使能的定時器設備依次注冊到rtthread的hwtimer設備當中。


fb5aff6a-d2a9-11ee-9118-92fbcf53809c.png


在開發指南當中,特別提到了一個注意點,hwtimer設備句柄需要實現rt_hwtimer_info,定義硬件定時器的特征信息,如計數的最大最小頻率,最大計數值以及計數方向,而先楫也同樣進行了實現。

fb624842-d2a9-11ee-9118-92fbcf53809c.png


(五)hwtimer設備中斷處理


在開發指南中,該部分也需要實現,目的是將定時時間導致的中斷事件通知到hwtimer設備驅動框架,讓驅動框架完成后續的處理并通知應用層。而該通知事件API則是rt_device_hwtimer_isr,該函數由rtthread的hwtimer設備驅動框架提供。


fb69192e-d2a9-11ee-9118-92fbcf53809c.png


MCU下的hwtimer驅動,需要在中斷處理函數調用rt_device_hwtimer_isr函數,以便通知hwtimer設備驅動框架對應中斷的發生。

在先楫的hwtimer驅動中也是基于這個實現通知事件。


fb6e4d72-d2a9-11ee-9118-92fbcf53809c.png


從以上代碼可知,hpmicro實現的hwtimer設備驅動接管了定時器的通用中斷服務函數hpm_hwtmr_isr,然后內部調用了rtthread的hwtimer設備驅動框架提供的rt_device_hwtimer_isr中斷處理函數,通

知設備框架對應的定時器定時時間到達。


(六)驅動配置


1、Kconfig配置

驅動配置主要通過Kconfig實現,這里使用hpm6750evk2的bsp V1.4.1作為說明。

在board文件夾中,有個Kconfig配置了hpm6750evk2的板載驅動信息。對于定時器驅動的相關選項如下:

fb7928be-d2a9-11ee-9118-92fbcf53809c.png


RT_USING_HWTIMER:RT-thread的hwtimer設備驅動框架下的代碼對應的宏定義,控制hwtimer的驅動框架的相關代碼是否會添加到工程中

BSP_USING_GPTMR:先楫的hwtimer驅動下的代碼對應的宏定義,控制先楫的hwtimer驅動是否會添加到工程中

BSP_USING_GPTMR1: 使用先楫的定時器1


2、SConscript配置


libraries/drivers/SConscript文件為hwtimer驅動添加判斷選項,如果定義了BSP_USING_GPTMR,則對應的驅動文件drv_hwtimer就會被添加到工程的源文件中。

fb7e150e-d2a9-11ee-9118-92fbcf53809c.png


三、驅動驗證


使用hpm6750evk2的bsp V1.4.1作為說明,新建timer_demo的示例工程。


fb8395e2-d2a9-11ee-9118-92fbcf53809c.png


編譯燒錄代碼,使用list_device查看設備,可以看到注冊的設備已經包含了hwtimer這個設備。


fb888624-d2a9-11ee-9118-92fbcf53809c.png


運行自帶的shell命令hwtimer_sample,該命令會運行5s的定時,查看readme文檔


fb8cd5ee-d2a9-11ee-9118-92fbcf53809c.png

fb912f4a-d2a9-11ee-9118-92fbcf53809c.png


四、總結


1、基礎篇包含UART、PIN、SPI/QSPI、HWTIMER、PWM、RTC、ADC、DAC、WDT這些外設,本文以先楫適配的HWTIMER驅動進行說明,能感受到先楫對于rtthread驅動適配的完整性。

2、除了本文闡述的外設,其他基礎外設同樣適配完整。



fb958928-d2a9-11ee-9118-92fbcf53809c.png

以上內容來自先楫開發者原創分享。

我們始終相信開發者共創的力量。先楫社區堅持開源共享、互惠互利,貼近每一個開發者,一步一個腳印,一點一滴積累,為成為更好的我們而不斷努力。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 設備驅動
    +關注

    關注

    0

    文章

    68

    瀏覽量

    10889
  • BSP
    BSP
    +關注

    關注

    1

    文章

    87

    瀏覽量

    26158
  • RTThread
    +關注

    關注

    8

    文章

    132

    瀏覽量

    40889
收藏 人收藏

    評論

    相關推薦

    RT-Thread使用未默認啟用的timer作為硬件定時器HWTIMER的步驟

    初學 RT-Thread,在 RT-Thread studio 環境下,使用手里的 nucleo_L476 開發板來學習 HWTimer 的使用,運行官方
    的頭像 發表于 07-19 15:17 ?1829次閱讀
    <b class='flag-5'>RT-Thread</b>使用未默認啟用的timer作為硬件定時器<b class='flag-5'>HWTIMER</b>的步驟

    RT-Thread設備驅動開發指南基礎bsphwtimer設備

    RT-Thread設備驅動開發指南》書籍是RT-thread官方出品撰寫,系統講解RT-thread
    的頭像 發表于 02-20 16:01 ?1719次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>設備</b><b class='flag-5'>驅動</b><b class='flag-5'>開發指南</b>基礎<b class='flag-5'>篇</b>—<b class='flag-5'>以</b><b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>bsp</b>的<b class='flag-5'>hwtimer</b><b class='flag-5'>設備</b><b class='flag-5'>為</b><b class='flag-5'>例</b>

    RT-Thread驅動開發指南進階-動手驅動未適配的外設LCD

    經過上一的《《RT-Thread設備驅動開發指南》基礎--
    的頭像 發表于 02-25 11:04 ?2572次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>驅動</b><b class='flag-5'>開發指南</b>進階<b class='flag-5'>篇</b>-動手<b class='flag-5'>驅動</b><b class='flag-5'>先</b><b class='flag-5'>楫</b>未適配的外設LCD

    開發者分享 | 基于RT-Thread BSP,使用CLion開發應用

    本期開發者:朱彥祖RT-Thread資深工程師,HPM6700/6400元老級開發者及骨灰級用戶,輯生態社區常駐優秀開發者,江湖人稱杭州吳
    的頭像 發表于 06-07 08:17 ?2851次閱讀
    <b class='flag-5'>開發</b>者分享 | 基于<b class='flag-5'>先</b><b class='flag-5'>楫</b><b class='flag-5'>RT-Thread</b> <b class='flag-5'>BSP</b>,使用CLion<b class='flag-5'>開發</b>應用

    已結束-【書籍評測活動NO.4】RT-Thread官方撰寫,涵蓋26種設備驅動開發指南

    本期書籍評測名單如下:大菠蘿Alpha 《RT-Thread設備驅動開發指南》學習之UART設備驅動
    發表于 02-22 15:30

    RT-Thread設備驅動開發指南》讀書測評

    驅動開發指南》這本書主要分了三個部分,由基礎,進階,高級組成,適用不同層次的開發者,對于不
    發表于 03-26 21:04

    RT-Thread設備驅動開發指南》學習之UART設備驅動開發學習

    首先感謝發燒友社區提供的機會,感謝RT-Thread社區。一、I/O設備模型RT-Thread 提供了一套簡單的 I/O 設備模型框架,如下圖所示,它位于硬件和應用程序之間,共分成三層
    發表于 04-14 23:13

    RT-Thread文檔_Nordic BSP 上手指南

    RT-Thread文檔_Nordic BSP 上手指南
    發表于 02-22 18:26 ?7次下載
    <b class='flag-5'>RT-Thread</b>文檔_Nordic <b class='flag-5'>BSP</b> 上手<b class='flag-5'>指南</b>

    RT-Thread文檔_HWTIMER 設備

    RT-Thread文檔_HWTIMER 設備
    發表于 02-22 18:34 ?0次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>HWTIMER</b> <b class='flag-5'>設備</b>

    送《RT-Thread設備驅動開發指南》,手慢無!

    迫切地希望有一本可以指導他們在RT-Thread開發驅動指南。 為了解決開發者的燃眉之急, 《RT
    的頭像 發表于 03-19 23:00 ?1402次閱讀

    上海線下培訓:RT-Thread× HPM5300 for RT-Thread ,高性能 RISC-V 平臺開發快速上手

    RT-Thread的代表性產品和服務。 同時,我們也邀請到的資深工程師楊帆,他將為開發者們帶來期待已久的熱門技術主題培訓,RT-Thread
    的頭像 發表于 11-03 19:10 ?772次閱讀
    上海線下培訓:<b class='flag-5'>RT-Thread</b>×<b class='flag-5'>先</b><b class='flag-5'>楫</b>  HPM5300 for <b class='flag-5'>RT-Thread</b> ,高性能 RISC-V 平臺<b class='flag-5'>開發</b>快速上手

    RT-Thread BSP v1.3.0 發布

    各位的小伙伴們,我們很高興地通知您,半導體最新的RT-ThreadBSPv1.3.0正式發布了!!(該圖片來源于網絡)提供的主要功能
    的頭像 發表于 11-08 08:17 ?604次閱讀
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>BSP</b> v1.3.0 發布

    線下活動|HPM5300 for RT-Thread ,高性能 RISC-V 平臺開發快速上手

    公司最新技術和創新解決方案的機會。參與者將深入了解半導體和RT-Thread的代表性產品和服務。同時,我們也邀請到的資深工程師楊帆老
    的頭像 發表于 11-08 08:18 ?674次閱讀
    線下活動|<b class='flag-5'>先</b><b class='flag-5'>楫</b>HPM5300 for <b class='flag-5'>RT-Thread</b> ,高性能 RISC-V 平臺<b class='flag-5'>開發</b>快速上手

    RT-Thread BSP v1.4.0 正式發布

    親愛的小伙伴們:我們很高興地通知您,RT-ThreadBSPv1.4.0正式發布了!!1個小轉變:從這個版本開始,我們將更側重于利用RT-Thread豐富的組件以及特色的在線包,基
    的頭像 發表于 02-19 12:20 ?628次閱讀
    <b class='flag-5'>先</b><b class='flag-5'>楫</b> <b class='flag-5'>RT-Thread</b> <b class='flag-5'>BSP</b> v1.4.0 正式發布

    【好書推薦】RT-Thread設備驅動開發指南

    強烈,他們迫切地希望有一本可以指導他們在RT-Thread開發驅動指南。為了解決開發者的燃眉之急,《
    的頭像 發表于 08-01 08:35 ?647次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b><b class='flag-5'>設備</b><b class='flag-5'>驅動</b><b class='flag-5'>開發指南</b>
    主站蜘蛛池模板: 又紧又大又爽精品一区二区 | 4hu四虎免费影院www| 曰本老头同性xxxxx| 99在线观看| 动漫美女被到爽了流漫画| 国产香蕉尹人视频在线| 精品视频一区二区三三区四区| 毛片在线播放网址| 素人约啪第五季| 中文无码热在线视频| 东北老妇xxxxhd| 久久综合久综合久久鬼色| 日韩精品真人荷官无码| 亚洲午夜精品A片久久不卡蜜桃| 99久久免热在线观看| 国产精品久久久久久久久LI无码 | 欧美xxxxb| 亚洲精品视频观看| FREE性丰满HD毛多多| 精品久久久久亚洲| 日韩精品一区二区三区色欲AV| 亚洲精品视频观看| 成人欧美尽粗二区三区AV| 久久久久久人精品免费费看| 日日做夜夜欢狠狠免费软件| 最新国自产拍 高清完整版| 国产成人免费网站在线观看| 免费精品美女久久久久久久久久| 午夜在线播放免费人成无| 91青青草原| 茎身铃口调教| 吻嘴胸全身好爽床大全| 99热这里有精品| 久久热免费观看视频| 无限资源日本2019版| aaa级黄影片| 久久综合视频网站| 亚洲国产第一区二区三区| 抽插嫩B乳无码漫| 免费xxx成年大片| 在教室伦流澡到高潮H免费视频|