概述

  为了巩固对RTOS以及ARM Cortex-M的理解,打算从零写一个操作系统(内核)。相关知识背景:C语言精通;能写简单的汇编;使用过主流的RTOS;看过一些Linux内核相关的书籍。

计划实现的功能:

  • 线程管理:这里没有使用RTOS中常用的“任务”这一名称,而是借用Linux等操作系统中的线程这一名称,原因是想做一个可动态管理,数量无限制的线程管理机制。
  • 调度:基本调度策略为:不同优先级抢占调度,相同优先级时间片轮转。
  • 线程同步与通讯:互斥量,信号量,消息队列,邮箱。
  • 中断后半部

此RTOS跑在STM32F1的一块开发板上,使用Keil作为IDE。

因为我时间有限,上面列出的功能最后不一定全部能实现。

工程目录结构

首先给这个RTOS起个名字,叫做HYYOS,所有OS相关的代码都放到这个目录里面,且内部目录安排如下:

1
2
3
4
5
6
hyyos
|-include # 系统级的头文件、函数定义
|-kernel # HYYOS内核代码
|-Arch # 体系结构相关代码,新增支持时在此目录下新建文件夹
|-stm32f10x # STM32F10X系列相关的代码
|-startup_stm32f10x_hd.s # 启动文件

这个工程的目录结构如下:

1
2
3
4
hyyos_dev
|-hyyos # HYYOS操作系统代码
|-hw # 硬件驱动代码
|-main.c