stm8s_atomthread

STM8S Atomthread 实时操作系统移植

介绍

1.嵌入式操作系统基本知识

  1. 嵌入性、专用性与计算机系统是嵌入式系统的基本元素;跟通用计算机系统(如windows、linux等)相比,嵌入式系统具备专用性强、可剪裁性好、实时性好和功耗低的特点。
  2. 实时操作系统满足条件:
    • 必须是多任务(任务调度或调度器,最核心功能)
    • 任务的切换时间与系统当前任务数无关(调度器对任务切换时间)
    • 中断延时的时间可预知并尽可能短(任务实时性要求,即为CPU对任务响应速度)
  3. 目前,实时系统主要类型:
    • 抢占式(剥夺式)
    • 非抢占式(非剥夺式)

2.实时操作系统介绍:Atomthread

  1. Atomthread完全开源、轻量、便捷,针对于嵌入式操作系统的实时调度。
  2. 具备特性:抢占式、无限的线程(在RAM允许的条件下)、255个优先级、相同优先级的时间片轮、任务同步与互斥、队列、定时器、具备元素的阻塞与非阻塞、线程的堆栈分析等系统基本元素。
  3. 对于初步学习操作系统的非计算机类学生来说是简便的,尤其是电子类学生或从事嵌入式设计的人是有效的系统学习对象。官方原生支持STM8系列CPU,配套电协第5代开发板,相应编写本教程,有助于大家进一步理解单片机系统。
  4. 系统文件组成:
文件名 文件作用 备注
atom.h 系统API 任务控制块、系统错误宏、系统API等
atomkernel.c 系统内核源码 内核功能:上下文切换、中断、TCB控制、信号量等
atommutex.c 互斥源码 **
atomport-template.h 系统宏、类型声明 时间片轮设定
atomqueue.c 队列源码 **
atomsem.c 信号量源码 **
atomtimer.c 定时器源码 系统滴答时钟、应用性定时器

3.注意:

  1. Atomthread官方网站:http://atomthreads.com/
  2. 以下编写当中,涉及到的变量、宏及函数等,通过()提供文件位置,请注意。

Atomthread(STM8版本)使用指南

1.STM8S版本特点
  1. 移植唯一需要修改的汇编文件。
  2. 编译器的特点: IAR编译器的虚拟寄存器、变量空间选择关键字等特点。
  3. Atom官方原生支持使用ST公司的官方库文件,应用代码都将使用库函数而不再是直接操作寄存器。学习需要注意数据结构体的设计和指针的灵活使用。
2.使用Atom基本流程:
  1. 系统初始化:设置空闲堆栈大小
  2. 启动系统时钟
    • 根据实际调节系统时间片轮
    • 根据实际调节滴答定时器
  3. 创建线程
    • 设置任务堆栈大小
    • 创建任务区(任务函数)
  4. 启动系统
3.电协
  1. 电协为广大的学习者,将ST库版本从1.1修改为V2.1(目前最新版本),库函数更完整。同时独自移植了一套直接操作寄存器的Atom版本,提供多种选择。本文,基于库函数版本编写。
  2. 实验平台:
    • IAR V6.3
    • 电协第五代开发板-B版
    • 软件工具:source insight 3.5
  3. 电协修改后的源代码文件结构:
    • kernel:Atom系统内核
    • ports:特定平台(根据不同的芯片选择)
      • lib:库函数
        • inc:库函数头文件
        • src:库函数源文件
      • ports-stm8s:主程序和系统的端口代码,涵盖编译器的选择
      • project:工程文件
    • tests:Atom官方测试代码
    • user:应用程序代码
  4. 学习建议:凡是讲述代码部分,建议正确打开工程,一步步跟着讲述,查看每一个提及到的变量、函数等,这样对系统加深理解。我们是学习实时系统的原理,而不单是使用它,而且要有信心优化系统。

原理:Atomthread系统的整体架构解析

1.程序控制块(atom.h)

操作系统是一种管理软件,负责管理对象的信息之余还按照某种规则对这些对象进行分配、调度,而实现这些操作的前提是需要有一份关于对象的详细信息,我们称之为程序控制块。从代码上看,程序控制块就是一个结构体。在Atom系统里面,程序控制块的组成简化如下图。
这里写图片描述
Atom系统里把上图所示结构体称之为ATOM_TCB(atom.h 4行),系统依赖于此结构来执行系统任务程序。
*注意:任务堆栈使用记录,是由ATOM_STACK_CHECKING宏决定是否存在TCB当中,如果不需要使用堆栈检测功能,可以根据宏来设置。

2.任务(kernel.h)
  • 15
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 69
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 69
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值