RT-Thread 内核学习笔记 - 理解defunct僵尸线程 前言 最近在看内核源码,暂时避开费脑力的任务调度、内存管理等较复杂的实现方法,发现rt_device设备框架实现很简单。 rt_device,设备管理的框架(模型),提供标准的设备操作接口API,一些外设,可以抽象成设备,进行统一的管理操作,如LCD、Touch、Sensor等。 r
rt_device_pin_register("pin", &_stm32_pin_ops, RT_NULL); 设备注册后,可以通过:list_device查看 其他 rt_device_read rt_device_write等操作前,需要:rt_device_open rt_device_open rt_device_close 操作最好成对出现,原因是rt_device内部有引用计数,如你open两次,close一次,计数为1,没有真正的close。
一般通过rt_device_find,通过设备名称,查找设备,获取设备的操作句柄,也就是设备结构体指针,从而可以进一步进行操作设备的操作接口ops或通过设备的标准操作接口操作设备。 RT-Thread 的设备类型很多,可以派生各种设备模型(框架),从而可以注册挂载很多设备上去,可以方便的实现读写控制等操作,如控制硬件、传感器等。 总结 设...
如果把链表插入到【尾部】后面,就要先把链表指针移到尾部,再执行:rt_list_insert_after. 查看内核对象 其实,thread,device等对象,都是内核对象【派生】出来的。 RT-Thread 提供list_thread、list_device等,查看内核的对象。 查看线程初始化【次序】,看看最后打印的线程,就是【最先】首个创建的线程。 一般从链表【...
其中device.c与pin.c属于RT-Thread的范畴,drv_gpio.c与具体的硬件有关,这个文件里操控的就是与硬件有关的东西,如: 程序中用到的rt_pin_mode及rt_pin_write等都是PIN设备管理接口。PIN设备管理有如下几个接口: 设置引脚模式: RT-Thread 提供的引脚编号需要和芯片的引脚号区分开来,它们并不是同一个概念,引脚...
RT-Thread 提供list_thread、list_device等,查看内核的对象。 查看线程初始化【次序】,看看最后打印的线程,就是【最先】首个创建的线程。 一般从链表【头部】开始遍历各个链表节点。如下:最后一个节点是:main线程. 其实,main线程,是第一个创建的。 msh />list_thread ...
RT-Thread 内核学习笔记 - 理解defunct僵尸线程 前言 最近在看内核源码,暂时避开费脑力的任务调度、内存管理等较复杂的实现方法,发现rt_device设备框架实现很简单。 rt_device,设备管理的框架(模型),提供标准的设备操作接口API,一些外设,可以抽象成设备,进行统一的管理操作,如LCD、Touch、Sensor等。
5. 编译、下载程序,按下复位后就可以在串口1连接的终端上看到RT-Thread标志log了,输入list_device命令能查看到uart1、uart2 Character Device就表示串口配置好了。 图A.6 使用list_device命令查看uart设备 3.2 加入串口相关代码 图A.7 添加本文提供的文件到工程 ...
编译、下载程序,按下复位后就可以在串口 1 连接的终端上看到 RT-Thread 标志 log 了,输入 list_device 命令能查看到 uart1、uart2 Character Device 就表示串口配置好了。 加入串口相关代码 下载串口示例代码 本应用笔记示例代码 app_uart.c、app_uart.h,app_uart.c 中是串口相关操作的代码,方便阅读。app_uar...
RT-Thread 提供list_thread、list_device等,查看内核的对象。 查看线程初始化【次序】,看看最后打印的线程,就是【最先】首个创建的线程。 一般从链表【头部】开始遍历各个链表节点。如下:最后一个节点是:main线程. 其实,main线程,是第一个创建的。 登录后复制msh / >list_thread ...