可以看到device是pin,类型是Miscellaneous Device,说明我们正在使用通用的GPIO设备驱动。这个实验中有三个文件值得关注,分别是 代码语言:javascript 代码运行次数:0 运行 AI代码解释 device.c:设备管理层 pin.c:设备驱动框架层 drv_gpio.c:设备驱动层 其中device.c与pin.c属于RT-Thread的范畴,
rt_device的结构 rt_device,是内核对象派生出来的,因此,有些操作,就是在操作内核对象。上几篇笔记研究内核对象的管理,现在发现,看device.c文件,很容易能看懂。 rt_device的使用 RT-Thread 的PIN、CAN、Serial、I2C、SPI、PM等,都抽象成一种设备模型。这些设备模型,派生于rt_device即可。 pin设备模型:结构如下:...
rt_device_read rt_device_write等操作前,需要:rt_device_open rt_device_open rt_device_close 操作最好成对出现,原因是rt_device内部有引用计数,如你open两次,close一次,计数为1,没有真正的close。 一般通过rt_device_find,通过设备名称,查找设备,获取设备的操作句柄,也就是设备结构体指针,从而可以进一步进行操...
1.parent rt_object的实例化,因为rt_device也是继承于rt_object 2.type设备的类型,RTT中支持以下一些设备类型的定义: enum rt_device_class_type { RT_Device_Class_Char = 0, /**< character device */ RT_Device_Class_Block, /**< block device */ RT_Device_Class_NetIf, /**< net interface */...
最近在看内核源码,暂时避开费脑力的任务调度、内存管理等较复杂的实现方法,发现rt_device设备框架实现很简单。 rt_device,设备管理的框架(模型),提供标准的设备操作接口API,一些外设,可以抽象成设备,进行统一的管理操作,如LCD、Touch、Sensor等。 rt_device的结构 ...
最近在看内核源码,暂时避开费脑力的任务调度、内存管理等较复杂的实现方法,发现rt_device设备框架实现很简单。 rt_device,设备管理的框架(模型),提供标准的设备操作接口API,一些外设,可以抽象成设备,进行统一的管理操作,如LCD、Touch、Sensor等。 rt_device的结构 ...
每天了解RT-Thread多一点——rt_device_find函数浅析,rt_device_find函数在RT-Thread系统中,用于查找当前设备是否在系统设备注册表里,如果是返回设备指针,否则返回NULL。函数本身语句不多但是可以看到RT-Thread设备驱动层的设计思路和框架。
rt_device_control(dev_uart4, RT_DEVICE_CTRL_CONFIG, (void *)&uart4_config); // 第一个参数设备 第二个参数是选择对设备进行配置 第三个参数为配置的结构体地址 rt_device_set_rx_indica te(dev_uart4, uart_rcall); //配置中断接收的函数 第二个参数是函数名为串口回调函数 ...
enum rt_device_class_type type;//设备类型 rt_uint16_t flag;//设备标志,设备允许访问权限 rt_uint16_t open_flag;//当前设备的打开方式,当关闭时会根据这个标志去关闭设备 rt_uint8_t ref_count;//打开次数 打开+1 关闭-1,到0时才会调用close函数 ...
正式因为 ESP8266 通用,所以已经有开发者基于 RT-Thread 的AT组件,写好了支持 ESP8266 的软件包 at_device。我们可以直接使用: 2.2 使用步骤 基本的介绍完毕,我们直接来说明一下如何使用 RT-Thread 的组件与软件包,简单的使用我们的 ESP8266 WIFI 模块。