【再见,2020】rt-thread 入门系列之先用后学

你说的曾经没有我的故事 提交于 2021-01-18 16:28:14

学一样新东西的时候, 一开始从心底都是抵触的, 需要不断在获取正反馈, 才能快速掌握新新知识. 克服抵制心理.

rt thread 学习网站
https://www.rt-thread.org/document/site/

1 rt thread 之缘

1.1 从裸机开发开始

在学校里进行开发的时候, 学长和老师教会了一些前后台的逻辑, 定时器轮询任务, 以这样来的方式开发智能车或者其他电子产品, 那个时候还好, 偶尔了解到rtos 之类的, 一看望去, 原理好复杂啊, 就没细学,一没必要, 二也学不会.所以一直用着前后台的逻辑编写代码.

1.2 单片机的分身术

后来工作了, 前后台的写法, 已经无法完成一些逻辑复杂的任务了, 刚好空挡期就学会了ucos操作系统, 因为是抱着一个明确目标去学习用, 只是想实现多个while(1) 的循环体, 然后发现原来用起来很简单,一个创建任务的函数就搞定了,真就是把单片机拆分成数个单片机一起用了, 学完创建任务的功能后, 有一种春风得意马蹄疾的快感, 这样键盘任务, 和显示任务, 计算任务, 就非常容易去理清逻辑了.

然后那时候的感觉就是, rtos这样太简单了, 果然还是裸机开发下, 程序驱动的移植, 和调试比较重要, 操作系统也没那么神奇, 但是真好用.

实现了多任务, 已经能够解决那时候工作比较棘手的问题, 关于线程通信, 说来惭愧, 沿用了全局变量的思想, 就没有线程通信, 准确的说, 持续了一小段时间仅仅使用了操作系统的一个创建任务的函数, 但这么傻瓜的操作, 却成为了后面深入学习的敲门砖.

1.3 分身乏术

分身乏术一词,可能描述不对, 虽然上面说了已经实现了分身术, 但是程序逻辑还是偶尔不稳定, 有很多时候和预想的结果不太一样, 比如传感器那边的数据, 最早可能立刻就可以处理了, 最晚可能要等到thread_delay()的时间了, 完全就和赌博一样跑程序了, 尤其是当我用同样的编程思维写了一个电脑端的多线程程序后, 程序直接占用了25% 的cpu , 我人都傻掉了, 区区几行c 代码, 竟然如此猖狂, 独占了一个cpu 核心全速运行, 是时候做点什么去改变了.
信号量 作为第一个用在多线程同步的成员, 直接解放了不止多少cpu 的工作量, 又及时, 又能释放cpu 资源, 没数据的时候, 也不会空转(空闲任务空转另说,可以用低功耗解决, 降频之类的…), 简直又是一个得力助手啊, 比如串口收到数据后, 才去通知线程去处理, 太完美了.
事件集合 在ucos 叫做标志位组, 信号量虽好,但是只能一对一, 确实偶尔设计的逻辑有局限性, 我想等待多个线程都发来同步信号,就用到这个了
互斥量 作为特殊的信号量, 信号量可以不断的往上+1 , 互斥量只能加到1 , 就可以保证, 有生产, 才有消费


1.4 移植好麻烦

虽然操作系统很好用, 除了上文提到的同步线程的功能以外, 还有线程通信的邮箱, 消息队列等, 都非常好用, 都是一看就会, 一用就爽那种, 但是新的问题又出现了, 由于工作上遇到不同的单片机, 所以需要不断的去移植,配置各种通信啊 , 比如串口, iic , spi 等等, 就算是同一个牌子的单片机, 配置选项也不尽相同, 通常需要同时打开数个文档, 数个软件, 经过反复调整, 非常麻烦.这种工作基本上属于花时间涨经验比较少的那种.

如果能一套代码, 到处运行就好了, 通过了解发现, rt-thread 处理具备常规操作系统的线程调度管理之外, 还有设备管理框架, 只需要对接底层驱动, 就可以写同样的代码, 非常方便移植, 轻松做到了应用软件, 和底层驱动分离.

1.5 调试好麻烦

在用ucos 操作系统时, 需要调用自己写的部分代码进行测试, 或者与产品进行交互调试的时候, 就非常麻烦, 需要自己写一个相应help 的指令, 用来响应自己写的指令, 配置参数, 查看状态之类的. 后来用来finsh 之后, 这些问题统统不存在了, 而且可以通过 导入指令宏进行操作. 程序就可以变得有效解耦. 可以非常自由.
比如用rt thread 写的程序可以做到一个c 文件, 一个功能, 需要某个功能, 直接把文件拖进去, 自动创建任务,执行, 导出调试指令, 不需要就直接删除, 对于开发非常快捷方便.

小结

除了以上非常好用的功能之外, 还有很多在线的软件包, 可以一键添加进来(ENV 部署工具), 学习进步最快的方法, 就是阅读优秀的源代码, 大量的软件包, 纠正了我很多不良习惯. 是非常值得学习的一个操作系统

关于rt thread与其他操作系统的区别, 我从网上找到了一张对比图, 虽然一开始从ucos 那里获取到了不少好处, 但我还是背叛了ucos…

在这里插入图片描述

关于rt - thread 的论坛, 有很多靠谱的大佬坐镇, 对于一开始入门的我, 提供了不少帮助

论坛地址
https://club.rt-thread.org/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!