1 Star 0 Fork 20

leihaoa / mkrtos-gcc

forked from ATShining / mkrtos-real 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

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.可执行文件:在没有 MMU 的处理器上支持可重定向的 ELF 可执行文件。
  • 5.内存管理:简单的内存管理。
  • 6.多任务,多线程。
  • 7.驱动框架:字符设备与块设备。
  • 8.常用驱动:null,tty,tty0,flash。
  • 9.以太网支持(部分支持,其它正在开发),采用lwip。

系统功能

  • 支持的库:dietlibc。
  • 支持的应用:lsh,cat,ls,mkdir,uname 等

怎么使用?

  • 工程为 Clion 工程,利用 CMake+arm-gcc 编译,下载后使用 Clion 编译即可。

我的博客

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

笔记

  1. dietlibc移植说明,去掉不需要的cpu相关的文件夹,syscalls.h内__ARGS_mmap改为1 ,并修改mmap.S文件。
  2. 修改setjump.S等文件。
  3. 所有的.S文件需要增加编译的头。
  4. lwip移植 1.需要完成clone函数的实现。 2.需要完成信号量、互斥锁、消息邮箱。 3.需要给struct sock添加引用计数,防止多进程时出现问题,需要对socket,accept,close这3个函数进行处理。 4.一些其它的配置。
  5. 其它大量修改(想不起来了)。 2022/4/4 修复了一些使用上的bug,比如在用户线程修改了特权模式的寄存器,导致直接直接异常。 未来工作:完善文件系统测试,进程通信测试,完成显示驱动支持。 显示驱动支持想法:直接将显示缓存给用户操作是最直接的,速度最快,其它的细节交给用户处理就行了,直接需要提供驱动框架,以及一些配置的相关的接口即可。

Cortex-M3

Cortex‐M3 的 CONTROL 寄存器

  • Cortex-M3的CONTROL寄存器 CONTROL[1] 堆栈指针选择 0=选择主堆栈指针 MSP(复位后缺省值) 1=选择进程堆栈指针 PSP 在线程或基础级(没有在响应异常——译注),可以使用 PSP。在 handler 模式下, 只允许使用 MSP,所以此时不得往该位写 1。 CONTROL[0] 0=特权级的线程模式 1=用户级的线程模式 Handler 模式永远都是特权级的。
  • CONTROL[1] 在 Cortex‐M3 的 handler 模式中,CONTROL[1]总是 0。在线程模式中则可以为 0 或 1。 仅当处于特权级的线程模式下,此位才可写,其它场合下禁止写此位。改变处理器的模 式也有其它的方式:在异常返回时,通过修改 LR 的位 2,也能实现模式切换。这将在第 5 章中展开论述。
  • CONTROL[0] 仅当在特权级下操作时才允许写该位。一旦进入了用户级,唯一返回特权级的途径,就 是触发一个(软)中断,再由服务例程改写该位。 CONTROL 寄存器也是通过 MRS 和 MSR 指令来操作的: MRS R0, CONTROL MSR CONTROL, R0

空文件

简介

MKRTOS 全称是 Micro-Kernel Real-Time Operating System,中文名字是微内核实时操作系统。 展开 收起
C
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/leihaoa/mkrtos-gcc.git
git@gitee.com:leihaoa/mkrtos-gcc.git
leihaoa
mkrtos-gcc
mkrtos-gcc
master

搜索帮助