当前位置: 首页 > news >正文

嵌入式操作系统浅谈

写本文主要是记录一下最近几年自己在工作项目实践中的一些实际经验,并没有任何吹嘘或者参假,主要是目的是记录,如果有可能对一些读者带来一些帮助或启示,那就是我最大的欣慰。

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我们自己迭代了好几个版本:

  1. stm32外挂4G模组-------(使用了rt thread)研发成功
  2. GD32外挂4G模组-------(使用了ucos)研发成功
  3. 4G模组opencpu开发(纯C,改基本的源码)--------失败太痛苦
  4. 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+脚本形式的开发,主要原因是投入的精力少,产品出来验证的效率高,产品核心是原厂给的,也比较稳定,该有的如远程升级这样最重要的功能原厂也考虑进去了,不需要自己折腾

相关文章:

  • 算法面经小米篇
  • HTML+CSS大作业 使用html+css实现一个静态的汽车页面(含源码)
  • 软件工程毕业设计 SSM汽车故障报修管理系统(源码+论文)
  • 如何搭建一个vue项目
  • shiro与jwt前后端分离项目集成
  • web3 solidity 基础 ERC20 大白话搞懂
  • 《C++类中的基本常识》
  • JavaEE——File类
  • CANoe-如何模拟CAN总线网关通信(满满都是细节)
  • 请求转发与重定向
  • 如何使用OpenCV的随机森林(Python)
  • matlab神经网络预测数据,Matlab神经网络预测复数
  • 毕业设计 基于单片机的智能蓝牙密码锁设计与实现
  • 【线上实习项目】助力你的校招!
  • 吊打面试官系列之--吃透Spring ioc 和 aop (中)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • CSS 提示工具(Tooltip)
  • ES6简单总结(搭配简单的讲解和小案例)
  • idea + plantuml 画流程图
  • JAVA之继承和多态
  • JS+CSS实现数字滚动
  • Less 日常用法
  • quasar-framework cnodejs社区
  • spring-boot List转Page
  • 初识 beanstalkd
  • 从伪并行的 Python 多线程说起
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 强力优化Rancher k8s中国区的使用体验
  • 手写双向链表LinkedList的几个常用功能
  • 微信小程序开发问题汇总
  • 我这样减少了26.5M Java内存!
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一个项目push到多个远程Git仓库
  • 因为阿里,他们成了“杭漂”
  • 用jquery写贪吃蛇
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 智能合约开发环境搭建及Hello World合约
  • 【干货分享】dos命令大全
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​linux启动进程的方式
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1)STL算法之遍历容器
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (Oracle)SQL优化技巧(一):分页查询
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (六)c52学习之旅-独立按键
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (转)Sublime Text3配置Lua运行环境
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ***测试-HTTP方法
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复