主要参考书籍:《嵌入式实时操作系统ucos-ii原理及应用》(第二版)
主要编写内容:
- 数据结构:程序控制块tcb解析:图文36、
- 任务解析:
- 单一任务,图文43上方,完成
- 多任务链接:图文43下方,完成
- 任务状态(考虑atomthreads是否具备多种状态,只有执行或挂起状态)
- 解决问题:
- 本人测试系统特性任务:取消,可以不测试,毕竟第一篇作为入门文章,不需要这么深入
- 任务堆栈分配
- 中断处理
- 库的版本问题:源码使用1.1,需要修改为可以任意调整库版本的版本
- 完成,修改为V2.1库版本
- 进一步修改为寄存器版本,不依赖于任意函数库版本。为了适应电协开发板配套的代码例程。
- 结合源代码的文件结构讲解:port、kernel是什么,在系统占有什么地位。
- 完成,通过结构
- 尽可能地保留库和系统的源生态
- 但仔细看过,这样并不保证项目文件结构保持一致性,所以强制规定使用“标准”格式
- 有必要解析stm8(iar)使用的变量空间声明关键字
- 附上代码规范:
- 还没有准备,是电协一套,还是华为编程规范呢?
- 伪代码标准写法:
- 有一部分解析是使用伪代码编写,同时也是自己学习的一部分。
- 编译警告:Warning[Pa050]: non-native end of line sequence detected (this diagnostic is only issued once) G:\实时系统\atomthreads\移植代码\gdut-elc-v3.0\kernel\atommutex.h 1
- 编译平台的改变,导致不同的换行符表示造成错误。
- 系统缺陷:
- atomThreadCreate传入的任务函数参数只能是32位长整形,能优化吗?
- 可以优化,但不建议
- 有网友对该系统的严谨性表示怀疑,本人暂时未弄明白。
- 缺乏内存管理方面。
在源码当中出现的汇编程序,如上如所示。
这是虚拟寄存器,堆栈帧的映射到b8 to b15内,就是当前工作寄存器,所以,保存堆栈信息对任务切换尤为重要,正是通过保存堆栈帧信息,来实现真正的任务切换。