如何快速评估一款MCU是否能跑系统RTOS?
嵌入式之入坑笔记 2025-05-28

最近有朋友在后台中私信我,说现在做项目的时候有时候总是会考虑要不要用RTOS,或者怎么考量什么时候该用RTOS比较好、

关于这个问题,我个人也是深有感触的,做开发这么久了,大大小小的产品都做过不少了。有用RTOS开发的也有纯裸机开发的,并不是说用RTOS就一定比用裸机要好,应该要看实际的硬件资源和产品逻辑的需求。做嵌入式开发的朋友都知道,尤其是单片机开发的,现在的单片机五花八门,各式各样,层出不穷。有些性能高,有些性能就一般,做项目的时候可能还因为出于成本考量,即使产品逻辑较复杂,但是单片机性能也会被替换为性能更低,但价格更低的。我们都知道 RTOS 能高效管理多任务,如多任务方式处理按键、显示屏显示、通信等,能极大提升单片机的运行效率和稳定性。但是呢,并非所有的单片机(MCU)都能顺畅运行 RTOS 系统的。如何快速判断一款单片机(MCU) 能否跑RTOS是我们这篇文章要分析的问题,就以我的个人观点简单分析一下。
一、RTOS 对 MCU 的基本要求要想知道一款单片机(MCU)能否跑的动RTOS,我觉得应该首先从 内存、主频、内核支持情况、以及是否有相关的移植案例等先考量一下。(1)看单片机的内存 (RAM、ROM) 情况任何一款单片机,我们在选型它时候都不可忽略内存的大小情况,它直接取决能否支撑我们产品开发的内存分配是否足够。内存是 MCU 运行 RTOS 的关键资源。一般单片机内存主要指随机存取存储器(RAM),和掉电可保持存储器(ROM)。RAM一般用于运行时数据存放和动态内存分配等;ROM一般存储代码文本和掉电保持的数据。ROMRTOS本身涉及的任务管理和各种中间件就会比逻辑代码要多得多,不同的RTOS还是不一样的,代码量就会有所不同,所以要支持RTOS的话,单片机的ROM就不能太少。一般要求 ROM ≥ 32KB 以上。但是注意需要注意的一点:并不是ROM够大的就可以,要区分ROM的类型。比如常见的ROM还分为:OTP型Flash:这类flash一般单次写入,不支持反复擦写。 可编程型Flash:这类flash可支持反复擦写,常见的擦写寿命可达几万到几十万次不等。一般用于跑RTOS的都是选择可编程型的FLASH单片机。RAMRTOS 涉及任务调度和管理,任务数量越多越复杂度,对 RAM 的需求就越大。一般来说,单片机能够运行多任务的最低 RAM 要求为 RAM ≥ 16KB,想要运行更复杂的系统和更多任务数量,那需要的 RAM 容量就要更大了。由于RTOS系统运行时,不管是创建的可运行任务还是其他像邮箱、信号量、互斥锁、队列、事件标志组等都是需要申请内存空间的。一般来说会用动态申请的方式,所以想要能正常运行起来,必须有足够的RAM。特别是涉及大量数据处理和多任务数量的情况下,甚至可能需要几百 KB 甚至几 MB 的 RAM。
(2)主频单片机的主频代表了 MCU 的运算速度和处理能力。高的主频能让 MCU 更快地处理各种指令,能更好地满足 RTOS 对实时性的要求。本来我们考虑使用RTOS就是对实时性有要求的,过低的主频即使运行了RTOS,但是实时性不满足的话,也不是我们所需要的。所以,通常建议 MCU 的主频 ≥48MHz 及以上,像常用到的 STM32F103X系列,主频就可高达 72MHz,能较好地支持 RTOS 运行。但是呢,主频也并非越高就越好,还需综合考虑功耗、散热、成本、体积等因素。
(3)内核是否支持跑RTOS不同的 RTOS 对 MCU 内核有特定要求。很多的 MCU 在设计之初的定位就是明确的了,有些是为了低端场景下使用,要求不高,往往用于裸机即可;而有些是为了中高端场景下使用,对MCU要求很高,设计的时候就会考虑到RTOS兼容的问题。目前,市场上主流的 MCU 内核常见见的有几个:
1)ARM 的 cortex-M系列: 低端:Cortex-M0、M0+、M1、M23 中端:Cortex-M3、M4 高端:Cortex-M7、M33、M35P、M55 等等的。 2)RISC-V:一种开源指令集架构,近年来是备受关注了的。3)8位内核:传统的8位内核如今在市场上需求量依然很大,特别是在一些对成本敏感的应用领域。4)其他厂商自研内核:这类一般是厂商自研的内核,可能用于某些特定用途,相对来说使用范围较小。
还有一种确认方法:当你打算在 MCU 上移植某个RTOS的时候,建议你可以先去找找你打算移植的RTOS是否有应用的案例。比如可以看官方提供的源码中是否有支持你用的MCU的内核适配文件,或者看看官方提供的配置工具中是否有相应的配置工具,这种方式都可以比较快速的确认是否支持某些RTOS。比如,freeRTOS的源码中,有一个目录中就放着针对某些内核的适配文件,如下:
(4)单片机外设资源是否支持用过RTOS的朋友应该都清楚,RTOS 在运行过程中需要使用定时器、中断等外设资源。定时器用于提供给RTOS作为心跳节拍,中断能否管理涉及到RTOS的实时性。因此,在选择 MCU 时,要确保这些外设没有被其他功能完全占用,否则可能导致资源冲突,影响 RTOS 的正常运行。
二、判断的方式总结(1)确认芯片内核第一步肯定是要确定 MCU 的内核是否支持运行相应 RTOS 的条件。判断的方式一般是通过查阅MCU芯片数据手册或相关技术资料、应用文档等。有些MCU在官方提供的资料中可能会有相关的RTOS应用案例或者移植好的demo例程,这种资料当然是一手的参考好资料。
(2)检查 Flash 和 RAM 大小依据数据手册,仔细核对 Flash 和 RAM 的容量是否满足运行 RTOS 的基本要求,即: Flash≥32KB;RAM≥16KB。若不满足,需考虑更换 MCU 或选择对资源要求更低的 RTOS。
(3)确认主频大小MCU的主频太低的话,运行速度太慢,就算能跑得动RTOS,但是实时性太差也很难满足我们的的应用需求,实际意义并不大。
(4)查看RTOS源码对MCU内核的支持情况很多RTOS提供的原始代码中往往都会有官方针对一些内核做的移植适配,从官方提供的例子里面就能很快的判断该RTOS是否支持某些内核。并且,移植时很可能还是需要从官方提供的适配文件去裁剪修改来适配自己的芯片平台的。所以参考官方的案例是非常重要的步骤,总比自己瞎摸索要快得多。
三、要不要用RTOS?前面简单讨论了一下怎么判断一款单片机能不能用RTOS,那其实还存在一个问题:要不要用RTOS的问题。能不能用RTOS 和 要不要用 RTOS 是两个层面的问题了。关于要不要用 RTOS 的问题,从我个人做项目经验出发分享一点微薄的经验:(1)看项目的复杂程度在项目开发前期,你应该对自己要做的项目有一个把握。如果你即将开发的项目本身并不复杂,只是采集几个ADC数据,然后简单处理一下采集数据,最后通过串口发送出去,那这样的压根没必要用RTOS,直接裸机开发更加方便。如果你即将开发的项目有一定的复杂度了,比如要涉及到网络数据的管理、显示屏显示、外部多按键输入,协议解析,超时管理等的功能,那就建议要上RTOS了。使用RTOS的任务管理以及多种同步手段,能更加方便你的代码模块化和保证实时性能。(2)看项目需求如果项目中对时间的要求很严格,比如航空航天、工业控制、测量领域等,可能会要求任务必须在规定时间内运行或者完成,不能有很长的延迟,这种情况就需要考虑用RTOS来保证任务的及时执行和响应。但是像一些诸如电子消费品之类的,本身对时间要求也不是那么的严格,有一些延迟也能接受的,那就是可用可不用了。(3)看项目成本做产品的成本向来都是第一考虑的要素。一个产品如果开发以后得成本太高,即使做的再完美,由于颇高的价格都难以被市场接受,那这个产品的市场价值就完全失去了。如果开发的项目对成本把控严格,即使功能复杂可能也不会用RTOS开发。这点需要综合考虑软件、硬件成本。软件方面主要是用到的软件是否需要授权收费,比如用到的某些库是否收费?用到的RTOS是否免费?硬件方面要考虑用到的MCU价格,以及外围电路设计的成本,物料价格等等的因素。


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 【7.24 深圳】2025国际AI+IoT生态发展大会/2025全球 MCU及嵌入式技术论坛


  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 3AT89C51单片机引脚说明及引脚图

    AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU...

    昨天
  • 51单片机对LCD1602液晶的驱动设计

    51单片机——LCD1602 1、1602液晶读写时序 (1)、读状态 RS=L,R/W=H,E=H。(判断忙完毕后释放总线) (2)、读数据 RS=H,R/W=H,E=H。 (3)、写指令 RS=L,R/W=L,D0~D7=指令码,E=高脉冲 (4)、写数据 RS=H,R/W=L,D0~D...

    昨天
  • 单片机串口如何接收不定长数据的?

    我们在使用其他STM32的单片机的时候,会发现有些困难,会发现常用的方法并不能用,在还没有接收完数据的时候,就解决不了。于是,只能用通用的方法来解决了。 这个通用的方法,其实原理和使用IDLE的原理一样:...

    昨天
  • ARM处理器的选型原则

    鉴于ARM微处理器的众多优点,随着国内外嵌入式应用领域的逐步发展,ARM微处理器必然会获得广泛的重视和应用。但是,由于ARM微处理器有多达十几种的内核结构,几十个芯片生产厂家,以及千变万化的内部功能配置组合,...

    前天
  • 有哪些低功耗设计方法?单片机系统低功耗设计要点介绍

    功耗,已经是一个老生常谈的话题了。对于功耗,大家多多少少有所了解。目前,很多产品的宣传里便带有低功耗噱头。为增进大家对功耗的认识,本文将基于两点介绍功耗:1.低功耗主要设计方法,2.单片机系统低功耗设计...

    前天
  • 8位32位MCU如何选择?如何选择合适的MCU?

    MCU,对于普通人而言,是一个高大上的存在。但是,在工业中,MCU确实常见产品。为增进大家对MCU的认识,本文将基于两点介绍MCU:1.8位MCU和32位MCU如何选择?2.如何选择合适的MCU。如果你对MCU具有兴趣,不妨继续往...

    07-09
  • ARM开发:一 ARM微处理器概述

    1.1ARM-Advanced RISC Machines ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 1991年ARM公司成立于英国剑桥,主要出售芯片设计技术...

    07-08
  • 分析C51单片机的一些误区和注意事项

    简介:常看见初学者要求使用_at_,这是一种谬误,把C当作ASM看待了。在C中变量的定位是编译器的事情,初学者只要定义变量和变量的作 用域,编译器就把一个固定地址给这个变量。怎么取得这个变量的地址?要用指针。 1) C...

    07-08
  • 51单片机几个延时程序

    简介:51单片机几个精确延时程序:在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响. 一. 500ms延时子程序(晶振12MHz,一个机器周期1us.) 程...

    07-08
  • 总结单片机软件抗干扰的几种办法

    简介:在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。 1、软件抗干扰方法的研究 在工程实践中...

    07-08
  • 基于C51单片机实现汽车座椅自动控制系统的软硬件设计

    引言 随着人们生活水平的提高,对汽车座椅的舒适性要求也越来越高,要求对汽车座椅地调节能够更加简单、方便、快捷。目前,汽车座椅位置的调节多采用基于手动调节方式的机械和电动控制两种方式。汽车座椅位置的调节...

    07-02
  • MCS51单片机程序设计时堆栈的计算方法解析

    用C语言进行MCS51系列单片机程序设计是单片机开发和应用的必然趋势。Keil公司的C51编译器支持经典8051和8051派生产品的版本,通称为Cx51。应该说,Cx51是C语言在MCS51单片机上的扩展,既有C语言的共性,又有它自己...

    07-02
下载排行榜
更多
评测报告
更多
广告