RT-Thread API参考手册
3.1.1
嵌入式实时操作系统
|
I/O设备子系统 更多...
结构体 | |
struct | rt_device_ops |
设备对象的操作方法 更多... | |
struct | rt_wqueue |
等待队列控制块 更多... | |
struct | rt_device |
设备基类控制块 更多... | |
struct | rt_device_blk_geometry |
块设备扇区信息 更多... | |
struct | rt_device_blk_sectors |
块设备的扇区分布信息 更多... | |
struct | rt_device_graphic_info |
图形设备信息结构 更多... | |
struct | rt_device_rect_info |
矩形信息结构 更多... | |
类型定义 | |
typedef struct rt_device * | rt_device_t |
设备类型指针定义 | |
枚举 |
I/O设备子系统
设备系统设计为简单且最小的层,用来协助应用程序和驱动程序之间的通信。
设备系统为驱动程序提供五个接口:
enum rt_device_class_type |
(I/O)设备类型
rt_err_t rt_device_register | ( | rt_device_t | dev, |
const char * | name, | ||
rt_uint16_t | flags | ||
) |
注册设备
此函数注册具有指定名称的设备。设备需要注册到I/O设备管理器中,应用程序才能够访问。
dev | 设备句柄 |
name | 设备名称 |
flags | 设备模式标志位 |
rt_err_t rt_device_unregister | ( | rt_device_t | dev | ) |
删除设备
该函数将删除已注册的设备。当设备注销后的,设备将从设备管理器中移除, 也就不能再通过设备查找搜索到该设备。注销设备不会释放设备控制块占用的内存。
dev | 设备句柄 |
rt_device_t rt_device_find | ( | const char * | name | ) |
查找设备
该函数通过指定的名称查找设备。应用程序根据设备名称获取设备句柄,进而可以操作设备。
name | 设备的名称 |
rt_device_t rt_device_create | ( | int | type, |
int | attach_size | ||
) |
创建设备
此函数根据用户指定的设备类型动态的创建一个设备对象。 调用该接口时,系统会从动态堆内存中分配一个设备控制块, 大小为struct rt_device和attach_size的和,设备的类型由参数type设定。
type | 设备类型 |
attach_size | 用户数据的大小 |
void rt_device_destroy | ( | rt_device_t | dev | ) |
销毁设备
该函数将销毁动态创建的设备对象。
dev | 设备句柄 |
rt_err_t rt_device_init | ( | rt_device_t | dev | ) |
初始化设备
该函数将初始化指定的设备。当一个设备已经初始化成功后,调用这个接口将不再重复做初始化。
dev | 设备句柄 |
rt_err_t rt_device_open | ( | rt_device_t | dev, |
rt_uint16_t | oflag | ||
) |
打开设备
通过设备句柄,应用程序可以打开和关闭设备, 打开设备时会检测设备是否已经初始化,没有初始化则会默认调用初始化接口初始化设备。
dev | 设备句柄 |
oflag | 设备的打开模式标志位 |
rt_err_t rt_device_close | ( | rt_device_t | dev | ) |
关闭设备
该函数将关闭指定的设备。
dev | 设备句柄 |
rt_size_t rt_device_read | ( | rt_device_t | dev, |
rt_off_t | pos, | ||
void * | buffer, | ||
rt_size_t | size | ||
) |
读取设备
该函数将从设备读取数据。
dev | 设备句柄 |
pos | 读取的偏移量 |
buffer | 用于保存读取数据的数据缓冲区 |
size | 缓冲区的大小 |
rt_size_t rt_device_write | ( | rt_device_t | dev, |
rt_off_t | pos, | ||
const void * | buffer, | ||
rt_size_t | size | ||
) |
写设备
该函数将向设备写入数据。
dev | 设备句柄 |
pos | 写入的偏移量 |
buffer | 要写入设备的数据缓冲区 |
size | 写入数据的大小 |
rt_err_t rt_device_control | ( | rt_device_t | dev, |
int | cmd, | ||
void * | arg | ||
) |
控制设备
该函数将在设备上执行各种控制功能。
dev | 设备句柄 |
cmd | 命令控制字,这个参数通常与设备驱动程序相关。 |
arg | 控制命令相关的参数 |
rt_err_t rt_device_set_rx_indicate | ( | rt_device_t | dev, |
rt_err_t(*)(rt_device_t dev, rt_size_t size) | rx_ind | ||
) |
设置设备接收回调函数
此函数将设置设备接收回调函数。该函数的回调函数由调用者提供。 当硬件设备接收到数据时,会回调这个函数并把收到的数据长度放在size参数中传递给上层应用。 上层应用线程应在收到指示后,立刻从设备中读取数据。
dev | 设备句柄 |
rx_ind | 回调函数 |
rt_err_t rt_device_set_tx_complete | ( | rt_device_t | dev, |
rt_err_t(*)(rt_device_t dev, void *buffer) | tx_done | ||
) |
设置设备发送完成回调函数
此函数将设置发送完成回调函数。调用这个函数时,回调函数由调用者提供,当硬件设备发送完数据时, 由驱动程序回调这个函数并把发送完成的数据块地址buffer作为参数传递给上层应用。 上层应用(线程)在收到指示时会根据发送buffer的情况,释放buffer内存块或将其作为下一个写数据的缓存。
dev | 设备句柄 |
tx_done | 指示回调函数 |