0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MCU是选择跑裸机,还是跑RTOS?

jf_EksNQtU6 来源:硬件十万个为什么 2024-01-15 10:29 次阅读

MCU(Microcontroller Unit)和SoC(System on a Chip)是两种不同的嵌入式系统,它们通常运行不同类型的操作系统,具体取决于其应用场景和硬件资源。

1、MCU(Microcontroller Unit):

类型:MCU是一种单一芯片集成了处理器核心、内存、外设和其他基本功能的微控制器

应用场景:常用于简单、实时性要求较高的嵌入式系统,例如传感器控制、嵌入式设备等。

操作系统:多数情况下,MCU并不运行传统的操作系统,而是使用实时操作系统(RTOS)或裸机编程。RTOS可以提供实时性、轻量级的任务调度和事件处理。

2、SoC(System on a Chip):

类型:SoC是集成了处理器核心、内存、外设以及可能的其他处理单元(如GPUDSP等)的复杂芯片。

应用场景:通常用于更复杂、多用途的嵌入式系统,例如智能手机、嵌入式计算机、嵌入式系统-on-a-chip等。

操作系统:SoC可以运行更复杂的操作系统,包括LinuxAndroidFreeRTOS等。具体选择取决于应用需求和硬件资源。在一些资源有限的情况下,也可以选择裸机编程或轻量级RTOS。

总的来说,MCU更倾向于在实时性要求高、资源有限的场景下使用RTOS或者裸机编程,而SoC则具有更大的灵活性,可以运行更复杂的操作系统,适用于多用途的嵌入式应用。选择操作系统的决策通常由具体的应用需求和硬件资源决定。

01MCU是选择跑裸机,还是跑RTOS?

选择MCU跑裸机(Bare-Metal)还是跑RTOS(Real-Time Operating System)取决于具体的应用需求和项目要求。每种选择都有其优势和适用场景。

裸机编程:

资源效率:裸机编程通常更轻量级,不需要额外的操作系统开销,因此在资源有限的嵌入式系统中可能更为合适。

实时性:对于对实时性要求极高的应用,裸机编程可以提供更精确的控制,因为没有额外的任务调度和中断延迟。

简单性:裸机编程相对简单,没有操作系统的复杂性,适合一些简单的控制应用,如传感器控制、定时器应用等。

RTOS:

多任务处理:如果应用需要同时处理多个任务,RTOS提供了任务调度和管理机制,简化了多任务并发处理。

抽象层:RTOS提供了抽象层,简化了开发者对底层硬件的操作,提高了代码的可移植性。

易维护性:RTOS可以提高代码的可维护性,通过任务划分和模块化设计,更容易理解和调试。

时间管理:对于需要精确的时间管理和处理的应用,RTOS可以提供更可靠的时间管理和调度。

选择的考虑因素:

应用需求:确定应用的性质和需求,如果是简单的、实时性要求高的控制任务,裸机编程可能足够。如果需要处理多个任务或复杂的控制逻辑,RTOS可能更合适。

资源限制:考虑硬件资源的限制,如果MCU资源非常有限,裸机编程可能更为合适。如果有足够的资源,并且希望简化开发流程,RTOS可能是一个好的选择。

开发经验:开发者对裸机编程或RTOS的经验也是考虑的因素。对于有经验的开发者,裸机编程可能更容易上手;而对于复杂的项目,RTOS提供了更高层次的抽象,可能更容易管理。

最终的选择应该根据具体项目的需求、开发者的技能水平以及硬件资源等因素进行权衡。在一些项目中,也可以结合裸机编程和RTOS的方式,根据具体任务的需求选择合适的策略。

很多刚毕业进入职场的同学,由于在学校一直开发裸机,所以对RTOS有一点畏惧。其实选择FreeRTOS这样的轻量级的RTOS,给你提供了一些“武器”,对于复杂功能的开发,开发难度其实是降低的。

02为什么大多数SoC选择Linux作为操作系统

大多数SoC选择Linux作为操作系统的原因有多个,其中一些关键因素包括:

广泛的支持:Linux是一个开源操作系统,得到了全球广泛的支持和社区参与。这使得大多数SoC供应商都能够轻松地为其硬件提供Linux内核和相关驱动程序。

丰富的软件生态系统:Linux拥有庞大而丰富的软件生态系统,包括开源工具、库、应用程序等。这使得开发者能够更容易地访问和利用各种现有的软件资源,从而加速应用程序的开发过程。

多用户支持:Linux是一个多用户、多任务的操作系统,适用于需要支持多个用户同时运行多个任务的嵌入式应用场景。这对于一些复杂的SoC,如智能手机、嵌入式计算机等来说是非常重要的特性。

强大的网络支持:Linux内核支持丰富的网络协议和功能,适用于需要网络连接的嵌入式系统。这对于连接互联网、进行远程管理和数据传输的应用非常重要。

开放源代码:Linux的开放源代码模型使得SoC制造商可以根据自己的需求进行定制和优化。这种开放性有助于适应各种硬件架构和满足不同市场需求。

稳定性和可靠性:Linux经过长时间的发展和测试,已经变得非常稳定和可靠。这对于一些对系统稳定性要求较高的应用场景是至关重要的。

社区支持和更新:Linux有庞大的社区支持,新的内核版本和补丁定期发布,这意味着SoC制造商和开发者可以获得最新的功能、安全性和性能优化。

综合这些因素,Linux成为了许多SoC的首选操作系统,特别是在需要处理较为复杂的任务、具备丰富的软硬件生态系统、要求网络连接和多用户支持的场景下。然而,也有一些资源有限或对实时性要求较高的应用场景,可能会选择其他操作系统、包括安卓或者RTOS。

还有些芯片,主要针对的就是Linux系统的外设,不考虑MCU的外设的场景。比如一些高通的wifi芯片,只支持linux的驱动移植。所以你在没有芯片厂家支持的前提下,是没法把它用在非linux的情况的。

03关于RT-Linux

RT-Linux是一个基于Linux内核的实时操作系统(RTOS),它通过对Linux内核的修改和扩展,使其具备实时性能。RT-Linux的目标是在维持Linux的通用性和强大性的同时,提供对实时任务的支持,使得它可以在需要高实时性的应用中使用。

以下是RT-Linux的一些主要特点和介绍:

实时性:RT-Linux致力于提供可预测、可控的实时性能。通过引入实时调度器和中断处理机制,它能够确保任务在指定的时间内得到执行,满足实时系统的需求。

Linux内核扩展:RT-Linux是在Linux内核的基础上进行扩展和修改而来的。它保留了Linux的通用性和丰富的功能,同时增加了实时任务调度器、硬实时中断等实时特性。

实时调度器:RT-Linux引入了实时调度器,允许任务按照优先级和截止时间进行调度。这有助于确保实时任务按时执行,而不受非实时任务的干扰。

硬实时中断:RT-Linux提供了硬实时中断机制,以确保对于一些对时间敏感的任务,能够以极低的延迟进行响应。

POSIX兼容性:RT-Linux保持了对POSIX标准的兼容性,这使得它与许多现有的实时应用程序和开发工具更加兼容。

开源:RT-Linux是开源软件,基于GPL许可证发布。这使得开发者可以自由访问、修改和分发源代码。

适用范围:RT-Linux适用于需要Linux通用性和实时性能的应用,如工控系统、嵌入式控制系统通信系统等。

RT-Linux有几个主要的版本,其中一些较为知名的版本包括:

RTLinux/GPL:最早的RT-Linux版本,由RTLinux公司(现为Wind River Systems)开发。RTLinux/GPL是一个实时扩展模块,通过将实时调度器插入Linux内核,实现硬实时性。

RTLinuxFree:是RT-Linux/GPL的一个开源版本,其目标是提供对Linux内核的实时扩展,以增强Linux在实时嵌入式应用中的可用性。

RTAI(Real-Time Application Interface):RTAI是一个独立的实时扩展,提供了对Linux内核的实时支持。RTAI与RTLinux有类似的目标,但其实现方式和架构略有不同。

Xenomai:Xenomai是一个实时框架,通过在Linux系统上运行一个实时内核(Cobalt)来提供硬实时性。Xenomai不同于RTLinux的内核插件方式,而是在用户空间运行实时任务。

PREEMPT-RT:PREEMPT-RT不是RT-Linux的特定版本,而是一个用于向Linux内核添加抢占性的实时扩展。它通过对Linux内核进行修改,引入了更多的抢占性,以提高Linux的实时性能。

这些版本各自有不同的设计和实现方式,开发者在选择时应根据项目的需求、硬件平台和个人经验来确定最适合的版本。当前的实时Linux解决方案领域仍在发展,开发者可以根据项目的具体情况选择适当的解决方案

04为什么裸机程序又被称作前后台

裸机系统通常分成轮询系统前后台系统

轮询系统

轮询系统即是在裸机编程的时候,先初始化好相关的硬件,然后让主程序在一个死循环里面不断循环,顺序地做各种事情,大概的伪代码看下方代码块轮询系统是一种非常简单的软件结构,通常只适用于那些只需要顺序执行代码且不需要外部事件来驱动的就能完成的事情。在代码清单 中,如果只是实现 LED 翻转,串口输出,液晶显示等

这些操作,那么使用轮询系统将会非常完美。但是,如果加入了按键操作等需要检测外部信号的事件,用来模拟紧急报警,那么整个系统的实时响应能力就不会那么好了。

前后台系统

相比轮询系统,前后台系统是在轮询系统的基础上加入了中断。外部事件的响应在中断里面完成,事件的处理还是回到轮询系统中完成,中断在这里我们称为前台,main 函数里面的无限循环我们称为后台。

在顺序执行后台程序的时候,如果有中断来临,那么中断会打断后台程序的正常执行流,转而去执行中断服务程序,在中断服务程序里面标记事件,如果事件要处理的事情很简短,则可在中断服务程序里面处理,如果事件要处理的事情比较多,则返回到后台程序里面处理。虽然事件的响应和处理是分开了,但是事件的处理还是在后台里面顺序执行的,但相比轮询系统,前后台系统确保了事件不会丢失,再加上中断具有可嵌套的功能,这可以大大的提高程序的实时响应能力。在大多数的小型项目中,前后台系统运用的好。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16977

    浏览量

    350215
  • 嵌入式
    +关注

    关注

    5068

    文章

    19008

    浏览量

    302971
  • Linux
    +关注

    关注

    87

    文章

    11219

    浏览量

    208872
  • 操作系统
    +关注

    关注

    37

    文章

    6727

    浏览量

    123181
  • RTOS
    +关注

    关注

    21

    文章

    809

    浏览量

    119410

原文标题:为什么MCU一般跑RTOS,SoC一般跑嵌入式Linux?

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ARM通常用来系统。avr裸机

    ARM通常用来系统。avr裸机裸机编程和系统是什么说法啊!两者有什么不同吗
    发表于 08-06 09:21

    请问STM32在工作中系统的多吗?

    问题如标题:请问一下,大家学习STM32在工作中都有系统吗?还是裸机?如果只是裸机,学习S
    发表于 03-19 22:18

    我的项目要不要RTOS

    经常有初学读者问一些关于RTOS的问题,比如: 我现在要不要学习RTOS?学习RTOS有什么好处?我的项目要不要RTOS?问这些问题,其实
    发表于 06-17 06:30

    MCU芯片分大战

    今天 我们来个中国通用32位MCU芯片 分大战!说起MCU,在物联网,智能硬件兴起的当...
    发表于 11-03 06:08

    MCU裸机编程状态机的定义与注意事项是什么

    最高效的一种形式。可能很多人认为裸机中状态机比较low,怎么也要搞一个RTOS,更甚着要Linux才觉得高大上。其实,这都是误区,适合自己的才是最好的,做产品也一样,满足需求很重要。1 状态机的概念
    发表于 02-14 06:02

    裸机系统和RTOS该怎么选择

    玩过单片机的同学都清楚,采用裸机系统开发,在很多场景下完全可以满足需求。但我们也注意到,随着物联网的兴起,各种物联网RTOS雨后春笋般冒了出来,那么裸机系统和RTOS该怎么
    发表于 03-02 07:17

    请问如何判断MCU可以多大的模型?

    如何判断我的MCU可以多大的模型?靠看ram占用?实际测试执行效率?
    发表于 04-26 09:26

    freeRtos和裸机 同样一个程序,效率不一样

    freeRtos和裸机 同样一个程序,效率不一样,RTOS只有一个task,而且没有vTaskDelay 挂起。同样的一个程序,裸机一圈
    发表于 07-04 11:10

    实时操作系统RTOS相比裸机的优势有哪些?

    经常有初学读者问一些关于RTOS的问题,比如:我现在要不要学习RTOS? 学习RTOS有什么好处? 我的项目要不要RTOS?  问这些问题
    的头像 发表于 12-25 15:48 6695次阅读

    裸机RTOS的理解和并发带来的问题

    1 裸机RTOS的理解 首先这里只针对单核CPU架构的芯片展开讨论,大部分是MCU吧,而多核CPU的讨论相对比较复杂,暂不涉及~玩RTOS的朋友都知道,
    的头像 发表于 06-13 15:13 4289次阅读

    MCU操作系统时RTOS总是必要的吗

    对许多嵌入式项目来说,系统设计师都倾向于选择实时操作系统(RTOS)。但RTOS总是必要的吗?答案是取决于具体的应用,因此了解我们要达到什么目标是决定RTOS是必要的
    的头像 发表于 11-18 15:45 2211次阅读

    8bit MCU程序飞原因分析

    中颖8bit MCU程序飞原因分析
    的头像 发表于 10-27 15:17 1105次阅读
    8bit <b class='flag-5'>MCU</b>程序<b class='flag-5'>跑</b>飞原因分析

    RTOS相比裸机有什么优点?RTOS相比裸机更方便吗?

    RTOS相比裸机有什么优点?RTOS相比裸机更方便吗? RTOS代表实时操作系统,专门为需要高可靠性和可预测性的系统设计。相比之下,裸金属或
    的头像 发表于 10-29 16:33 1550次阅读

    何时选择裸机?何时选择RTOS?何时选择GPOS?

    在每个开发项目的初期,你都必须选择软件开发的基础。虽然有很多选择,但它们通常分为三类:裸机、实时操作系统(RTOS)或通用操作系统(GPOS)。
    的头像 发表于 02-27 11:42 1036次阅读

    不是高性能MCU用不起,而是MP135裸更具性价比

    以前微处理器(MPU)与微控制器(MCU)是截然不同的两种设备,MPU支持丰富的软件系统,如Linux和相关的软件堆栈,而MCU通常将专注于裸机RTOS。近年来,随着
    的头像 发表于 03-29 08:01 1106次阅读
    不是高性能<b class='flag-5'>MCU</b>用不起,而是MP135裸<b class='flag-5'>跑</b>更具性价比