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

无际单片机编程 无际单片机编程     2023-03-15     437

关键词:

先直接上答案:可以!

但是操作系统不是刚需,上操作系统比较占用单片机的资源,比如占用比较多的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单片机。

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

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

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

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

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

学好单片机能找什么工作?单片机好学吗?

大家好,我是无际单片机编程徐工。随着电子集成技术的不但地发展,很多电子产品的设计都使用集成化的芯片,其中单片机在现在电子产品设计中,扮演者越来越重要的角色。集成电路让产品的电路设计越来越... 查看详情

嵌入式开发|单片机能用c++开发吗?

...者|strongerHuang微信公众号 | strongerHuang通常来说,在单片机上编程,要么汇编,要么C语言,而用C++进行开发的很少。那么究竟能不能用C++开发单片机呢?答案肯定是可以的。下面基于Keil、STM32,... 查看详情

单片机从事什么工作?只会51单片机能找到工作吗?

我当初是自学转行进入单片机行业,没有211/985这种学历背景。转行纯粹是为了脱离阶层,我们那个年代都兴蓝领,白领。我们学的专业就是属于蓝领类的。蓝领就是做苦力活的,白领就是衣光鲜艳,坐办公室... 查看详情

自学单片机好找工作吗?会单片机能找什么工作?

大家好,我是无际单片机编程徐工。最近有部分学员陆陆续续开始找工作了,在此分享下我第一份工作的经历。更详细的面试经验和技巧,我们会在明晚钉钉内部群直播分享。我先给大家介绍一下,我刚毕业找的... 查看详情

mcs-51系列单片机系统功能的扩展

单片机最小应用系统单片机能正常运行的最少器件构成的系统,就是最小系统。  存储器的扩展存储器主要用来保存程序、数据和作为运算的缓冲器,是单片机和单片机应用系统中除CPU外最重要的功能单元。如果片内的... 查看详情

单片机值得学吗?会单片机能找什么工作?

我是在2011年自学的单片机,我本专业是电气工程,读了2年后整个系被学校强制安排成电梯专业。临近毕业,我才知道这个专业有多坑,工作环境恶劣、体力活、出了事故要负责任、24小时待命的工作模式、最可悲... 查看详情

msp430单片机能用啥软件仿真?

ProteusProfessionalV7.7,去网上找有很多破解版,里面新增了很多430的片子,我学的是MSP430F149,里面没有,不过和MSP430F249几乎相同,249来代替希望对你有帮助参考技术Aproteus7.6加入了430,但是反映不是很好,不建议使用。对430的仿真... 查看详情

嵌入式系统中,flash中的程序代码必须搬到ram中运行吗?

...又衍生出不同的职业方向,主流的有以下几个:1.单片机工程师2.Linux驱动开发3.Linux系统开发工程师4.Linux应用工程师5.安卓系统开发工程师6.FPGA/DSP开发 不同的处理器类型程序运行方式也不一样,不能一概而论。我拿... 查看详情

单片机能做什么创意小发明?新手怎么制作单片机智能小车?

曾经,有一个老板跟我说,很羡慕我们这些做技术的。我们都感觉有点讽刺,一个身价上千万的人,羡慕我们这些年收入不到20万的。不过从他的说话方式来看,似乎是认真的,他说他也喜欢研究技术,... 查看详情

msp430单片机能用啥软件仿真?

proteus7.6加入了430,但是反映不是很好,不建议使用。对430的仿真还是建议用IAR结合JTAG进行硬件仿真,结果准确。参考技术APROTEUS好像可以的 参考技术BkeilIAR都可以呀在线调试仿真 参考技术CProteusProfessionalV7.7,去网上找有很多破... 查看详情

你的单片机能跑10000分吗?教你一招,轻松搞定性能测试

...;介绍的是微控制器CPU性能测试基准CoreMark。轻轻松松测试单片机的性能。在嵌入式系统行业用于评价CPU性能指标的标准主要有三种:Dhrystone、MIPS、CoreMark。其中CoreMark是一种新兴流行的嵌入式系统处理器测试基准,被认为... 查看详情

你的单片机能跑10000分吗?教你一招,轻松搞定性能测试

...;介绍的是微控制器CPU性能测试基准CoreMark。轻轻松松测试单片机的性能。在嵌入式系统行业用于评价CPU性能指标的标准主要有三种:Dhrystone、MIPS、CoreMark。其中CoreMark是一种新兴流行的嵌入式系统处理器测试基准,被认为... 查看详情

stm32单片机能写复杂控制算法么

1.PID原理1.1PID三个参数简单理解1.2PID1.3PIPDPID适用系统2.串级PID原理3.PID代码3.1单级PID3.1.1初始化PID结构体3.1.2单级PID计算3.1.3PID初始化3.1.4清空PID3.2串级PID3.2.1初始化串级PID结构体3.2.2串级PID计算4.PID的使用4.1定义PID结构体并初始化4.2... 查看详情

plc的梯形图是如何转换成单片机能识别的语言?有哪位高人懂的!

只知道国内有用单片机做的仿三菱PLC的板子,用三菱PLC编辑软件梯形图编写后,用他们提供的转换软件变成汇编语言。追问转换成汇编语言啊?那下一步就是将汇编烧写到PLC中吧?很好的消息提供,谢谢你啊追答你理解的很对,... 查看详情

vcentersts过期了虚拟机能重启吗?

vcentersts过期了虚拟机不能重启,需要更新一下程序再启动。参考技术Avcentersts过期了虚拟机不能重启,需要更新一下程序再启动。 查看详情

virtualbox跟java相同吗

...来虚拟一台电脑,上面可以安装Windows、Linux、Unix、Mac等操作系统软件,当然也能安装各平台下的Java了。java是一种编程语言、也是一种软件运行环境(java程序的环境),各个操作系统平台有各自的java语言解释系统。本回答被提... 查看详情

at89c2051单片机能烧写多大的程序文件?

...代码或者优化出来的code还是大于2K,只有换AT89c4051,这块单片机价格和2051差得不多,除了flash是4K以外,其他和2051一样可以直接替换AT89C2051。参考技术A2051最大ROM是2K 参考技术B2K 查看详情

有源蜂鸣器,通电后会一直响,如何让蜂鸣器通电后只响一声?不用单片机能不能做到?求电路图

...,通电后会一直响,如何让蜂鸣器通电后只响一声?不用单片机能不能做到?求电路图最简单的方法,不用什么复杂的电路和元件,只用一个电解电容和蜂鸣器串联后接到电源上。电容的容量越大,响的时间越长,根据需要选择... 查看详情