RT-Thread
文章平均质量分 72
whj123999
这个作者很懒,什么都没留下…
展开
-
RT-Thread 隐藏的宝藏之管道
一. 什么是管道pipe: 匿名管道。对于熟悉 linux 开发的人来说,pipe 就很熟悉了。pipe 是一种 IPC 机制,他的作用是用作有血缘进程间完成数据传递,只能从一端写入,从另外一端读出。为了解决 pipe 的弊端,linux 的大神门又引入了 mkfifo(实名管道)。这些的讲解网络上有更清晰的讲解,就不再赘述。RT-Thread 也实现了一套 pipe,不仅有自己的接口 rt_pipe_xxx , 也对接了 posix 接口。二. 怎么 使用管道在使用之前先看一下 pipe 的结构原创 2021-03-27 11:36:07 · 1252 阅读 · 0 评论 -
RT-Thread 隐藏的宝藏之ringbuff
一,什么是 ringbuffringbuff: 翻译成中文就是环形缓冲区。网上关于 ringbuff 的介绍已经非常多了,我也分享一下我对 ringbuff 的认识。ringbuff 可以理解为学校操场上的跑道,ringbuff 初始化就是新建了一个 400 的环形操场跑道,跑道上有 2 名同学 (write 和 read),每次写入一个数据,write 往前跑一步,每次读一个数据,read 往前跑一步,read永远不可以超过 write。刚开始起点都是 0 ,如果 write 写的速度慢了,被 re原创 2021-03-21 11:33:55 · 3169 阅读 · 1 评论 -
RT-Thread 隐藏的宝藏之ringblk
一. ring blk 是什么大家应该经常会听到 ringbuff , 那 ringblk(环形块缓冲区) 是什么呢?ringblk 也是环形缓冲区,但是他的缓冲区的单位是一个 block , 每次对数据的操作都是以 block 为单位。二. ringblk 怎么使用ringblk 的使用先要创建环形块缓冲区,通过 alloc 申请到块之后,通过 put 写数据到缓冲区,通过 get 从缓冲区中获取数据。对于不需要在用的块,通过 free 释放。连续的 block 可以组成 块队列。1. 创建块原创 2021-03-14 17:05:45 · 1267 阅读 · 0 评论 -
RT-Thread 隐藏的宝藏之工作队列
1. 工作队列是什么工作队列:我们可以将不是很紧急处理的事情放到 workqueue 中处理,等待系统空闲时就会去执行 workqueue 里的事情。工作队列的本质就是开一个线程去处理排列好的任务,所以工作队列中不能有死循环,尽可能的不要使用使用会导致线程阻塞的API 。workqueue 的作用就是将工作延迟处理, workqueue 是中断处理的后半程。2. 工作队列怎么使用初始化 workrt_inline void rt_work_init(struct rt_work *work,原创 2021-03-07 18:47:04 · 921 阅读 · 0 评论 -
RT-Thread 隐藏的宝藏之 data_queue
1. data_queue 是什么data_queue 直接翻译过来是 数据队列。这个名字和 消息队列 很像。那么他们有什么区别呢?消息队列:消息队列能够接收来自线程或中断服务例程中不固定长度的消息,并把消息缓存在自己的内存空间中。其他线程也能够从消息队列中读取相应的消息,而当消息队列是空的时候,可以挂起读取线程。当有新的消息到达时,挂起的线程将被唤醒以接收并处理消息。消息队列是一种异步的通信方式。(摘自 RT-Thread文档中心).数据队列:没有找到官方详细的说明,只是在 RT-Thread AP原创 2021-02-27 14:53:52 · 1912 阅读 · 1 评论 -
RT-Thread 隐藏的宝藏之等待队列
1. 等待队列是什么等待队列是一个轻量级的线程间异步通讯方式。他有两个特点:轻量: API 较少异步:2. 等待队列怎么使用用户只需要使用其中的五个 API 就可以了。初始化等待队列rt_inline void rt_wqueue_init(rt_wqueue_t *queue)queue : 消息队列控制块加入等待队列int rt_wqueue_wait(rt_wqueue_t *queue, int condition, int msec)queue :原创 2021-02-24 00:00:25 · 885 阅读 · 0 评论 -
RT-Thread 隐藏的宝藏之双链表
1. 单链表与双链表单链表: 由一个个节点(node)组成,每个节点都有指向下一个节点的指针。节点的连接方向是单向的,节点之间用指针连起来,所有结构体类型可以不一样,链表的大小也可以动态变化。但是不能随机访问数据,只能遍历。双链表:由一个个节点(node)组成,每个节点都有指向下一个节点的指针,每个节点都有一个指向上一个节点的指针。所以节点的连接方向是双向的,节点之间用指针连起来,所有结构体类型可以不一样,链表的大小也可以动态变化。但是不能随机访问数据,只能遍历。可以得出结论:单链表和双链表主要的区别原创 2021-02-13 10:29:45 · 654 阅读 · 0 评论 -
RT-Thread 隐藏的宝藏之单链表
1. 链表与数组链表 ,数组 ,先看看百度怎么说。上面的说法太专业,用简单的话来讲就是:链表和数组都是用来存储数据的一种数据结构,各有利弊。数组:线性数据结构,存放的数据的类型是一样的,而且他们在内存中的排布是有序排列的。因此数组的优势就是数据连续,随机访问速度快,定义好了就不好在改变大小.单链表:由一个个节点(node)组成,每个节点都有指向下一个节点的指针。节点的连接方向是单向的,节点之间用指针连起来,所有结构体类型可以不一样,链表的大小也可以动态变化。但是不能随机访问数据,只能遍历。举一个栗原创 2021-01-30 17:17:45 · 1535 阅读 · 0 评论 -
RT-Thread 隐藏的宝藏之 completion
1. completion 是什么completion 直接翻译过来是完成,所以我更愿意称 rt_completion 为 完成量。在 RT-Thread 的文档中心 中讲线程间通讯(IPC)时,只介绍了,信号量, 互斥量, 事件集,其实 rt_completion 可以认为是轻量级的二值信号量。2. completion 怎么使用completion 的使用非常简单定义一个完成量struct rt_completion completion;初始化完成量rt_completio原创 2021-01-19 17:54:28 · 548 阅读 · 0 评论