2 Star 3 Fork 2

codeinmcu / MiniRTOS

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

MiniRTOS

介绍

MiniRTOS简称MOS

学习并制作RTOS的成果,使用纯汇编打造基于Cortex-M0(亦可使用于M3、M4)内核的超轻量实时操作系统, 为了保证超轻量,只保留内核的必须功能,整个ROM占用将会控制在2KB以内,内核的RAM占用也会控制在128字节以内, 在此前提下会尽量完善内核稳定性及功能。

软件架构

基于Keil 5编译器下Cortex-M0核心的THUMB模式,99%汇编(内核) + 1% C语言(main函数);

在Cortex-M0、M4模式下纯内核编译后占用 1.5K字节ROM+80字节RAM (基于HK32F0301M及AT32F425测得),足够轻量!

纯内核数据占用16字节+内核栈空间32字节+空闲任务栈空间32字节 = 80字节;

自定义任务功能:可选2、4或8个任务,每个任务数据占用16字节+自定义任务栈空间大小;

邮箱功能:每个任务数据中内嵌4字节邮箱供线程间通信;

互斥锁功能:7+1把互斥锁,0~6号锁供任务使用,7号锁内核堆内存分配专用;

堆内存管理功能:自定义堆内存大小;

CPU占用率统计功能:统计内核运行中所有任务的CPU占用率;

任务休眠功能:自定义1~65535毫秒任务休眠时长

优先级轮转功能:当前任务号 + 1为每次调度选取的最高优先级任务(如有),在尽可能少的代码行中实现避免互斥锁死锁功能;

最新版本:v0.8.0

安装教程

下载示例,点击编译运行。

使用说明

暂时只测试了航顺HK32F0301M(Cortex-M0 16KROM 4KRAM 48MHz)和雅特力AT32F425(Cortex-M4 64KROM 20KRAM 96MHz)MCU, 顺带提一下HK32F030M可以直接使用HK32F0301M代码运行。

利用Coremark每MHz得分作为比较参考,MiniRTOS与RT-Thread的得分相比,较RT-Thread性能下降1-(2.624/2.626)=0.0008即性能 下降万分之八(基于AT32F425测得),还有待优化空间,值得努力!

参与贡献

codeinmcu (项目发起人)

已知问题和待完善功能

已知问题:

  1. 为了减少ROM占用,MOS基本上不对API调用予以输入参数检查,使用时一定注意各输入参数的正确性
  2. 在调用有输出参数的API时候用一定做好检查判断工作,特别是一些指针形式的输出参数(万一变成野指针),一不注意就会HardFault_Handler

待完善功能:

  1. 完成API手册
  2. 为了增强实时性(优先级轮转方式最差情况可能会导致本应优先执行的任务延后几毫秒才有机会执行),实现动态优先级调节(也可避免互斥锁死锁)
  3. 评估添加多值信号量(如果ROM空间允许)
  4. 评估添加各任务CPU占用率记录(如果ROM空间允许)
  5. 评估添加任务栈占用率记录(如果ROM空间允许)
MIT License Copyright (c) 2022 codeinmcu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

MiniRTOS基于汇编语言 展开 收起
Assembly 等 2 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Assembly
1
https://gitee.com/codeinmcu/mini-rtos.git
git@gitee.com:codeinmcu/mini-rtos.git
codeinmcu
mini-rtos
MiniRTOS
master

搜索帮助