Atomthreads移植

  • 初步编译错误:Error[Lc036]: no block or place matches the pattern "ro code section .text in atomport-asm-iar.o"
  • stm8s移植
  • html在线API文档
  • csdn博客链接

主要参考书籍:《嵌入式实时操作系统ucos-ii原理及应用》(第二版)
主要编写内容:
  1. 数据结构:程序控制块tcb解析:图文36、
  2. 任务解析:
    1. 单一任务,图文43上方,完成
    2. 多任务链接:图文43下方,完成
    3. 任务状态(考虑atomthreads是否具备多种状态,只有执行或挂起状态)
  3. 解决问题:
    1. 本人测试系统特性任务:取消,可以不测试,毕竟第一篇作为入门文章,不需要这么深入
      1. 任务堆栈分配
      2. 中断处理
    2. 库的版本问题:源码使用1.1,需要修改为可以任意调整库版本的版本
      1. 完成,修改为V2.1库版本
      2. 进一步修改为寄存器版本,不依赖于任意函数库版本。为了适应电协开发板配套的代码例程。
    3. 结合源代码的文件结构讲解:port、kernel是什么,在系统占有什么地位。
      1. 完成,通过结构
    4. 尽可能地保留库和系统的源生态
      1. 但仔细看过,这样并不保证项目文件结构保持一致性,所以强制规定使用“标准”格式
    5. 有必要解析stm8(iar)使用的变量空间声明关键字
    6. 附上代码规范:
      1. 还没有准备,是电协一套,还是华为编程规范呢?
    7. 伪代码标准写法:
      1. 有一部分解析是使用伪代码编写,同时也是自己学习的一部分。
    8. 编译警告: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
      1. 编译平台的改变,导致不同的换行符表示造成错误。
  4. 系统缺陷:
    1. atomThreadCreate传入的任务函数参数只能是32位长整形,能优化吗?
      1. 可以优化,但不建议
    2. 有网友对该系统的严谨性表示怀疑,本人暂时未弄明白。
    3. 缺乏内存管理方面。

在源码当中出现的汇编程序,如上如所示。
这是虚拟寄存器,堆栈帧的映射到b8 to b15内,就是当前工作寄存器,所以,保存堆栈信息对任务切换尤为重要,正是通过保存堆栈帧信息,来实现真正的任务切换。

你可能感兴趣的:(Linux,C/C++)