1ebf9f0e06c708f75977556bcd44013beded3d51
MKRTOS 是什么
- MKRTOS 全称是 Micro-Kernel Real-Time Operating System,中文名字是微内核实时操作系统。其最终的意义是实现一个小内核,并兼容 Posix 标准的操作系统,使其完全适用于各类嵌入式场合。
开发背景
- Cortex-M 在工业控制领域非常火,但是易用的操作系统却非常上,可能有 ucos 这类的操作系统,但是其功能都非常的简单,使用这类 RTOS 都有着一定的学习成本(我也写过一个,可以看看 xTinyRTOS,非常简单).开发 MKRTOS 的初衷就是兼容 POSIX,以降低学习成本,并且在开发时还考虑到内存的使用,对内存使用进行优化。
MKRTOS 内核特性
- 1.处理器:默认支持 Cortex-M3 处理器。
- 2.进程间通信:支持信号、消息邮箱、信号量、匿名管道、共享内存。
- 3.文件系统:支持 vfs,并开发了 spfs 文件系统,文件系统支持块缓存。
- 4.可执行文件:支持bin文件的应用程序,并支持mpu做应用间隔离。
- 5.内存管理:链式内存管理,比较节省内存。
- 6.多任务支持,多线程还在完善。
- 7.驱动框架:字符设备与块设备。
- 8.常用驱动:null,tty,tty0,flash。
- 9.用户态支持软件浮点!(修改了dietlib库,可以做一些浮点方面的计算)。
- 9.以太网支持(正在更新),采用lwip。
系统功能
- 支持的库:dietlibc(部分支持)。
- 支持的应用:shell,ls,ymodem 等.
其它
- 支持使用ymodem通过串口直接下载应用程序。
- shell还比较简陋,目前只支持4条命令,可以执行/bin/目录下的应用程序。
硬件支持
- STM32F103RCT6
- STM32F205RFT6(qemu)
怎么使用?
- 工程更改为CMake+GCC,可以配合WSL2+Vscode+qemu在Linux下面开发,支持软件模拟。
我的博客
- 欢迎到博客交流(还没有申请域名^-^):MKRTOS博客
日志
- 很久以前的日志
- dietlibc移植说明,去掉不需要的cpu相关的文件夹,syscalls.h内__ARGS_mmap改为1 ,并修改mmap.S文件。
- 修改setjump.S等文件。
- 所有的.S文件需要增加编译的头。
- lwip移植 1.需要完成clone函数的实现。 2.需要完成信号量、互斥锁、消息邮箱。 3.需要给struct sock添加引用计数,防止多进程时出现问题,需要对socket,accept,close这3个函数进行处理。 4.一些其它的配置。
- 其它大量修改(想不起来了)。
- 2022/4/4 修复了一些使用上的bug,比如在用户线程修改了特权模式的寄存器,导致直接直接异常。
- 2022/11/10
- mkrtos测试版,改版本相对来说文件系统较稳定,并且增加mpu保护的支持,多应用之间隔离,去掉了之前的elf执行方式,直接执行bin文件格式。
- 移植了最新版本的dietlibc。
- 修复了之前的许多bug。
- 2022/11/13
- 一种没有上下文切换的快速ipc通信机制原型,非常快!!!
- 增加fork_exec系统调用,将fork和exec合并,在单片机上非常适用,能够节约内存。
- 2022/11/14
- 多个应用直接引用mkrtos_sdk工程,去掉重复文件。
- 修复文件系统truncate的bug。
- 2022/11/9
- 工程修改为Cmake管理。
- 增加qemu支持,采用stm32f205rft6。
- 增加bootstarp支持。
- 增加cpio文件系统支持。
- 增加软件浮点支持。
- 增加双向链表和单项链表.
工作规划
- 优化内核。
- 完善用户管理,用户登录相关系统调用。
- 完善spFS以及vfs文件系统。(1)mmap等的支持,考虑是否采用分页内存管理,分页比较费内存。(2)完善文件的权限管理
- 重新实现自己的网络协议栈。
- 显示驱动完善。
- cortex-m4支持。
Languages
C
66.8%
Makefile
17.2%
Assembly
7.7%
C++
2.8%
HTML
0.9%
Other
4.1%