cmos将作为一个符合CMSIS标准的系统,他是Cortex-M Operating System的简称.本文档暂时用于描述开发计划.
待施工
- 所有系统资源使用文件抽象 故锁操作也是针对文件(等效资源)的操作
- 依据CMOS结构图构建目录结构
- 所有函数参数检查
- 部分静态变量使用const
- 去除跨层次耦合
- 系统调用加用户空间运行部分
- 互斥锁
-1. 不使用自旋锁定(使用范围很小为了处理边界逻辑复杂度大增,不好). 0. write与read必须要加poll类型系统调用,否则无法保证ioctl与write间的原子性 0. 自旋锁只能在idle中使用(若在高优先级任务中使用会死锁) 0. 自旋锁和阻塞锁需要分离为不同的系统调用
- 实现I2C的轮询与阻塞读写
- 实现app/flyer/doc/README.md计划
- 保证内核代码运行在svc状态(svc优先级设高等效于屏蔽外部中断),考虑使用MPU保护.
- 由于串口打印使用系统调用,故svc调用栈内的代码无法使用串口打印?
- 优化性能:空指针检查用宏实现(优化性能)&返回值检查改为断言(提高性能)
- 整理TODO/FIXME(删除无用的状态返回函数逻辑)
- 实现串口命令行
- 同步问题 a. 关中断(已经实现) b. 调度器上锁(已经实现) c. 自旋锁 d. 信号量(包含互斥量)
- svc系统调用高优先级相当于关中断(需要确保svc执行时间尽可能短,否则调低svc优先级并合理使用关中断)
- Idle任务可以检查任务堆栈(CPU占用率)之后WFI处理器
- vfs与tree间加入中间层,参考tcb_list.c
- 只实现基本的调度(支持浮点定点混合切换),少比多好
- 实现网络协议栈(TCP/IP)
- 实现文件系统 类似Linux一切皆文件的框架
- 清理对HAL层的调用 直接调用寄存器级别 工程仅依赖于 CMSIS BSP目录
- 实现驱动层RCC时钟模块封装
- 文档的编写使用md编辑器
- 任务切换只会发生在 系统调用期间
- CUBE4 在 E:\Keil_v5\STM32Cube_FW_F4
- HAL层对RTOS的支持有风险 inc/stm32f4xx_hal_conf.h USE_RTOS
- 参考FreeRtos RT-Thread实现