2023-08-20 20:52:23 +08:00
2023-08-20 20:52:23 +08:00
2023-08-20 20:52:23 +08:00
2023-08-20 20:52:23 +08:00
2023-08-20 20:52:23 +08:00
2023-08-20 20:52:23 +08:00
2023-08-20 20:52:23 +08:00
2023-08-20 20:52:23 +08:00
2023-08-20 20:52:23 +08:00
2023-08-20 20:52:23 +08:00
2023-08-20 20:52:23 +08:00
2023-08-20 20:52:23 +08:00

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.常用驱动nullttytty0flash。
  • 9.用户态支持软件浮点修改了dietlib库可以做一些浮点方面的计算
  • 9.以太网支持正在更新采用lwip。

系统功能

  • 支持的库dietlibc部分支持
  • 支持的应用shelllsymodem 等.

其它

  • 支持使用ymodem通过串口直接下载应用程序。
  • shell还比较简陋目前只支持4条命令可以执行/bin/目录下的应用程序。

硬件支持

  • STM32F103RCT6
  • STM32F205RFT6(qemu)

怎么使用?

  • 工程更改为CMake+GCC可以配合WSL2+Vscode+qemu在Linux下面开发支持软件模拟。

我的博客

  • 欢迎到博客交流(还没有申请域名^-^MKRTOS博客

日志

  • 很久以前的日志
    1. dietlibc移植说明去掉不需要的cpu相关的文件夹syscalls.h内__ARGS_mmap改为1 并修改mmap.S文件。
    2. 修改setjump.S等文件。
    3. 所有的.S文件需要增加编译的头。
    4. lwip移植 1.需要完成clone函数的实现。 2.需要完成信号量、互斥锁、消息邮箱。 3.需要给struct sock添加引用计数防止多进程时出现问题需要对socketacceptclose这3个函数进行处理。 4.一些其它的配置。
    5. 其它大量修改(想不起来了)。
    6. 2022/4/4 修复了一些使用上的bug比如在用户线程修改了特权模式的寄存器导致直接直接异常。
  • 2022/11/10
    1. mkrtos测试版改版本相对来说文件系统较稳定并且增加mpu保护的支持多应用之间隔离去掉了之前的elf执行方式直接执行bin文件格式。
    2. 移植了最新版本的dietlibc。
    3. 修复了之前的许多bug。
  • 2022/11/13
    1. 一种没有上下文切换的快速ipc通信机制原型非常快
    2. 增加fork_exec系统调用将fork和exec合并在单片机上非常适用能够节约内存。
  • 2022/11/14
    1. 多个应用直接引用mkrtos_sdk工程去掉重复文件。
    2. 修复文件系统truncate的bug。
  • 2022/11/9
    1. 工程修改为Cmake管理。
    2. 增加qemu支持采用stm32f205rft6。
    3. 增加bootstarp支持。
    4. 增加cpio文件系统支持。
    5. 增加软件浮点支持。
    6. 增加双向链表和单项链表.

工作规划

  1. 优化内核。
  2. 完善用户管理,用户登录相关系统调用。
  3. 完善spFS以及vfs文件系统。1mmap等的支持考虑是否采用分页内存管理分页比较费内存。2完善文件的权限管理
  4. 重新实现自己的网络协议栈。
  5. 显示驱动完善。
  6. cortex-m4支持。
Description
No description provided
Readme GPL-2.0 496 MiB
Languages
C 66.8%
Makefile 17.2%
Assembly 7.7%
C++ 2.8%
HTML 0.9%
Other 4.1%