嵌入式操作系统浅谈

2023-05-16

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

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+脚本形式的开发,主要原因是投入的精力少,产品出来验证的效率高,产品核心是原厂给的,也比较稳定,该有的如远程升级这样最重要的功能原厂也考虑进去了,不需要自己折腾

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式操作系统浅谈 的相关文章

  • python中的闭包函数

    闭包函数初探 通常我们定义函数都是这样定义的 def foo pass 其实在函数式编程中 xff0c 函数里面还可以嵌套函数 xff0c 如下面这样 def foo print 34 hello world in foo 34 def b
  • 树莓派+Ubuntu16.04 MATE+ROS(kinetic)的安装

    树莓派 43 Ubuntu16 04 MATE 43 ROS xff08 kinetic xff09 的安装 零 准备工作 1 树莓派板子 2 电源 xff1a 3A以上 xff0c 供电要充足 xff0c 否则无法启动或影响使用 3 显示
  • canal

    目录 搭建canal测试canal 监控MySQL的binlog的工具 搭建canal 1 开启mysql binlog cp usr share mysql my medium cnf etc my cnf 修改my cnf vim et
  • docker 镜像注册【图文教程】

    docker镜像官网 xff1a https hub docker com 进行登录注册 账号 只能使用4到30个字母和数字 那就名字拼音吧 邮箱 正确的邮箱即可 后续会验证 xff0c 务必真实 密码 密码至少为9个字符 第一个勾选框 偶
  • 使用gazebo实现turtlebot入门级开发

    实验室准备新进两台Turtlebot2 xff0c 为了更快上手 xff0c 便提前开始熟悉一下Turtlebot xff0c 通果查阅相关资料 xff0c 我写了一个demo程序 xff0c 并在gazebo模拟环境下进行了测试 该dem
  • 手写智能指针(类)

    基础知识 xff1a 智能指针的设计与实现 1 智能指针类将一个计数器与类指向的对象相关联 xff0c 引用计数跟踪该类有多少个对象共享同一指针 2 每次创建类的新对象时 xff0c 初始化指针并将引用计数置为1 xff1b 3 当对象作为
  • 求职历程

    前言 xff1a 个人求职有大部分的时间花在了城市与企业性质的纠结上 首先是个人打算 xff0c 因研究生课题偏嵌入式相关 xff0c 所以给自己定下的目标是找嵌入式相关的工作 xff0c 而弱化了互联网求职的刷题关和计算机基础关 而在求职
  • 剑指 Offer 57 - II. 和为s的连续正数序列

    剑指 Offer 57 II 和为s的连续正数序列 难度 简单 输入一个正整数 target xff0c 输出所有和为 target 的连续正整数序列 xff08 至少含有两个数 xff09 序列内的数字由小到大排列 xff0c 不同序列按
  • 使用层次遍历重建二叉树并遍历

    58同城的一道题 xff0c 蛮有意思的 利用层次遍历后的数组 xff0c 进行二叉树的重建 数值 1代表NULL 解题思路 xff1a 那么我们依然使用队列 xff0c 进行层次遍历 xff0c 进行重建 xff0c 这边有的问题是当示例
  • C++秋招知识点总结

    先介绍下本人的情况 xff0c 本人研究生双非院校 xff0c 本科也是普通二本 xff0c 也无实习无项目非科班出生 刷了将近半年的题和自学了相关知识点 xff0c 最终拿到华为 海康 大华 同花顺 深信服 CVTE 紫光展锐offer
  • MPU6050软件姿态解算

    我是勤劳的搬运工 转自 http blog sina com cn s blog c5a00db10102wd7d html http mini eastday com mobile 180306210610472 html 使用MPU60
  • AD布线的线宽

    线宽关系图 xff1a 覆铜厚度与电流的关系 xff1a
  • AD16 Unknown Pin 和Failed to add class member 问题

    转载 xff1a http www 51hei com bbs dpj 39227 1 html 相信很多人在使用DXP 和AD 的时候 xff0c 都遇到过Unknown Pin 和Failed to add classmember 的问
  • 加速度计求二次积分

    我是勤劳的搬运工 xff1a https blog csdn net u011006622 article details 56286833 摘要 此文档描述并使用MMA7260QT三轴加速计和低功耗的9S08QG8八位单片机实现求解位置的
  • 卡尔曼滤波算法的深入理解

    以前对于这个算法只会调用 xff0c 并没有深入的理解 现在碰到一个项目 xff0c 没办法只能硬着头皮去理解了 网上看了很多资料 xff0c 感觉写的也一般般 xff0c 现在我讲自己的理解 卡尔曼滤波算法的核心是动态调整权值 用过互补滤
  • win10下删除ubuntu及其引导项

    转载 xff1a https blog csdn net g1027785756 article details 82999451 本文主要针对UEFI和GPT双系统下Ubuntu EFI分区及启动项的删除 1 查看电脑分区信息 电脑分区信
  • VSLAM综述

    传统SLAM算法及相关成果的介绍 根据传感器的分类可将VSLAM大致分为单目SLAM 双目SLAM xff08 立体 xff09 和RGB D SLAM 有根据对图像信息不同的处理方式可分为直接法SLAM和基于特征SLAM 直接法主要有直接
  • 计算机网络-网络分层模型及基本网络协议

    1 网络分层模型 1 1 分层模型图示 1 2 七层模型及各层含义 1 物理层 xff08 Physical Layer xff09 激活 维持 关闭通信端点之间的机械特性 电气特性 功能特性以及过程特性 该层为上层协议提供了一个传输数据的
  • 多进程

    39 39 39 生活中 xff0c 你可能一边听歌 xff0c 一边写作业 xff1b 一边上网 xff0c 一边吃饭 这些都是生活中的多任务场景 电脑也可以执行多任务 xff0c 比如你可以同时打开浏览器上网 xff0c 听音乐 xff
  • SpringSecurity的基础操作,登录认证,授权认证等

    文章目录 SpringSecurity1 SpringSecurity简介2 第一个SpringSecurity程序3 UserDetailsService接口4 PasswordEncoder接口5 自定义登录逻辑6 自定义登录页面7 自

随机推荐

  • Docker镜像里到底有啥东西?

    Docker 容器的本质是一个特殊的进程 xff0c 而 Docker 镜像则是容器运行所需的文件系统 可以说Docker容器是Docker镜像的实例 xff0c 镜像是容器的模板 容器是在镜像的基础上运行的 xff0c 当我们修改原镜像时
  • 嵌入式WEB服务器之boa部署(一)

    1 下载boa源码 可以直接访问官网的连接去下载 http www boa org 官网发布了一个Released Version 0 94 13和一个Development Version 0 94 14rc21 一般情况下使用发布版本
  • pyqt去掉按钮初始焦点

    把所有按钮focusPolicy属性设置为NoFocus就行了
  • vslam介绍

    目录 隐藏 1 SLAM 介绍 1 1 什么是SLAM 1 2 SLAM与视觉里程计 xff08 Visual Odometry xff09 1 3 SLAM和SfM 2 主流开源SLAM方案 2 1 视觉传感器 2 2 激光传感器 2 3
  • C++笔记-STL简析

    1 什么是模板 模板的引入 xff1a 如图 xff0c 如果编写了一个两个int 型相加的 add 函数 xff0c 那么这个函数就只能实现 int 型加法 xff0c 对 float 等其他类型无法实现 xff0c 要实现这些其他类型的
  • Linux命令模拟发送HTTP的get和post请求

    在一些网络环境有限制的场景下来 xff0c 对基于http协议的测试 xff0c 可以通过在linux系统上来模拟http请求完成测试 xff0c 接下来简单介绍一下通过linux命令来模拟http请求 一 模拟HTTP GET请求 xff
  • 多无人机协同SLAM学习笔记(一)

    从今天开始进行一个新的研究 多无人机协同SLAM 做这个课题的目的主要是满足自己的兴趣 xff08 集群 43 SLAM xff09 xff0c 最终的目标是实现轻量化的多无人机实时定位与路径规划 xff0c 还可以开启支线任务 对某一感兴
  • CAN总线-ACK应答机制分析

    CAN总线 ACK应答机制分析 1 xff1a 应答场定义 应答场长度为 2 个位 xff0c 包含应答间隙 xff08 ACK SLOT xff09 和应答界定符 xff08 ACK DELIMITER xff09 在应答场里 xff0c
  • 计算机网络-IP和子网掩码及网络划分

    1 IP地址 1 网络地址 IP地址由网络号 xff08 包括子网号 xff09 和主机号组成 xff0c IP地址一共4个字节 xff0c 32位 网络地址的主机号为全0 xff0c 网络地址代表着整个网络 2 广播地址 广播地址通常称为
  • 基于Gazebo的PX4模拟方案 arm-none-eabi-gcc 的错误提示

    整个教程是基于此CSDN的网站进行的 https blog csdn net yanwumuxi article details 80097294 但是在操作的过程中会存在 arm none eabi gcc 的错误提示 xff0c 这时候
  • 生活篇

    春天 xff0c 一个诗情画意的季节 xff0c 一个生机勃勃的季节 春天 xff0c 为我们带来了温暖 xff0c 为大地带来了生机 在这个春意盎然的季节 xff0c 大自然也开始了她们的春天交响曲 我喜欢三月 xff0c 我也讨厌三月
  • Jetpack刷机TX2(大坑)【记录问题】

    Jetpack刷机TX2 xff08 大坑 xff09 1 Jetson TX2 刷机时遇到的坑 xff1a https blog csdn net zshluckydogs article details 79855631 xff01 x
  • 【chatgpt代码系列】roslaunch的python接口实现ros节点生命周期管理

    Q1 xff1a 请帮我写一段python管理程序 xff0c 使用了roslaunch的api接口 xff0c 用于管理ros各个节点的生命周期 好的 xff0c 以下是一份简单的Python代码示例 xff0c 可以使用roslaunc
  • 零基础树莓派无键盘鼠标显示器的初始配置方法

    Author Gary Li Date 2019 11 19 Ref https blog csdn net m0 37340681 article details 84262359 https www jianshu com p 3f4f
  • zufeoj_八皇后

    题目链接 xff1a http acm ocrosoft com problem php cid 61 1172 amp pid 61 41 题目描述 会下国际象棋的人都很清楚 xff1a 皇后可以在横 竖 斜线上不限步数地吃掉其他棋子 如
  • PADS VX系列 软件

    PADS VX1 2 软件在实际开发中的应用 预告 xff0c 后续更新 文章目录 PADS VX1 2 软件在实际开发中的应用 预告 xff0c 后续更新 64 TOC 文章目录 前言一 PADS VX系列 及相关软件 下载二 PADS
  • Qt Opencv TCP 传输图像(视频)序列

    目录 1 传输流程 2 服务器端实现代码 3 客户端代码 xff1a 4 界面 1 传输流程 客户端像服务端发起连接请求 xff1b 待连接建立后 xff0c 客户端像服务器端发送对图像序列 xff08 视频 xff09 的请求信号服务端端
  • 在vscode中使用Git的教程

    vscode简介 VSCode是微软推出的一款轻量编辑器 xff0c 采取了和VS相同的UI界面 xff0c 搭配合适的插件可以优化前端开发的体验 布局 xff1a 左侧是用于展示所要编辑的所有文件和文件夹的文件管理器 xff0c 依次是资
  • c/c++:内存操作函数 malloc/free/memcpy/memmove/memset

    1 malloc free amp new delete malloc使用示例 xff1a int p 61 int malloc sizeof int 它有两个要点 xff1a 1 要强制类型转换为相应指针 2 要指明大小 malloc申
  • 嵌入式操作系统浅谈

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