符合AUTOSAR标准的RTAOS-ScheduleTables详解(下篇)

原创 汽车电子嵌入式 2024-12-16 08:47

前言

本系列文章将以RTA-OS为例详细介绍AUTOSAR OS标准及概念,并分享实际使用的一些案例,本文为符合AUTOSAR标准的RTA-OS--Schedule Tables介绍。

OS相关文章

符合AUTOSAR标准的RTA-OS --功能简介

符合AUTOSAR标准的RTA-OS --Task详解

符合AUTOSAR标准的RTA-OS --Interrupts详解

符合AUTOSAR标准的RTA-OS --Resources详解

符合AUTOSAR标准的RTAOS--Event详解

符合AUTOSAR标准的RTAOS--Counters详解

符合AUTOSAR标准的RTAOS-Alarms详解

符合AUTOSAR标准的RTAOS-Schedule Tables详解(上篇)


【OS】AUTOSAR架构下的中断和异常向量表

【OS】AUTOSAR Os是如何启动第一个Task的

【OS】AUTOSAR OS如何实现Task抢占

【OS】AUTOSAR OS系统调用产生Trap的过程详解

【OS】AUTOSAR OS调度器实现原理

【OS】AUTOSAR OS Spinlock实现原理(下篇)

【OS】AUTOSAR OS Event实现原理

【OS】AUTOSAR OS Counter实现原理(下篇)

【OS】AUTOSAR OS Counter实现原理(上篇)

【OS】AUTOSAR OS Resource实现原理

AUTOSAR OsTask切换原理

AUTOSAR OS Alarm实现原理


AUTOSAR架构下多核启动

AUTOSAR架构下多核通信

AUTOSAR架构下多核Shutdown

RH850U2A芯片平台Spinlock的底层实现



注:本文章引用了一些第三方工具和文档,若有侵权,请联系作者删除!

正文

8.8 选择一种同步机制

集成指导8.7如果您需要同步一个调度表,那么强烈建议您使用隐式同步,因为这个模型可以正确地将操作系统与计数器驱动程序解耦。


当与由时间触发的网络技术(如FlexRayTTP)提供的全局时间同步时尤其如此。这些技术使用硬件跨分布式网络执行时钟同步,并向CPU提供全局时间的当前视图。即使硬件在网络工作中丢失了同步,它仍然会为CPU提供一个尽最大努力的全局时间参考,可以从中驱动进度表并自动尝试重新同步。这些硬件解决方案以一种比软件更有效、更精确的方式修复了时钟同步问题。因此,通过使用AUTOSAR OS的显式同步模型,我们不应该在应用程序中重新引入这些问题。


显式同步的唯一合法用例是当我们需要同步操作系统中的处理与偶尔生成且不准确(即受到大量漂移的影响)时钟源时,例如通过CAN网络广播的全局时间信号。


8.9 隐式同步

隐式同步功能要求:

1.调度表和操作系统计数器必须封装在相同的值。这个保证了从表上的0开始的X个刻度的偏移量可以与计数器的刻度X精确对齐。


这是通过设置持续时间等于计数器的最大等值+1来配置的


2.调度表仅在已知计数器值处启动。这意味着表只能使用StartScheduleTableAbs()来启动。


RTA-OS不做任何事情来保持同步,因为这是计数器驱动程序的责任。


下表显示了“隐式”和“无”同步策略之间的差异:

Figure 8.14: State transitions for none and implicitly synchronized schedule tables


请注意,使用none ’同步策略的进度表,其持续时间等于MAXALLOWEDVALUE+1,并且总是使用StartScheduleTableAbs()启动,在运行时的行为与使用‘隐式’同步策略的进度表相同。


“隐式”同步策略与“无”同步策略的不同之处在于,“隐式”同步策略强制RTA-OS使用额外的配置时和运行时检查来检查约束是否没有被违反。


8.14显示了状态模型的相似之处,除了startscheduletablelevel()不能使用,用于“none”同步策略的SCHEDULETABLE_RUNNING状态在“隐式”同步策略中被简单地重命名为SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS.


当与硬件计数器集成时,隐式同步非常有效。当每个过期点被处理时,RTA-OS使用硬件计数器回调Os_Cbk_Set_来编程计数器,当延迟到下一个过期点时中断。任何重新同步都发生在驱动程序本身的范围内,并且调度表始终与计数器保持同步。


8.10 显示同步

显式同步需要两个计数器:


1.用于处理调度表上的到期点的驱动器计数器。


2.操作系统外部的同步计数器(即不是操作系统计数器对象)。


使用无同步和隐式同步,到期点(Expiry Point之间的延迟是静态的。


通过显式同步,RTA-OS可以动态地调整相邻到期点之间的延迟(在可配置的范围内),以保持调度表与同步计数器同步。如果计划表在同步计数器的前面,则延迟被延长;如果计划表在同步计数器的前面,则延迟被减少。


8.10.1 计数器约束

AUTOSAR OS中的显式同步假设以下约束是在调度表,驱动器计数器和同步计数器之间:


1.计划表的持续时间不大于驱动器计数器的模量。


2.计划表的持续时间等于同步计数器的模量。


3.驱动器计数器和同步计数器具有相同的分辨率-驱动器计数器的一个刻度必须与同步计数器的一个刻度花费相同的时间


第一个约束可以由RTA-OS进行检查,因为驱动器计数器是一个OS对象。RTA-OS无法检查其余的约束,因为同步计数器作为一个可配置的对象不可见。


集成指导8.8用户有责任检查同步计数器是否满足已启动的约束条件。如果不满足约束,显式同步将无法工作。


Figure 8.15: Specifying Max Advance and Max Retard for Expiry Points


8.10.2 指定同步边界

调整范围Adjustment Range

RTA-OS可以调整过期点之间延迟的数量是使用两个参数静态配置的:


Max Retard 定义可以从过期点的偏移量中减去的最大刻度数。


Max Advance 定义可以添加到过期点偏移量的最大刻度数。这相当于将前一个到期点的延迟延长指定的刻度数。


8.15显示了如何为到期日指定同步边界。


8.16显示了这些参数对到一个到期点的偏移量和从上一个到期点开始的延迟的影响。

每个到期都可以指定它自己的调整值。如果没有指定到期的调整值,则在运行时不会进行任何调整。


Figure 8.16: Impact of Max Retard and Max Advance on delays


与其他调度表配置参数一样,允许值受到驱动器计数器属性的限制。失效点之间的最小延迟必须大于MINCYCLE。当以下条件对每一对过期点(i,j)都为真时,这是可以保证的:


Offseti − (Offsetj − MaxRetardj) >= MINCYCLE


请注意,所有调整计算都是对调度表的持续时间进行模计算的。因此,初始失效点可以指定一个大于其偏移量的Max Retard值,前提是模减法的结果大于最终失效点的偏移量加上MINCYCLE的值。


Figure 8.17: Minimizing the delay between expiry points using max retard


8.17显示了如何使用2ticksMax Retard将两个相邻到期点之间的延迟从3ticks减少到1ticks


两个相邻到期点之间的最大延迟必须小于调度表的持续时间:


Offseti + MaxAdvancei <= DURATION


Figure 8.18: Maximizing the delay between expiry points using max advance


8.18显示了如何使用max advance = 6 ticks将两个相邻到期点之间的延迟从3 ticks增加到9 ticks


偏差Deviation


进度表由一个不同于需要同步化的计数器驱动,因此进度表可能会相对于同步计数器发生偏移。在AUTOSAR OS中,漂移被称为偏差。


但是,显式同步的进度表受到约束,因此同步化计数器和进度表具有相同的模数。因此,RTA-OS可以使用同步计数器的值来计算调度表上的当前点与同步计数器之间的偏差。


偏差是必须添加(或减去)计划表的当前值以等于同步计数器的值的最小刻度数,对计划表的持续时间取模。


偏差的定义为:


Positive 必须在进度表的“现在”值上加上tick值。这意味着同步计数器运行在调度表之前,需要减少延迟。缩短的延迟使到期点提前——实际上“加速”了时间表。


Negative 如果必须从日程表的“现在”值中减去tick值。这意味着同步计数器在进度表后面运行,需要增加延迟。延长延迟使失效点发生得更晚——实际上“减慢”了进度表。


8.19显示了每个同步计数器值的可能偏差,计数器模数为8,其中调度表的现在值为7个刻度。


红色三角形表示必须从“现在”中减去的刻度数,以等于同步计数器的值。绿色三角形表示必须添加到“现在”以等于同步计数器的刻度数。偏差由最小的三角形给出。注意,如果加法和减法给出相同的偏差,那么我们选择加法还是减法都无关紧要。



Figure 8.19: Schedule table deviations


如果该值小于或等于调度表持续时间的一半,RTA-OS假定偏差为正。


下表显示了任何调度表值的偏差值和同步计数器值在模数(持续时间)为8个刻度时的偏差值。


8.10.3 启动调度表


使用第8.4.3节中描述的StartScheduleTableSynchron() API调用启动显式同步进度表是很常见的。调度表将等待同步计数器被提供(使用第8.10.4节中描述的SyncScheduleTable()调用)。这就提供了所谓的硬启动。这个模型意味着进度表只有在建立了同步后才会启动。


然而,在提供同步计数之前,可能需要运行调度表并处理过期点,也就是说,它需要异步运行。当提供了同步计数时,RTA-OS就可以同步进度表。


异步启动通常使用StartScheduleTableAbs()或startscheduletablelevel () API调用来完成。


集成指导8.9进度表与(尚未知的)同步计数异步运行一段不确定的时间。在此期间,“显式”和“NONE”同步策略之间没有区别。如果系统可以在不同步的情况下安全运行一段不确定的时间,那么可以推断,它必须能够在没有同步的情况下始终安全运行。在这种情况下使用隐式同步是不必要的,因为“none”的同步策略就足够了,并且具有更低的内存占用和更高的性能。


8.10.4 同步调度表

每当处理到期时,RTA-OS将在运行时计算到下一个到期日的延迟。


SyncScheduleTable(Tbl,Value) API调用用于告诉RTA-OS同步计数器的当前值,以及应该启动同步(如果尚未执行)


有两个部分需要进行同步:


1.应用程序调用SyncScheduleTable(Tbl,Value)RTA-OS计算调度表和同步计数器之间的当前偏差


2.每次处理一个到期点时,RTA-OS使用计算的偏差和调整限制(Max RetardMax Advance)来计算维持(或获得)同步所需的到下一个到期点的延迟


如果在处理下一个到期点之前多次调用SyncScheduleTable(Tbl,Value),则只使用最近计算的值。


到期点调整Expiry Point Adjustment


如果还没有提供同步计数,则按照第8.5节的描述处理过期点。


当提供了同步计数时,每次处理一个到期点时,RTA-OS使用当前存储的偏差在下一个到期点的max retard和当前到期点的max advance指定的限制内调整到下一个到期点的延迟。


所做的调整取决于偏差的符号Negative还是Positive, +还是-


Negative 当调度表运行在同步计数器后面并且需要“赶上”时,就会发生偏差。赶上是通过缩短到下一个到期点的时间来完成的。减量的最大值是偏差的最小值和下一个失效点的最大延迟值,即减量受最大延迟值的限制。


Positive 当调度表运行在同步计数器之前并且需要“慢下来”时,就会发生偏差。减慢是通过增加到下一个到期点的时间来完成的。增加的最大值是偏差的最小值和当前到期点的最大超前值,即增加受到最大延迟值的限制。


从偏差中减去所做的调整量,并处理到到期点的延迟。


如果在下一个失效点处理时偏差非零,则进行进一步调整。


8.20(a)显示了一个进度表以及每个过期点的相关max retardmax advance参数。

由调用SyncScheduleTable()触发的同步请求触发器对过期点之间延迟的影响如图8.20(b)所示。



Figure 8.20: Synchronizing a Schedule Table


8.10.5 同步

如果偏差不超过指定的精度,则显式同步的调度表被称为同步的(与同步计数器同步)。如果配置调度表以使用“显式”同步策略,则必须指定精度。精度可以设置为0到持续时间范围内的任意值。


8.21显示了一个显式同步调度表的配置,在底层计数器上的精度为2个滴答(在本例中为2毫秒)。


Figure 8.21: Specifying the precision


下表显示了在第8.10.2节中看到的偏差值。假设精度为2,阴影单元格显示在哪些情况下,进度表的偏差被认为是同步的。

精度为零意味着偏差必须为零才能使调度表同步。duration/2或更大的精度将意味着表在方式上都是同步的。这是因为偏差是按持续时间模计算的,所以调度表和同步计数器永远不会超过持续时间的一半。


正在运行的显式同步进度表的状态为


SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS 如果调度表正在运行且偏差≤精度


SCHEDULETABLE_RUNNING 如果调度表正在运行并且偏差>精度


一个显式同步的调度表将在运行时在这两个状态之间交替使用。


8.22显示了一个显式同步的计划表的状态转换模型。


Figure 8.22: Explicit Synchronization States


8.10.6 禁用同步

可以使用SetScheduleTableAsync()禁用显式同步调度表的同步。在进行调用时,调度表继续运行并处理到期点,但是RTA-OS停止任何到期点调整。


可以通过调用SyncScheduleTable()重新启动同步。


示例8.8显示了这些调用的示例。


SetScheduleTableAsync(Explicit);...SyncScheduleTable(Explicit,0);

Example 8.8: Stopping and restarting synchronization


8.11 调度表状态

可以使用GetScheduleTableStatus() API调用查询日程表的状态。调用通过一个out参数返回状态。


代码示例8.9展示了如何获取状态。


ScheduleTableStatusType State;GetScheduleTableStatus(Table, &State);


Example 8.9: Getting the status of a schedule table


调度表有以下状态:


SCHEDULETABLE_STOPPED 如果调度表未启动。


SCHEDULETABLE_RUNNING 如果调度表已启动。


SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS 如果调度表已启动并同步。


SCHEDULETABLE_NEXT 如果调度表已通过调用ScheduleTableNext()启动,但尚未运行(因为同一计数器上的另一个调度表尚未完成)。


SCHEDULETABLE_WAITING 如果调度表已经通过调用StartScheduleTableSynchron()启动,但还没有调用SyncScheduleTable()。


8.12 小结

调度表提供了一种在配置时静态规划一系列操作的方法


调度表与一个AUTOSAR OS计数器相关联,可以指定持续时间,并包含一个或多个到期点。


•RTA-OS中的到期点是通过在调度表上执行指定的偏移量来隐式创建的。


可以在调度表之间切换,但只能在调度表的名义末端切换。


调度表可以使用以下方式与全局tick源同步:


    •隐式同步,其中驱动调度表的计数器是全局时间源


    •显式同步,其中驱动调度表的计数器由本地计数器驱动,并且通过告诉操作系统全局同步时钟tick source的当前值来手动同步调度表。




End

「汽车电子嵌入式在CSDN上同步推出AUTOSAR精进之路专栏,本专栏每个模块完全按实际项目中开发及维护过程来详细介绍。模块核心概念介绍、实际需求描述、实际工程配置、特殊需求介绍及背后原理、实际工程使用经验总结。目的是让读者看完每一个章节后能理解原理后根据需求完成一个模块的配置或者解决一个问题。」


点击文章最后左下角的阅读原文可以获取更多信息


或者复制如下链接到浏览器获取更多信息

https://blog.csdn.net/qq_36056498/article/details/132125693


文末福利




1
.如需汽车电子嵌入式收集的学习文档,
后台回复“

资料

即可免费下载;

2.为便于技术交流,创建了汽车电子嵌入式技术交流群,可尽情探讨AP,CP,DDS,SOME/IP等前沿热点话题,后台回复“加群”即可加入;



注:本文引用了一些第三方工具和文档,若有侵权,请联系作者删除!


推荐阅读

汽车电子嵌入式精彩文章汇总第一期:20210530-20230703

汽车电子嵌入式精彩文章汇总第2期

汽车电子嵌入式精彩文章汇总第3期

【OS】AUTOSAR OS Event实现原理

【OS】AUTOSAR OS Spinlock实现原理(下篇)

【OS】AUTOSAR OS Spinlock实现原理(上篇)

CanNm处于PBS状态下接收到一帧诊断报文DCM会响应吗

TC3xx芯片CAN模块详解

AUTOSAR OS Alarm实现原理

AUTOSAR OsTask切换原理

TC3xx 芯片SPI模块详解

AUTSOAR ComStack如何实现PDU只收不发的

AUTOSAR OsStack监控原理

AUTOSAR架构下ICU唤醒详解

CanNm报文的触发发送详解

Can报文能发不能收问题分析



End


欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!

汽车电子嵌入式

微信扫描二维码,关注我的公众号

评论
  • 数字隔离芯片是现代电气工程师在进行电路设计时所必须考虑的一种电子元件,主要用于保护低压控制电路中敏感电子设备的稳定运行与操作人员的人身安全。其不仅能隔离两个或多个高低压回路之间的电气联系,还能防止漏电流、共模噪声与浪涌等干扰信号的传播,有效增强电路间信号传输的抗干扰能力,同时提升电子系统的电磁兼容性与通信稳定性。容耦隔离芯片的典型应用原理图值得一提的是,在电子电路中引入隔离措施会带来传输延迟、功耗增加、成本增加与尺寸增加等问题,而数字隔离芯片的目标就是尽可能消除这些不利影响,同时满足安全法规的要
    华普微HOPERF 2025-01-15 09:48 83浏览
  • 新年伊始,又到了对去年做总结,对今年做展望的时刻 不知道你在2024年初立的Flag都实现了吗? 2025年对自己又有什么新的期待呢? 2024年注定是不平凡的一年, 一年里我测评了50余块开发板, 写出了很多科普文章, 从一个小小的工作室成长为科工公司。 展望2025年, 中国香河英茂科工, 会继续深耕于,具身机器人、飞行器、物联网等方面的研发, 我觉得,要向未来学习未来, 未来是什么? 是掌握在孩子们生活中的发现,和精历, 把最好的技术带给孩子,
    丙丁先生 2025-01-11 11:35 463浏览
  • 食物浪费已成为全球亟待解决的严峻挑战,并对环境和经济造成了重大影响。最新统计数据显示,全球高达三分之一的粮食在生产过程中损失或被无谓浪费,这不仅导致了资源消耗,还加剧了温室气体排放,并带来了巨大经济损失。全球领先的光学解决方案供应商艾迈斯欧司朗(SIX:AMS)近日宣布,艾迈斯欧司朗基于AS7341多光谱传感器开发的创新应用来解决食物浪费这一全球性难题。其多光谱传感解决方案为农业与食品行业带来深远变革,该技术通过精确判定最佳收获时机,提升质量控制水平,并在整个供应链中有效减少浪费。 在2024
    艾迈斯欧司朗 2025-01-14 18:45 68浏览
  • 随着通信技术的迅速发展,现代通信设备需要更高效、可靠且紧凑的解决方案来应对日益复杂的系统。中国自主研发和制造的国产接口芯片,正逐渐成为通信设备(从5G基站到工业通信模块)中的重要基石。这些芯片凭借卓越性能、成本效益及灵活性,满足了现代通信基础设施的多样化需求。 1. 接口芯片在通信设备中的关键作用接口芯片作为数据交互的桥梁,是通信设备中不可或缺的核心组件。它们在设备内的各种子系统之间实现无缝数据传输,支持高速数据交换、协议转换和信号调节等功能。无论是5G基站中的数据处理,还是物联网网关
    克里雅半导体科技 2025-01-10 16:20 449浏览
  • 流量传感器是实现对燃气、废气、生活用水、污水、冷却液、石油等各种流体流量精准计量的关键手段。但随着工业自动化、数字化、智能化与低碳化进程的不断加速,采用传统机械式检测方式的流量传感器已不能满足当代流体计量行业对于测量精度、测量范围、使用寿命与维护成本等方面的精细需求。流量传感器的应用场景(部分)超声波流量传感器,是一种利用超声波技术测量流体流量的新型传感器,其主要通过发射超声波信号并接收反射回来的信号,根据超声波在流体中传播的时间、幅度或相位变化等参数,间接计算流体的流量,具有非侵入式测量、高精
    华普微HOPERF 2025-01-13 14:18 491浏览
  • PNT、GNSS、GPS均是卫星定位和导航相关领域中的常见缩写词,他们经常会被用到,且在很多情况下会被等同使用或替换使用。我们会把定位导航功能测试叫做PNT性能测试,也会叫做GNSS性能测试。我们会把定位导航终端叫做GNSS模块,也会叫做GPS模块。但是实际上他们之间是有一些重要的区别。伴随着技术发展与越发深入,我们有必要对这三个词汇做以清晰的区分。一、什么是GPS?GPS是Global Positioning System(全球定位系统)的缩写,它是美国建立的全球卫星定位导航系统,是GNSS概
    德思特测试测量 2025-01-13 15:42 498浏览
  • 根据Global Info Research(环洋市场咨询)项目团队最新调研,预计2030年全球无人机电池和电源产值达到2834百万美元,2024-2030年期间年复合增长率CAGR为10.1%。 无人机电池是为无人机提供动力并使其飞行的关键。无人机使用的电池类型因无人机的大小和型号而异。一些常见的无人机电池类型包括锂聚合物(LiPo)电池、锂离子电池和镍氢(NiMH)电池。锂聚合物电池是最常用的无人机电池类型,因为其能量密度高、设计轻巧。这些电池以输出功率大、飞行时间长而著称。不过,它们需要
    GIRtina 2025-01-13 10:49 198浏览
  • ARMv8-A是ARM公司为满足新需求而重新设计的一个架构,是近20年来ARM架构变动最大的一次。以下是对ARMv8-A的详细介绍: 1. 背景介绍    ARM公司最初并未涉足PC市场,其产品主要针对功耗敏感的移动设备。     随着技术的发展和市场需求的变化,ARM开始扩展到企业设备、服务器等领域,这要求其架构能够支持更大的内存和更复杂的计算任务。 2. 架构特点    ARMv8-A引入了Execution State(执行状
    丙丁先生 2025-01-12 10:30 471浏览
  • 01. 什么是过程能力分析?过程能力研究利用生产过程中初始一批产品的数据,预测制造过程是否能够稳定地生产符合规格的产品。可以把它想象成一种预测。通过历史数据的分析,推断未来是否可以依赖该工艺持续生产高质量产品。客户可能会要求将过程能力研究作为生产件批准程序 (PPAP) 的一部分。这是为了确保制造过程能够持续稳定地生产合格的产品。02. 基本概念在定义制造过程时,目标是确保生产的零件符合上下规格限 (USL 和 LSL)。过程能力衡量制造过程能多大程度上稳定地生产符合规格的产品。核心概念很简单:
    优思学院 2025-01-12 15:43 529浏览
  •   在信号处理过程中,由于信号的时域截断会导致频谱扩展泄露现象。那么导致频谱泄露发生的根本原因是什么?又该采取什么样的改善方法。本文以ADC性能指标的测试场景为例,探讨了对ADC的输出结果进行非周期截断所带来的影响及问题总结。 两个点   为了更好的分析或处理信号,实际应用时需要从频域而非时域的角度观察原信号。但物理意义上只能直接获取信号的时域信息,为了得到信号的频域信息需要利用傅里叶变换这个工具计算出原信号的频谱函数。但对于计算机来说实现这种计算需要面对两个问题: 1.
    TIAN301 2025-01-14 14:15 113浏览
  • 随着数字化的不断推进,LED显示屏行业对4K、8K等超高清画质的需求日益提升。与此同时,Mini及Micro LED技术的日益成熟,推动了间距小于1.2 Pitch的Mini、Micro LED显示屏的快速发展。这类显示屏不仅画质卓越,而且尺寸适中,通常在110至1000英寸之间,非常适合应用于电影院、监控中心、大型会议、以及电影拍摄等多种室内场景。鉴于室内LED显示屏与用户距离较近,因此对于噪音控制、体积小型化、冗余备份能力及电气安全性的要求尤为严格。为满足这一市场需求,开关电源技术推出了专为
    晶台光耦 2025-01-13 10:42 507浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦