写本文主要是记录一下最近几年自己在工作项目实践中的一些实际经验,并没有任何吹嘘或者参假,主要是目的是记录,如果有可能对一些读者带来一些帮助或启示,那就是我最大的欣慰。
1.工作中大家是怎么看待嵌入式操作系统的?
以我为例(主要是stm32方向),身边也应该是和大家一样,一些人(往往是工作十多年以上的)非常反感使用嵌入式操作系统,一些人(有老有少)特别喜欢使用嵌入式操作系统。反感使用操作系统的人往往对自己使用的单片机十分熟悉,数据手册往往到达了会背的阶段,而且比较喜欢使用某一款单片机去做不同的项目。喜欢使用操作系统的人往往接触面更广一点,导致不可能做到对每一个单片机都做到很深入的了解,遇到了问题的话,往往需要大量的时间去查资料解决问题甚至是解决不了问题。
- 站在用户的角度,用户不关心你的软件,只要产品稳定可靠就行。
- 站在厂家老板角度,也是不关心用的什么软件,首先是产品要稳定可靠,但是研发速度也要快。
- 站在项目经理的角度,完成客户的需求,完成好老板交代的任务,其他不关心
- 站在开发的角度,这个时候往往就要看个人能力了。
2.自己在工作中使用嵌入式操作系统吗?
这个当然是肯定的,而且会用到不止一种,比方rt-thread,ucos,freertos,Luatos,LiteOS。
无论是做开发的时候,还是做项目经理的时候,我们都会事先评估项目各个环节:
1.产品级别(民用级,商用级,工业级),不同级别产品要求都不一样,往往商业级和工业级都需要拿到对应的检测机构进行检测,检测过关了拿到检测报告才能进行销售。
2.产品研发的时间(硬件研发的时间,软件研发的时间)
3.产品对实时性的要求(部分实时嵌入式操作系统都采用多线程模式,导致一些对实时性要求高的厂家就会不适用,这个时候可能会采用裸机开发的形式)
等等
3.使用嵌入式操作系统的优缺点
简单说一下优缺点,各个系统的优点其实在他们的官网上都有介绍 | |
---|---|
优点 | 1.最大的有点就是跨平台(大致能做到一份代码,可以在不同的平台上做到同样的效果) 2.提供了很多轮子,比方任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等等 3.用户代码逻辑清晰简单,不再是一个大大的while(1) |
缺点 | 1.上手难(尤其是对于习惯裸机开发的人来说) 2. 资料复杂难懂,比方移植某个系统到某个平台,如果自己移植往往会不成功或者直接出错,劝退了很多人 3.经常会出现写的代码没有效果或者没有达到自己的目的,这个是工作中最长遇到的情况。 |
4.说几个使用嵌入式操作系统的成功或者失败案例
案例一
基于4G网络的rtu,我们自己平常的项目用RTU类型的项目应该是最常见的,尤其是当下物联网行业发展一直比较迅速。
这个类型的RTU我们自己迭代了好几个版本:
- stm32外挂4G模组-------(使用了rt thread)研发成功
- GD32外挂4G模组-------(使用了ucos)研发成功
- 4G模组opencpu开发(纯C,改基本的源码)--------失败太痛苦
- 4G模组opencpu 脚本开发(air724 luatos开发,ec600 python开发)-------研发成功
案例二
物联网传感器,这一块我们研发了很多简单的产品:温湿度传感器,噪声传感器,烟感,水浸,液位,水压,声光报警器,一键SOS报警器等等,其中有电池供电需要低功耗的,也有非电池供电不需要低功耗的。
总结如下:
需要电池做低功耗的设备:使用裸机开发或者是freertos开发比较好,像rt thread这样的系统其实对微安级别的低功耗模式支持的不是很好。
像是有源的设备,推荐使用rt thread系统,比方我们一个简单的传感器可能需要nb-iot版本,lora透传版本,lorawan版本,蓝牙版本,wifi版本,cat.1版本等众多的版本,这个时候rt thread强大的软件包功能就能够派上用场了。
案例三
语音报警器,这一块目前市场表现其实不是太好,主要是给居家养老或者是帮小朋友做定位卡片,还有就是做一下基于4G的对讲机。
这边主要是用到了两种脚本开发,lua和python;对应了air724的luatos和ec600n的QuecPython。
目前产品用下来air724开发上手等都要简单,但是具体的实际通话(打电话非数据)表现没有ec600n的好,air724在打座机或者一些语音台的情况下,通话是断断续续的,用户体验一般(如果合宙公司能够彻底解决该问题,air系列应该能够卖的更好),现阶段一些要求不是很高的项目,我们都会采用opencpu+脚本形式的开发,主要原因是投入的精力少,产品出来验证的效率高,产品核心是原厂给的,也比较稳定,该有的如远程升级这样最重要的功能原厂也考虑进去了,不需要自己折腾