Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
驱动框架
【原创征文】RTT设备驱动框架分析-串口调用流程
发布于 2023-10-25 18:48:05 浏览:230
订阅该版
[tocm] # 应用层函数调用流程分析以-串口为例 ## 1. rt_device_find调用流程 RTT内部有一个全局变量数组rt_object_container数组的数量就是 rt_object_info_type 内核对象的种类,其中包含一个RT_USING_DEVICE (设备的数据类型),数组内部的每一个变量包含一个链表,链表内部就构造了一个设备链表,rt_device_find函数就是在这个数组内部根据类型找到链表,然后在链表内部根据设备名字找到rt_device_t设备  #### RTT内核对象存储结构, ```c 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 1. rt_device_open 首先是调用init函数,然后调用open函数 2. init 内部再次调用串口的configure函数 3. open内部根据flag的类型,分别申请发送接收缓存rt_malloc,配置发送接收硬件serial->ops->control,如果配置的dma,则使用serial->ops->control配置打开dma。  ## 3.rt_device_set_rx_indicate 和rt_device_set_tx_complete函数调用流程 这里的2个函数都是直接设置rt_device的rx_indicate 和 tx_indicate  ## 4.rt_device_write 调用流程分析 rt_device_write 内部调用device->write 函数也就是 rt_serial_write,内部根据配置串口的发送方式发送数据,是阻塞是dma还是中断,阻塞和dma都是将数据放在缓冲区内部,缓冲区在中断和dma部还有临界区的保护  ## 5.rt_device_read 调用流程分析 rt_device_read内部调用device->read 函数也就是 rt_serial_read,内部根据配置串口的接收方式接收数据,是阻塞接收是dma还是中断接收,阻塞和dma都是将数据放在缓冲区内部,缓冲区在中断和dma部还有临界区的保护 
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
chejia12
这家伙很懒,什么也没写!
文章
5
回答
0
被采纳
0
关注TA
发私信
相关文章
1
找不到master_xfer的实体
2
关于Sqlite的移植。。。。。
3
在当前的RTT的驱动框架中,应用层的函数是如何一层一层调用到底层驱动接口的?
4
sensor传感器驱动框架中sensor.h疑问
5
USB 驱动框架问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
LWIP
Env
AT
SPI
Bootloader
FinSH
ART-Pi
CAN总线
Hardfault
USB
文件系统
RT-Thread
DMA
SCons
线程
MQTT
RT-Thread Nano
STM32
RTC
rt-smart
ESP8266
flash
ota在线升级
WIZnet_W5500
FAL
I2C
packages_软件包
UART
cubemx
freemodbus
潘多拉开发板_Pandora
定时器
BSP
PWM
ADC
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
SDIO
Debug
AB32VG1
MicroPython
编译报错
C++_cpp
msh
ulog
QEMU
本月问答贡献
出出啊
1501
个答案
338
次被采纳
小小李sunny
1390
个答案
276
次被采纳
张世争
715
个答案
157
次被采纳
crystal266
522
个答案
153
次被采纳
whj467467222
1216
个答案
146
次被采纳
本月文章贡献
出出啊
1
篇文章
12
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
2
篇文章
2
次点赞
crystal266
2
篇文章
5
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部