RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/ - 修复不使能 RT_USING_DEVICE 时编译报错 · RT-Thread/rt-thread@9dcff13
RT-Thread 的设备类型很多,可以派生各种设备模型(框架),从而可以注册挂载很多设备上去,可以方便的实现读写控制等操作,如控制硬件、传感器等。 总结 设备派生于内核对象:rt_object,熟悉内核对象,有利于熟悉rt_device的操作
一般通过rt_device_find,通过设备名称,查找设备,获取设备的操作句柄,也就是设备结构体指针,从而可以进一步进行操作设备的操作接口ops或通过设备的标准操作接口操作设备。 RT-Thread 的设备类型很多,可以派生各种设备模型(框架),从而可以注册挂载很多设备上去,可以方便的实现读写控制等操作,如控制硬件、传感器等。 总结 设...
1.6 rt_application_init(),该函数创建main thread,创建完并不会运行,因为这会儿调度起还没开始工作呢,创建好的thread只能先“挂着”。值的注意的是,这里main_thread_entry()是以线程的形式运行的,上一篇分析到main_thread_entry()里运行main(),也就是说,在RT-Thread系统中,main函数是以线程态运行的,而不是系...
rt_device的结构 rt_device,是内核对象派生出来的,因此,有些操作,就是在操作内核对象。上几篇笔记研究内核对象的管理,现在发现,看device.c文件,很容易能看懂。 rt_device的使用 RT-Thread 的PIN、CAN、Serial、I2C、SPI、PM等,都抽象成一种设备模型。这些设备模型,派生于rt_device即可。 pin设备模型:结构如下:...
rt_device_flush(_console_device); } #else rt_hw_console_flush(); #endif /* RT_USING_DEVICE */ } 有set 也有 unset, 不是吗? unset 是为了调用 `rt_hw_console_output` 而不是 `rt_device_write` 输出打印信息。 `rt_console_flush` 既考虑启用设备框架也考虑未启用设备框架两种情况。`rt_devic...
RT-Thread 内核学习笔记 - 理解defunct僵尸线程 前言 最近在看内核源码,暂时避开费脑力的任务调度、内存管理等较复杂的实现方法,发现rt_device设备框架实现很简单。 rt_device,设备管理的框架(模型),提供标准的设备操作接口API,一些外设,可以抽象成设备,进行统一的管理操作,如LCD、Touch、Sensor等。
RT-Thread 设备框架分为三层:设备驱动层、设备驱动框架层、I/O 设备管理层。其中设备驱动层直接对接底层硬件设备;I/O 设备管理层向应用层提供了rt_device_find、open、read、write、close、register等访问设备的统一标准接口。而设备驱动框架层就是就是将同类型硬件设备的共同特特征提取抽象出来,并且还预留了接口,可...
rtthread提供的IO设备模型分为三层 IO设备管理层:提供一组通用的IO操作:open、read、control等,连接着应用程序和底层硬件。 设备驱动框架层:rtthread对同一类外设的抽象,对不同厂家的soc提供接口。 设备驱动层:soc外设驱动,操作底层硬件。 rtthread将设备抽象成rt_device。
RT-Thread线程通信接口 线程接口 设备接口(device) 线程间通信接口 邮箱 消息队列 用法①:发送消息 用法②:发送同步消息(带有ACK) 线程间同步接口 临界区 信号量 互斥锁 事件 常用数据类型 常用返回值 调用的接口都是固定的,为了方便迅速创建通信接口. 线程接口 #define