吴忠躺衫网络科技有限公司

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

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

3天內不再提示

RTT設備驅動框架分析-串口調用流程

冬至子 ? 來源:chejia12 ? 作者:chejia12 ? 2023-10-26 17:07 ? 次閱讀

應用層函數調用流程分析以-串口為例

1.rt_device_find調用流程

RTT內部有一個全局變量數組rt_object_container數組的數量就是 rt_object_info_type 內核對象的種類,其中包含一個RT_USING_DEVICE (設備的數據類型),數組內部的每一個變量包含一個鏈表,鏈表內部就構造了一個設備鏈表,rt_device_find函數就是在這個數組內部根據類型找到鏈表,然后在鏈表內部根據設備名字找到rt_device_t設備

1.jpg

RTT內核對象存儲結構,
struct rt_object_information
{
enum rt_object_class_type type; / < object class type 比如線程類型,外部設備類型,信號量類型 /
rt_list_t object_list; /
< object list每個類型的設備形成為一個鏈表 */
rt_size_t object_size; /
*< object size 每個類型的鏈表item數量 */
};

2.設備打開rt_device_open

rt_device_open 首先是調用init函數,然后調用open函數
init 內部再次調用串口的configure函數
open內部根據flag的類型,分別申請發送接收緩存rt_malloc,配置發送接收硬件serial->ops->control,如果配置的dma,則使用serial->ops->control配置打開dma。

1.jpg

3.rt_device_set_rx_indicate 和rt_device_set_tx_complete函數調用流程
這里的2個函數都是直接設置rt_device的rx_indicate 和 tx_indicate

1.jpg

4.rt_device_write 調用流程分析

rt_device_write 內部調用device->write 函數也就是 rt_serial_write,內部根據配置串口的發送方式發送數據,是阻塞是dma還是中斷,阻塞和dma都是將數據放在緩沖區內部,緩沖區在中斷和dma部還有臨界區的保護

1.jpg

5.rt_device_read 調用流程分析

rt_device_read內部調用device->read 函數也就是 rt_serial_read,內部根據配置串口的接收方式接收數據,是阻塞接收是dma還是中斷接收,阻塞和dma都是將數據放在緩沖區內部,緩沖區在中斷和dma部還有臨界區的保護

1.jpg

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

    關注

    8

    文章

    1184

    瀏覽量

    53631
  • dma
    dma
    +關注

    關注

    3

    文章

    566

    瀏覽量

    100949
  • 緩存器
    +關注

    關注

    0

    文章

    63

    瀏覽量

    11692
  • 串口中斷
    +關注

    關注

    0

    文章

    67

    瀏覽量

    14002
  • RTThread
    +關注

    關注

    8

    文章

    132

    瀏覽量

    40999
收藏 人收藏

    評論

    相關推薦

    串口驅動配置流程及電路圖設計

    串口驅動跟其他外設的驅動配置流程差不多,大概分為如下幾步: (1)查看電路圖,配置相應的gpio功能引腳 (2)配置串口控制器的相應寄存
    的頭像 發表于 10-07 17:33 ?6064次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>驅動</b>配置<b class='flag-5'>流程</b>及電路圖設計

    OpenHarmony HDF 驅動框架介紹和驅動加載過程分析

    ,OpenHarmony 系統 HDF 驅動框架支持多種驅動加載方式:支持驅動動態加載和靜態加載,解除驅動代碼和
    發表于 08-31 15:51

    字符設備驅動 —— 字符設備驅動框架

    1、概述:linux中一切皆文件,設備也如此,并且以操作文件即文件IO的方式訪問設備。  應用程序只能通過庫函數中的系統調用來操作硬件,對于每個系統調用
    發表于 10-19 17:08

    分析rt-thread的I2C設備驅動框架

    簡要上一篇分析RTT的PIN驅動,得到了很多網友的認可,很開心。很多人跟我反映寫一些u***,wlan等框架,這個一步一步來,從淺到深。這一篇文章我們來
    發表于 01-12 06:23

    RT-Thread串口的硬件工作模式有哪幾種呢?怎樣去使用

    使用說明串口流程分析分為兩部分,一部分是串口驅動,另一部分是串口
    發表于 03-11 15:03

    解讀rtt的c的面向對象的對象創建及其啟動初始化流程

    rtt設備框架對接層。此層是拿rtt創建好的類來創建子類設備對象或者自己派生出新類創建子類設備
    發表于 07-05 11:01

    將硬件I2C嫁接到RTT原生的模擬I2C驅動框架步驟分享

    1、將硬件I2C巧妙地將嫁接到RTT原生的模擬I2C驅動框架剛開始接觸RTTI2C驅動框架,說實在的,感覺有點道理。
    發表于 07-07 16:29

    詳解IO設備管理之父類調用子類方法的過程

    驅動層都實現了注冊給父類的方法。這些方法是IO設備模型框架的血肉!2.2.1 先看對象創建流程調用設備
    發表于 10-09 15:18

    幫助你看懂并理解rtt官方的IO設備模型框架

    ——finsh線程分析——可以參考理解子類方法是如何被父類調用的。tips:(1)給BSP新增設備驅動對接到rtt
    發表于 10-09 15:30

    為什么rtt的音頻框架recorder的相關源碼需要對pipe設備操作加中斷保護呢?

    請教一個rtt audio驅動框架的問題:1)對于recorder,為什么rtt的源碼對pipe的操作全都增加了rt_hw_interrupt_disable
    發表于 03-14 10:30

    rt-thread SDIO驅動框架分析(SD卡flash驅動\SD Nand flash驅動

    文章目錄rt-thread SDIO驅動框架分析之SD卡驅動1. 前言2. SDIO通用驅動框架
    發表于 04-04 16:26

    RT-Thread (2) RTT SPI設備驅動流程 || LWIP + ENC28J60

    系列文章目錄RT-Thread (1) 添加外部內存到內存管理RT-Thread (2) RTT SPI設備驅動流程 || LWIP + ENC28J60目錄0 概述0.0 參考資料0
    發表于 11-19 14:21 ?15次下載
    RT-Thread (2) <b class='flag-5'>RTT</b> SPI<b class='flag-5'>設備</b><b class='flag-5'>驅動</b><b class='flag-5'>流程</b> || LWIP + ENC28J60

    《rt-thread驅動框架分析》-i2c驅動

    上一篇分析RTT的PIN驅動,得到了很多網友的認可,很開心。很多人跟我反映寫一些usb,wlan等框架,這個一步一步來,從淺到深。
    發表于 01-26 17:03 ?0次下載
    《rt-thread<b class='flag-5'>驅動</b><b class='flag-5'>框架</b><b class='flag-5'>分析</b>》-i2c<b class='flag-5'>驅動</b>

    基于IAR搭建RA MCU串口RTT Viewer打印(上)

    基于IAR搭建RA MCU串口RTT Viewer打印
    的頭像 發表于 08-14 09:49 ?927次閱讀
    基于IAR搭建RA MCU<b class='flag-5'>串口</b>與<b class='flag-5'>RTT</b> Viewer打印(上)

    基于IAR搭建RA MCU串口RTT Viewer打印(下)

    基于IAR搭建RA MCU串口RTT Viewer打印
    的頭像 發表于 08-14 09:50 ?990次閱讀
    基于IAR搭建RA MCU<b class='flag-5'>串口</b>與<b class='flag-5'>RTT</b> Viewer打印(下)
    真人百家乐官网开户须知| 哪个百家乐网站最大| 百家乐官网网站赌博| 百家乐官网电投网址| ez百家乐官网技巧| 哪里有百家乐官网游戏下载| 百家乐官网里靴是什么意识| 百家乐官网园能贷款吗| 百家乐美国玩法| 百家乐的赚钱原理| 百家乐21点德州扑克| 骰子百家乐的玩法技巧和规则 | 波音百家乐网上娱乐| 足球百家乐投注| 百家乐破解秘籍| 大发888官方网站下载| 亿乐棋牌游戏大厅| 彩票大赢家| 百家乐官网的代理办法| 百家乐官网任你博娱乐场| 新加坡百家乐官网规则| 百家乐赌的是心态吗| 大发888客服| 优博平台代理开户| 网上百家乐官网开户送现金| 中国百家乐官网的玩法技巧和规则| 现场百家乐百家乐| 百家乐几点不用补牌| 澳门体育博彩| 百家乐官网翻天粤语版qvod| 云鼎百家乐注册| 百家乐补第三张牌规则| 大发888 58| 百家乐官网五式缆投法| 实战百家乐官网十大取胜原因百分百战胜百家乐官网不买币不吹牛只你能做到按我说的.百家乐官网基本规则 | 大发888娱乐城官方下载安装| 威尼斯人娱乐城吃饭| 皇冠网遮天小说| 百家乐官网隔一数打投注法| 百家乐官网群的微博| 百家乐出千赌具|