Skip to content

yougukepp/cmos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cmos说明文档

cmos将作为一个符合CMSIS标准的系统,他是Cortex-M Operating System的简称.本文档暂时用于描述开发计划.

目录结构

待施工

代码原则

  1. 所有系统资源使用文件抽象 故锁操作也是针对文件(等效资源)的操作
  2. 依据CMOS结构图构建目录结构
  3. 所有函数参数检查
  4. 部分静态变量使用const
  5. 去除跨层次耦合
  6. 系统调用加用户空间运行部分

计划

测试计划

  1. 互斥锁

近期计划

-1. 不使用自旋锁定(使用范围很小为了处理边界逻辑复杂度大增,不好). 0. write与read必须要加poll类型系统调用,否则无法保证ioctl与write间的原子性 0. 自旋锁只能在idle中使用(若在高优先级任务中使用会死锁) 0. 自旋锁和阻塞锁需要分离为不同的系统调用

  1. 实现I2C的轮询与阻塞读写
  2. 实现app/flyer/doc/README.md计划

优化计划

  1. 保证内核代码运行在svc状态(svc优先级设高等效于屏蔽外部中断),考虑使用MPU保护.
  2. 由于串口打印使用系统调用,故svc调用栈内的代码无法使用串口打印?
  3. 优化性能:空指针检查用宏实现(优化性能)&返回值检查改为断言(提高性能)
  4. 整理TODO/FIXME(删除无用的状态返回函数逻辑)
  5. 实现串口命令行
  6. 同步问题 a. 关中断(已经实现) b. 调度器上锁(已经实现) c. 自旋锁 d. 信号量(包含互斥量)
  7. svc系统调用高优先级相当于关中断(需要确保svc执行时间尽可能短,否则调低svc优先级并合理使用关中断)
  8. Idle任务可以检查任务堆栈(CPU占用率)之后WFI处理器
  9. vfs与tree间加入中间层,参考tcb_list.c

远期计划

  1. 只实现基本的调度(支持浮点定点混合切换),少比多好
  2. 实现网络协议栈(TCP/IP)
  3. 实现文件系统 类似Linux一切皆文件的框架
  4. 清理对HAL层的调用 直接调用寄存器级别 工程仅依赖于 CMSIS BSP目录
  5. 实现驱动层RCC时钟模块封装

注意:

  1. 文档的编写使用md编辑器
  2. 任务切换只会发生在 系统调用期间
  3. CUBE4 在 E:\Keil_v5\STM32Cube_FW_F4
  4. HAL层对RTOS的支持有风险 inc/stm32f4xx_hal_conf.h USE_RTOS
  5. 参考FreeRtos RT-Thread实现

About

符合CMSIS的系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published