在资源有限的M0单片机上运行RTOS

在资源有限的M0单片机上运行RTOS

1.添加RTOS内核至工程中

2.配置RTOS,裁剪内核文件

3.编译工程,查看内核占用内存大小。

  • RO (Read Only): 只读数据。包括程序代码(Code)和常量(如 const 声明的变量)。
  • RW (Read Write): 读写数据。指已初始化的全局变量和静态变量。
  • ZI (Zero Initialized): 零初始化数据。指未初始化或显式初始化为0的全局变量和静态变量。
  • ROM (Read Only Memory): 程序存储器的总占用大小,即需要烧录到Flash中的内容。
  • RAM (Random Access Memory): 运行时的内存占用大小。

3.1.Total RO Size (Code + RO Data) = 5304 (5.18kB)

含义 :程序代码和所有常量总共占用了5304 字节。
存储位置:这部分数据存储在单片机的Flash(程序存储器)中。

3.2.Total RW Size (RW Data + ZI Data) = 7072 (6.91kB)

含义 : 你的程序在运行时,需要占用的 RAM 总量 为 7072 字节。
构成

  • RW Data: 已初始化的全局/静态变量。这些变量的初始值需要从Flash中拷贝到RAM。
  • ZI Data: 未初始化的全局/静态变量。系统启动时会在RAM中为它们开辟空间并清零。

3.3.Total ROM Size (Code + RO Data + RW Data) = 5444 (5.32kB)

含义 : 需要烧录到单片机 Flash 中的总数据量是 5444 字节。
构成: 它等于 RO Size + RW Data的初始值。

  • Code + RO Data (5304字节) 直接存放在Flash中。
  • RW Data的初始值(5444 - 5304 = 140字节)也存放在Flash中。当程序启动时,系统会把这140字节的初始值从Flash拷贝到RAM中对应的RW区域。
  • 分析: 这个值(5.32kB)通常略大于 RO Size (5.18kB),因为它包含了RW变量的初始值。它决定了程序对Flash空间的实际占用量。

4.速览MCU资源情况

从上图可以看出,单片机MM32F0144C6P的RAM空间最大为8KB,Flash空间最大为64K。M0的MM32单片机引入RTOS内核后,RAM空间已经占用了6.91KB,Flash空间占用5.32KB。

5.运行两个任务

5.1.编译运行,查看map文件

从图中可以看出,添加两个任务后RAM空间为7.64KB,Flash空间为5.84KB。RAM只剩下了0.36KB了,资源耗尽了,无法继续添加任务了。

6.总结

在M0单片机上也可以运行RTOS,但是其资源有限,应用场景也主要应用于一些成本敏感的产品上,其定位以及决定了性能上限,所以没有必要在M0单片机上运行RTOS。

相关推荐
我在人间贩卖青春10 小时前
DMA的应用
单片机·dma·gpdma
大熊背11 小时前
ISP离线模式应用(二)-如何利用 ISP 离线模式 加速 3DNR 收敛
linux·算法·rtos·isp pipeline·3dnr
学嵌入式的小杨同学11 小时前
STM32 进阶封神之路(二十五):ESP8266 深度解析 —— 从 WiFi 通信原理到 AT 指令开发(底层逻辑 + 实战基础)
c++·vscode·stm32·单片机·嵌入式硬件·mcu·智能硬件
树爷只认钱12 小时前
ESP01S模块+串口底座 AT指令连接中移Onenet物联网全过程(第1篇)
单片机·嵌入式硬件·物联网·esp8266
学嵌入式的小杨同学12 小时前
STM32 进阶封神之路(二十六):ESP8266 实战全攻略 ——TCP 通信 + 数据上传 + 远程控制 + 透传模式(库函数 + 代码落地)
stm32·单片机·嵌入式硬件·mcu·硬件架构·硬件工程·智能硬件
Nice__J12 小时前
Mcu架构以及原理——7.寄存器编程与抽象
stm32·单片机·架构
嵌入式学习和实践12 小时前
当MCU遇上大模型:在单片机上实现AI对话的硬核玩法
人工智能·单片机·大模型
我不是程序猿儿13 小时前
【嵌入式】适合 STM32 初学者BootLoader 入门学习心得
linux·stm32·单片机·嵌入式硬件·学习
Suifqwu13 小时前
stm32进阶-启动文件
stm32·单片机·嵌入式硬件
火龙果里的芝麻14 小时前
STM32 FreeModbus 移植(最详细)
stm32·单片机·嵌入式硬件