在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

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

RTThread物聯網操作系統 ? 來源:RCSN嵌入式 ? 2024-02-20 16:01 ? 次閱讀

一、概述

(一)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系列。

d8dc6370-cfc5-11ee-a297-92fbcf53809c.png

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

d8f1876e-cfc5-11ee-a297-92fbcf53809c.png

二、開發方法

(一)層級結構

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

d909bfaa-cfc5-11ee-a297-92fbcf53809c.png

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

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

d90d8874-cfc5-11ee-a297-92fbcf53809c.png

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

d9191676-cfc5-11ee-a297-92fbcf53809c.png

(二)創建hwtimer設備

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

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

d91d7220-cfc5-11ee-a297-92fbcf53809c.png

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

d921175e-cfc5-11ee-a297-92fbcf53809c.png

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

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

d92769c4-cfc5-11ee-a297-92fbcf53809c.png

d9353e32-cfc5-11ee-a297-92fbcf53809c.png

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

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

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

d938b684-cfc5-11ee-a297-92fbcf53809c.png

(四)注冊hwtimer設備

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

d93c4132-cfc5-11ee-a297-92fbcf53809c.png

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

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

d949363a-cfc5-11ee-a297-92fbcf53809c.png

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

d96632ee-cfc5-11ee-a297-92fbcf53809c.png

(五)hwtimer設備中斷處理

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

d96a84c0-cfc5-11ee-a297-92fbcf53809c.png

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

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

d97a123c-cfc5-11ee-a297-92fbcf53809c.png

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

(六)驅動配置

1、Kconfig配置

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

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

d97e96cc-cfc5-11ee-a297-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就會被添加到工程的源文件中。

d9822aee-cfc5-11ee-a297-92fbcf53809c.png

三、驅動驗證

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

d98f8d1a-cfc5-11ee-a297-92fbcf53809c.png

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

d994fb42-cfc5-11ee-a297-92fbcf53809c.png

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

d99898e2-cfc5-11ee-a297-92fbcf53809c.png

d99cce6c-cfc5-11ee-a297-92fbcf53809c.png

四、總結

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

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

d9adee2c-cfc5-11ee-a297-92fbcf53809c.png




審核編輯:劉清

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

    關注

    2

    文章

    658

    瀏覽量

    73295
  • 中斷處理
    +關注

    關注

    0

    文章

    94

    瀏覽量

    11020
  • PWM波
    +關注

    關注

    0

    文章

    99

    瀏覽量

    16957
  • RT-Thread
    +關注

    關注

    31

    文章

    1306

    瀏覽量

    40420
  • 脈沖編碼器
    +關注

    關注

    0

    文章

    13

    瀏覽量

    8263

原文標題:RT-Thread設備驅動開發指南基礎篇——以先楫bsp的hwtimer設備為例

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

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

    經過上一的《《RT-Thread設備驅動開發指南》基礎--
    的頭像 發表于 02-25 11:04 ?2837次閱讀
    <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 ?3053次閱讀
    <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 ?1445次閱讀

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

    RT-Thread的代表性產品和服務。 同時,我們也邀請到的資深工程師楊帆,他將為開發者們帶來期待已久的熱門技術主題培訓,RT-Thread
    的頭像 發表于 11-03 19:10 ?815次閱讀
    上海線下培訓:<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 ?651次閱讀
    <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 ?709次閱讀
    線下活動|<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 ?675次閱讀
    <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設備驅動開發指南》基礎--bsphwtimer設備

    一、概述(一)RT-Thread設備驅動RT-Thread設備驅動
    的頭像 發表于 02-24 08:16 ?1872次閱讀
    《<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設備驅動開發指南

    強烈,他們迫切地希望有一本可以指導他們在RT-Thread開發驅動指南。為了解決開發者的燃眉之急,《
    的頭像 發表于 08-01 08:35 ?744次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b><b class='flag-5'>設備</b><b class='flag-5'>驅動</b><b class='flag-5'>開發指南</b>
    主站蜘蛛池模板: 日本免费一区二区在线观看 | 久久99热国产这有精品 | 97爱爱| 香蕉成人国产精品免费看网站 | 亚洲偷偷| 免费人成动漫在线播放r18 | 婷婷激情丁香 | 99色网站| 亚洲www在线| 久久精品视频网站 | 亚洲国产网 | 天天视频黄 | 你懂的在线视频网站 | 全黄h全肉边做边吃奶在线观看 | 美女视频一区二区三区 | a久久 | 最近在线观看免费完整视频 | 久久免费视频2 | 看视频免费网站 | 黄网站色在线视频免费观看 | 性欧美大胆高清视频 | 人人艹人人草 | 永久免费精品视频 | 优优国产在线视频 | 天堂在线看 | 天堂8在线官网 | 五月婷婷丁香六月 | 一级特黄国产高清毛片97看片 | 男女交性拍拍拍高清视频 | 国模吧双双大尺度炮交gogo | 一区二区在线免费观看 | 久久久久久噜噜噜久久久精品 | 台湾香港澳门三级在线 | 久久久久久99 | 日韩在线视频免费观看 | av手机在线播放 | 午夜小视频网站 | 亚洲国产精品综合久久2007 | 丁香九月婷婷 | 亚洲一一在线 | 三级视频在线播放线观看 |