ITRON的任务管理

µITRON与T-Kernel:嵌入式RTOS核心技术对比与演进 实时操作系统(RTOS)是嵌入式开发的核心基础,其设计理念直接影响系统实时性、可靠性和开发效率。微内核架构通过精简核心功能确保确定性响应,而内存池管理和优先级调度等机制则保障了关键任务的执行效率。在汽车电子和工业控制领域,日本主导的µITRON标准凭借其弱标准化策略曾广泛流行,而后续的T-Kernel通过强标准化和动态对象管理解决了跨平台移植难题。两种RTOS在任务切换延迟、中断响应等实时性指标上各有优势,开发者需要根据项目需求在资源占用与功能扩展性之间权衡。随着RISC-V架构普及和功能安全要求提升,支持 阅读详情
Task管理机能

Task
任务就是一个具有独立功能的无限循环的程序段的一次运行活动。任务具有动态性并行性异步独立性的特点。
动态性任务的状态是不断变化的,一般分为:休眠态(dormant), 就绪态(ready),运行态(running), 挂起态suspended 睡眠态sleep

并行性是指系统中同时存在多个任务,它们宏观上是同时运行的。异步独立性任务是系统中独立运行的基本单元也是内核分配和调度的基本单元每个任务各自按相互独立的不可预知的速度运行走走停停。
每个任务都要按排一个决定其重要性的优先级,都有一个无限循环的程序段规定其功能(如一个C 语言过程),并相应有一个数据段、堆栈段及一个任务控制块(保存CPU 的现场, 状态等)。
下面是一个ITRON系统任务应用的典型范例:

void XXX_Task ( INT stacd )
{
MSG msg;
while(1)
{
         rcv_msg(&msg, MbxID); //从某个Mailbox中获取情报用户程序
}
}


任务调度
操作系统必须为多个任务可能有竞争的请求分配资源,对于处理器来讲,可分配的资源主要是处理器运行时间,分配的途径是通过内核的调度来完成的。
调度产生条件
从表面上看,任务切换功能很简单,在某个时刻,一个正在运行的任务被终止,操作系统指定另一个任务为运行状态,并把控制权交给这个任务。但是什么事件触发了任务控制权的切换?ITRON系统中,当有如下几个条件发生时,会发生任务的调度。
处理程序的返回
发生改变系统运行状态的系统调用。
产生时钟中断。

调度方式
1.优先级方式:对于每个任务都事先分配有优先级,这里的优先级是指决定调度顺序的东西,调度程序首先会参照优先级别,从Ready队列中找到优先级别最高的任务赋予CPU使用权。在实时操作系统中任务的优先级是应用程序设计者按照任务的重要程度来安排的,并且任务在运行中其优先级可以动态改变,这个完全需要根据实际的需求进行设计。


2.FIFS方式
当拥有同一优先级的任务存在多个时,调度程序将赋予成为Ready状态时间最长的任务CPU的使用权。
3.任务的禁止/许可
4.时间片轮旬
作为Itron系统并没有提供这种支持,但是可以通过现有系统提供的服务实现这种支持,这个在后面进行说明。

任务的状态管理
任务根据运行时所必须的资源获得状况,以及有无事件发生来实现状态的迁移,所以内核必须管理各任务当前所处的状态。
ITRON系统状态定义
操作系统的职责是控制任务的执行,这里包括决定任务交替的方式和资源的分配原则,所以为了达成这个目标,就需要描述任务的行为---即任务的状态。在ITRON中,将任务划分为如下七个状态进行管理,在任意时刻,任务状态只能属于这七个状态之一。
未登录状态:non_existent
没有作为任务的注册到系统中,或被消除没能登录到系统中的状态。也就是说虽然已经装配到内存中,但不受OS管理的程序。
休眠状态:dormant
任务生成时的状态(cre_tsk系统调用时)或者是运行终了时的状态。处于dormant状态的任务,已经从调度对象中删除掉了。
就绪状态:ready
成为内核调度对象管理的状态。虽然已经具备除了处理机之外的所有必要资源,但是由于有比该任务优先级别更高(或者相同任务优先级别)的任务正在运行,等待运行权到达的状态,也就是说,只要运行权到达,马上迁移到run状态的状态。
运行状态:run
得到了系统的控制权,正在处于运行处理中的状态。系统中处于运行状态的任务只能有一个。
等待状态:wait
由于缺少运行的必要条件,不能进入到运行状态的状态,也就是说正在等待必要运行条件到达的状态。
从wait状态的重新执行是从进入到wait状态时中断的场所开始执行,也就是说运行程序时必要的各种内部环境(寄存器、堆栈等)会复原。
挂起状态:suspend
被其他任务情知中断执行(sus_tsk调用的发行)的状态,还有可以通过多重发行sus_tsk调用,使suspend状态嵌套。Suspend状态的解除是通过发行rsm_tsk系统调用来进行的。但是如果要发行依次rsm_tsk系统调用来解除被嵌套的suspend状态,必须要选择参数T_FRCPSM(0X1)。从syspend状态重新实行是指从为进入suspend状态处理中断的位置开始。也就是说运行程序时必要的各种内部环境(寄存器、堆栈等)会复原。
双重等待状态:wait_suspend
由上面wait状态和suspend状态合成的状态,也就是对应于wait状态发行了sus_tsk调用的场合迁移到的场合。Wait_suspend状态是当suspend状态被解除时,就迁移到wait状态,而wait状态被解除时,就迁移到suspend状态。

 

任务的应用
创建任务
在Itron系统中创建任务存在两种方式,一种方式是静态注册任务;另一种方法是动态的创建任务。动态创建任务主要通过cre_tsk调用来实现的。
激活任务
Itron系统中,初始创建的任务的状态是Dormant状态,这个时候任务还处于系统无法调度的状态,所以必须激活任务,激活任务的系统调用是sta_tsk,作用就是将指定任务由Dormant状态迁移到Ready状态。
终止任务
在Itron系统中如果需要实现将任务由ready state, run state, wait state, suspend state, wait-suspend state迁移到Dormant状态的话,需要通过下面两种方式实现,正常终止和强制终止。正常终止是任务自身主动放弃系统的使用权。
强制终止是任务自身出现错误,无法自主释放系统使用权,这个时候只能通过其他任务来完成对本任务使用权的剥夺。
实现任务终止的系统调用主要有下面三个:
ext_tsk system call
The task that issued the ext_tsk system call is switched from the run state to the dormant state.
exd_tsk system call
The task that issued the exd_tsk system call is switched from the run state to the non-existent state.
ter_tsk system call
The task specified by the parameters is forcibly switched to the dormant state.
删除任务
实现任务状态从Run或者Dormant状态切换到nonexistent状态,实现这个功能主要通过下面两个调用来完成的。
exd_tsk system call
The task that issued the exd_tsk system call is switched from the run state to the non-existent state.
del_tsk system call
The task specified by the parameters is switched from the dormant state to the non-existent state.

任务的设计
 任务划分的原则
在将一个软件系统分解成并行任务时, 主要需考虑的是系统内功能的异步性。
可以通过分析数据流图中的变换, 确定哪些变换可以并行, 而哪些变换在本质上是顺序的,通过这种方法, 划分出任务: 一个变换对应一个任务,或者一个任务包括几个变换。
一个变换是应该成为一个独立的任务, 还是应该和其它变换一起组成一个任务, 决定的原则如下:
I/O 依赖性 (Dependency on Input/Output Device)
时间关键性的功能 (Time-critical functions-Hard Deadline)
计算量大的功能Heavy Computation function
功能内聚Functional relations
时间内聚Temporal relations
周期执行的功能Cyclic executing function
 I/O 依赖性
如果换依赖于I/O, 那么它运行的速度常常受限于与它互操作的I/O 设备的速度在这种情况下, 变换应成为一个独立的任务。
在系统中创建多个与I/O 设备相当数目的I/O 任务
I/O 任务只实现与设备相关的代码
I/O 任务的执行只受限于I/O 设备的速度而不是处理器
在任务中分离设备相关性


 事件关键性的功能
对于事件关键性的功能对响应的时间要求的第一重要的,所以对于这类任务的响应的优先级别比较高。
将有时间关键性的功能分离出来组成独立运行的任务
赋予这些任务高的优先级以满足对响应时间的需要


 计算功能
复杂的计算功能一般运行时间比较长,所以对于这类功能的设计的原则如下:
计算功能占用CPU 的时间多
捆绑计算功能成任务赋予它们较低优先级运行, 能被高优先级的任务
抢占消耗CPU的剩余时间
保持高优先级的任务是轻量级的
多个计算任务可安排成同优先级按时间片循环轮转
 时间内聚
将在同一时间内完成的各功能,即使这些功能是不相关的组成功能组形成一个任务
功能组的各功能是由相同的外部事件驱动的,如时钟等这样每次任务接收到一个事件, 它们都可以同时执行
组成一个任务,减少了系统的开销
虽然时间内聚在结构化设计中并不被认为是一个好的模块分解原则, 但在任务级是可以被接受每个功能都作为一个独立的模块来实现, 从而达到了模块级的功能内聚, 这些模块组合在一起, 又达到了任务级的时间内聚
 周期执行功能
将在相同周期内执行的各功能组成一个任务
频率高的赋予高优先级
 任务设计的误区
错误的任务划分原则
任务使用SUPSPEND/RESUME 太频繁,是由于任务划分过细任务的当成功能使用,改进的方法是将任务变成子程序使用。
当事件发生时调用子程序,任务划分的太粗将子程序划分为任务,得到消息后又立即检查另外的信息,不要使用轮循的方式直接使用事件驱动方式
优先级倒置
当低优先级的任务向高优先级的任务发送消息时,高优先级的任务不能运行,直到低优先级的任务发送消息后才能运行。这种情况下就没有必要分为两个任务只需要使低优先级的任务调用子程序即可。
死锁
两个任务同时相互等待对方的信号,导致它们永远不能运行。
为了避免死琐将共享资源统一排序所有的任务按序来访问多个资源。
等待的事件没有发生过或者不具备等待事件的发生条件。

 

RX系列MMCIF驱动RTOS适配:从忙等待到任务调度的嵌入式存储优化 在嵌入式系统开发中,实时操作系统(RTOS)的任务调度机制是提升多任务并发效率的核心技术。其原理在于通过任务状态管理,让等待资源的任务主动让出CPU,使调度器能够执行其他就绪任务,从而大幅提高CPU利用率和系统实时性。这项技术的核心价值在于解决了传统忙等待导致的CPU资源浪费和响应延迟问题,尤其适用于MMC/SD卡等需要复杂协议交互的存储设备驱动场景。通过将阻塞式软件延时替换为非阻塞式的RTOS任务调度,开发者可以构建出响应更及时、资源利用率更高的嵌入式系统。本文以瑞萨RX系列微控制器为例,深入探讨了MMC 阅读详情

相关推荐

μITRON 4.0 Specification

μITRON 4.0 Specification日文版

uItron内核原理和服务调用--Kernel篇

转载:http://hi.baidu.com/qinzhispace/item/46a0dfe13131cf216dabb8a7 一:Kernel篇 1.描述:uItron内核,是操作系统的核心,可以实时多任务处理,它有三个主要的概要: 1.1响应事件:(Response to events)认可的事件可以异步的产生,并且可以立即执行一个任务去处理这  个事件。 1.2任务调度:(T

Leo 8047

Itron系统说明

Itron系统

学习新体验-itron

ITRON(Industrial the Real-Time Operation System  Nucleus,工业实时操作系统中心) 地址:https://blog.youkuaiyun.com/u013286409/article/details/48342749 完整文档地址:https://wenku.baidu.com/view/d6a4c3300b4c2e3f572763c4.html I...

weixin_41864235的博客 604

ITRON系统基本使用方法高清.docx

教材构成: 1. ITRON 系统概要 2. ITRON 基本功能 ✓ 任务管理 ✓ 同步管理 ✓ 内存管理 ✓ 时钟管理 ✓ 中断管理 3. 初始化处理 4. 系统调用详细说明

别再折腾框架了!用华为应用市场官方渠道搞定GBOX,安全安装谷歌全家桶(鸿蒙HarmonyOS 3/4实测)

本文详细介绍了如何在鸿蒙系统上通过华为应用市场官方渠道安全安装GBOX,实现谷歌全家桶的无损使用。该方法避免了传统破解方式的安全风险,利用沙箱技术隔离运行环境,确保系统稳定性和数据安全。特别适合鸿蒙HarmonyOS 3/4用户安全使用谷歌生态应用。

weixin_29305313的博客 4768

【转】统一μITRON,日本成立开放源码ITRON团体

  【日经BP社报道】 从事依据μITRON4.0规格的OS--“TOPPERS”开发的日本名古屋大学教授高田广章等人,日前成立了旨在开发和普及该OS的团体--“TOPPERS计划”。该团体的宗旨为:把因厂商而异的ITRON封装统一为TOPPERS(图1),以促进开发环境的完善和软件的流通。该OS于2000年1月公开了源码,以此为核心广泛募集参与功能追加和组件开发的成员企业和个人。“按目前这种IT

I-Tron中文站 1987

硬件工程师必备核心知识点

硬件设计是一项系统化工程活动,涉及元器件选型、电源设计、信号完整性、EMC和PCB工艺等多个环节

硬核科技 338

ITRON系统

ITRON系统使用方法 目录 1 引言 4 2 ITRON系统介绍 5 2.1 概要 5 2.2 构成 5 2.2.1 ITRON系统构成 5 2.2.2 ITRON体系结构 5 2.3 应用领域 6 2.4 如何使用ITRON系统 6 3 ITRON的基本机能 8 3.1 Task管理机能 8 3.1.1 Task 8 3.1.2 任务调

Learn and live 5945

从零构建:openEuler WSL下的ARM交叉编译工具链自动化部署方案

本文详细介绍了在openEuler WSL环境下使用Ansible自动化部署ARM交叉编译工具链的方案。通过编写Ansible角色和Playbook,实现从基础环境配置到工具链安装、环境变量设置的一键部署,大幅提升嵌入式开发效率。方案支持多种ARM架构,并扩展了QEMU仿真、VS Code远程开发等实用功能,是嵌入式开发者的高效解决方案。

h3i4j的博客 382

简易背单词系统C/C++

#include<stdio.h> #include<string.h> int F=20,N=100,k=0; int score[100]; int count=0; void hello(); void add(); void preview(); void mdelete(); void etc(); void cte(); void mscore(); void...

青木年华 9154

ITRON系统使用方法

ITRON系统使用方法 目录 1引言4 2ITRON系统介绍5 2.1概要5 2.2构成5 2.2.1ITRON系统构成5 2.2...

weixin_30617561的博客 1141

东华大学2020考研计算机OJ题目解答分享——进阶篇(4)

4 一个月的天数 作者: Turbo时间限制: 1S章节: 分支结构 问题描述 : 输入年和月,输出该月有几天。 输入说明 : 输入两个整数,中间以空格分隔,第一个整数表示年,第二个整数表示月。 输出说明 : 输出该年该月的天数,输出时,行首与行尾均无空格,仅输出一个整数。 输入范例 : 2000 2 输出范例 : 29 解答思路: 闰年和质数出题一样频繁,简单必会 AC代码 #include...

qq_38344326的博客 472

ras的c语言源代码文档,µMore(µITRON操作系统)--功能概况

µMore™ (µITRON操作系统)概览μMore是一种专门为下一代移动设备设计的实时操作系统,与μITRON4.0标准应用概要兼容。μMore具有轻松节电功能,并附带了爱可信的AVE-TCP网络协议模块(兼容IPv6);它可以独立运行,或与爱可信浏览器(如NF或CompactNF等)绑定在一起用于数字消费类电子产品。使用μMore可以开发功耗最小、性能最优的高效能产品。通过充分利用日立 SH-...

weixin_39908106的博客 466

Sigrity OptimizePI Best Capacitor Location Estimation模式如何评估电容最佳位置操作指导

Sigrity OptimizePI Best Capacitor Location Estimation模式用于前仿真分析,评估电容的最佳位置以获得最小回路电感,如何分析,以下图为例进行说明。IC devices,输入U*, A*, B*, Q*, P*,将所有这些字母开头的器件都识别为IC。Min设置为1(最少电容个数为1),max设置为28(最多电容个数为28)Capacitors 输入C*,将所有C开头的器件都识别为电容。Grid X设置为8,Grid Y也设置为8。

weixin_54787054的博客 382

【电容/电感】电路板会“滋滋”的响,我们称它为啸叫

一、啸叫的起源 大部分硬件工程师应该都遇到过,PCBA上电后出现“滋滋滋”的叫声,其声响或大或小,或时有时无,或深沉或刺耳,或变化无常者皆有。该现象我们称为“啸叫”,一般分为电感啸叫和电容啸叫。

云轩阁 6万+

听GPT 讲Rust源代码--library/std(10)

文件在Rust源代码中是为了实现Rust在ITRON操作系统上的任务管理功能而存在的,它定义了任务相关的结构体和函数,提供了对任务的创建、销毁、挂起、恢复等操作的支持。总而言之,rust/library/std/src/sys/windows/fs.rs文件中的结构体和枚举类型用于在Windows操作系统上进行文件和目录的操作,提供了类似于打开、读取、写入文件,遍历目录以及操作文件属性等功能。这些结构体和函数的目的是为了提供给Rust程序开发者一个更高层次、更方便且安全的接口,以便于进行内存的分配和释放。

techdashen的博客 370

树莓派 5 AI 套件(Hailo)示例

该用户自定义类作为输入传递给回调函数,该函数在管道输出上运行。它用于主程序与回调函数之间的通信。它对 hailo_rpi_common::app_callback_class 进行了扩展,并可根据应用程序的具体情况定制附加变量和方法。

机器人控制与仿真应用 4115

KVM移植之ITRON版

 前段时间由于工作的需要对KVM做了一些研究和学习,最终的目标是要理解KVM的原理和移植要注意的问题,最终拿出一个移植成功的DEMO来。    说起JAVA也只是在大学里学过一个月,后来写了一个记事本,后来就没怎么碰JAVA了。这次要学习它的解释器有点突然,不过经过努力最终还是实现了预期的目标。    因为Itron是日本那边用得比较多的嵌入式操作系统,没有文件系统,只有内存管理和任务管理(具体也

vrix的专栏 1306

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

uTenux实时内核移植XMC4000:打造确定性嵌入式系统的实践指南

实时操作系统(RTOS)是嵌入式系统的核心软件层,负责管理处理器资源、任务调度和系统服务,其确定性调度与低延迟中断响应是工业控制、汽车电子等硬实时场景的关键需求。uTenux作为遵循ITRON标准的轻量级RTOS内核,以其极致的可预测性和时间确定性著称,尤其适合对任务切换抖动和中断延迟有严格上限的应用。本文以英飞凌XMC4000系列ARM Cortex-M4工业微控制器为硬件平台,深入剖析了将uTenux内核进行移植的完整流程。内容涵盖从理解内核架构与CPU依赖层,到具体实现基于Cortex-M4的上下文切

weixin_29574585的博客 313

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: ITRON基础介绍
下一篇: ITRON同步和通信管理
进击的横打
博客等级 码龄19年 2万+粉丝 1296原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值