DEENESPTFRRUARHIKOZHNL

AUTOSAR OS

ModulOs (AUTOSAR OS)
BSW-Modul-ID1
Standard-Header#include "Os.h"
SWS-SpezifikationAUTOSAR_SWS_OS.pdf
ClusterOperating System

模块指南人工智能生成

控制基于时间的过程,防止 OS-Application 之间相互干扰,并协调 ECU 的各个核心。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: 5b459e21507a 来源
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南AI 生成gemini-3.8-flash-low · 2026-10-13 · 德文原文

控制基于时间的过程,防止 OS-Application 之间相互干扰,并协调 ECU 的各个核心。

操作系统执行 Task 和 ISR,驱动 Counter 和 ScheduleTable,并将软件划分为受保护的 OS-Application。EcuM 使用 StartCore 启动各核心;之后在每个核心上调用 StartOS [SWS_Os_00676]。ScheduleTable 可以通过 StbM 与全局时间显式同步。仅在具有配置的权限时才允许访问外部对象 SWS OS 第62页。发生保护违规时,ProtectionHook 决定是终止 Task、OS-Application 还是整个系统。

操作系统是 Classic 栈的执行核心。它管理 Task、ISR、Alarm、Counter 和 ScheduleTable,并将它们组合为 trusted 或 non-trusted 的 OS-Application SWS OS 第61页。EcuM 使用 StartCore 启动各核心,之后使用 StartOS 启动 OS;每个已启动的核心自行调用 StartOS SWS EcuM 第82页、[SWS_Os_00676]。ShutdownAllCores 在所有核心上关闭 OS 并且不再返回 [SWS_Os_00713]。软件组件通过 RTE 使用 OS 服务,并且对于 BSW 模块,限制了其允许使用的服务 SWS BSWGeneral 第48页。

Kontext swc Software-Komponente rte RTE swc->rte Port os: OsService os Os (Tasks, ISRs, Counter, ScheduleTables, OS-Applications) rte->os OS-Dienste ioc IOC (Os 的一部分) rte->ioc IocSend / IocWrite, IocReceive / IocRead bsw BSW-Module bsw->os 仅限 SWS BSWGeneral 规定的 允许服务 ecum EcuM ecum->os StartCore, StartOS, GetCoreID, ShutdownAllCores stbm StbM stbm->os GetScheduleTableStatus, SyncScheduleTable, GetCounterValue os->ioc 包含 hw Hardware (Timer, Interrupt-Controller, Prozessor) os->hw Timer initialisieren, Interrupt-Quellen steuern hw->os 发生保护违规时的 异常

上下文图:EcuM、StbM、RTE 和 BSW 模块通过单独的服务组访问 Os;IOC 是 Os 的一部分。来源:SWS EcuM 第34页、SWS OS 第119页

Counter 构成时间基准;硬件值被修正为从零开始并单调递增 SWS OS 第39页。应用程序相对于 Counter 以绝对或相对方式启动 ScheduleTable,并且停止操作立即生效 SWS OS 第46页。在显式同步时,StbM 通过 SyncScheduleTable 提供全局时间的值。随后 OS 调整 Expiry Point,直到偏差处于配置的精度范围内 [SWS_Os_00199]、SWS OS 第57页。

ScheduleTable start 开始 STOPPED SCHEDULETABLE_STOPPED start->STOPPED NEXT SCHEDULETABLE_NEXT STOPPED->NEXT NextScheduleTable() WAITING SCHEDULETABLE_WAITING STOPPED->WAITING StartScheduleTableSynchron() RUNNING SCHEDULETABLE_RUNNING STOPPED->RUNNING StartScheduleTableAbs() StartScheduleTableRel() NEXT->STOPPED StopScheduleTable() NEXT->RUNNING vorherige Tabelle endet WAITING->STOPPED StopScheduleTable() SYNC SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS WAITING->SYNC SyncScheduleTable() RUNNING->STOPPED StopScheduleTable() 或 调度表结束 RUNNING->SYNC |Abweichung| <= Precision SYNC->STOPPED StopScheduleTable() SYNC->RUNNING SetScheduleTableAsync() 或 |偏差| > Precision

状态图:ScheduleTable 从启动、经由同步直至停止的生命周期。来源:[SWS_Os_00784]、SWS OS 第49页

保护概念禁止访问其他 OS-Application 的对象,除非配置允许此类访问 SWS OS 第62页。CallTrustedFunction 支持在 OS-Application 之间进行受控转换 [SWS_Os_00097]。多个核心通过带死锁检测的自旋锁以及 IOC 进行协调 [SWS_Os_00686]、[SWS_Os_00718]。

发生严重错误时,ProtectionHook 的返回值决定后续操作 [SWS_Os_00538]:

  • 忽略错误,
  • 终止 Task 或 ISR,
  • 终止 OS-Application,带或不带重启,
  • 关闭系统。

新启动的 OS-Application 通过 AllowAccess 再次自行解除阻塞 [SWS_Os_00501]。

操作系统的角色及其在 ECU 中的相邻模块

操作系统是 Classic 栈的执行核心。它管理 Task、ISR、Alarm、Counter 和 ScheduleTable。它将这些对象与 Hook 以及 Trusted Function 一起组合成可配置的 OS-Application,这些应用程序可以是 trusted 或 non-trusted SWS OS 第61页。此外,它还初始化并配置其自身使用且不由 GPT 驱动程序管理的所有定时器 SWS OS 第39页。

相邻模块通过限定的接口进行访问:

  • EcuM 通过 StartOS、StartCore、GetCoreID 和 ShutdownAllCores 控制启动和关闭 SWS EcuM 第34页。
  • StbM 使用 GetCounterValue、GetElapsedValue、GetScheduleTableStatus 和 SyncScheduleTable SWS StbM 第152页。
  • 软件组件通过带有服务接口 OsService 的 RTE 端口访问 OS 服务 TR VFB 第89页。对于配置了 OsSecondsPerTick 的 Counter,该接口尤其提供 GetCounterValue 和 GetElapsedValue [SWS_Os_00560]。

对于 BSW 模块,通过一张表规定了其到底允许使用哪些 OS 服务 SWS BSWGeneral 第48页。OS-Application 之间的通信由 IOC 承担。它是操作系统的一部分,并由 RTE 调用 SWS OS 第119页、[SWS_Os_00718]。

Kontext swc Software-Komponente rte RTE swc->rte Port os: OsService os Os (Tasks, ISRs, Counter, ScheduleTables, OS-Applications) rte->os OS-Dienste ioc IOC (Os 的一部分) rte->ioc IocSend / IocWrite, IocReceive / IocRead bsw BSW-Module bsw->os 仅限 SWS BSWGeneral 规定的 允许服务 ecum EcuM ecum->os StartCore, StartOS, GetCoreID, ShutdownAllCores stbm StbM stbm->os GetScheduleTableStatus, SyncScheduleTable, GetCounterValue os->ioc 包含 hw Hardware (Timer, Interrupt-Controller, Prozessor) os->hw Timer initialisieren, Interrupt-Quellen steuern hw->os 发生保护违规时的 异常

上下文图:Os 被 EcuM、StbM、RTE 和 BSW 模块各自通过专属的服务组使用,并封装了 IOC 以及硬件访问。来源:SWS EcuM 第34页、SWS StbM 第152页、TR VFB 第89页、SWS OS 第119页

启动、核心管理与关闭

在多核运行中,EcuM 在主核心上循环使用 StartCore 启动所有已配置的核心。随后它调用 StartOS(ECUM_DEFAULT_APP_MODE) SWS EcuM 第82页。在每个已启动的核心上也必须调用 StartOS [SWS_Os_00676]。这由各从核心的 EcuM 在 GetCoreID 之后承担 SWS EcuM 第83页。

以下规则适用于 StartCore SWS OS 第166页:

  • 该服务是不可重入的。
  • 在 StartOS 之后调用将返回 E_OS_ACCESS,且核心不会被启动。
  • 已启动的核心将导致 E_OS_STATE。

对于不在 AUTOSAR OS 控制下的核,存在 StartNonAutosarCore [SWS_Os_00682]。

核通过 CoreIdType 进行标识。逻辑 ID 从零开始且连续,并且 OS_CORE_ID_MASTER 表示主核 [SWS_Os_00790]、[SWS_Os_00825]。GetCoreID 返回调用核的逻辑 ID [SWS_Os_00674]。该服务在 StartOS 之前即可调用 SWS OS 第111页。

在 StartOS 之后且在第一个 StartupHook 之前,OS 将所有 OS-Application 设置为 APPLICATION_ACCESSIBLE SWS OS 第62页。随后执行系统级的 StartupHook。在此之后,特定于应用程序的 StartupHook_<App> 才会运行,且各自具有其 OS-Application 的权限 SWS OS 第134页、[SWS_Os_00539]。

Os 的多核启动流程EcuM (Master-Kern)Os (Master-Kern)Os (Slave-Kern)EcuM (Slave-Kern)GetCoreID()CoreIdTypeloop针对所有已配置的核心StartCore(CoreID, &Status)在 AUTOSAR OS 的启动 AUTOSAR OSStatus = E_OKStartOS(ECUM_DEFAULT_APP_MODE)GetCoreID()StartOS(ECUM_DEFAULT_APP_MODE)在 StartOS 之后:OS-Application 处于 APPLICATION_ACCESSIBLE,然后是 StartupHook,之后是 StartupHook_<App>opt在 StartOS 之后的 StartCoreStartCore(CoreID, &Status)Status = E_OS_ACCESS,核心未被启动

时序图:主核在其自身的 StartOS 之前启动其余核;每个核自行调用 StartOS,后续的 StartCore 将被拒绝。来源:SWS EcuM 第82页、SWS EcuM 第83页、SWS OS 第166页、SWS OS 第188页

GetNumberOfActivatedCores 在 R20-11 中返回通过 StartCore 激活的核数量 [SWS_Os_00672]。后续版本则代之以“运行 AUTOSAR OS 的核”SWS OS 第196页。

使用 ControlIdle 可为每个核选择空闲时间的动作,例如用于节能。默认值为 IDLE_NO_HALT。未知的核或模式会导致 E_OS_ID [SWS_Os_00769]、[SWS_Os_00771]、[SWS_Os_00793]。

ShutdownAllCores 在所有 AUTOSAR 核上关闭 OS,强制其他核进入关闭状态且永不返回 [SWS_Os_00713]。在此过程中,首先运行 ShutdownHook_<App>。随后各核进行同步,在此之后才执行全局 ShutdownHook SWS OS 第98页、[SWS_Os_00541]。

作为时间基准的 Counter 和 ScheduleTable

GetCounterValue 在硬件 Counter 下返回定时器值,在软件 Counter 下返回软件 tick 数。OS 会对硬件值进行修正,使其从零开始并增加至模数 SWS OS 第39页、[SWS_Os_00383]。

GetElapsedValue 返回自先前读取的值以来的 tick 数。如果 Value 大于最大允许的 Counter 值,则返回 E_OS_VALUE SWS OS 第192页、[SWS_Os_00392]。

IncrementCounter 仅递增软件 Counter;对于硬件 Counter,它返回 E_OS_ID。如果在此过程中某个报警动作失败,OS 会调用 Error-Hook,但服务本身仍返回 E_OK SWS OS 第190页、[SWS_Os_00399]。

启动和停止 ScheduleTable 是应用程序的任务 SWS OS 第46页。Initial Expiry Point 会在以下计数值处被处理:

  • StartScheduleTableAbs:在 Start + InitialOffset 处 [SWS_Os_00358]。
  • StartScheduleTableRel:在 Now + Offset + InitialOffset 处 [SWS_Os_00347]。

在相对启动时,若 Offset 为 0 或大于 OsCounterMaxAllowedValue − InitialOffset,则导致错误 E_OS_VALUE。对已启动的表执行此操作会导致 E_OS_STATE SWS OS 第179页。

StopScheduleTable 立即中止;对已停止的表执行此操作会导致 E_OS_NOFUNC [SWS_Os_00006]。后续的重启将从表头开始 SWS OS 第46页。

NextScheduleTable 链接一个后续表。两个表必须由同一个 Counter 驱动,否则会导致 E_OS_ID [SWS_Os_00191]、SWS OS 第184页。

GetScheduleTableStatus 对未启动的表报告 SCHEDULETABLE_STOPPED 以及 E_OK SWS OS 第189页、[SWS_Os_00784]。

ScheduleTable start 开始 STOPPED SCHEDULETABLE_STOPPED start->STOPPED NEXT SCHEDULETABLE_NEXT STOPPED->NEXT NextScheduleTable() WAITING SCHEDULETABLE_WAITING STOPPED->WAITING StartScheduleTableSynchron() RUNNING SCHEDULETABLE_RUNNING STOPPED->RUNNING StartScheduleTableAbs() StartScheduleTableRel() NEXT->STOPPED StopScheduleTable() NEXT->RUNNING vorherige Tabelle endet WAITING->STOPPED StopScheduleTable() SYNC SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS WAITING->SYNC SyncScheduleTable() RUNNING->STOPPED StopScheduleTable() 或 调度表结束 RUNNING->SYNC |Abweichung| <= Precision SYNC->STOPPED StopScheduleTable() SYNC->RUNNING SetScheduleTableAsync() 或 |偏差| > Precision

状态图:包含 ScheduleTableStatusType 所有状态的 ScheduleTable 生命周期;WAITING 和 RUNNING 仅在显式同步时出现,隐式同步的表仅具有 STOPPED、NEXT 和 RUNNING_AND_SYNCHRONOUS。来源:[SWS_Os_00784]、SWS OS 第43页、SWS OS 第49页、SWS OS 第48页

ScheduleTable 与全局时间的同步

在隐式同步中,驱动 Counter 本身即为同步计数器。此时表仅具有三种状态 SWS OS 第48页。StartScheduleTableRel 针对 OsScheduleTblSyncStrategy = IMPLICIT 返回错误 E_OS_ID SWS OS 第179页。相比之下,显式同步使本地驱动的表与外部同步计数器保持一致。它被列为用于与 StbM 时间基准耦合的安全机制 Safety Measures 第66页。

启动有两种途径 SWS OS 第49页、[SWS_Os_00201]:

  • 异步方式:通过 StartScheduleTableAbs 或 StartScheduleTableRel,相对于驱动 Counter。
  • 同步方式:通过 StartScheduleTableSynchron。在此方式下,Initial Expiry Point 在提供同步值之后 (Duration − Value) + InitialOffset 个 tick 时被处理。

SyncScheduleTable 传递同步计数器的当前值。其模数对应于表时长 SWS OS 第52页、[SWS_Os_00199]。

OS 据此计算偏差并在每个 Expiry Point 调整延迟。若偏差在 OsScheduleTblExplicitPrecision 范围内,则该表被视为“running and synchronous”SWS OS 第57页。SetScheduleTableAsync 停止调整直至下一次 SyncScheduleTable;在此期间 Expiry Point 继续运行 SWS OS 第188页、[SWS_Os_00422]。

StbM 对 ScheduleTable 的显式同步BSW Task(OS Task 或周期性调用)StbMOsStbM_MainFunction()GetScheduleTableStatus(ScheduleTableID, &ScheduleStatus)E_OK, ScheduleStatusaltScheduleStatus == WAITING、RUNNING 或 RUNNING_AND_SYNCHRONOUSSyncScheduleTable(ScheduleTableID, GlobalTimeTick)Abweichung berechnen,调整至下一个过期点(Expiry Point)的延迟否则kein SyncScheduleTable流程在每次调用 StbM_MainFunction() 时重复

时序图:StbM 周期性查询表状态,并且仅在表已启动时提供同步值。来源:SWS StbM 第220页、SWS StbM 第117页、[SWS_Os_00227]、[SWS_Os_00199]

保护概念:OS-Application、访问权限和 Trusted Function

除非配置明确允许,否则 OS 会阻止 OS-Application 访问外部对象 SWS OS 第62页。若缺少权限,服务将返回 E_OS_ACCESS。用于内存和对象访问的检查服务除外,这些服务始终被允许 SWS OS 第73页。

在运行时提供以下查询服务:

  • GetApplicationID 指明调用者配置所属的 OS-Application [SWS_Os_00016]。
  • GetCurrentApplicationID 指明调用者当前正在其中执行的 OS-Application。这两个值仅在 CallTrustedFunction 内部存在差异 [SWS_Os_00797]、[SWS_Os_00798]。
  • CheckObjectOwnership 返回对象的所有者或 INVALID_OSAPPLICATION SWS OS 第178页。
  • CheckObjectAccess 返回 ACCESS 或 NO_ACCESS;在参数无效时始终返回 NO_ACCESS SWS OS 第177页。

CheckTaskMemoryAccess 和 CheckISRMemoryAccess 以 AccessType 的形式返回对内存区域的权限以及其是否属于堆栈。不适用于整个区域的权限将被否定。无效的 ID 不会产生任何权限 SWS OS 第175页、SWS OS 第174页。通过诸如 OSMEMORY_IS_WRITEABLE 之类的宏对结果进行评估 SWS OS 第160页。

CallTrustedFunction 以提供方 OS-Application 的保护设置执行函数。若索引未配置,则导致 E_OS_SERVICEID 并调用 ErrorHook SWS OS 第85页、SWS OS 第172页。在 R20-11 中,同步行为取决于所调用的函数,且调用可能会触发重调度 [SWS_Os_00097]。对于 trusted OS-Application,写访问权限也必须能够被限制 [SWS_Os_00795]。

调用受信任函数(Trusted Function)aufrufende OS-ApplicationTrusted-Function-StubBetriebssystem (System-Call-Dispatcher)bereitstellende OS-ApplicationDienstaufrufArgumente in Parameterstruktur packenCallTrustedFunction(FunID, FunParPtr)检查权限altverweigertE_OS_SERVICEIDakzeptiert<trusted function>采用提供方 OS-Application 的保护设置CheckTaskMemoryAccess(...)AccessType返回E_OK返回值

时序图:桩函数打包参数;OS 检查权限,之后才切换至提供方 OS-Application,后者的函数进而检查内存权限。来源:SWS OS 第185页、SWS OS 第396页、[SWS_Os_00097]

对于受保护的硬件访问,提供了 8、16 和 32 位的 ReadPeripheral、WritePeripheral 和 ModifyPeripheral。它们在类型为 AreaIdType 的外设区域上操作 [SWS_Os_91000]。Modify 变体计算 *Address = (*Address & Clearmask) | Setmask SWS OS 第209页。

对于每个类别 2 ISR,都存在 DisableInterruptSource、EnableInterruptSource 和 ClearPendingInterrupt [SWS_Os_00808]。ClearPendingInterrupt 仅清除中断控制器中的挂起标志 [SWS_Os_00814]。

各版本间的差异:在 R20-11 中,即使签名包含参数 ClearPending,EnableInterruptSource 也始终清除挂起标志 [SWS_Os_00811]。后续版本将清除描述为可选 SWS OS 第177页。

跨核和跨分区的协调

自旋锁在核边界之间生效。GetSpinlock 进行忙等待而不取消调度调用者,并且可在任务和类别 2 ISR 级别调用 SWS OS 第115页。在 Extended 状态下,它能识别两种死锁情况 [SWS_Os_00686]:

  • E_OS_INTERFERENCE_DEADLOCK:同一核上的某个任务已持有该锁。
  • E_OS_NESTING_DEADLOCK:与已持有的另一个自旋锁发生嵌套是不允许的。

当另一个核上的任务占用该锁时,TryToGetSpinlock 返回。此时它返回 E_OK 并附带 TRYTOGETSPINLOCK_NOSUCCESS [SWS_Os_00703]、[SWS_Os_00792]。在终止任务之前以及在 WaitEvent 之前,必须按正确顺序释放所有自旋锁 [SWS_Os_00695]。使用 SuspendAllInterrupts 包裹或设置 OsSpinlockLockMethod 有助于防止干扰 SWS OS 第101页。

跨核边界的 ActivateTask 采用同步工作方式。错误处理程序在调用核上运行 SWS OS 第103页。相比之下,ActivateTaskAsyn 和 SetEventAsyn 不向调用者返回错误,而是仅向全局 Error-Hook 报告错误 [SWS_Os_00816]、[SWS_Os_00817]。两者仅存在于具有 OS-Application 的系统中 [SWS_Os_00818]、[SWS_Os_00819]。若调用者已不存在,则不再报告 SWS OS 第179页。

IOC 为每个发送方和接收方生成其对应的函数:

若缓冲区已满,发送方报告 IOC_E_LIMIT,接收方在下次读取时获得 IOC_E_LOST_DATA SWS OS 第219页。IocInit 以及 OS 和 IOC 代码的单独生成在 R20-11 中仍处于 DRAFT 状态 [SWS_Os_00835]、[SWS_Os_00831]、[SWS_Os_00834]。

发生错误时的行为

许多检查(例如针对 E_OS_ID 的检查)仅在 Extended 状态下执行。指针参数在该状态下会针对 NULL_PTR 进行检查,并以 E_OS_ILLEGAL_ADDRESS 予以拒绝 SWS OS 第38页。其他错误标识(如 E_OS_PROTECTION_MEMORY 和 E_OS_STACKFAULT)为集中定义 [SWS_Os_91025]。若服务未返回 E_OK,OS 会调用 ErrorHook 和 ErrorHook_<App> SWS OS 第186页、[SWS_Os_00540]。

发生严重错误时,OS 会调用 ProtectionHook。其 ProtectionReturnType 决定进一步的反应 [SWS_Os_00538]、[SWS_Os_00787]。若未配置 ProtectionHook,OS 会调用 ShutdownOS EXP ALEH 第60页。在终止 OS-Application 时,OS 会停止所有关联的对象 SWS OS 第62页:

  • 所有任务和 ISR,
  • 它们的中断,
  • 它们的报警,
  • 它们的 ScheduleTable。
通过 ProtectionHook 对保护违规做出响应OS-Application <App> 的 Task / 类别 2 ISRProzessorBetriebssystemUse Case: Schutzverletzung执行时发生保护违规«Exception»ProtectionHook(Fatalerror)altPRO_TERMINATETASKISR强制终止 Task / ISRPRO_TERMINATEAPPL强制终止 OS-ApplicationPRO_TERMINATEAPPL_RESTART强制终止 OS-Application,Restart-Task startenPRO_IGNORE无进一步动作PRO_SHUTDOWNShutdownOS()

时序图:ProtectionHook 的返回值在忽略、终止任务/ISR、终止 OS-Application(带或不带重启)以及关闭系统之间进行选择。来源:SWS OS 第187页、[SWS_Os_00538]、[SWS_Os_00787]

OS-Application 处于 APPLICATION_ACCESSIBLE、APPLICATION_RESTARTING 或 APPLICATION_TERMINATED 状态。状态由 GetApplicationState 返回 [SWS_Os_00773]、[SWS_Os_00499]。TerminateApplication 在 R20-11 中接收 RESTART 或 NO_RESTART [SWS_Os_00258]、[SWS_Os_00788]。后续版本会忽略此参数 SWS OS 第194页。

在 RESTARTING 状态下,仅运行 OSRestartTask;其他 OS-Application 无权访问。OS-Application 仅能通过 ECU 重启脱离 APPLICATION_TERMINATED 状态 EXP ALEH 第53页。必要时,OSRestartTask 通过 CallTrustedFunction 进行清理,随后通过 AllowAccess 重新释放该 OS-Application EXP ALEH 第76页、[SWS_Os_00501]。用于 ECU 级 ProtectionHook 和重启任务的代码由集成商提供 EXP ALEH 第79页。

OsApplication start 开始 ACC APPLICATION_ACCESSIBLE start->ACC StartOS (在第一个 StartupHook 之前) RES APPLICATION_RESTARTING ACC->RES PRO_TERMINATEAPPL_RESTART 或 TerminateApplication(AppID, RESTART) TER APPLICATION_TERMINATED ACC->TER PRO_TERMINATEAPPL 或 TerminateApplication(AppID, NO_RESTART) RES->ACC AllowAccess() (来自重启 Task) RES->TER TerminateApplication(self, NO_RESTART)

状态图:StartOS 使每个 OS-Application 可访问;保护响应或 TerminateApplication 导致进入 RESTARTING 或 TERMINATED,仅 AllowAccess 可返回。来源:EXP ALEH 第61页、[SWS_Os_00773]、[SWS_Os_00501]

进一步详细证据

基于有效负载中所包含需求和文档出处的 AI 生成指南;以版本 R20-11 的需求为规范基准,已指明后续版本的偏差。

AUTOSAR OS

Real-time operating system managing priority-based preemptive task scheduling, events, alarms, and schedule tables (OSEK/VDX derivative).

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 GetApplication [SWS_Os_00016] 📄 PDF

ApplicationType GetApplicationID (void);

This service determines the OS - Application (a unique identifier has to be allocated to each application) where the caller originally belongs to (was configured t o).

函数 GetCurrentApplication [SWS_Os_00797] 📄 PDF

ApplicationType GetCurrentApplicationID (void);

This service determines the OS - Application where the caller of the service is currently executing. Note that if the caller is not within a Call Trusted Function() call the value is eq ual to the result of Get Application ID().

函数 CallTrustedFunction [SWS_Os_00097] 📄 PDF

StatusType CallTrustedFunction (TrustedFunctionIndexType FunctionIndex, TrustedFunctionParameterRefType FunctionParams);

A (trusted or non - trusted) OS - Application uses this service to call a trusted function

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: f4173cc0ef4f 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

通过系统服务 CallTrustedFunction(服务 ID 0x02),受信任或不受信任的 OS-Application 可以调用已定义的 Trusted Function 进行执行 [SWS_Os_00097]。该接口通过头文件 Os.h 提供 [SWS_Os_00097]。

调用需要传入两个输入参数 [SWS_Os_00097]:

  • FunctionIndex(类型 TrustedFunctionIndexType):指定要调用的函数索引 [SWS_Os_00097]。
  • FunctionParams(类型 TrustedFunctionParameterRefType):传递指向目标函数参数的指针;如果不需要参数,则必须强制传递 NULL 指针 [SWS_Os_00097]。

关于时间特性,其执行取决于目标例程:若调用的函数是同步的,则该服务也表现为同步 [SWS_Os_00097]。该函数采用可重入方式实现,但在执行期间可能导致操作系统进行重调度 [SWS_Os_00097]。

作为返回值,该服务返回类型为 StatusType 的状态值 [SWS_Os_00097]:

此使用说明基于 AUTOSAR R20-11 自动生成。

实现者指南即将推出(复杂度 I2)

函数 CheckISRMemoryAccess [SWS_Os_00512] 📄 PDF

AccessType CheckISRMemoryAccess (ISRType ISRID, MemoryStartAddressType Address, MemorySizeType Size);

This service checks if a memory region is write/ read/ execute accessible and also returns information if the memory region is part of the stack space.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 9eaf26d27eff 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 CheckISRMemoryAccess 是 OS 模块的同步且可重入的系统服务([SWS_Os_00512])。它用于在运行时检查指定 ISR 对特定内存区域的内存访问权限。

用法与参数

调用 CheckISRMemoryAccess 需要三个输入参数([SWS_Os_00512]):

  • ISRID:指向待检查 ISR 的引用(ISRType)。
  • Address:待检查内存区域的起始地址(MemoryStartAddressType)。
  • Size:内存区域的大小(MemorySizeType)。

作为返回值,该服务提供类型 AccessType。该返回值包含对指定区域的访问权限(读、写、执行),并额外提供有关该内存区域是否属于栈区域的信息([SWS_Os_00512])。

并发与集成

根据规范,该函数具有服务 ID 0x03,并被声明为可重入([SWS_Os_00512])。它通过头文件 Os.h 提供([SWS_Os_00512])。当前规范摘录中未列出特定错误码或向 DET/DEM 的显式反馈。

本使用说明基于 AUTOSAR R20-11 的规范数据自动生成。

实现者指南即将推出(复杂度 I2)

函数 CheckTaskMemoryAccess [SWS_Os_00513] 📄 PDF

AccessType CheckTaskMemoryAccess (TaskType TaskID, MemoryStartAddressType Address, MemorySizeType Size);

This service checks if a memory region is write/ read/ execu te accessible and also returns information if the memory region is part of the stack space.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 91d38acf9e0a 来源
译自德文指南AI 生成gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 CheckTaskMemoryAccess 是操作系统的同步服务,由头文件 Os.h 提供并具有服务 ID 0x04 [SWS_Os_00513]。它用于查询特定任务对特定内存段的内存访问权限 [SWS_Os_00513]。

参数与返回值

调用时,该服务接收三个输入参数 [SWS_Os_00513]:

  • Task ID(类型为 TaskType):对要检查其访问权限的任务的引用。
  • Address(类型为 MemoryStartAddressType):待检查存储区域的起始地址。
  • Size(类型为 MemorySizeType):待检查存储区域的大小。

作为返回值,该服务提供类型为 AccessType 的变量 [SWS_Os_00513]。该返回值包含指定存储区域对该任务是否具有写、读或执行权限的信息,并额外指示该区域是否为堆栈区域的一部分 [SWS_Os_00513]。未为此服务指定额外的错误代码或 DET 消息。

并发性与交互

该服务被指定为可重入,因此可以在并发执行上下文中安全使用 [SWS_Os_00513]。虽然 CheckTaskMemoryAccess 在运行时查询存储区域的权限,但 AUTOSAR 标准在 ARTI 模块描述中定义了接口和数据结构,调试工具可通过这些接口和数据结构捕获并评估操作系统对象的状态和属性 [SWS_Os_00829]。

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I2)

函数 CheckObjectAccess [SWS_Os_00256] 📄 PDF

ObjectAccessType CheckObjectAccess (ApplicationType ApplID, ObjectTypeType ObjectType, void ...);

This service determines if the OS - Applications, given by Appl ID, is allowed to use the IDs of a Task, Resource, Counter, Alarm or Schedule Table in API calls.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: c7ec73500d6c 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

函数 CheckObjectAccess([SWS_Os_00256])同步确定特定 OS-Application 是否具有在 API 调用中使用操作系统对象 ID 的权限。类型为 ApplicationType 的输入参数 ApplID([SWS_Os_00256])用于标识应用程序。通过 ObjectType(类型 ObjectTypeType)指定要检查的对象类型;支持 Task、Resource、Counter、Alarm 和 Schedule Table([SWS_Os_00256])。作为第三个参数,要检查的对象本身通过可变参数列表 ... 传入([SWS_Os_00256])。

作为返回值,该函数提供类型 ObjectAccessType:若允许应用程序访问该对象,则返回 ACCESS,否则返回 NO_ACCESS([SWS_Os_00256])。该服务通过头文件 Os.h 声明,并具有服务 ID 0x05([SWS_Os_00256])。

并发性、错误处理与协同交互

该服务被指定为可重入,因此可以在并发执行上下文中调用([SWS_Os_00256])。在规范中,未为此函数定义特定的错误代码、错误状态返回值或向 DET 或 DEM 发送的消息([SWS_Os_00256])。

Interpretation: 可变参数 ... 在实现中应会传递与 ObjectType 相匹配的对象的具体标识符。 问题 Q-5cb52ff94bb07826 (未决)经检查的操作系统对象也会反映在 ARTI 调试信息中,这些信息记录并评估操作系统对象的属性与状态([SWS_Os_00829])。

本使用说明基于版本 R20-11 的规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 CheckObjectOwnership [SWS_Os_00017] 📄 PDF

ApplicationType CheckObjectOwnership (ObjectTypeType ObjectType, void ...);

This service determines to which OS - Application a given Task, ISR, Counter, Alarm or Schedule Table belongs

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 20318a993e09 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步系统函数 CheckObjectOwnership 用于确定某个特定的操作系统对象属于哪个 OS-Application [SWS_Os_00017]。可通过该服务查询的对象包括任务(Task)、中断服务例程(ISR)、计数器(Counter)、报警(Alarm)以及调度表(Schedule Table)[SWS_Os_00017]。

该函数可通过头文件 Os.h 获取,其服务 ID 为 0x06 [SWS_Os_00017]。在使用时,该函数接收两个输入参数:

  • ObjectType:作为类型为 ObjectTypeType 的输入参数,标识后续传递的操作系统对象的类型 [SWS_Os_00017]。
  • ...:将要检查的具体对象传递给该服务 [SWS_Os_00017]。

作为返回值,该函数提供数据类型 ApplicationType [SWS_Os_00017]。其中包含所检查对象分配到的 OS-Application 的标识符 [SWS_Os_00017]。

错误处理与执行特性

如果查询的对象在系统中不存在,该服务将返回返回值 INVALID_OSAPPLICATION [SWS_Os_00017]。

关于并发行为,CheckObjectOwnership 被指定为可重入且完全同步工作 [SWS_Os_00017]。除返回值外,不存在输入/输出参数(inout 或 out)[SWS_Os_00017]。

本使用说明基于 AUTOSAR Classic R20-11 中的 SWS_Os_00017 规范。

实现者指南即将推出(复杂度 I1)

函数 StartScheduleTableRel [SWS_Os_00347] 📄 PDF

StatusType StartScheduleTableRel (ScheduleTableType ScheduleTableID, TickType Offset);

This service starts the processing of a schedule table at "Offset" relative to the "Now" value on the underlying counter.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 9cbbffcaa010 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与参数

系统服务 StartScheduleTableRel 相对于底层计数器的当前计数值(“Now”)启动调度表的处理 [SWS_Os_00347]。该调用同步执行,并通过带有服务 ID 0x07 的接口 Os.h 提供 [SWS_Os_00347]。

  • ScheduleTableID(输入,ScheduleTableType):要启动的调度表的标识符 [SWS_Os_00347]。
  • Offset(输入,TickType):在调度表开始处理之前,计数器上的相对计数周期数 [SWS_Os_00347]。

返回值与错误处理

该函数返回类型为 StatusType 的状态码[SWS_Os_00347]:

  • E_OK:调度表已无误启动 [SWS_Os_00347]。
  • E_OS_STATE:指定的调度表已启动 [SWS_Os_00347]。
  • E_OS_ID(仅在状态 EXTENDED 下):指定的 ScheduleTableID 无效 [SWS_Os_00347]。
  • E_OS_VALUE(仅在状态 EXTENDED 下):参数 Offset 等于 0 或超过值 (OsCounterMaxAllowedValue - InitialOffset) [SWS_Os_00347]。

并发性与限制

该函数被规范为可重入 [SWS_Os_00347]。不存在输出或输入/输出参数 [SWS_Os_00347]。

本使用说明基于 AUTOSAR CP R20-11 规范。

实现者指南即将推出(复杂度 I2)

函数 StartScheduleTableAbs [SWS_Os_00358] 📄 PDF

StatusType StartScheduleTableAbs (ScheduleTableType ScheduleTableID, TickType Start);

This service starts the processing o f a schedule table at an absolute value "Start" on the underlying counter.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 8536dbe30f67 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的函数 StartScheduleTableAbs 用于在底层计数器的预定绝对计数值处启动调度表(Schedule Table)([SWS_Os_00358])。该服务通过头文件 Os.h 提供,并通过服务 ID 0x08 进行标识([SWS_Os_00358])。

调用时需传入两个输入参数([SWS_Os_00358]):

  • ScheduleTableID:要启动的 Schedule Table 的标识符。
  • Start:启动 Schedule Table 的绝对计数器 Tick 值。

作为返回值,该函数提供类型为 StatusType 的状态([SWS_Os_00358]):

  • E_OK:启动过程成功。
  • E_OS_STATE:指定的 Schedule Table 此前已被启动。
  • E_OS_ID:传递的 ScheduleTableID 无效(仅在 EXTENDED 状态下返回)。
  • E_OS_VALUE:Start 的值超过了最大允许计数值 OsCounterMaxAllowedValue(仅在状态 EXTENDED 下返回)。

在交互方面,诸如 Schedule Tables 等操作系统对象的状态和动态属性可通过 ARTI 模块描述由连接的调试工具进行评估和显示([SWS_Os_00829])。Interpretation:调用上下文很可能主要包括 Task 级别,因为规范摘录中未给出明确限制。 问题 Q-213de28d0345ccb1 (未决)

本段文本由 AI 创建,完全基于 Release R20-11 的规范。

实现者指南即将推出(复杂度 I2)

函数 StopScheduleTable [SWS_Os_00006] 📄 PDF

StatusType StopScheduleTable (ScheduleTableType ScheduleTableID);

This service cancels the processing of a schedule table immediately at any point while the schedule table is running.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: acbfdebe2422 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步系统函数 StopScheduleTable([SWS_Os_00006])可在任何处理时刻立即中止正在运行的调度表的执行。该服务在头文件 Os.h 中声明,且拥有服务 ID 0x09([SWS_Os_00006])。类型为 ScheduleTableType 的 ScheduleTableID 是唯一的输入参数,用于指定要停止的调度表;不存在输入/输出参数或纯输出参数([SWS_Os_00006])。

同步调用返回类型为 StatusType 的状态码作为返回值([SWS_Os_00006]):

  • E_OK:调度表的处理已无误停止([SWS_Os_00006])。
  • E_OS_NOFUNC:指定的调度表已处于停止状态([SWS_Os_00006])。
  • E_OS_ID:传入的标识符 ScheduleTableID 无效。根据规范,该返回值仅在 EXTENDED 状态下生成([SWS_Os_00006])。

该函数被定义为可重入([SWS_Os_00006])。Interpretation:鉴于其声明的可重入性,尽管当前规范摘录中缺少具体的上下文限制,但从多个 OS 上下文中进行同步调用应当是允许的。 问题 Q-9cb147c4bc7dba7e (未决)为了进行运行时监控,调度表等 OS 对象的状态和动态属性可通过 ARTI 描述文件传输至连接的调试与分析工具([SWS_Os_00829])。

注意:本说明基于 AUTOSAR Classic Release R20-11 规范自动生成。

实现者指南即将推出(复杂度 I2)

函数 NextScheduleTable [SWS_Os_00191] 📄 PDF

StatusType NextScheduleTable (ScheduleTableType ScheduleTableID_From, ScheduleTableType ScheduleTableID_To);

This service switches the processing from one schedule table to another schedule table.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: dfc067e72659 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 NextScheduleTable 用于将处理从正在运行的调度表同步切换到后续表 [SWS_Os_00191]。该服务设计为可重入,并在头文件 Os.h 中声明 [SWS_Os_00191]。

参数与调用

调用时需传入两个类型为 ScheduleTableType 的输入参数 [SWS_Os_00191]:

  • ScheduleTableID_From:当前正在处理的调度表的标识符 [SWS_Os_00191]。
  • ScheduleTableID_To:提供后续到期点序列(Expiry Points)的调度表的标识符 [SWS_Os_00191]。

返回值与错误处理

该函数返回类型为 StatusType 的状态值 [SWS_Os_00191]:

  • E_OK:切换请求已无误发出 [SWS_Os_00191]。
  • E_OS_ID:仅在配置了 EXTENDED 状态时返回(如果传入的表标识符中至少有一个无效)[SWS_Os_00191]。
  • E_OS_NOFUNC:源表 ScheduleTableID_From 未处于已启动状态 [SWS_Os_00191]。
  • E_OS_STATE:目标表 ScheduleTableID_To 已处于活动启动状态,或已预定为后续表 [SWS_Os_00191]。

交互与诊断

为了对操作系统进行观测与分析,ARTI 模块描述支持相应的 ORTI 容器,使调试工具能够据此评估并显示操作系统对象的动态状态等信息 [SWS_Os_00829]。

该文本自动生成。所有信息均完全基于 AUTOSAR Release R20-11 规范。

实现者指南即将推出(复杂度 I2)

函数 StartScheduleTableSynchron [SWS_Os_00201] 📄 PDF

StatusType StartScheduleTableSynchron (ScheduleTableType ScheduleTableID);

This service starts an explicitly synchronized schedule table synchronously.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 8edf7224d053 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

系统服务 StartScheduleTableSynchron 用于同步启动显式同步的调度表 [SWS_Os_00201]。该函数在头文件 Os.h 中声明,且拥有服务 ID 0x0b [SWS_Os_00201]。作为唯一的传入参数,该函数要求类型为 ScheduleTableType 的输入参数 ScheduleTableID,其唯一引用要启动的表 [SWS_Os_00201]。不存在输入/输出参数或纯输出参数 [SWS_Os_00201]。处理同步进行,并返回类型为 StatusType 的返回值 [SWS_Os_00201]。

错误处理

在无误流程中,函数调用返回状态码 E_OK [SWS_Os_00201]。发生错误时,规范了以下返回值:

  • E_OS_STATE:指定的调度表已处于启动状态,无法再次同步启动 [SWS_Os_00201]。
  • E_OS_ID:传入的 ScheduleTableID 无效 [SWS_Os_00201]。该错误检查和错误消息仅在 EXTENDED 状态下激活 [SWS_Os_00201]。

并发性与限制

该函数被规范为可重入 [SWS_Os_00201]。由于针对已处于活动状态的表重复调用会被 E_OS_STATE 拒绝,因此调用方必须确保目标表在调用前未在运行 [SWS_Os_00201]。

相互作用

操作系统对象的状态转换和动态特性可通过 ARTI 模块描述文件和 ORTI 容器供测试与诊断工具进行追踪 [SWS_Os_00829]。外部调试器利用这些描述在运行时评估 OS 对象的内部状态 [SWS_Os_00829]。

此文本由 AI 基于 AUTOSAR R20-11 规范生成。

实现者指南即将推出(复杂度 I2)

函数 SyncScheduleTable [SWS_Os_00199] 📄 PDF

StatusType SyncScheduleTable (ScheduleTableType ScheduleTableID, TickType Value);

Service SyncScheduleTable.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 50f85b0fc4ce 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的操作系统服务 SyncScheduleTable 用于向调度表传递计数器值并启动同步过程([SWS_Os_00199])。该函数通过头文件 Os.h 提供([SWS_Os_00199])。

参数与返回值

该函数需要两个输入参数([SWS_Os_00199]):

  • Schedule Table ID:类型为 ScheduleTableType 的要同步的调度表的标识符([SWS_Os_00199])。
  • Value:类型为 TickType 的同步计数器当前计数值([SWS_Os_00199])。

类型为 StatusType 的返回值通过 E_OK 表示执行无误([SWS_Os_00199])。

错误处理与边界条件

若在调用时表处于 SCHEDULETABLE_STOPPED 状态,则返回错误 E_OS_STATE([SWS_Os_00199])。若操作系统配置在 EXTENDED 状态下,则会执行进一步的检查([SWS_Os_00199]):

  • E_OS_ID:指定的表 ID 无效,或者由于 Os Schedule Tbl Sync Strategy 未配置或设置为 IMPLICIT 而导致表无法同步([SWS_Os_00199])。
  • E_OS_VALUE:传入的计数器值 Value 超出允许范围([SWS_Os_00199])。

交互与诊断

诸如调度表等操作系统对象的状态和动态属性,可通过 ARTI 模块描述和 ORTI 容器由连接的调试与诊断工具进行评估([SWS_Os_00829])。

本文由 AI 基于 AUTOSAR R20-11 生成。

实现者指南即将推出(复杂度 I2)

函数 SetScheduletableAsync [SWS_Os_00422] 📄 PDF

StatusType SetScheduletableAsync (ScheduleTableType ScheduleTableID);

This service stops synchronization of a schedule table.

函数 GetScheduleTableStatusof [SWS_Os_00227] 📄 PDF

StatusType GetScheduleTableStatus (ScheduleTableType ScheduleTableID, ScheduleTableStatusRefType ScheduleStatus);

This service queries the state of a schedule table (also with respect to synchronization).

函数 IncrementCounter [SWS_Os_00399] 📄 PDF

StatusType IncrementCounter (CounterType CounterID);

This service increments a software counter.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 40e8148ee79f 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步操作系统函数 IncrementCounter 用于显式推进软件计数器 [SWS_Os_00399]。它需要类型为 CounterType 的标识符 CounterID 作为输入参数,不修改其他参数,并可通过头文件 Os.h 获取 [SWS_Os_00399]。需要注意的是,该调用可能会导致操作系统立即重新调度 [SWS_Os_00399]。

错误处理

类型为 StatusType 的返回值指示操作是否成功:在常规运行情况下,E_OK 报告无错误执行 [SWS_Os_00399]。在激活扩展状态检查(EXTENDED 状态)时,若指定了无效的计数器 ID,或者引用的计数器在硬件中实现因而无法通过软件递增,该服务将返回 E_OS_ID [SWS_Os_00399]。

并发性与诊断

该函数设计为可重入,因此可以并发调用 [SWS_Os_00399]。可能出现的重新调度 Interpretation: 发生在推进计数器触发从属动作(如报警到期或任务激活)时。 问题 Q-9004b5ced9b96230 (未决)为了观察操作系统对象(如计数器)及其动态状态,ARTI 模块描述支持连接的分析工具进行运行时监控 [SWS_Os_00829]。

本使用说明为自动生成,基于 AUTOSAR 发行版 R20-11 的规范。

实现者指南即将推出(复杂度 I2)

函数 GetCounterValue [SWS_Os_00383] 📄 PDF

StatusType GetCounterValue (CounterType CounterID, TickRefType Value);

This service reads the current count value of a counte r (returning either the hardware timer ticks if counter is driven by hardware or the software ticks when user drives counter).

函数 GetElapsedValue [SWS_Os_00392] 📄 PDF

StatusType GetElapsedValue (CounterType CounterID, TickRefType Value, TickRefType ElapsedValue);

This service gets the number of ticks between the current tick value and a previously read tick value.

函数 TerminateApplication [SWS_Os_00258] 📄 PDF

StatusType TerminateApplication (ApplicationType Application, RestartType RestartOption);

Service TerminateApplication.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 2ba1bf6d0722 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的函数 TerminateApplication 用于终止 OS-Application,并通过头文件 Os.h 提供 [SWS_Os_00258]。允许从 Task、类别 2 ISR(Category 2 ISR)以及应用程序特定的 Error-Hook 的上下文中进行调用 [SWS_Os_00258]。

目标应用程序的标识符(Application)和重启行为(Restart Option)作为输入参数传入 [SWS_Os_00258]:

  • 如果调用方本身属于 Application 中指定的应用程序,则执行会导致自身终止 [SWS_Os_00258]。
  • 通过 Restart Option 确定 OS-Application 随后是否应重启(RESTART)或不重启(NO_RESTART)[SWS_Os_00258]。

该函数返回类型为 StatusType 的状态值 [SWS_Os_00258]:

  • E_OK 表示终止无误 [SWS_Os_00258]。
  • E_OS_STATE 指示 Application 的当前状态不允许终止 [SWS_Os_00258]。
  • 在 EXTENDED 状态下会执行额外的错误检查:应用程序 ID 无效时返回 E_OS_ID,Restart Option 的参数值无效时返回 E_OS_VALUE,以及若调用方缺少终止 Application 的权限则返回 E_OS_ACCESS [SWS_Os_00258]。

本使用说明基于 SWS_Os_00258 规范自动生成。

实现者指南即将推出(复杂度 I2)

函数 AllowAccess [SWS_Os_00501] 📄 PDF

StatusType AllowAccess (void);

This service sets the own state of an OS - Application from AP PLICATION_ RESTARTING to APPLICATION_ ACCESSIBLE.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 5da6dc1b3684 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步系统服务 AllowAccess(服务 ID 0x13)用于将自身 OS-Application 的状态从 APPLICATION_RESTARTING 设置为 APPLICATION_ACCESSIBLE([SWS_Os_00501])。该函数通过头文件 Os.h 提供,不需要传递参数,并返回类型为 StatusType 的状态值([SWS_Os_00501])。在状态更改成功执行时,调用返回返回值 E_OK([SWS_Os_00501])。

错误处理与并发

如果调用此函数的 OS-Application 未处于状态 APPLICATION_RESTARTING,则执行失败且函数返回错误值 E_OS_STATE([SWS_Os_00501])。规范中未为此服务定义特定的 DET 或 DEM 消息。关于并发行为,该函数被归类为可重入,因此可以在并行流程中安全执行([SWS_Os_00501])。

交互与诊断

Interpretation: 该调用通常应在应用程序自身的重启阶段结束时发生,即一旦所有准备工作完成且允许其他应用程序再次访问这些资源。 问题 Q-f43a3f702d5d2428 (未决)在系统诊断框架内,操作系统的动态状态及相关 OS 对象可以通过标准化的 ARTI 描述文件和关联的调试工具进行评估和可视化([SWS_Os_00829])。

该文本由 AI 创建,基于规范版本 R20-11。

实现者指南即将推出(复杂度 I1)

函数 GetNumberActivatedCores [SWS_Os_00672] 📄 PDF

uint32 GetNumberOfActivatedCores (void);

The function returns the number of cores activated by the Start Core function. This function might be a macro. AUTOSAR CP R20 - o f Document ID : AUTOSAR_SWS_OS

函数 StartCore [SWS_Os_00676] 📄 PDF

void StartCore (CoreIdType CoreID, StatusType* Status);

It is not supported to call this function after Start OS(). The function starts the core specified by the parameter Core ID. The OUT parameter allows the caller to check whether the operation was successful or no t. If a core is started by means of this function Start OS shall be called on the core.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 06b25350e939 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 StartCore 启动通过参数 Core ID 指定的处理器核心 [SWS_Os_00676]。该函数没有直接返回值,而是通过 OUT 参数 Status 将执行结果传递给调用方 [SWS_Os_00676]。若某个核心已通过此函数启动,则必须随后在该相关核心上调用 Start OS [SWS_Os_00676]。

对于调用上下文以及并发性存在固定限制:StartCore 被规范为不可重入(Non Reentrant)[SWS_Os_00676]。不支持在通过 Start OS() 启动操作系统之后进行调用 [SWS_Os_00676]。该服务采用同步实现,并通过带有服务 ID 0x17 的头文件 Os.h 提供 [SWS_Os_00676]。

错误处理通过参数 Status 进行,根据状态配置,该参数可取以下值 [SWS_Os_00676]:

  • 在标准状态下,E_OK 表示无误执行 [SWS_Os_00676]。
  • 在扩展状态(extended status)下,E_OK 同样确认启动成功 [SWS_Os_00676]。
  • E_OS_ID 报告传入的 Core ID 无效 [SWS_Os_00676]。
  • E_OS_ACCESS 表示在操作系统启动后发生了不允许的调用 [SWS_Os_00676]。
  • E_OS_STATE 指示请求的处理器内核已激活 [SWS_Os_00676]。

本使用说明由 AI 生成,且完全基于 R20-11 版本的 AUTOSAR Classic 操作系统规范。

实现者指南即将推出(复杂度 I2)

函数 StartNonCore [SWS_Os_00682] 📄 PDF

void StartNonAutosarCore (CoreIdType CoreID, StatusType* Status);

The function start s the core specified by the parameter Core ID. It is allowed to call this function after Start OS(). The OUT parameter allows the caller to check whether the operation was successful or not. It is not allowed to call Start OS on cores activated by Start No n Autosar Core. Otherwise the behaviour is unspecified.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 4541cad4d0e6 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

同步且不可重入的函数 StartNonCore 启动通过参数 CoreID 指定的处理器核 [SWS_Os_00682]。允许在通过 StartOS() 启动操作系统后调用它,且该函数可通过头文件 Os.h 获取 [SWS_Os_00682]。通过输出参数 Status,调用者可以检查启动过程是否成功 [SWS_Os_00682]。

错误处理与状态值

该函数没有直接返回值,但通过指针参数 Status 返回执行结果 [SWS_Os_00682]:

  • E_OK:操作成功且无误地执行 [SWS_Os_00682]。
  • E_OS_ID:指定的 CoreID 无效(在标准状态下)[SWS_Os_00682]。
  • E_OS_STATE:指定的处理器核已被激活(在标准状态下)[SWS_Os_00682]。

限制与时序顺序条件

作为不可重入接口,StartNonCore 不得并发执行 [SWS_Os_00682]。此外还存在严格规定,在通过该函数激活的处理器核上绝不得调用 StartOS;否则系统行为是未定义的 [SWS_Os_00682]。

此使用说明基于 AUTOSAR Classic R20-11 规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 GetSpinlock [SWS_Os_00686] 📄 PDF

StatusType GetSpinlock (SpinlockIdType SpinlockId);

Get Spinlock tries to occupy a spin - lock variable. If the function returns, either the lock is successfully taken or an error has occurred. The spinlock mechanism is an active polling mechanism. The function does not cause a de - scheduling.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: aaf2a4bc7e29 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的操作系统函数 GetSpinlock([SWS_Os_00686])用于通过传入参数 SpinlockId(类型 SpinlockIdType)占用自旋锁变量。在执行时,该函数采用主动轮询机制(“busy waiting”),而不会触发调用任务的重调度([SWS_Os_00686])。

该函数仅在成功获取锁或发生错误时才会返回。GetSpinlock 的返回值提供 StatusType([SWS_Os_00686]):

  • E_OK:已无误地占用锁(在标准状态和扩展状态下)。
  • E_OS_ID:传入的 SpinlockId 无效(仅在扩展状态下)。
  • E_OS_INTERFERENCE_DEADLOCK:一个 TASK 尝试获取自旋锁,而该自旋锁已被同一 Core 上的一个 TASK 占用(仅在扩展状态下)。
  • E_OS_NESTING_DEADLOCK:任务尝试请求自旋锁,而同一内核上的任务已持有另一个自旋锁,这可能会导致死锁(仅在扩展状态下)。
  • E_OS_ACCESS:无法访问指定的自旋锁(仅在扩展状态下)。

在系统监视和错误分析的框架下,操作系统提供有关 OS 对象的动态状态信息,根据 [SWS_Os_00829],这些信息可通过 ARTI 和 ORTI 容器供调试工具评估;推测也能据此重现自旋锁的阻塞情况。 问题 Q-bac194d4132f6e88 (未决)

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I2)

函数 ReleaseSpinlock [SWS_Os_00695] 📄 PDF

StatusType ReleaseSpinlock (SpinlockIdType SpinlockId);

Release Spinlock releases a spinlock variable that was occupied before. Before terminating a TASK all spinlock variables that have been occupied with Get Spinlock() shall be released. Before calling Wait EVENT all Spinlocks shall be released.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 3c94a21733b1 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的函数 ReleaseSpinlock 用于释放先前占用的自旋锁变量([SWS_Os_00695])。通过类型为 SpinlockIdType 的传入参数 SpinlockId 指定要释放的自旋锁实例([SWS_Os_00695])。

顺序条件与限制

调用时须遵循严格的时序和结构规范([SWS_Os_00695]):

  • 在终止任务之前,必须将所有先前通过 GetSpinlock() 占用的自旋锁变量重新释放([SWS_Os_00695])。
  • 在调用 WaitEvent 之前,必须无例外地释放所有持有的自旋锁([SWS_Os_00695])。
  • 释放必须按正确的嵌套顺序进行;若上层自旋锁或资源仍处于占用状态,释放尝试将失败([SWS_Os_00695])。

返回值与错误处理

在成功的情况下,该服务在标准状态和扩展状态下均返回 E_OK([SWS_Os_00695])。在扩展状态(Extended Status)下定义了特定的错误码([SWS_Os_00695]):

  • E_OS_ID:传入的 SpinlockId 无效([SWS_Os_00695])。
  • E_OS_STATE:自旋锁未被调用任务占用([SWS_Os_00695])。
  • E_OS_ACCESS:无法访问自旋锁([SWS_Os_00695])。
  • E_OS_NOFUNC:尝试释放自旋锁,但此前仍必须先释放另一个自旋锁或资源([SWS_Os_00695])。

该函数通过头文件 Os.h 提供([SWS_Os_00695])。ARTI 描述文件支持用于操作系统对象动态状态与性能评估的 ORTI 容器([SWS_Os_00829])。

本文由 AI 创建,并由 autodocs 整理策展。

实现者指南即将推出(复杂度 I2)

函数 TryToGetSpinlock [SWS_Os_00703] 📄 PDF

StatusType TryToGetSpinlock (SpinlockIdType SpinlockId, TryToGetSpinlockType* Success);

Try To Get Spinlock has the same functionality as Get Spinlock with the difference that if the spinlock is already occupied by a TASK on a d ifferent core the function sets the OUT parameter "Success" and returns with E_ OK.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 1d98a899f332 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的操作系统函数 TryToGetSpinlock 用于通过头文件 Os.h [SWS_Os_00703] 以非阻塞方式占用自旋锁实例。它承担与 GetSpinlock 相同的基础功能,但若所请求的自旋锁已被另一个 Core 上的 TASK 占用,则它不会主动等待 [SWS_Os_00703]。

参数与返回值

  • SpinlockId(输入):引用要锁定的具体自旋锁实例 [SWS_Os_00703]。
  • Success(输出):通过类型 TryToGetSpinlockType* 指示锁是否能够被占用 [SWS_Os_00703]。若该锁在另一个 Core 上被占用,该函数会相应设置此参数并返回 E_OK [SWS_Os_00703]。
  • 返回值:在无错误发生时,在标准状态和扩展状态下返回 E_OK [SWS_Os_00703]。

错误处理与边界条件

在扩展状态下,操作系统会检查无效调用以及死锁场景 [SWS_Os_00703]:

  • E_OS_ID:传入的 SpinlockId 无效 [SWS_Os_00703]。
  • E_OS_ACCESS:无法访问自旋锁 [SWS_Os_00703]。
  • E_OS_INTERFERENCE_DEADLOCK:一个 TASK 尝试占用锁,而同一锁已被同一 Core 上的一个 TASK 持有 [SWS_Os_00703]。
  • E_OS_NESTING_DEADLOCK:TASK 尝试占用自旋锁,而其已持有另一个自旋锁,这可能导致死锁 [SWS_Os_00703]。

本使用说明由 AI 系统基于 AUTOSAR R20-11 规范自动生成。

实现者指南即将推出(复杂度 I2)

函数 ShutdownAllCores [SWS_Os_00713] 📄 PDF

void ShutdownAllCores (StatusType Error);

After this service the OS on all AUTOSAR cores is shut down. Allowed at TASK level and ISR level and also internally by the OS. The function will never return. The function will force other cores into a shutdown.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 751c4aeab334 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

具有服务 ID 0x1c 的同步系统函数 ShutdownAllCores 用于在所有现有处理器核上受控且完整地关闭 AUTOSAR 操作系统([SWS_Os_00713])。一旦调用该服务,该函数会在所有其他 Core 上强制执行关闭,从而使 AUTOSAR 操作系统在所有 AUTOSAR 核上关闭([SWS_Os_00713])。

调用上下文与并发性

该函数在头文件 Os.h 中声明并被指定为可重入([SWS_Os_00713])。在任务级别(TASK level)以及在中断级别(ISR level)调用 ShutdownAllCores 均不受限制地允许([SWS_Os_00713])。此外,该服务也可以由 AUTOSAR OS 直接在操作系统内部执行([SWS_Os_00713])。

参数与控制流

该接口仅需要一个类型为 StatusType 的输入参数 Error([SWS_Os_00713])。对于该参数,必须传递由 AUTOSAR 操作系统支持的有效错误代码([SWS_Os_00713])。不存在输出或输入/输出参数([SWS_Os_00713])。由于该函数在触发全系统关闭后绝不会返回调用者,因此它没有返回值(void)([SWS_Os_00713])。

本使用说明是基于 AUTOSAR R20-11 的规范自动生成的。

实现者指南即将推出(复杂度 I2)

函数 ControlIdle [SWS_Os_00769] 📄 PDF

StatusType ControlIdle (CoreIdType CoreID, IdleModeType IdleMode);

This API allows the caller to select the idle mode action which is performed during idle time of t he OS (e.g. if no Task/ ISR is active). It can be used to implement energy savings. The real idle modes are hardware dependent and not standardized. The default idle mode on each core is IDLE_ NO_ HALT.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 33a045f6c446 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 ControlIdle 允许调用方确定在操作系统空闲时间(即任务和 ISR 均未处于活动状态时)执行的动作 [SWS_Os_00769]。这主要用于实现节能措施。实际的空闲模式取决于硬件且未标准化;每个处理器内核上的默认模式为 IDLE_NO_HALT [SWS_Os_00769]。该接口通过头文件 Os.h 提供 [SWS_Os_00769]。

该函数期待两个输入参数:

  • CoreID(类型为 CoreIdType):选择要设置空闲模式的处理器内核 [SWS_Os_00769]。
  • IdleMode(类型为 IdleModeType):确定要在空闲时间执行的模式 [SWS_Os_00769]。

如果传入了有效参数且未发生错误,该函数返回 E_OK [SWS_Os_00769], [SWS_Os_00770]。若指定的 CoreID 或 IdleMode 无效——例如因为引用的内核不存在或模式未知——则在 EXTENDED 状态下的调用将返回错误码 E_OS_ID [SWS_Os_00769], [SWS_Os_00771]。在单核系统上,将略过对参数 CoreID 的检查 [SWS_Os_00771]。

关于并发性,该函数被指定为不可重入(Non Reentrant)[SWS_Os_00769]。解释:因此调用方必须确保来自不同执行上下文的 ControlIdle 调用不会同时发生或未经协调地进行。 问题 Q-7f239cb54752e826 (未决)

本使用说明由 AI 基于 AUTOSAR Classic R20-11 规范生成。

实现者指南即将推出(复杂度 I1)

函数 ReadPeripheral [SWS_Os_91013] 📄 PDF

StatusType ReadPeripheral8 (AreaIdType Area, const uint8* Address, uint8* ReadValue);

This service returns the content of a given memory location (

).
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 00b6c6a1dbf2 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

函数 ReadPeripheral(在声明中列为 ReadPeripheral8)用于同步读取已定义硬件外设区域内的内存地址 [SWS_Os_91013]。该接口通过头文件 Os.h 可用 [SWS_Os_91013]。作为输入参数,该服务需要类型为 AreaIdType 的区域引用 Area 以及作为指向 const uint8 的指针的目标地址 Address [SWS_Os_91013]。读取出的内存单元内容通过输出参数 ReadValue 提供 [SWS_Os_91013]。

错误处理

该服务返回类型为 StatusType 的状态码,其中 E_OK 指示执行无误 [SWS_Os_91013]。当激活扩展状态检查(EXTENDED status)时,错误的调用会根据特定的错误值进行区分 [SWS_Os_91013]:

并发性与限制

该 API 服务具有服务 ID 0x28,以同步方式工作并设计为可重入 [SWS_Os_91013]。仅允许在合法的 Task 或 ISR 上下文中调用;在扩展状态下,不合法的调用将被拒绝并返回 E_OS_CALLEVEL [SWS_Os_91013]。

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

函数 ReadPeripheral16 [SWS_Os_91015] 📄 PDF

StatusType ReadPeripheral16 (AreaIdType Area, const uint16* Address, uint16* ReadValue);

This service returns the content of a given memory location (

).
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 5ae7289a82af 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的操作系统函数 ReadPeripheral16 用于读取已定义外设区域内指定内存地址的 16 位值 [SWS_Os_91015]。该系统服务在服务 ID 0x29 下定义,并通过头文件 Os.h 可用 [SWS_Os_91015]。

用法与参数

作为输入参数,硬件外设区域的引用(类型为 AreaIdType 的 Area)以及内存中的目标地址(类型为 const uint16* 的 Address)被传递给该服务 [SWS_Os_91015]。在内存地址处获取的 16 位内容通过指针类型 uint16* 的输出参数 Read Value 提供 [SWS_Os_91015]。执行无误时,该函数返回类型为 StatusType 的返回值 E_OK [SWS_Os_91015]。

错误处理与访问限制

在扩展状态(EXTENDED status)下,操作系统会检查调用的有效性,并通过特定的状态码报告错误 [SWS_Os_91015]:

  • E_OS_ID:传入的区域标识符 Area 超出有效范围 [SWS_Os_91015]。
  • E_OS_VALUE:指定的内存地址 Address 不属于指定的外设区域 Area [SWS_Os_91015]。
  • E_OS_CALLEVEL:调用发生在对该 API 函数而言不允许的上下文中 [SWS_Os_91015]。
  • E_OS_ACCESS:调用任务或中断服务例程(ISR)无权访问指定的区域 [SWS_Os_91015]。

本使用说明自动生成,且仅基于 AUTOSAR Classic R20-11 规范的要求。

实现者指南即将推出(复杂度 I1)

函数 ReadPeripheral32 [SWS_Os_91014] 📄 PDF

StatusType ReadPeripheral32 (AreaIdType Area, const uint32* Address, uint32* ReadValue);

This service returns the content of a given memory location (

).
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: a9f5d6c77f15 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步且可重入的函数 ReadPeripheral32 读取指定内存地址的内容([SWS_Os_91014])。调用者通过参数 Area 传递对硬件外设区域的引用,并通过 Address 传递所需的内存地址([SWS_Os_91014])。在该地址读取出的 32 位值通过输出参数 ReadValue 同步提供([SWS_Os_91014])。该接口通过头文件 Os.h 提供([SWS_Os_91014])。

错误处理

该服务返回类型为 StatusType 的状态值。执行无误时,它返回 E_OK([SWS_Os_91014])。如果配置了扩展状态(EXTENDED status),则返回以下错误代码([SWS_Os_91014]):

并发性与限制

ReadPeripheral32 被指定为可重入的,可由多个控制流并发调用([SWS_Os_91014])。由于该服务以同步方式工作,因此调用仅在读取过程完成后才返回([SWS_Os_91014])。调用者必须传递有效的内存指针,并确保调用来自 OS-API 允许的上下文([SWS_Os_91014])。

本段文本由 AI 创建,完全基于 Release R20-11 的规范。

实现者指南即将推出(复杂度 I1)

函数 WritePeripheral [SWS_Os_91010] 📄 PDF

StatusType WritePeripheral8 (AreaIdType Area, uint8* Address, uint8 WriteValue);

This service writes the to a given memory location (). Available vi a Os.h

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 4e0ec4ae51d7 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

函数 WritePeripheral(在规范中也称为 Write Peripheral8)是操作系统的同步且可重入服务,用于将一个值写入外设区域的指定内存地址 [SWS_Os_91010]。其声明通过头文件 Os.h 提供 [SWS_Os_91010]。该调用需要以下参数:对硬件外设区域的引用(类型为 AreaIdType 的 Area)、内存地址(类型为 uint8* 的 Address)以及要写入的值(类型为 uint8 的 Write Value)[SWS_Os_91010]。Interpretation:尽管 Write Value 在规范文本中以表格形式列在输出参数下,但根据签名中的值传递方式和描述,它推测是待写入的输入值。 问题 Q-619c69ba7a85ed92 (未决)

错误处理

该函数返回类型为 StatusType 的状态 [SWS_Os_91010]:

  • E_OK:写操作已正确执行 [SWS_Os_91010]。
  • E_OS_ID:传入的区域 ID 超出有效范围(在扩展状态下)[SWS_Os_91010]。
  • E_OS_VALUE:目标地址不属于指定的区域(在扩展状态下)[SWS_Os_91010]。
  • E_OS_CALLEVEL:API 函数的调用上下文不允许(在扩展状态下)[SWS_Os_91010]。
  • E_OS_ACCESS:调用任务或 ISR 对该区域没有访问权限 [SWS_Os_91010]。

并发性与限制

该调用同步处理且可重入 [SWS_Os_91010]。调用者必须确保执行的任务或 ISR 在有效的上下文中运行,并对所寻址的外设区域具有必要的访问权限 [SWS_Os_91010]。

本文本由自动生成。所有陈述均基于所引用的 AUTOSAR 规范。

实现者指南即将推出(复杂度 I1)

函数 WritePeripheral16 [SWS_Os_91012] 📄 PDF

StatusType WritePeripheral16 (AreaIdType Area, uint16* Address, uint16 WriteValue);

This service writes the to a given memory location (). Available vi a Os.h

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 4e4afea6b230 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的操作系统函数 WritePeripheral16 ([SWS_Os_91012]) 用于将一个 16 位值写入外设区域的内存地址。该服务通过头文件 Os.h 提供,且具有服务 ID 0x2c。

用法与参数

根据 [SWS_Os_91012],调用 WritePeripheral16 时,调用者传递目标硬件区域的标识符(类型为 AreaIdType 的 Area)、目标地址(类型为 uint16* 的 Address)以及要写入的值(类型为 uint16 的 Write Value,尽管在表格中被列为 Out 参数,但在签名中推测用于按值传递)。 问题 Q-2edc50ae2e7fd0b0 (未决)该服务同步执行,并返回类型为 StatusType 的状态值。

错误处理

成功时,该函数返回 E_OK。在状态 EXTENDED 下指定了以下错误代码([SWS_Os_91012]):

  • E_OS_ID:传入的区域标识符(Area)超出有效范围。
  • E_OS_VALUE:目标地址(Address)不属于指定的外设区域。
  • E_OS_CALLEVEL:函数从不允许的上下文中调用。
  • E_OS_ACCESS:调用任务或 ISR 推测没有访问指定区域的权限。 问题 (未决)

限制与交互

该函数是可重入的([SWS_Os_91012]),但需要遵守允许的调用上下文(Task 或 ISR),以避免诸如 E_OS_CALLEVEL 之类的错误状态。为了监控和分析操作系统对象,AUTOSAR 规定提供 ARTI 描述文件([SWS_Os_00829])。

本使用说明自动生成,并仅基于 AUTOSAR 版本 R20-11 的规范数据。

实现者指南即将推出(复杂度 I1)

函数 WritePeripheral32 [SWS_Os_91011] 📄 PDF

StatusType WritePeripheral32 (AreaIdType Area, uint32* Address, uint32 WriteValue);

This service writes the to a given memory location ().

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: a189c9cd92b9 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

来自模块 Os 的同步且可重入函数 WritePeripheral32 用于将一个 32 位值写入外设区域的指定内存地址 [SWS_Os_91011]。该服务可通过头文件 Os.h 使用,且具有服务 ID 0x2d [SWS_Os_91011]。

参数与调用

为了执行写访问,该函数需要三个传入参数 [SWS_Os_91011]:

  • Area (AreaIdType):对目标硬件外设区域的引用 [SWS_Os_91011]。
  • Address (uint32*):应向其写入该值的内存地址 [SWS_Os_91011]。
  • Write Value (uint32):传输到目标地址的具体 32 位值 [SWS_Os_91011]。

返回值与错误处理

该调用返回类型为 StatusType 的状态值 [SWS_Os_91011]。成功时报告 E_OK [SWS_Os_91011]。当 EXTENDED 状态激活时,E_OS_ID 指示区域 ID 无效,E_OS_VALUE 指示地址不属于该区域,E_OS_CALLEVEL 指示调用上下文不允许 [SWS_Os_91011]。如果调用任务或 ISR 对该区域没有访问权限,则返回 E_OS_ACCESS [SWS_Os_91011]。

并发性

由于 WritePeripheral32 是可重入的,只要各调用者在运行时具有所需的访问权限,该服务便可用于并发执行上下文中 [SWS_Os_91011]。

本使用说明基于 AUTOSAR Classic R20-11 规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 ModifyPeripheral [SWS_Os_91016] 📄 PDF

StatusType ModifyPeripheral8 (AreaIdType Area, uint8* Address, uint8 Clearmask, uint8 Setmask);

This service modifies a given memory location () with the formula: *

= ((*
& ) | )

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 031e78e21a3e 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

同步且可重入的操作系统函数 ModifyPeripheral8 ([SWS_Os_91016]) 修改指定内存地址处的字节 Address。在此过程中,根据公式 *Address = ((*Address & Clearmask) | Setmask),现有内存内容通过掩码 Clearmask 进行按位与运算,并通过掩码 Setmask 进行按位或运算来更新([SWS_Os_91016])。作为输入参数,该函数需要类型为 AreaIdType 的外设区域引用 Area、目标地址 Address(类型 uint8*)以及类型为 uint8 的两个掩码值。该函数通过头文件 Os.h 提供,且具有服务 ID 0x2e ([SWS_Os_91016])。

错误处理与返回值

类型为 StatusType 的返回值用 E_OK 指示操作成功([SWS_Os_91016])。在启用 Extended 状态时,可能会出现特定的错误条件:

  • E_OS_ID:传入的区域标识符 Area 超出允许的范围([SWS_Os_91016])。
  • E_OS_VALUE:目标地址 Address 不属于指定的区域 Area ([SWS_Os_91016])。
  • E_OS_CALLEVEL:该服务在不允许的调用上下文中被调用([SWS_Os_91016])。
  • E_OS_ACCESS:调用任务或 ISR 对目标区域没有访问权限([SWS_Os_91016])。

并发性与调用条件

由于 ModifyPeripheral8 被指定为可重入,因此该调用可以安全地在并发执行流程中进行([SWS_Os_91016])。调用者必须确保上下文以及针对 Area 和 Address 的访问权限均有效,以避免错误状态([SWS_Os_91016])。

此文本由 AI 基于 AUTOSAR CP R20-11 规范生成。

实现者指南即将推出(复杂度 I1)

函数 ModifyPeripheral16 [SWS_Os_91018] 📄 PDF

StatusType ModifyPeripheral16 (AreaIdType Area, uint16* Address, uint16 Clearmask, uint16 Setmask);

This service modifies a given memory location () with the formula: *

= ((*
& ) | )

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: f22ffe272912 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入函数 ModifyPeripheral16 根据计算公式 *Address = ((*Address & Clearmask) | Setmask) 修改已定义外设区域内的 16 位内存单元 [SWS_Os_91018]。作为参数传递的有外设区域引用 Area(类型 AreaIdType)、目标地址 Address(类型 uint16*)以及用于按位与的位掩码 Clearmask 和用于按位或的位掩码 Setmask [SWS_Os_91018]。该声明通过头文件 Os.h 可用 [SWS_Os_91018]。

在常规成功情况下,该服务返回返回值 E_OK [SWS_Os_91018]。当激活扩展状态检查(EXTENDED status)时,错误的调用会根据特定错误代码被识别并拒绝 [SWS_Os_91018]:

  • E_OS_ID:传入的区域标识符 Area 超出有效值范围 [SWS_Os_91018]。
  • E_OS_VALUE:传入的内存地址 Address 不属于指定的区域 Area [SWS_Os_91018]。
  • E_OS_CALLEVEL:该服务从不允许的上下文调用 [SWS_Os_91018]。
  • E_OS_ACCESS:调用任务或调用 ISR 对指定区域没有访问权限 [SWS_Os_91018]。

调用者在执行前必须确保上下文和对所引用区域的权限均具备,以避免访问冲突 [SWS_Os_91018]。

此文本由 AI 基于 AUTOSAR CP R20-11 规范生成。

实现者指南即将推出(复杂度 I1)

函数 ModifyPeripheral32 [SWS_Os_91017] 📄 PDF

StatusType ModifyPeripheral32 (AreaIdType Area, uint32* Address, uint32 Clearmask, uint32 Setmask);

This service modifies a given memory location () with the formula: *

= ((*
& ) | )

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: c9ed5f9b2fff 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

根据 [SWS_Os_91017],同步且可重入的操作系统函数 ModifyPeripheral32 用于对 32 位内存地址进行针对性的按位操作。该函数通过接口 Os.h 提供,对目标地址 Address 应用固定的计算公式 *Address = ((*Address & Clearmask) | Setmask)。在此过程中,首先通过位掩码 Clearmask 进行按位与来复位位,随后通过 Setmask 进行按位或来置位。

作为输入参数,该服务需要外设区域引用 Area、地址指针 Address 以及两个 32 位掩码 [SWS_Os_91017]。执行无误时,返回状态码 E_OK。在扩展状态(EXTENDED status)下,该函数执行合理性检查并报告以下错误代码:

只要保持调用上下文,得益于可重入性,并发调用是允许的 [SWS_Os_91017]。在整个系统中,这种直接的寄存器修改有别于用于动态数据确定的计算公式,后者例如在根据 [SWS_Os_00829] 的 ARTI 调试信息范围内被评估。

此文本由 AI 基于 AUTOSAR CP R20-11 规范生成。

实现者指南即将推出(复杂度 I1)

函数 EnableInterruptSource [SWS_Os_91020] 📄 PDF

StatusType EnableInterruptSource (ISRType ISRID, boolean ClearPending);

Service EnableInterruptSource.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 0e3279bf544b 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的系统函数 EnableInterruptSource 通过修改中断控制器的寄存器来启用中断源 [SWS_Os_91020], [SWS_Os_00811]。操作系统为每个配置的第 2 类中断源提供该服务 [SWS_Os_00808]。

参数与调用

通过参数 ISRID 传递第 2 类 ISR 的标识符 [SWS_Os_91020]。布尔参数 ClearPending 确定在激活时是清除挂起的中断标志(TRUE)还是保持不变(FALSE)[SWS_Os_91020], [SWS_Os_00811]。该函数通过头文件 Os.h 提供 [SWS_Os_91020]。

错误处理与返回值

如果未检测到错误,该调用返回 E_OK [SWS_Os_91020], [SWS_Os_00810]。若操作系统检测到错误,则返回类型为 StatusType 的相应状态码并调用 ErrorHook() [SWS_Os_00810]。定义了以下错误状态:

  • E_OS_ID:参数 ISRID 不是有效的第 2 类 ISR 标识符(在状态 EXTENDED 下)[SWS_Os_91020]。
  • E_OS_CALLEVEL:该函数是从不允许的调用上下文中调用的(在状态 EXTENDED 下)[SWS_Os_91020]。
  • E_OS_ACCESS:在 Service Protection 框架下,调用方应用程序不是指定的 ISRID 的所有者 [SWS_Os_91020]。

相互作用

该函数与 DisableInterruptSource 以及 ClearPendingInterrupt 共同构成操作系统中用于有针对性地控制单个第 2 类中断源(OsIsrCategory == CATEGORY_2)的 API 三元组 [SWS_Os_00808], [SWS_Os_00810]。

本文根据 R20-11 版本的规范自动生成。

实现者指南即将推出(复杂度 I2)

函数 DisableInterruptSource [SWS_Os_91019] 📄 PDF

StatusType DisableInterruptSource (ISRType ISRID);

Disables the interrupt source by modifying the interrupt controller registers.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: c278819b07d9 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步且可重入的函数 DisableInterruptSource 直接通过中断控制器的寄存器禁用特定的中断源 [SWS_Os_91019], [SWS_Os_00812]。它通过头文件 Os.h 提供,并为每个第 2 类中断源(OsIsrCategory == CATEGORY_2)提供 [SWS_Os_91019], [SWS_Os_00808]。作为参数传入相关 ISR 的标识符(ISRID)。执行成功时,该服务返回 E_OK [SWS_Os_91019], [SWS_Os_00810]。

错误处理

若操作系统在执行期间检测到错误,将返回相应的 StatusType 并调用 ErrorHook() [SWS_Os_00810]。可能的错误码为:

  • E_OS_ID:传入的 ISRID 不是有效的第 2 类 ISR 标识符(在 EXTENDED 状态下)[SWS_Os_91019]。
  • E_OS_CALLEVEL:API 函数的调用上下文不允许(在 EXTENDED 状态下)[SWS_Os_91019]。
  • E_OS_ACCESS:调用方 OS-Application 不是指定 ISR 的所有者(Service Protection)[SWS_Os_91019]。
  • E_OS_NOFUNC:请求的中断源已被禁用(嵌套调用时在 EXTENDED 状态下)[SWS_Os_00809]。

交互与约束条件

该函数与 EnableInterruptSource 以及 ClearPendingInterrupt 共同组成用于控制第 2 类中断源的 API 三元组 [SWS_Os_00808]。在扩展状态下,并发或重复调用通过返回 E_OS_NOFUNC 来确保安全,从而使多余的禁用保持可控 [SWS_Os_00809]。此外,调用方必须具备相应的访问权限,以防止由 Service Protection 引起的运行时错误 [SWS_Os_91019]。

此使用说明基于AUTOSAR规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 ClearPendingInterrupt [SWS_Os_91021] 📄 PDF

StatusType ClearPendingInterrupt (ISRType ISRID);

Service ClearPendingInterrupt.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: bf5abba4980e 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

函数 ClearPendingInterrupt 用于复位第 2 类源的挂起中断 [SWS_Os_00808]。它仅接收第 2 类 ISR 的标识符 ISRID 作为输入参数,并直接修改中断控制器的关联寄存器 [SWS_Os_91021], [SWS_Os_00813]。该调用被同步处理,并通过头文件 Os.h 提供 [SWS_Os_91021]。

错误处理与返回值

在无错误的情况下,返回状态码 E_OK [SWS_Os_91021]。若操作系统在执行期间检测到错误,该服务将返回类型为 StatusType 的相应错误码,并强制调用 ErrorHook() [SWS_Os_00810]。为该接口指定了以下错误状态 [SWS_Os_91021]:

  • E_OS_ID:传入的参数 ISRID 不是有效的第 2 类 ISR 标识符(在状态 EXTENDED 下返回)[SWS_Os_91021]。
  • E_OS_CALLEVEL:该函数是从不允许的调用上下文中调用的(在状态 EXTENDED 下返回)[SWS_Os_91021]。
  • E_OS_ACCESS:在 Service Protection 框架下,调用方应用程序未被授权为传入 ISR 的所有者 [SWS_Os_91021]。

操作系统中的并发性与协作

该接口被定义为可重入,因此可以安全地并发调用 [SWS_Os_91021]。操作系统将 ClearPendingInterrupt 作为控制 API 的固定组成部分为每个第 2 类中断源(OsIsrCategory == CATEGORY_2)提供,这些 API 还包括 DisableInterruptSource 和 EnableInterruptSource [SWS_Os_00808]。

此文本由 AI 基于 AUTOSAR 规范生成。

实现者指南即将推出(复杂度 I2)

函数 ActivateTaskAsyn [SWS_Os_91022] 📄 PDF

void ActivateTaskAsyn (TaskType id);

Asynchronous version of the Activate Task() function. Intended to be used for cross core task activation. Possible errors are not returned to the caller, but may be reported via error hooks.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 6cc8f60dfafe 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 ActivateTaskAsyn(服务 ID 0x33)代表任务激活的异步变体,并通过头文件 Os.h 提供([SWS_Os_91022])。它主要用于多核系统中的跨核任务激活([SWS_Os_91022])。

作为唯一的输入参数,传递类型为 TaskType 的 id,用于指定要激活的任务([SWS_Os_91022])。该接口没有返回值(void),并且既未定义输入/输出参数,也未定义纯输出参数([SWS_Os_91022])。

激活时可能出现的错误不会反馈给调用者([SWS_Os_91022]、[SWS_Os_00816])。相反,若配置了全局错误钩子(Error Hook),发生的错误将仅通过该钩子报告([SWS_Os_00816])。

关于并发性,该函数是可重入的且完全异步工作([SWS_Os_91022]),因此调用上下文不会阻塞等待执行。操作系统有义务根据 [SWS_Os_00816] 提供该接口。

本使用说明由 AI 基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

函数 SetEventAsyn [SWS_Os_91023] 📄 PDF

void SetEventAsyn (TaskType id, EventMaskType m);

Asynchronous version of the Set Event() function. Intended to be used for cross core event setting. Possible errors are not returned to the caller, but may be reported via error hooks.

函数 Ioc [SWS_Os_91026] 📄 PDF

void IocInit (void);

This service initializes the data structures of the IOC. Tags: atp.Status=draft

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 50632b8f91d3 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用与工作原理

函数 Ioc Init(在 Release R20-11 中标记为草案)初始化 OS 应用程序间通信(IOC)的内部数据结构 [SWS_Os_91026]。该调用同步进行,不接受传入参数,也没有返回值 [SWS_Os_91026]。如果操作系统生成器在“IOC mode”下运行,则它仅在源文件 Ioc.c 中生成 IOC 代码,并在头文件 Ioc.h [SWS_Os_00834] 中声明相关接口,Ioc Init 也通过该头文件提供 [SWS_Os_91026]。

错误处理与并发

在规范中,未为 Ioc Init 规定特定的错误返回值,也未规定向 DET 或 DEM 报告错误消息 [SWS_Os_91026]。该服务被明确定义为不可重入(Non Reentrant)[SWS_Os_91026]。Interpretation:由于缺少可重入性以及初始化的任务,该服务推测必须在系统启动阶段按顺序调用,然后才能进行并发通信访问。 问题 Q-47f99a4725b57c89 (未决)

与 IOC 通信函数的交互

数据结构的正确初始化构成了使用所生成的 IOC 通信接口的前提条件:

本段文本由 AI 创建,完全基于 Release R20-11 的规范。

实现者指南即将推出(复杂度 I1)

函数 <ReceiverPullCB> [SWS_Os_00757] 📄 PDF

void <ReceiverPullCB> (void);

This callback function can be configured for the receiver of a communication. If configured, IOC calls this callback on the receiving core for each data reception. is the callback function name configured by the receiver in the Os Ioc Re ceiver Pull CB attribute to be called on data reception."

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: fe12c77b2732 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

回调函数 <Receiver Pull CB> 可选择性地为通信的接收方配置,并通过头文件 Os.h 声明 [SWS_Os_00757]。若配置了此回调,IOC(Inter-OS-Application Communicator)在每次接收数据时,都会在接收 Core 上同步调用该函数 [SWS_Os_00757]。回调函数的具体标识符在接收方通过配置属性 OsIocReceiverPullCB 确定 [SWS_Os_00757]。

对于调用和接口特性,适用以下规定:

  • 函数签名与参数:该函数具有原型 void <Receiver Pull CB> ( void );它不接收任何参数(既无输入、输入输出参数,也无输出参数),并且没有返回值 [SWS_Os_00757]。
  • 同步性与可重入性:IOC 的调用直接在接收方内核上以同步语义执行 [SWS_Os_00757]。此外,该回调函数被指定为可重入 [SWS_Os_00757]。
  • 错误处理:规范未为该函数规定返回值,亦未规定特定的错误码或错误通知 [SWS_Os_00757]。

由于函数签名未传递任何有效数据,推测该调用主要用作通知信号,以将新数据的到达通知接收方并触发后续的有效数据获取。 问题 Q-2365bb46ad77a476 (未决)开发人员应注意,执行在接收方内核上同步进行 [SWS_Os_00757]。

本文由 AI 生成,基于 AUTOSAR CP R20-11 规范。

函数 ProtectionHook [SWS_Os_00538] 📄 PDF

ProtectionReturnType ProtectionHook (StatusType Fatalerror);

The protection hook is always called if a serious error occurs. E.g. exceeding the worst case execution time or violating against the memory protection.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 85982be9edad 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 ProtectionHook 用作操作系统的中央回调,并在每次发生严重错误时同步调用 [SWS_Os_00538]。作为典型的错误场景,规范明确提到了超过最坏情况执行时间(Worst Case Execution Time)以及违反内存保护 [SWS_Os_00538]。接口声明通过头文件 Os_Externals.h 提供 [SWS_Os_00538]。

例程接收类型为 StatusType 的 Fatalerror 作为输入参数,该参数传递 Hook 调用的触发原因 [SWS_Os_00538]。签名中未定义额外的输入/输出参数或纯输出参数 [SWS_Os_00538]。

通过类型为 ProtectionReturnType 的返回值,ProtectionHook 具有约束力地确定操作系统在执行 Hook 后应采取何种操作来进行进一步的错误处理 [SWS_Os_00538]。以下操作可作为返回值提供 [SWS_Os_00538]:

关于并发性与执行行为,ProtectionHook 被规范为可重入且同步 [SWS_Os_00538]。在发生严重错误时会立即进行调用,随后操作系统执行定义的操作 [SWS_Os_00538]。

本段文本由 AI 基于规范生成。

实现者指南即将推出(复杂度 I2)

类型 AppModeType [SWS_Os_91007] 📄 PDF

App Mode of the core shall be inherited from another core.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: e91976813761 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

枚举类型 AppModeType 在头文件 Os.h 中定义,用于在操作系统中指定应用程序模式 [SWS_Os_91007]。在多核系统中,该类型允许一个处理器核的应用程序模式继承自另一个 Core [SWS_Os_91007]。

针对值范围指定了值 DONOTCARE [SWS_Os_91007]。Interpretation:该值推测用于显式配置一个 Core,使其不启动独立模式,而是沿用上级 Core 的行为。 问题 Q-2b7d9f1c8e5f1a3f (未决)未针对该类型本身定义特定错误代码或返回值。

关于诊断和系统状态,与分析工具的交互非常重要。根据 [SWS_Os_00829],ARTI 模块描述文件必须支持所有 ORTI 容器,以便连接的调试工具能够评估和显示有关操作系统及其对象的信息。ARTI 调试信息提供了通过公式解析的动态属性 [SWS_Os_00829]。Interpretation:因此,应用程序模式的状态推测会在工具层级通过相应的 ARTI 对象属性进行映射和读取。 问题 Q-410d011cbcf1b158 (未决)

此使用说明是基于规范要求自动生成的。

实现者指南即将推出(复杂度 I1)

类型 ApplicationStateType [SWS_Os_00773] 📄 PDF

This data type identifies the state of an OS - Application. AUTOSAR CP R20 - o f Document ID : AUTOSAR_SWS_OS

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 71b2dfdfc31d 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

数据类型 ApplicationStateType 在 Classic AUTOSAR 操作系统中用于唯一标识 OS-Application 的状态 [SWS_Os_00773]。它被指定为标量基本类型,并通过头文件 Os.h 提供 [SWS_Os_00773]。

ApplicationStateType 的允许取值范围包含 OS-Application 的三种离散状态 [SWS_Os_00773]:

  • APPLICATION_ACCESSIBLE:表示 OS-Application 处于就绪状态,且可以访问其资源 [SWS_Os_00773]。
  • APPLICATION_RESTARTING:表示 OS-Application 当前处于重启阶段 [SWS_Os_00773]。
  • APPLICATION_TERMINATED:指示 OS-Application 已终止,且不执行进一步的动作 [SWS_Os_00773]。

关于使用以及与其他组件的协作,该类型推测可用作相应的状态监控 OS 系统服务中的返回值或输出参数,以向调用方告知应用程序的当前生命周期状态。 问题 Q-9a4f2254f4013853 (未决)由于其为基本类型定义,标准未为此指定独立的错误码、DET 或 DEM 报告,也未对调用上下文或可重入性制定专门的限制 [SWS_Os_00773]。

本文由 AI 创建,基于 AUTOSAR R20-11 规范数据。

实现者指南即将推出(复杂度 I1)

类型 ApplicationStateRefType [SWS_Os_00774] 📄 PDF

This data type points to location where a Application State Type can be stored.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: ae68f3712f9a 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

数据类型 ApplicationStateRefType 是 AUTOSAR Classic 平台中操作系统(模块 Os)的组成部分,并通过头文件 Os.h 提供 [SWS_Os_00774]。该类型派生自指针(Pointer),并直接指向可存储 OS 应用程序状态(Application State)的存储位置 [SWS_Os_00774]。

在实际使用方面,该指针类型用于引用应用程序状态:Interpretation:作为指针类型,ApplicationStateRefType 推测主要在操作系统的查询函数中用作引用参数或输出参数,通过这些函数将 OS 应用程序的状态传达给调用者。 问题 Q-948bb914d3672a38 (未决)因此,调用者必须确保在传递参数之前为目标状态预留有效且可写的内存区域,以避免运行时的无效指针访问。

规范中未针对此基本类型单独规定具体的错误处理机制、DET 或 DEM 错误代码,以及关于可重入性和并发性的特殊要求 [SWS_Os_00774]。关于允许的调用上下文或必须遵守的同步义务的任何限制,仅取决于在其函数签名中使用该类型的操作系统接口。

本文本由 AI 基于规范生成。

实现者指南即将推出(复杂度 I1)

类型 TrustedFunctionParameterRefType [SWS_Os_00776] 📄 PDF

This data type points to a structure which holds the arguments for a call to a trusted function.

类型 AccessType [SWS_Os_00777] 📄 PDF

This type holds information how a specific memory region can be accessed.

类型 ObjectAccessType [SWS_Os_00778] 📄 PDF

This data type identifies if an OS - Application has access to an object.

类型 MemoryStartAddressType [SWS_Os_00780] 📄 PDF

This data type is a pointer which is able to point to any location in the MCU address space.

类型 ScheduleTableStatusType [SWS_Os_00784] 📄 PDF

This type describes the status of a schedule. The status can be one of the following: o The schedule table is not started (SCHEDULETABLE_ STOPPED) o The schedule table will be started after the end of currently running schedule table (sched ule table was used in Next Schedule Table() service) (SCHEDULETABLE_ NEXT) o The schedule table uses explicit synchronization, has been started and is waiting for the global time. (SCHEDULETABLE_ WAITING) o The schedule table is running, but is currently n ot synchronous to a global time source (SCHEDULETABLE_ RUNNING) o The schedule table is running and is synchronous to a global time source (SCHEDULETABLE_ RUNNING_ AND_ SYNCHRONOUS)

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 334083bea161 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

根据 [SWS_Os_00784],类型 ScheduleTableStatusType 反映了 AUTOSAR 操作系统中调度表的当前执行和同步状态。它通过头文件 Os.h 提供,并基于特定于实现的取值范围。

指定了以下状态值:

  • SCHEDULETABLE_STOPPED:调度表未启动。
  • SCHEDULETABLE_NEXT:调度表将在当前处于激活状态的调度表到期后启动(Interpretation: 这是在传递给服务 NextScheduleTable() 后发生的)。 问题 Q-8cbcfc83969eea23 (未决)
  • SCHEDULETABLE_WAITING:调度表使用显式同步,已经启动并正在等待与全局时间对齐。
  • SCHEDULETABLE_RUNNING:调度表正在执行,但当前未与全局时间源同步。
  • SCHEDULETABLE_RUNNING_AND_SYNCHRONOUS:调度表正在运行且已与全局时间源同步。

作为纯状态数据类型,ScheduleTableStatusType 未定义其自身的运行时错误或 DET/DEM 消息。在与分析工具协同交互时,根据 [SWS_Os_00829],该类型用于基于 ARTI 对动态操作系统对象进行评估和展示,从而能够透明地记录系统中的状态和同步偏差。

此文本由 AI 创建,并基于 AUTOSAR R20-11 规范。

实现者指南即将推出(复杂度 I1)

类型 ScheduleTableStatusRefType [SWS_Os_00785] 📄 PDF

This data type points to a variable of the data type Schedule Table Status Type.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 316994fde661 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用和定义

根据 [SWS_Os_00785],数据类型 ScheduleTableStatusRefType 被定义为指向数据类型 Schedule Table Status Type 变量的指针类型。该类型通过头文件 Os.h 提供,并在 AUTOSAR 操作系统中用作调度表(Schedule Table)状态的引用类型 [SWS_Os_00785]。

应用与约束条件

在典型的操作系统调用中,该指针类型推测用作输出参数,OS 系统函数通过该参数向调用者返回所引用的 Schedule Table 的当前状态。 问题 Q-53364f3a9953dae3 (未决)由于规范仅定义了类型定义,调用组件在使用时必须注意以下事项:

  • 内存提供:在传递此类型的引用之前,调用者必须确保指针指向一个有效且可写的内存区域,并且该区域在整个调用期间保持有效。
  • 有效性与空指针:根据操作系统配置(Standard 或 Extended 状态),传递空指针(NULL)推测会导致被调用的 OS 服务返回相应的错误反馈。 问题 Q-63d77f8c7857e6c4 (未决)
  • 内存保护:在对安全要求严格的多核或具有内存保护的 OS 环境中,所引用的内存区域必须可供调用任务或 OS 实例访问。

由于 [SWS_Os_00785] 未为该基本类型规定其他运行时属性或特定错误代码,因此可重入性和调用上下文取决于将此指针类型用作参数的各 OS 服务。

本使用说明自动生成,且仅基于 Release R20-11 的规范数据。

实现者指南即将推出(复杂度 I1)

类型 ProtectionReturnType [SWS_Os_00787] 📄 PDF

This data type identifies a value which controls further actions of the OS on return from the protection hook.

类型 RestartType [SWS_Os_00788] 📄 PDF

This data type defines the use of a Restart Task after terminating an OS - Application.

类型 PhysicalTimeType [SWS_Os_00789] 📄 PDF

This data type is used for values returned by the conversion macro (see SWS_ Os_00393) OS_ TICKS2_(). AUTOSAR CP R20 - o f Document ID : AUTOSAR_SWS_OS

类型 CoreIdType [SWS_Os_00790] 📄 PDF

Core Id Type is a scalar that allows identifying a single core. The Core Id Type shall represent t he logical Core ID

类型 SpinlockIdType [SWS_Os_00791] 📄 PDF

Spinlock Id Type identifies a spinlock instance and is used by the API functions: Get Spinlock, Release Spinlock and Try To Get Spinlock.

类型 TryToGetSpinlockType [SWS_Os_00792] 📄 PDF

The Try To Get Spinlock Type indicates if the spinlock has been occupied or not.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 9c58c4e8227f 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用与取值范围

枚举类型 TryToGetSpinlockType 通过头文件 Os.h 提供,用作调用者是否成功占用自旋锁的状态指示 [SWS_Os_00792]。它定义了操作系统中相应占用操作的结果 [SWS_Os_00792]。

取值范围精确包含两个指定的字面量 [SWS_Os_00792]:

  • TRYTOGETSPINLOCK_SUCCESS:指示自旋锁已成功占用 [SWS_Os_00792]。
  • TRYTOGETSPINLOCK_NOSUCCESS:指示未能占用自旋锁 [SWS_Os_00792]。

并发性与系统上下文

该类型应用于多核系统中的同步。Interpretation: 调用者应同步评估返回值,以便立即确定是否允许进入受保护的临界区,或者在出现 TRYTOGETSPINLOCK_NOSUCCESS 时是否必须无需阻塞等待地选择替代程序分支 [SWS_Os_00792]。 问题 Q-a04e72802dc41325 (未决)未针对该类型指定自身的错误代码或通过 DET 或 DEM 发送的错误消息 [SWS_Os_00792]。

与诊断工具的协同交互

在工具连接框架内,ARTI 模块描述文件支持所有 ORTI 容器,以显示关于操作系统、其状态和操作系统对象的信息并确定动态值 [SWS_Os_00829]。Interpretation: 通过此类接口,自旋锁及其占用状态也应能被调试和跟踪工具可视化 [SWS_Os_00829]。 问题 Q-a488e055eb7d402e (未决)

该文本由 AI 生成,基于 R20-11 版本的 AUTOSAR 规范。

实现者指南即将推出(复杂度 I1)

类型 IdleModeType [SWS_Os_00793] 📄 PDF

This data type identifies the idle mode behavior.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 20e46b8167e3 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用与取值范围

标量数据类型 IdleModeType 通过头文件 Os.h 提供,用于指定处理器核在空闲模式下的行为 [SWS_Os_00793]。在定义的取值范围中规定了模式 IDLE_NO_HALT,选择该模式时,处理器核在空闲期间不执行单独的动作 [SWS_Os_00793]。

Interpretation: 由于 IdleModeType 派生自标量基本类型,因此在操作系统上下文中它应可用作控制核空闲行为的服务的配置值或调用参数。 问题 Q-911a39efb537f1bc (未决)Interpretation: 除默认值 IDLE_NO_HALT 外,具体的操作系统实现或微控制器架构可能还会提供额外的挂起或省电模式,尽管规范摘录中仅提到了没有特定动作。 问题 Q-b6688f74cacbab45 (未决)

限制与错误处理

在现有的规范范围内,未为 IdleModeType 列出具体的错误代码、DET 或 DEM 消息,也未列出对重入性或调用上下文的要求 [SWS_Os_00793]。因此,任何功能限制或前提条件均完全源自处理该类型的上层操作系统接口。

该文本由 AI 基于规范 SWS_Os_00793 生成。

实现者指南即将推出(复杂度 I1)

类型 AreaIdType [SWS_Os_91000] 📄 PDF

Area Id Type identifies a peripheral area and is used by the API functions: Read Peripheral X, Write Peripheral X and Modify Peripheral X AUTOSAR CP R20 - o f Document ID : AUTOSAR_SWS_OS

类型 StatusType [SWS_Os_00002] 📄 PDF

typedef uint8 StatusType;

This data type represents standard OSEK OS status codes (e.g. E_OK, E_OS_ACCESS).

实现者指南即将推出(复杂度 I2)

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_Os
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Os@rel:R20-11#4e71c469
Content hash
4e71c469
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_OS.pdf#nameddest=SWS_Os_00016

主题图

详细视图

请在大纲中选择一个条目。

服务 · Get…

This service determines the OS - Application (a unique identifier has to be allocated to each application) where the caller originally belongs to (was configured t o).

ApplicationType GetApplicationID (void);

This service returns the current state of an OS - Application.

StatusType GetApplicationState (ApplicationType Application, ApplicationStateRefType Value);
GetCoreID 函数

The function returns a unique core identifier.

CoreIdType GetCoreID (void);

This service reads the current count value of a counte r (returning either the hardware timer ticks if counter is driven by hardware or the software ticks when user drives counter).

StatusType GetCounterValue (CounterType CounterID, TickRefType Value);

This service determines the OS - Application where the caller of the service is currently executing. Note that if the caller is not within a Call Trusted Function() call the value is eq ual to the result of Get Application ID().

ApplicationType GetCurrentApplicationID (void);

This service gets the number of ticks between the current tick value and a previously read tick value.

StatusType GetElapsedValue (CounterType CounterID, TickRefType Value, TickRefType ElapsedValue);
GetISRID 函数

This service returns the identifier of the currently executing ISR.

ISRType GetISRID (void);

The function returns the number of cores activated by the Start Core function. This function might be a macro. AUTOSAR CP R20 - o f Document ID : AUTOSAR_SWS_OS

uint32 GetNumberOfActivatedCores (void);

This service queries the state of a schedule table (also with respect to synchronization).

StatusType GetScheduleTableStatus (ScheduleTableType ScheduleTableID, ScheduleTableStatusRefType ScheduleStatus);

Get Spinlock tries to occupy a spin - lock variable. If the function returns, either the lock is successfully taken or an error has occurred. The spinlock mechanism is an active polling mechanism. The function does not cause a de - scheduling.

StatusType GetSpinlock (SpinlockIdType SpinlockId);

服务 · Start…

StartCore 函数

It is not supported to call this function after Start OS(). The function starts the core specified by the parameter Core ID. The OUT parameter allows the caller to check whether the operation was successful or no t. If a core is started by means of this function Start OS shall be called on the core.

void StartCore (CoreIdType CoreID, StatusType* Status);

The function start s the core specified by the parameter Core ID. It is allowed to call this function after Start OS(). The OUT parameter allows the caller to check whether the operation was successful or not. It is not allowed to call Start OS on cores activated by Start No n Autosar Core. Otherwise the behaviour is unspecified.

void StartNonAutosarCore (CoreIdType CoreID, StatusType* Status);

This service starts the processing o f a schedule table at an absolute value "Start" on the underlying counter.

StatusType StartScheduleTableAbs (ScheduleTableType ScheduleTableID, TickType Start);

This service starts the processing of a schedule table at "Offset" relative to the "Now" value on the underlying counter.

StatusType StartScheduleTableRel (ScheduleTableType ScheduleTableID, TickType Offset);

This service starts an explicitly synchronized schedule table synchronously.

StatusType StartScheduleTableSynchron (ScheduleTableType ScheduleTableID);

服务 · Check…

This service checks if a memory region is write/ read/ execute accessible and also returns information if the memory region is part of the stack space.

AccessType CheckISRMemoryAccess (ISRType ISRID, MemoryStartAddressType Address, MemorySizeType Size);

This service determines to which OS - Application a given Task, ISR, Counter, Alarm or Schedule Table belongs

ApplicationType CheckObjectOwnership (ObjectTypeType ObjectType, void ...);

This service checks if a memory region is write/ read/ execu te accessible and also returns information if the memory region is part of the stack space.

AccessType CheckTaskMemoryAccess (TaskType TaskID, MemoryStartAddressType Address, MemorySizeType Size);

服务 · Modify…

This service modifies a given memory location () with the formula: * = ((* & ) | )

StatusType ModifyPeripheral16 (AreaIdType Area, uint16* Address, uint16 Clearmask, uint16 Setmask);

This service modifies a given memory location () with the formula: * = ((* & ) | )

StatusType ModifyPeripheral32 (AreaIdType Area, uint32* Address, uint32 Clearmask, uint32 Setmask);

This service modifies a given memory location () with the formula: * = ((* & ) | )

StatusType ModifyPeripheral8 (AreaIdType Area, uint8* Address, uint8 Clearmask, uint8 Setmask);

服务 · Read…

This service returns the content of a given memory location (

StatusType ReadPeripheral16 (AreaIdType Area, const uint16* Address, uint16* ReadValue);

This service returns the content of a given memory location (

StatusType ReadPeripheral32 (AreaIdType Area, const uint32* Address, uint32* ReadValue);

This service returns the content of a given memory location (

StatusType ReadPeripheral8 (AreaIdType Area, const uint8* Address, uint8* ReadValue);

服务 · Write…

This service writes the to a given memory location (). Available vi a Os.h

StatusType WritePeripheral16 (AreaIdType Area, uint16* Address, uint16 WriteValue);

This service writes the to a given memory location ().

StatusType WritePeripheral32 (AreaIdType Area, uint32* Address, uint32 WriteValue);

This service writes the to a given memory location (). Available vi a Os.h

StatusType WritePeripheral8 (AreaIdType Area, uint8* Address, uint8 WriteValue);

服务 · 其他

This service determines if the OS - Applications, given by Appl ID, is allowed to use the IDs of a Task, Resource, Counter, Alarm or Schedule Table in API calls.

ObjectAccessType CheckObjectAccess (ApplicationType ApplID, ObjectTypeType ObjectType, void ...);

Asynchronous version of the Activate Task() function. Intended to be used for cross core task activation. Possible errors are not returned to the caller, but may be reported via error hooks.

void ActivateTaskAsyn (TaskType id);

This service sets the own state of an OS - Application from AP PLICATION_ RESTARTING to APPLICATION_ ACCESSIBLE.

StatusType AllowAccess (void);

A (trusted or non - trusted) OS - Application uses this service to call a trusted function

StatusType CallTrustedFunction (TrustedFunctionIndexType FunctionIndex, TrustedFunctionParameterRefType FunctionParams);

Service ClearPendingInterrupt.

StatusType ClearPendingInterrupt (ISRType ISRID);

This API allows the caller to select the idle mode action which is performed during idle time of t he OS (e.g. if no Task/ ISR is active). It can be used to implement energy savings. The real idle modes are hardware dependent and not standardized. The default idle mode on each core is IDLE_ NO_ HALT.

StatusType ControlIdle (CoreIdType CoreID, IdleModeType IdleMode);

Disables the interrupt source by modifying the interrupt controller registers.

StatusType DisableInterruptSource (ISRType ISRID);

Service EnableInterruptSource.

StatusType EnableInterruptSource (ISRType ISRID, boolean ClearPending);

This service increments a software counter.

StatusType IncrementCounter (CounterType CounterID);
IocInit 函数

This service initializes the data structures of the IOC. Tags: atp.Status=draft

void IocInit (void);

This service switches the processing from one schedule table to another schedule table.

StatusType NextScheduleTable (ScheduleTableType ScheduleTableID_From, ScheduleTableType ScheduleTableID_To);

The protection hook is always called if a serious error occurs. E.g. exceeding the worst case execution time or violating against the memory protection.

ProtectionReturnType ProtectionHook (StatusType Fatalerror);

Release Spinlock releases a spinlock variable that was occupied before. Before terminating a TASK all spinlock variables that have been occupied with Get Spinlock() shall be released. Before calling Wait EVENT all Spinlocks shall be released.

StatusType ReleaseSpinlock (SpinlockIdType SpinlockId);

Asynchronous version of the Set Event() function. Intended to be used for cross core event setting. Possible errors are not returned to the caller, but may be reported via error hooks.

void SetEventAsyn (TaskType id, EventMaskType m);

This service stops synchronization of a schedule table.

StatusType SetScheduletableAsync (ScheduleTableType ScheduleTableID);

After this service the OS on all AUTOSAR cores is shut down. Allowed at TASK level and ISR level and also internally by the OS. The function will never return. The function will force other cores into a shutdown.

void ShutdownAllCores (StatusType Error);

This service cancels the processing of a schedule table immediately at any point while the schedule table is running.

StatusType StopScheduleTable (ScheduleTableType ScheduleTableID);

Service SyncScheduleTable.

StatusType SyncScheduleTable (ScheduleTableType ScheduleTableID, TickType Value);

Service TerminateApplication.

StatusType TerminateApplication (ApplicationType Application, RestartType RestartOption);

Try To Get Spinlock has the same functionality as Get Spinlock with the difference that if the spinlock is already occupied by a TASK on a d ifferent core the function sets the OUT parameter "Success" and returns with E_ OK.

StatusType TryToGetSpinlock (SpinlockIdType SpinlockId, TryToGetSpinlockType* Success);

Callout 与预期接口

This callback function can be configured for the receiver of a communication. If configured, IOC calls this callback on the receiving core for each data reception. is the callback function name configured by the receiver in the Os Ioc Re ceiver Pull CB attribute to be called on data reception."

void <ReceiverPullCB> (void);

类型

AccessType 类型

This type holds information how a specific memory region can be accessed.

AlarmType 类型

This data type represents an AUTOSAR OS alarm identifier.

typedef uint8 AlarmType;

This data type points to location where a Application State Type can be stored.

This data type identifies the state of an OS - Application. AUTOSAR CP R20 - o f Document ID : AUTOSAR_SWS_OS

This data type identifies the OS - Application.

App Mode of the core shall be inherited from another core.

AreaIdType 类型

Area Id Type identifies a peripheral area and is used by the API functions: Read Peripheral X, Write Peripheral X and Modify Peripheral X AUTOSAR CP R20 - o f Document ID : AUTOSAR_SWS_OS

CoreIdType 类型

Core Id Type is a scalar that allows identifying a single core. The Core Id Type shall represent t he logical Core ID

This data type identifies a counter.

This data type represents an event mask for extended tasks.

This data type identifies the idle mode behavior.

ISRType 类型

This data type identifies an interrupt service routine (ISR).

This data type holds the size (in bytes) of a memory region.

This data type is a pointer which is able to point to any location in the MCU address space.

This data type identifies if an OS - Application has access to an object.

ObjectType 类型

This data type identifies an object.

This data type is used for values returned by the conversion macro (see SWS_ Os_00393) OS_ TICKS2_(). AUTOSAR CP R20 - o f Document ID : AUTOSAR_SWS_OS

This data type identifies a value which controls further actions of the OS on return from the protection hook.

This data type defines the use of a Restart Task after terminating an OS - Application.

This data type points to a variable of the data type Schedule Table Status Type.

This type describes the status of a schedule. The status can be one of the following: o The schedule table is not started (SCHEDULETABLE_ STOPPED) o The schedule table will be started after the end of currently running schedule table (sched ule table was used in Next Schedule Table() service) (SCHEDULETABLE_ NEXT) o The schedule table uses explicit synchronization, has been started and is waiting for the global time. (SCHEDULETABLE_ WAITING) o The schedule table is running, but is currently n ot synchronous to a global time source (SCHEDULETABLE_ RUNNING) o The schedule table is running and is synchronous to a global time source (SCHEDULETABLE_ RUNNING_ AND_ SYNCHRONOUS)

This data type identifies a schedule table.

Spinlock Id Type identifies a spinlock instance and is used by the API functions: Get Spinlock, Release Spinlock and Try To Get Spinlock.

StatusType 类型

This data type represents standard OSEK OS status codes (e.g. E_OK, E_OS_ACCESS).

typedef uint8 StatusType;
TaskType 类型

This data type identifies an AUTOSAR OS task.

typedef uint8 TaskType;
TickType 类型

This data type represents count values in ticks.

typedef uint32 TickType;

The total number of cores

This data type identifies a trusted function.

This data type points to a structure which holds the arguments for a call to a trusted function.

The Try To Get Spinlock Type indicates if the spinlock has been occupied or not.