单片机能运行操作系统吗?

2023-05-16

先直接上答案:可以!

但是操作系统不是刚需,上操作系统比较占用单片机的资源,比如占用比较多的FLASH和RAM,间接增加了硬件成本,哪怕成本增加1毛钱,对于上量的产品,分分钟是一个工程师的工资。

我做了单片机开发10几年,大多数产品其实还是裸机编程,用到操作系统的比较少。

当然,这个跟产品功能有关,一般产品功能复杂、实时性要求苛刻的就会上操作系统。

目前用的比较多的就是实时操作系统,比如主流有uC/OS-II、FreeRTOS、rt-thread。

下面,简单给大家说下3个系统各自优缺点,如有不对,请指正!

一、uC/OS-II

uC/OS-II 是 Micrium 公司开发的商业实时操作系统,它的内核设计非常稳定和可靠,更加注重调度算法和系统服务的丰富性,适合于需要更高实时性和稳定性的应用。

uC/OS-II 的优缺点如下:

特点:

对开发友好:资料多。

实时性:uC/OS-II 可以提供非常快速的中断响应和任务切换,确保系统实时性。

可移植性:uC/OS-II 可以支持多种不同的处理器架构,使得应用程序更易于移植到不同的硬件平台上。

可靠性:由于 uC/OS-II 的内核设计非常稳定和可靠,因此它被广泛应用于各种不同的嵌入式系统中。

成熟的生态环境:由于 uC/OS-II 已经发布了很长时间,因此它的社区和生态环境非常成熟和完善,用户可以方便地获取文档、示例和支持。

缺点:

商业授权费用:uC/OS-II 是一个商业实时操作系统,用户需要购买商业授权才能使用。

资源占用:uC/OS-II占用单片机资源较多,需要较大的存储空间和内存空间。

另外,开发者是可以剪裁的,也就是说你可以根据你产品的功能修改系统代码做定制,前提是你已经吃透了系统的代码,否则不要轻易尝试,不然很容易给自己挖坑。

二、 FreeRTOS

FreeRTOS 是一个开源的实时操作系统,目前占有率高。

特点:

商业授权费用:可以免费商用

轻量级:FreeRTOS 的内核非常小巧,适合资源受限的单片机。

实时性:FreeRTOS 可以提供非常快速的中断响应和任务切换,确保系统实时性。

可移植性:FreeRTOS 可以支持多种不同的处理器架构,使得应用程序更易于移植到不同的硬件平台上。

社区支持:FreeRTOS 的社区非常活跃,有大量的开发人员参与开发和维护,使得 FreeRTOS 的生态环境非常完善。

良好的文档和资料:FreeRTOS 的文档和资料非常丰富,学习和使用 FreeRTOS 相对较为简单。

缺点:

组件少:部分功能组件不够完善,比如GUI(图形界面)、TCP/IP、文件系统需外扩第三方。

三、rt-thread

这个是国内一款适合物联网产品的实时操作系统,特点是资源占用极低(1.2KB RAM和3KB Flash),代码架构做低功耗功能比较方便。

优点:

轻量级:RT-Thread 的内核非常小巧,适合资源受限的单片机。

实时性:RT-Thread 可以提供非常快速的中断响应和任务切换,确保系统实时性。

可裁剪性:RT-Thread 可以按需选择需要的组件,以减小系统占用的资源。

面向对象:RT-Thread 支持对象化编程,使得代码更加清晰易懂。

跨平台支持:RT-Thread 可以支持多种不同的处理器架构。

缺点:

生态相对不够完善:相比一些成熟的嵌入式操作系统,RT-Thread 的社区和开发人员数量相对较少,生态环境相对不够完善。

学习曲线较陡峭:RT-Thread 是一个相对较新的操作系统,它的文档和资料相对较少,学习曲线相对较陡峭。

不适合大型系统:由于 RT-Thread 的内核设计初衷是轻量级和实时性,所以它不适合构建大型的嵌入式系统。

四、自己对RTOS的理解

最后聊一下,我对这些实时操作系统的理解。

我觉得实时操作系统,本质上就是一个实时性高的程序架构

实时就是能保证我的任务规定的时间内去执行,这用传统while(1)轮询方式是实现不了的。

程序架构就好比建房子时的地基,只有地基稳了,才能应对外在恶劣环境对房子造成的影响,比如台风、地震。

我们写程序也是一样的,程序架构就是的”地基”,只有地基稳了,你的程序才能应对项目经理突如其来的改功能、换芯片方案,你的代码才经得起折腾、产品功能做得稳定。

可惜啊,很多工程师并没有写程序架构的能力,因为对经验和代码水平要求比较严格。

所以一般复杂的项目,直接上现成的、稳定的实时操作系统就可以了。

这样至少可以保证两点:

1.程序架构上不出问题。

2.程序的实时性不出问题。

不过用现成的也是有缺点的,就是RTOS的功能很多,有很多你产品压根用不上,但是你没办法,你又不会剪裁,这样就会浪费你很多单片机资源。

所以这几年我做项目,一直是用自己写的程序架构,然后程序实时性通过人工去规避。

比如任务初始化、创建、调度管理。

还有实时操作系统一些实用功能,比如队列,也是产品常用的,只是我自己写了更简化的代码。

这套架构的教程我暂时无偿提供给大家学习,很早之前录制的,后面可能会删掉。

这套程序架构最大的好处就是简易占用单片机资源少、移植性强,适用于各种单片机,包括有些51单片机。

不过本质是时间片轮询,不带任务优先级抢占,对实时性要求非常苛刻的项目就不合适了,有兴趣的可以自己修改代码实现。

教程获取方法可以看我下面这篇文章的开头

《单片机入门到高级开挂学习路径(附教程+工具)》

《单片机入门到高级开挂学习路径(附教程+工具)》

《单片机入门到高级开挂学习路径(附教程+工具)》

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

单片机能运行操作系统吗? 的相关文章

  • Anaconda下安装tensorflow (windows系统)

    因为之前Anaconda python都已经装好了 xff08 可以看之前文章Anaconda超详细安装教程 xff08 Windows环境下 xff09 fan18317517352的博客 CSDN博客 xff08 本人技术小白一个 xf
  • Vue/cli加快打包速度

    Vue cli加快打包速度 参考地址 1 external 43 CDN的方式 Vue 中使用externals和CDN来优化项目的体积 可以参考老夫之前写的方式 2 thread loader 请仅在耗时的操作中使用此 loader xf
  • 带你深入学习k8s--(一)Kubernetes集群部署

    目录 前言 xff1a 一 Kubernetes简介与架构 1 Kubernetes简介 2 kubernetes设计架构 二 实验环境搭建 1 集群环境初始化 2 所有集群节点安装kubeadm 3 拉取集群所需镜像 3 集群初始化 4
  • Ubuntu18.04 apt-getupdate 遇到问题解决

    sudo apt get update 遇到错误 Err 1 http mirrors aliyun com ubuntu xenial InRelease Could not resolve mirrors aliyun com Err
  • git submodule详解

    子模块 有种情况我们经常会遇到 xff1a 某个工作中的项目需要包含并使用另一个项目 也许是第三方库 xff0c 或者你独立开发的 xff0c 用于多个父项目的库 现在问题来了 xff1a 你想要把它们当做两个独立的项目 xff0c 同时又
  • Sinkhorn算法,正矩阵与双随机矩阵之间的关系

    Sinkhorn算法 Sinkhorn 算法描述了任意一个正矩阵 元素均为正 与双随机矩阵之间的关系 简略描述 Relations between arbitrary positive matrices and Doubly stochas
  • nvidia-smi命令报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.

    nvidia smi命令报错 xff1a NVIDIA SMI has failed because it couldn t communicate with the NVIDIA driver Make sure that the lat
  • UNIX环境高级编程-第一章

    1 UNIX体系结构 xff1a 严格意义上说 xff0c 可将操作系统定义为一种软件 xff0c 它控制计算机硬件资源 xff0c 提供程序运行环境 我们通常将这种软件称为内核 xff0c 因为它相对较小 xff0c 而且位于环境的核心
  • 单片机之认识元器件及焊接工作

    一 xff0c 认识元器件 二 xff0c 焊接前的准备工作 焊接的位置如图 xff1a 焊接的时候我们需要使用到电烙铁 xff0c 故我们需要知道其应该怎么用 电烙铁的使用 我们学校使用的焊台型号为ATTEN936 xff08 加热温度过
  • 单片机入门到高级开挂学习路径(附教程+工具)

    一 先帮大家解答几个问题 xff1a 温馨提醒 xff1a 文章所有资料在 无际单片机编程 公众号获取 1 单片机是什么 xff1f 答 xff1a 单片机就是一个微型CPU xff0c 把程序烧录芯片里面 xff0c 通过控制不同的外围电
  • 嵌入式开发真的不如程序员吗?

    本文很干很长 xff0c 有我从事技术多年的经验总结 xff0c 也有我艰辛创业的经历分享 xff0c 坚持看完 xff0c 我相信一定对你未来有所帮助 xff0c 看不完先收藏起来吃灰也不错哟 不知不觉 xff0c 我已经从事了嵌入式方向
  • 自学stm32,需要会到什么程度才能找到一份工作?

    说到自学 xff0c 小有体会 xff0c 自学的过程焦虑而痛苦 xff0c 这一切 xff0c 还是来源于对未来的不确定性 今天通过个人经历和经验 xff0c 希望能为你揭开迷雾 xff0c 找到前进的方向 回想我曾经自学单片机的时候 x
  • ASCII码对应表,ASCII码值的大小顺序

    刚开始基础计算机编程的时候 xff0c 学习的是二进制 十进制 十六进制 十进制是生活习惯中最常用的计数方法 xff0c 也是我们计数的思维逻辑 后来接触了计算机基础 xff0c 我们知道计算机都是用二进制表示的 xff0c 但是这种表示方
  • 学嵌入式好找工作吗?学了嵌入式4个月找不到工作怎么办?

    最近在某吧看到一个小伙伴提了一个让我有点感触的问题 他说学了嵌入式4个月出来都找不到工作 xff0c 该怎么办 xff1f 这个行业是不是不好找工作 xff1f 失业期间那种焦虑感 xff0c 我深有体会 xff0c 每天不断在支出 xff
  • stm32对c语言要求高吗?c语言什么水平可以学stm32?

    记得我刚出来工作的时候 xff0c 一直从事stc 51单片机产品的开发 xff0c 后来接触到了NXP的单片机 一下从51过渡到ARM xff0c 确实让我头疼了一段时间 xff0c 不过还好 xff0c 都是配置寄存器去开发 xff0c
  • 嵌入式工程师月薪有多少?零基础学嵌入式要多久?

    嵌入式开发在10年前 xff0c 对大多数人来说 xff0c 还是一个非常陌生的专业 xff0c 随着社会的发展 xff0c 技术的进步 xff0c 很多产品都在追求自动化 xff0c 智能化 xff0c 嵌入式也在不断地被大家所熟知 我刚
  • plc和单片机哪个更有前途?为什么本科生都不搞plc?

    相信很多学电气工程专业的都会学习PLC xff0c 我当初也是电气工程专业 xff0c 主要学的三菱PLC xff0c 后面也玩了下西门子的 当时觉得还挺神奇 xff0c 也对编程比较感兴趣 xff0c 不过学校学得太简单了 xff0c 基
  • 学stm32有机会进大公司吗?如何选择?

    进大公司似乎跟你会什么单片机并没有直接的关系 但凡做过几年研发的都知道 xff0c 虽然我们是从事嵌入式单片机开发 xff0c 但核心其实还是你的编程思维和水平 企业做产品不是固定用哪个单片机的 xff0c 而是根据市场的情况走 xff0c
  • 电气工程及其自动化就业方向及前景

    电气毕业 xff0c 工作10年 xff0c 聊聊这几年的感悟 全文约1800字 xff0c 认真看完 xff0c 相信还在迷茫的你一定茅塞顿开 首先声明一下 xff0c 我实习期间就自学转行进入嵌入式单片机开发了 自己并没有从事过电气工作
  • 大学如何自学嵌入式开发?

    我2011年就开始从事嵌入式软件开发 很多人觉得学习嵌入式开发比高考还难 xff0c 不知道怎么入门 xff1f 要学哪些东西 xff1f 嵌入式开发涉及的知识 xff0c 你确实一辈子都学不完 但是 xff0c 这不代表你需要花费很长的时

随机推荐

  • 嵌入式工作会越来越少吗?

    学习技术并非易事 xff0c 就像唐僧取西经 xff0c 需要经历皮肉之苦和精神上的折磨 学习最迷茫的无非是不确定自己能否学会 xff0c 学会以后能否落地 xff0c 给自己事业赋能 这种焦虑伴随着我当初整个自学过程 xff0c 直到找到
  • 解决ubuntu linux触摸板不能用问题

    解决ubuntu linux触摸板不能用问题 2011 04 16 01 40 其实很简单 xff1a 打开终端 xff0c 然后sudo i获取root权限 xff0c 然后 xff1a sudo modprobe r psmouse s
  • 一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc

    大家好 xff0c 我是无际 有一周没水文了 xff0c 俗话说夜路走多了难免遇到鬼 最近就被一个热心网友喷了 说我的文章没啥营养 xff0c 所以今天来一篇烧脑的 哈哈 xff0c 开个玩笑 xff0c 不要脸就没人能把我绑架 主要是最近
  • spi协议时序图和四种模式实际应用详解

    大家好 xff0c 我是无际 上个章节我们讲解了spi接口定义 xff0c 今天我们更加深入讲解下spi协议时序图和spi四种模式的用法 刚开始接触单片机开发时 xff0c 最怕就是看时序图 xff0c 对于我来说就是奇怪的知识 特别是SP
  • 你用esp8266做出过什么有趣的东西?

    曾经有个40多岁的老板跟我说 xff0c 很羡慕我这种做技术的 xff0c 他也喜欢钻研 xff0c 感觉自己做产品很有成就感 男人是天生的小朋友 xff0c 都喜欢玩 xff0c 都喜欢钻研 我做单片机开发11年了 xff0c 深感技术的
  • stm32正点原子和普中或是野火哪个好?

    看了很多热心网友对正点原子 野火 普中等开发板的对比和评论 说这个讲的不行 xff0c 那个代码写得垃圾 xff0c 还有谁谁谁的像一坨屎 说真的 xff0c 有种卸磨杀驴的感觉 为什么这么说 xff1f 因为忽略了两个问题 xff1a 1
  • 嵌入式Linux和stm32区别? 之间有什么关系吗?

    本人从事嵌入式单片机开发11年 xff0c 很多人对嵌入式 单片机 STM32 Linux傻傻分不清楚 导致学习过程走了很多弯路 xff0c 明明只需要几个月学习时间 xff0c 却浪费了1 2年 xff0c 最后抱怨嵌入式也太高了吧 xf
  • 为什么有些人说单片机简单,我学起来这么吃力?

    相信我 xff0c 你不是学不会 xff0c 只是没找对方法 看完这篇文章 xff0c 你就发现原来自己学起来并没那么吃力 开始前点赞 43 收藏赶紧点起来 xff0c 不然我怕你看得太入神 xff0c 下次想看都找不到 很多人学单片机从入
  • 嵌入式系统中,FLASH中的程序代码必须搬到RAM中运行吗?

    这个问题 xff0c 核心还是得看你用什么芯片方案 xff01 嵌入式系统涉及技术栈特别庞大 xff0c 不仅仅大家理解的ARM 43 Linux而已 我从业11年 xff0c 也只敢说对其中一个方向熟悉而已 嵌入式系统中 xff0c 核心
  • stm32入门开发板选野火还是正点原子呢?

    两个可以说都是行业标杆 不能说哪个比哪个更好 xff0c 各有特色 xff0c 适合自己就是最好的 xff0c 同行之间都是相互参考去做的 我从以下几个维度来对比下 xff1a 1 教程 2 代码 3 开发板价格 4 进阶 一 教程 两家教
  • 树莓派为什么涨价了?

    任何东西涨价都是一个原因 xff1a 供不应求 别说树莓派 xff0c 很多芯片都涨价了 xff0c 比如说STM32 xff0c 去年最高峰涨了将近10倍 所以 xff0c 引发了很多有趣的事 比如说 xff1a 以前接到订单老板开心得睡
  • jtag和swd区别,该用哪个?

    我刚开始学习单片机是STC最经典的STC89C52RC 导致我后面很多51的产品应用都会选择STC xff0c 一方面是因为熟悉 xff0c 一方面是使用确实很方便 其中最让我满意的就是烧录 xff0c 可以直接用串口就可以下载程序 xff
  • 匈牙利算法原理与Python实现

    匈牙利算法原理与Python实现 今天学习一个新的算法 匈牙利算法 xff0c 用于聚类结果分析 xff0c 先用图表示我当前遇到的问题 xff1a 这两列值是我用不同算法得到的聚类结果 xff0c 从肉眼可以看出第一列聚类为0的结果在第二
  • STM32之后哪块板子发展最好?

    从事开发10年了 xff0c 我来说说我个人见解 首先 xff0c 除非是顶尖的垄断技术 xff0c 否则一般不会有屹立不倒的芯片 站在研发经理的角度 xff0c 单片机选型时主要会考虑以下几个因素 xff1a 1 稳定性 2 价格 3 交
  • stm32用什么软件编程烧写比较好呢?

    今天给大家分享我从业单片机开发11年必备的神器 在刚入行不久 xff0c 看到那些老工程师费很大的劲去搭建开发调试环境 xff0c 让我很不解 我想有那工夫 xff0c 我程序都写完了 xff0c 如果有问题就看代码找Bug呗 直到后面做了
  • 嵌入式开发要学多久?要学哪些课程

    曾经有新手和我抱怨 xff1a 为什么嵌入式开发这么难 xff1f 相信我 xff0c 你不是学不会 xff0c 只是没找对方法 这是一片真正为 终结迷茫 而生的回答 xff0c 内容有点长 xff0c 如果你赶时间 xff0c 建议先点赞
  • 单片机volatile关键字的作用?

    最近我们无际单片机学员在做stm8和stm32项目的时候 xff0c 问volatile这个关键词怎么理解 xff1f 有什么作用 xff1f Volatile是C语言的一个关键字 xff0c 在stm8和stm32的固件库里也会经常看见这
  • STC89C51单片机相比于其他单片机具有那些优点?

    STC89C51只适合和同性能的51内核单片机相比 xff0c 性能不同并无可比性 11年前 xff0c 我就是通过自学STC89C51入行单片机开发的 到目前为止都非常经典 xff0c 很多开发板都是基于这个芯片去做的 我对STC单片机也
  • 单片机怎么实现真正的多线程?

    所谓多线程都是模拟的 xff0c 本质都是单线程 xff0c 因为cpu同一时刻只能执行一段代码 模拟的多线程就是任务之间快速切换 xff0c 看起来像同时执行的样子 据说最近有多核的单片机 xff0c 不过成本应该会高很多 对于模拟的多线
  • 单片机能运行操作系统吗?

    先直接上答案 xff1a 可以 xff01 但是操作系统不是刚需 xff0c 上操作系统比较占用单片机的资源 xff0c 比如占用比较多的FLASH和RAM xff0c 间接增加了硬件成本 xff0c 哪怕成本增加1毛钱 xff0c 对于上