{{{ #!html
OS
}}} [[BR]] = 概要 = * AUTOSARプラットフォームにおけるリアルタイムOS * 主にタスクスケジューリング、割込み管理などを行う * MCAL層が無いため、マイコンに依存した実装が伴う * [http://ja.wikipedia.org/wiki/OSEK OSEK/VDX]仕様OSの上位互換とされ、OSEK仕様書に記載されている内容については、AUTOSAR仕様書には記載されていない * OSEKは、ISOで標準化されたため、2020年現在はWebで一般公開されていない * OSEK仕様とAUTOSAR仕様で若干の矛盾等も存在する * コンフィギュレーション方法は、AUTOSAR準拠のXML方式に統合される * OSの機能セット毎に、4つのスケーラビリティクラスが規定されている * スケーラビリティクラス1(SC1) * 基本セット * スケーラビリティクラス2(SC2) * 基本セット + タイミング保護 * スケーラビリティクラス3(SC3) * 基本セット + メモリ保護 * スケーラビリティクラス4(SC4) * 基本セット + タイミング保護 + メモリ保護 * すべてのSCをマルチコアに拡張可能である * 用語一覧 * C1ISR:カテゴリ1ISR * C2ISR:カテゴリ2ISR * OSAP:OSアプリケーション * API一覧 * OSEK仕様 (OSEK仕様ではIDは未規定のためTOPPERS/ATK2のIDを記載) ||= API =||= ID[[BR]][Dec] =||= ID[[BR]][Hex] =|| || [#ActivateTask ActivateTask] || 224|| 0xE0|| || [#TerminateTask TerminateTask] || 225|| 0xE1|| || [#ChainTask ChainTask] || 226|| 0xE2|| || [#Schedule Schedule] || 227|| 0xE3|| || [#GetTaskID GetTaskID] || 228|| 0xE4|| || [#GetTaskState GetTaskState] || 229|| 0xE5|| || [#EnableAllInterrupts EnableAllInterrupts] || 230|| 0xE6|| || [#DisableAllInterrupts DisableAllInterrupts] || 231|| 0xE7|| || [#ResumeAllInterrupts ResumeAllInterrupts] || 232|| 0xE8|| || [#SuspendAllInterrupts SuspendAllInterrupts] || 233|| 0xE9|| || [#ResumeOSInterrupts ResumeOSInterrupts] || 234|| 0xEA|| || [#SuspendOSInterrupts SuspendOSInterrupts] || 235|| 0xEB|| || [#GetResource GetResource] || 236|| 0xEC|| || [#ReleaseResource ReleaseResource] || 237|| 0xED|| || [#SetEvent SetEvent] || 238|| 0xEE|| || [#ClearEvent ClearEvent] || 239|| 0xEF|| || [#GetEvent GetEvent] || 240|| 0xF0|| || [#WaitEvent WaitEvent] || 241|| 0xF1|| || [#GetAlarmBase GetAlarmBase] || 242|| 0xF2|| || [#GetAlarm GetAlarm] || 243|| 0xF3|| || [#SetRelAlarm SetRelAlarm] || 244|| 0xF4|| || [#SetAbsAlarm SetAbsAlarm] || 245|| 0xF5|| || [#CancelAlarm CancelAlarm] || 246|| 0xF6|| || [#GetActiveApplicationMode GetActiveApplicationMode] || 247|| 0xF7|| || [#StartOS StartOS] || 248|| 0xF8|| || [#ShutdownOS ShutdownOS] || 249|| 0xF9|| * AUTOSAR仕様 ||= API =||= ID[[BR]][Dec] =||= ID[[BR]][Hex] =||= R4.0.3 =||= R4.2.2 =|| || [#GetApplicationID GetApplicationID] || 0|| 0x00|| ○ || ○ || || [#GetISRID GetISRID] || 1|| 0x01|| ○ || ○ || || [#CallTrustedFunction CallTrustedFunction] || 2|| 0x02|| ○ || ○ || || [#CheckISRMemoryAccess CheckISRMemoryAccess] || 3|| 0x03|| ○ || ○ || || [#CheckTaskMemoryAccess CheckTaskMemoryAccess] || 4|| 0x04|| ○ || ○ || || [#CheckObjectAccess CheckObjectAccess] || 5|| 0x05|| ○ || ○ || || [#CheckObjectOwnership CheckObjectOwnership] || 6|| 0x06|| ○ || ○ || || [#StartScheduleTableRel StartScheduleTableRel] || 7|| 0x07|| ○ || ○ || || [#StartScheduleTableAbs StartScheduleTableAbs] || 8|| 0x08|| ○ || ○ || || [#StopScheduleTable StopScheduleTable] || 9|| 0x09|| ○ || ○ || || [#NextScheduleTable NextScheduleTable] || 10|| 0x0A|| ○ || ○ || || [#StartScheduleTableSynchron StartScheduleTableSynchron] || 11|| 0x0B|| ○ || ○ || || [#SyncScheduleTable SyncScheduleTable] || 12|| 0x0C|| ○ || ○ || || [#SetScheduletableAsync SetScheduletableAsync] || 13|| 0x0D|| ○ || ○ || || [#GetScheduleTableStatus GetScheduleTableStatus] || 14|| 0x0E|| ○ || ○ || || [#IncrementCounter IncrementCounter] || 15|| 0x0F|| ○ || ○ || || [#GetCounterValue GetCounterValue] || 16|| 0x10|| ○ || ○ || || [#GetElapsedValue GetElapsedValue] || 17|| 0x11|| ○ || ○ || || [#TerminateApplication TerminateApplication] || 18|| 0x12|| ○ || ○ || || [#AllowAccess AllowAccess] || 19|| 0x13|| ○ || ○ || || [#GetApplicationState GetApplicationState] || 20|| 0x14|| ○ || ○ || || [#GetNumberOfActivatedCores GetNumberOfActivatedCores] || 21|| 0x15|| ○ || ○ || || [#GetCoreID GetCoreID] || 22|| 0x16|| ○ || ○ || || [#StartCore StartCore] || 23|| 0x17|| ○ || ○ || || [#StartNonAutosarCore StartNonAutosarCore] || 24|| 0x18|| ○ || ○ || || [#GetSpinlock GetSpinlock] || 25|| 0x19|| ○ || ○ || || [#ReleaseSpinlock ReleaseSpinlock] || 26|| 0x1A|| ○ || ○ || || [#TryToGetSpinlock TryToGetSpinlock] || 27|| 0x1B|| ○ || ○ || || [#ShutdownAllCores ShutdownAllCores] || 28|| 0x1C|| ○ || ○ || || [#ControlIdle ControlIdle] || 29|| 0x1D|| - || ○ || || [#IocSend IocSend] || 30|| 0x1E|| ○ || ○ || || [#IocWrite IocWrite] || 31|| 0x1F|| ○ || ○ || || [#IocSendGroup IocSendGroup] || 32|| 0x20|| ○ || ○ || || [#IocWriteGroup IocWriteGroup] || 33|| 0x21|| ○ || ○ || || [#IocReceive IocReceive] || 34|| 0x22|| ○ || ○ || || [#IocRead IocRead] || 35|| 0x23|| ○ || ○ || || [#IocReceiveGroup IocReceiveGroup] || 36|| 0x24|| ○ || ○ || || [#IocReadGroup IocReadGroup] || 37|| 0x25|| ○ || ○ || || [#IocEmptyQueue IocEmptyQueue] || 38|| 0x26|| ○ || ○ || || [#GetCurrentApplicationID GetCurrentApplicationID] || 39|| 0x27|| - || ○ || * コンフィギュレーション一覧(R4.0.3 / R4.2.2) * [#OsAlarm OsAlarm] (○/○) * [#OsAlarmAccessingApplication OsAlarmAccessingApplication] (○/○) * [#OsAlarmCounterRef OsAlarmCounterRef] (○/○) * [#OsAlarmAction OsAlarmAction] (○/○) * [#OsAlarmActivateTask OsAlarmActivateTask] (○/○) * [#OsAlarmActivateTaskRef OsAlarmActivateTaskRef] (○/○) * [#OsAlarmCallback OsAlarmCallback] (○/○) * [#OsAlarmCallbackName OsAlarmCallbackName] (○/○) * [#OsAlarmIncrementCounter OsAlarmIncrementCounter] (○/○) * [#OsAlarmIncrementCounterRef OsAlarmIncrementCounterRef] (○/○) * [#OsAlarmSetEvent OsAlarmSetEvent] (○/○) * [#OsAlarmSetEventRef OsAlarmSetEventRef] (○/○) * [#OsAlarmSetEventTaskRef OsAlarmSetEventTaskRef] (○/○) * [#OsAlarmAutostart OsAlarmAutostart] (○/○) * [#OsAlarmAlarmTime OsAlarmAlarmTime] (○/○) * [#OsAlarmAutostartType OsAlarmAutostartType] (○/○) * [#OsAlarmCycleTime OsAlarmCycleTime] (○/○) * [#OsAlarmAppModeRef OsAlarmAppModeRef] (○/○) * [#OsAppMode OsAppMode] (○/○) * [#OsApplication OsApplication] (○/○) * [#OsApplicationCoreAssignment OsApplicationCoreAssignment] (○/-) * [#OsApplicationCoreRef OsApplicationCoreRef] (-/○) * [#OsTrusted OsTrusted] (○/○) * [#OsTrustedApplicationDelayTimingViolationCall OsTrustedApplicationDelayTimingViolationCall] (-/○) * [#OsTrustedApplicationWithProtection OsTrustedApplicationWithProtection] (-/○) * [#OsAppAlarmRef OsAppAlarmRef] (○/○) * [#OsAppCounterRef OsAppCounterRef] (○/○) * [#OsAppEcucPartitionRef OsAppEcucPartitionRef] (○/○) * [#OsAppIsrRef OsAppIsrRef] (○/○) * [#OsAppScheduleTableRef OsAppScheduleTableRef] (○/○) * [#OsAppTaskRef OsAppTaskRef] (○/○) * [#OsRestartTask OsRestartTask] (○/○) * [#OsApplicationHooks OsApplicationHooks] (○/○) * [#OsAppErrorHook OsAppErrorHook] (○/○) * [#OsAppShutdownHook OsAppShutdownHook] (○/○) * [#OsAppStartupHook OsAppStartupHook] (○/○) * [#OsApplicationTrustedFunction OsApplicationTrustedFunction] (○/○) * [#OsTrustedFunctionName OsTrustedFunctionName] (○/○) * [#OsCounter OsCounter] (○/○) * [#OsCounterMaxAllowedValue OsCounterMaxAllowedValue] (○/○) * [#OsCounterMinCycle OsCounterMinCycle] (○/○) * [#OsCounterTicksPerBase OsCounterTicksPerBase] (○/○) * [#OsCounterType OsCounterType] (○/○) * [#OsSecondsPerTick OsSecondsPerTick] (○/○) * [#OsCounterAccessingApplication OsCounterAccessingApplication] (○/○) * [#OsDriver OsDriver] (○/○) * [#OsGptChannelRef OsGptChannelRef] (○/○) * [#OsTimeConstant OsTimeConstant] (○/○) * [#OsTimeValue OsTimeValue] (○/○) * [#OsEvent OsEvent] (○/○) * [#OsEventMask OsEventMask] (○/○) * [#OsIsr OsIsr] (○/○) * [#OsIsrCategory OsIsrCategory] (○/○) * [#OsIsrResourceRef OsIsrResourceRef] (○/○) * [#OsIsrTimingProtection OsIsrTimingProtection] (○/○) * [#OsIsrAllInterruptLockBudget OsIsrAllInterruptLockBudget] (○/○) * [#OsIsrExecutionBudget OsIsrExecutionBudget] (○/○) * [#OsIsrOsInterruptLockBudget OsIsrOsInterruptLockBudget] (○/○) * [#OsIsrTimeFrame OsIsrTimeFrame] (○/○) * [#OsIsrResourceLock OsIsrResourceLock] (○/○) * [#OsIsrResourceLockBudget OsIsrResourceLockBudget] (○/○) * [#OsIsrResourceLockResourceRef OsIsrResourceLockResourceRef] (○/○) * [#OsOS OsOS] (○/○) * [#OsNumberOfCores OsNumberOfCores] (○/○) * [#OsScalabilityClass OsScalabilityClass] (○/○) * [#OsStackMonitoring OsStackMonitoring] (○/○) * [#OsStatus OsStatus] (○/○) * [#OsUseGetServiceId OsUseGetServiceId] (○/○) * [#OsUseParameterAccess OsUseParameterAccess] (○/○) * [#OsUseResScheduler OsUseResScheduler] (○/○) * [#OsHooks OsHooks] (○/○) * [#OsErrorHook OsErrorHook] (○/○) * [#OsPostTaskHook OsPostTaskHook] (○/○) * [#OsPreTaskHook OsPreTaskHook] (○/○) * [#OsProtectionHook OsProtectionHook] (○/○) * [#OsShutdownHook OsShutdownHook] (○/○) * [#OsStartupHook OsStartupHook] (○/○) * [#OsResource OsResource] (○/○) * [#OsResourceProperty OsResourceProperty] (○/○) * [#OsResourceAccessingApplication OsResourceAccessingApplication] (○/○) * [#OsResourceLinkedResourceRef OsResourceLinkedResourceRef] (○/○) * [#OsScheduleTable OsScheduleTable] (○/○) * [#OsScheduleTableDuration OsScheduleTableDuration] (○/○) * [#OsScheduleTableRepeating OsScheduleTableRepeating] (○/○) * [#OsSchTblAccessingApplication OsSchTblAccessingApplication] (○/○) * [#OsScheduleTableCounterRef OsScheduleTableCounterRef] (○/○) * [#OsScheduleTableAutostart OsScheduleTableAutostart] (○/○) * [#OsScheduleTableAutostartType OsScheduleTableAutostartType] (○/○) * [#OsScheduleTableStartValue OsScheduleTableStartValue] (○/○) * [#OsScheduleTableAppModeRef OsScheduleTableAppModeRef] (○/○) * [#OsScheduleTableExpiryPoint OsScheduleTableExpiryPoint] (○/○) * [#OsScheduleTblExpPointOffset OsScheduleTblExpPointOffset] (○/○) * [#OsScheduleTableEventSetting OsScheduleTableEventSetting] (○/○) * [#OsScheduleTableSetEventRef OsScheduleTableSetEventRef] (○/○) * [#OsScheduleTableSetEventTaskRef OsScheduleTableSetEventTaskRef] (○/○) * [#OsScheduleTableTaskActivation OsScheduleTableTaskActivation] (○/○) * [#OsScheduleTableActivateTaskRef OsScheduleTableActivateTaskRef] (○/○) * [#OsScheduleTblAdjustableExpPoint OsScheduleTblAdjustableExpPoint] (○/○) * [#OsScheduleTableMaxLengthen OsScheduleTableMaxLengthen] (○/○) * [#OsScheduleTableMaxShorten OsScheduleTableMaxShorten] (○/○) * [#OsScheduleTableSync OsScheduleTableSync] (○/○) * [#OsScheduleTblExplicitPrecision OsScheduleTblExplicitPrecision] (○/○) * [#OsScheduleTblSyncStrategy OsScheduleTblSyncStrategy] (○/○) * [#OsSpinlock OsSpinlock] (○/○) * [#OsSpinlockLockMethod OsSpinlockLockMethod] (-/○) * [#OsSpinlockAccessingApplication OsSpinlockAccessingApplication] (○/○) * [#OsSpinlockSuccessor OsSpinlockSuccessor] (○/○) * [#OsTask OsTask] (○/○) * [#OsTaskActivation OsTaskActivation] (○/○) * [#OsTaskPriority OsTaskPriority] (○/○) * [#OsTaskSchedule OsTaskSchedule] (○/○) * [#OsTaskAccessingApplication OsTaskAccessingApplication] (○/○) * [#OsTaskEventRef OsTaskEventRef] (○/○) * [#OsTaskResourceRef OsTaskResourceRef] (○/○) * [#OsTaskAutostart OsTaskAutostart] (○/○) * [#OsTaskAppModeRef OsTaskAppModeRef] (○/○) * [#OsTaskTimingProtection OsTaskTimingProtection] (○/○) * [#OsTaskAllInterruptLockBudget OsTaskAllInterruptLockBudget] (○/○) * [#OsTaskExecutionBudget OsTaskExecutionBudget] (○/○) * [#OsTaskOsInterruptLockBudget OsTaskOsInterruptLockBudget] (○/○) * [#OsTaskTimeFrame OsTaskTimeFrame] (○/○) * [#OsTaskResourceLock OsTaskResourceLock] (○/○) * [#OsTaskResourceLockBudget OsTaskResourceLockBudget] (○/○) * [#OsTaskResourceLockResourceRef OsTaskResourceLockResourceRef] (○/○) * [#OsIoc OsIoc] (○/○) * [#OsIocCommunication OsIocCommunication] (○/○) * [#OsIocBufferLength OsIocBufferLength] (○/○) * [#OsIocDataProperties OsIocDataProperties] (○/○) * [#OsIocDataPropertyIndex OsIocDataPropertyIndex] (○/○) * [#OsIocInitValue OsIocInitValue] (○/○) * [#OsIocDataTypeRef OsIocDataTypeRef] (○/○) * [#OsIocReceiverProperties OsIocReceiverProperties] (○/○) * [#OsIocFunctionImplementationKind OsIocFunctionImplementationKind] (○/○) * [#OsIocReceiverPullCB OsIocReceiverPullCB] (○/○) * [#OsIocReceivingOsApplicationRef OsIocReceivingOsApplicationRef] (○/○) * [#OsIocSenderProperties OsIocSenderProperties] (○/○) * [#OsIocFunctionImplementationKind OsIocFunctionImplementationKind] (○/○) * [#OsIocSenderId OsIocSenderId] (○/○) * [#OsIocSendingOsApplicationRef OsIocSendingOsApplicationRef] (○/○) * エラーコード一覧 * 1~8はOSEKで規定されている * "--"は実装依存と規定されている ||= エラーコード =||= Dec =||= Hex =||= R4.0.3 =||= R4.2.2 =|| ||E_OS_ACCESS || 1|| 0x01|| ○ || ○ || ||E_OS_CALLEVEL || 2|| 0x02|| ○ || ○ || ||E_OS_ID || 3|| 0x03|| ○ || ○ || ||E_OS_LIMIT || 4|| 0x04|| ○ || ○ || ||E_OS_NOFUNC || 5|| 0x05|| ○ || ○ || ||E_OS_RESOURCE || 6|| 0x06|| ○ || ○ || ||E_OS_STATE || 7|| 0x07|| ○ || ○ || ||E_OS_VALUE || 8|| 0x08|| ○ || ○ || ||E_OS_SERVICEID || --|| --|| ○ || ○ || ||E_OS_ILLEGAL_ADDRESS || --|| --|| ○ || ○ || ||E_OS_MISSINGEND || --|| --|| ○ || ○ || ||E_OS_DISABLEDINT || --|| --|| ○ || ○ || ||E_OS_STACKFAULT || --|| --|| ○ || ○ || ||E_OS_PROTECTION_MEMORY || --|| --|| ○ || ○ || ||E_OS_PROTECTION_TIME || --|| --|| ○ || ○ || ||E_OS_PROTECTION_ARRIVAL || --|| --|| ○ || ○ || ||E_OS_PROTECTION_LOCKED || --|| --|| ○ || ○ || ||E_OS_PROTECTION_EXCEPTION || --|| --|| ○ || ○ || ||E_OS_CORE || --|| --|| ○ || ○ || ||E_OS_SPINLOCK || --|| --|| ○ || ○ || ||E_OS_INTERFERENCE_DEADLOCK || --|| --|| ○ || ○ || ||E_OS_NESTING_DEADLOCK || --|| --|| ○ || ○ || ||E_OS_PARAM_POINTER || --|| --|| ○ || ○ || ---- = API仕様(OSEK) = == ActivateTask == {{{ StatusType ActivateTask(TaskType TaskID) }}} * TaskIDで指定したタスクを起動する * 多重に起動要求を行った場合、要求した順序で起動される * 拡張タスクが、多重起動要求できないのは、待ち状態に入ってしまうと次の起動要求を要求した順序で処理できないからと考えられる * TOPPERS/ATK2では、必要性が低いことから、要求した順序を保持しない実装としている * タスクの実行順序の優先順位は、本来タスク優先度で指定するものであり、同一優先度タスクが実行される順序が処理に依存するべきではない、という考え方である * 到着時間監視において、ActivateTaskを発行した側と、発行された側のどちらのタイミング保護違反となるかは規定されていない * マルチコアでは、どちらのコアでプロテクションフックを起動するか等の問題がある == TerminateTask == {{{ StatusType TerminateTask(void) }}} * 呼び出したタスクを終了する * 多重起動要求されているタスクが、TerminateTaskを実行した場合、再度実行可能状態となるが、TerminateTaskを呼ばずに終了(returnを呼ぶ等)した場合に、再度実行可能状態となるかは規定されていない * TOPPERS/ATK2では、以下のような実装としている * タスクが不正終了(returnを呼ぶ)した場合:多重起動は有効 * タスクが強制終了(保護違反発生)した場合:多重起動は有効 * 所属するOSAPが強制終了した場合:多重起動はリセット == ChainTask == {{{ StatusType ChainTask(TaskType TaskID) }}} * 呼び出したタスクの終了と、TaskIDで指定したタスクの起動を行う(TerminateTask+ActivateTask) == Schedule == {{{ StatusType Schedule(void) }}} * 呼び出した時点での、すべての実行可能状態のタスクの優先度に従って、再スケジューリングを行う * つまり、呼び出し元タスクが、ノンプリエンプティブタスクでなければ、呼び出す意味がない == GetTaskID == {{{ StatusType GetTaskID(TaskRefType TaskID) }}} * 実行状態のタスクIDを取得する * 複数タスクから呼び出される共用関数や、C2ISR、各フックルーチンから使用される * 本APIは、エラーフックでのデバッグにおける使用が考えられるが、割込み禁止時のAPI呼出し違反[OS093]により起動したエラーフックでは、割込み禁止状態のため、GetTaskIDが使用できないという不整合がある * TOPPERS/ATK2では、実害がないため、割込み禁止状態であっても、GetTaskIDを呼び出せるように実装している == GetTaskState == {{{ StatusType GetTaskState(TaskType TaskID, TaskStateRefType State) }}} * TaskIDで指定したタスクの状態を取得する * 本APIは、エラーフックでのデバッグにおける使用が考えられるが、割込み禁止時のAPI呼出し違反[OS093]により起動したエラーフックでは、割込み禁止状態のため、GetTaskStateが使用できないという不整合がある * TOPPERS/ATK2では、実害がないため、割込み禁止状態であっても、GetTaskStateを呼び出せるように実装している == EnableAllInterrupts == {{{ void EnableAllInterrupts(void) }}} * C1ISR、C2ISRに対する割込みを許可状態にする * EI命令のような高速な処理を想定している == DisableAllInterrupts == {{{ void DisableAllInterrupts(void) }}} * C1ISR、C2ISRに対する割込みを禁止状態にする * ネスト発行は不可で、DI命令のような高速な処理を想定している == ResumeAllInterrupts == {{{ void ResumeAllInterrupts(void) }}} * C1ISR、C2ISRに対する割込みを許可状態にする * SuspendAllInterruptsが呼ばれた回数だけ、発行しないと許可状態にならない == SuspendAllInterrupts == {{{ void SuspendAllInterrupts(void) }}} * C1ISR、C2ISRに対する割込みを禁止状態にする * ネストして発行できるが、ネスト上限回数に関する規定がない * TOPPERS/ATK2では、ネスト回数の上限値を255としている == ResumeOSInterrupts == {{{ void ResumeOSInterrupts(void) }}} * C2ISRに対する割込みを許可状態にする * SuspendOSInterruptsが呼ばれた回数だけ、発行しないと許可状態にならない == SuspendOSInterrupts == {{{ void SuspendOSInterrupts(void) }}} * C2ISRに対する割込みを禁止状態にする * ネストして発行できるが、ネスト上限回数に関する規定がない * TOPPERS/ATK2では、ネスト回数の上限値を255としている == GetResource == {{{ StatusType GetResource(ResourceType ResID) }}} * ResIDで指定したリソースを獲得する == ReleaseResource == {{{ StatusType ReleaseResource(ResourceType ResID) }}} * ResIDで指定したリソースを開放する * 上限優先度が初期優先度より低いリソースを開放しようとするとE_OS_ACCESSが返ると規定されているが、そもそもそのようなリソースを獲得できないので、E_OS_ACCESSが返ることはありえない == SetEvent == {{{ StatusType SetEvent(TaskType TaskID, EventMaskType Mask) }}} * TaskIDで指定したタスクに対するイベントMaskをセットする == ClearEvent == {{{ StatusType ClearEvent(EventMaskType Mask) }}} * 呼び出したタスクのすべてのイベントをクリアする == GetEvent == {{{ StatusType GetEvent(TaskType TaskID, EventMaskRefType Event) }}} * TaskIDで指定したタスクにセットされたイベントを取得する * マルチコア拡張仕様において、SetEventはコアを跨げるように拡張されているが、GetEventが拡張されていない * 拡張できない理由が無いため、誤記と思われる * TOPPERS/ATK2では、GetEventもコアを跨いで呼び出すことができるように実装している == WaitEvent == {{{ StatusType WaitEvent(EventMaskType Mask) }}} * Maskで指定したイベントがセットされるのを待つ * 既にイベントがセットされていた場合は、タスクは実行状態を継続する == GetAlarmBase == {{{ StatusType GetAlarmBase(AlarmType AlarmID, AlarmBaseRefType Info) }}} * AlarmIDで指定したアラームの情報を取得する * 取得する情報はコンフィギュレーション時に静的に設定したパラメータのみである == GetAlarm == {{{ StatusType GetAlarm(AlarmType AlarmID, TickRefType Tick) }}} * AlarmIDで指定したアラームが、満了するまでのティックを取得する == SetRelAlarm == {{{ StatusType SetRelAlarm(AlarmType AlarmID, TickType increment, TickType cycle) }}} * AlarmIDで指定したアラームを、相対時間指定でセットする * AUTOSAR仕様で、incrementで指定された値が0であった場合にE_OS_VALUEを返す標準エラーで返すと規定されている[OS304]が、OSEK仕様では、E_OS_VALUEは拡張エラーと規定されているという矛盾がある * TOPPERS/ATK2では、どちらのE_OS_VALUEも、拡張エラーとしている == SetAbsAlarm == {{{ StatusType SetAbsAlarm(AlarmType AlarmID, TickType start, TickType cycle) }}} * AlarmIDで指定したアラームを、絶対時間指定でセットする == CancelAlarm == {{{ StatusType CancelAlarm(AlarmType AlarmID) }}} * AlarmIDで指定したセット済みのアラームを、キャンセルする == GetActiveApplicationMode == {{{ AppModeType GetActiveApplicationMode(void) }}} * OS起動時、StartOSで引数に指定されたアプリケーションモードを取得する == StartOS == {{{ void StartOS(AppModeType Mode) }}} * OSを起動する * [wiki:spec_ECUStateManager ECU State Manager]から呼び出される == ShutdownOS == {{{ void ShutdownOS(StatusType Error) }}} * OSをシャットダウンする ---- = API仕様(AUTOSAR) = == GetApplicationID == {{{ ApplicationType GetApplicationID(void) }}} * 実行状態のOSAP IDを取得する * この機能に関する議論 → #1 == GetISRID == {{{ ISRType GetISRID(void) }}} * 実行状態のISR IDを取得する * OSEK仕様のGetTaskIDは、返り値がStatusTypeであるのに対し、対称的なAPIであるGetISRIDの戻り値はISRTypeとなっている * 結果として、エラーの発生有無は分からず、返り値がStatusTypeでないのでエラーフックも起動しない[OS093] * TOPPERS/ATK2では、返り値のデータ型に関わらず、異常発生時はエラーフックを起動するように実装している == CallTrustedFunction == {{{ StatusType CallTrustedFunction(TrustedFunctionIndexType FunctionIndex, TrustedFunctionParameterRefType FunctionParams) }}} * FunctionIndexで指定した信頼関数を実行する == CheckISRMemoryAccess == {{{ AccessType CheckISRMemoryAccess(ISRType ISRID, MemoryStartAddressType Address, MemorySizeType Size) }}} * ISRIDで指定したC2ISRの、AddressとSizeで指定したメモリ領域に対するアクセス可否を取得する * 引数で指定したメモリ領域が複数のメモリ保護属性の領域を跨いでいた場合の振る舞いが規定されていない * TOPPERS/ATK2では、アクセス不可能を返すように実装している == CheckTaskMemoryAccess == {{{ AccessType CheckTaskMemoryAccess(TaskType TaskID, MemoryStartAddressType Address, MemorySizeType Size) }}} * TaskIDで指定したタスクの、AddressとSizeで指定したメモリ領域に対するアクセス可否を取得する * 引数で指定したメモリ領域が複数のメモリ保護属性の領域を跨いでいた場合の振る舞いが規定されていない * TOPPERS/ATK2では、アクセス不可能を返すように実装している == CheckObjectAccess == {{{ ObjectAccessType CheckObjectAccess(ApplicationType ApplID, ObjectTypeType ObjectType, void ...) }}} * 可変長引数"..."で指定したオブジェクトの、ApplIDで指定されたOSAPに対するアクセス可否を取得する == CheckObjectOwnership == {{{ ApplicationType CheckObjectOwnership(ObjectTypeType ObjectType, void ...) }}} * 可変長引数"..."で指定したオブジェクトが所属するOSAP IDを取得する == StartScheduleTableRel == {{{ StatusType StartScheduleTableRel(ScheduleTableType ScheduleTableID, TickType Offset) }}} * ScheduleTableIDで指定したスケジュールテーブルを、相対時間指定でセットする == StartScheduleTableAbs == {{{ StatusType StartScheduleTableAbs(ScheduleTableType ScheduleTableID, TickType Start) }}} * ScheduleTableIDで指定したスケジュールテーブルを、絶対時間指定でセットする == StopScheduleTable == {{{ StatusType StopScheduleTable(ScheduleTableType ScheduleTableID) }}} * ScheduleTableIDで指定したセット済みのスケジュールテーブルを、停止する == NextScheduleTable == {{{ StatusType NextScheduleTable(ScheduleTableType ScheduleTableID_From, ScheduleTableType ScheduleTableID_To) }}} * ScheduleTableID_Fromで指定したスケジュールテーブルの1周期が終了後、ScheduleTableID_Toで指定したスケジュールテーブルを開始する * ScheduleTableID_Fromに指定されたスケジュールテーブルが周期動作だった場合に、ScheduleTableID_Toのスケジュールテーブルに切り替わった後も周期動作を続けるかどうかが規定されていない * TOPPERS/ATK2では、ScheduleTableID_Fromに指定されたスケジュールテーブルが周期動作の場合も、切り替え時に停止するように実装している * マルチコア拡張仕様において、StartScheduleTableRelやStartScheduleTableAbsはコアを跨げるように拡張されているが、NextScheduleTableが拡張されていない * 拡張できない理由が無いため、誤記と思われる * TOPPERS/ATK2では、NextScheduleTableもコアを跨いで呼び出すことができるように実装している == StartScheduleTableSynchron == {{{ StatusType StartScheduleTableSynchron(ScheduleTableType ScheduleTableID) }}} * ScheduleTableIDで指定した明示同期スケジュールテーブルの同期を開始する == SyncScheduleTable == {{{ StatusType SyncScheduleTable(ScheduleTableType ScheduleTableID, TickType Value) }}} * ScheduleTableIDで指定した明示同期スケジュールテーブルを、Valueで指定したティックで同期する == SetScheduletableAsync == {{{ StatusType SetScheduletableAsync(ScheduleTableType ScheduleTableID) }}} * ScheduleTableIDで指定した明示同期スケジュールテーブルの同期を終了する == GetScheduleTableStatus == {{{ StatusType GetScheduleTableStatus(ScheduleTableType ScheduleTableID, ScheduleTableStatusRefType ScheduleStatus) }}} * ScheduleTableIDで指定したスケジュールテーブルの状態を取得する == IncrementCounter == {{{ StatusType IncrementCounter(CounterType CounterID) }}} * CounterIDで指定したソフトウェアカウンタをインクリメントする * 同時に複数のアラーム・スケジュールテーブルが満了する場合、各満了処理が終了するごとに、再スケジューリングを行うかどうかが規定されていない * TOPPERS/ATK2では、再スケジューリングを行う実装としている == GetCounterValue == {{{ StatusType GetCounterValue(CounterType CounterID, TickRefType Value) }}} * CounterIDで指定したカウンタの現在ティックを取得する == GetElapsedValue == {{{ StatusType GetElapsedValue(CounterType CounterID, TickRefType Value, TickRefType ElapsedValue) }}} * CounterIDで指定したカウンタが、Valueで指定したティックから、現在何ティック経過しているかを取得する * 第2引数で、経過時間の基準とするティックを指定するが、同時に現在のティックによって上書きされるので注意が必要 == TerminateApplication == {{{ StatusType TerminateApplication(ApplicationType Application, RestartType RestartOption) }}} * Applicationで指定したOSAPを強制終了する == AllowAccess == {{{ StatusType AllowAccess(void) }}} * 呼び出したタスクが所属するOSAPを利用可能状態にする * C2ISRからも呼び出し可能と規定されているが、ユースケースは不明 * 再起動状態のOSAPに所属するリスタートタスクから呼び出される == GetApplicationState == {{{ StatusType GetApplicationState(ApplicationType Application, ApplicationStateRefType Value) }}} * Applicationで指定したOSAPの状態を取得する == GetNumberOfActivatedCores == {{{ uint32 GetNumberOfActivatedCores(void) }}} * AUTOSAR OSが起動しているコアの数を取得する == GetCoreID == {{{ CoreIdType GetCoreID(void) }}} * 呼び出した処理が実行されているコアIDを取得する == StartCore == {{{ void StartCore(CoreIdType CoreID, StatusType* Status) }}} * CoreIDで指定したコアを、AUTOSAR OS管理のコアとして起動する * OSは起動しない == StartNonAutosarCore == {{{ void StartNonAutosarCore(CoreIdType CoreID, StatusType* Status) }}} * CoreIDで指定したコアを、AUTOSAR OS管理外のコアとして起動する == GetSpinlock == {{{ StatusType GetSpinlock(SpinlockIdType SpinlockId) }}} * SpinlockIdで指定したスピンロックを獲得する * 取得できない場合、獲得できるまでスピンする == ReleaseSpinlock == {{{ StatusType ReleaseSpinlock(SpinlockIdType SpinlockId) }}} * SpinlockIdで指定したスピンロックを開放する * スピンロックとリソースの獲得、解放はLIFOで実行しなければならないと規定されている[OS702]が、スピンロックとリソースは独立したオブジェクトであり、独立してLIFOであれば問題ないため、本要求の意味は不明である == TryToGetSpinlock == {{{ StatusType TryToGetSpinlock(SpinlockIdType SpinlockId, TryToGetSpinlockType* Success) }}} * SpinlockIdで指定したスピンロックを獲得する * 取得できない場合、エラー終了する == ShutdownAllCores == {{{ void ShutdownAllCores(StatusType Error) }}} * OS実行中のすべてのコアでOSシャットダウンを行う * ShutdownAllCoresを呼び出していないコアのシャットダウンフックに、何のエラーコードが渡されるかは規定されていない * TOPPERS/ATK2では、ShutdownAllCoresを呼び出していないコアでは、シャットダウンフックにE_OS_SHUTDOWN_OTHER_COREが渡される実装としている == ControlIdle == {{{ StatusType ControlIdle(CoreIdType CoreID, IdleModeType IdleMode) }}} == IocSend == {{{ Std_ReturnType IocSend_[_]( IN) }}} * IocIdに対して単一のデータを送信する(キューあり) == IocWrite == {{{ Std_ReturnType IocWrite_[_]( IN) }}} * IocIdに対して単一のデータを送信する(キューなし) == IocSendGroup == {{{ Std_ReturnType IocSendGroup_( IN1, IN2, ...) }}} * IocIdに対して複数のデータを送信する(キューあり) == IocWriteGroup == {{{ Std_ReturnType IocWriteGroup_( IN1, IN2, ...) }}} * IocIdに対して複数のデータを送信する(キューなし) == IocReceive == {{{ Std_ReturnType IocReceive_( OUT) }}} * IocIdから単一のデータを受信する(キューあり) == IocRead == {{{ Std_ReturnType IocRead_( OUT) }}} * IocIdから単一のデータを受信する(キューなし) == IocReceiveGroup == {{{ Std_ReturnType IocReceiveGroup_( OUT1, OUT2, ...) }}} * IocIdから複数のデータを受信する(キューあり) == IocReadGroup == {{{ Std_ReturnType IocReadGroup_( OUT1, OUT2, ...) }}} * IocIdから複数のデータを受信する(キューなし) == IocEmptyQueue == {{{ Std_ReturnType IocEmptyQueue_(void) }}} * IocIdのキューを空にする == GetCurrentApplicationID == {{{ ApplicationType GetCurrentApplicationID(void) }}} ---- = コンフィギュレーション仕様 = == OsAlarm == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm }}} * 型:Container * 多重度:0..* * アラームオブジェクトコンテナ == OsAlarmAccessingApplication == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAccessingApplication }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsApplication}}} * アラームにアクセス可能なOSAP == OsAlarmCounterRef == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmCounterRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsCounter}}} * アラームに接続するカウンタ == OsAlarmAction == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAction }}} * 型:Container * 多重度:1 * アラームアクション指定 == OsAlarmActivateTask == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask }}} * 型:Container * 多重度:0..1 * アラームアクションのタスク起動指定 == OsAlarmActivateTaskRef == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAction/OsAlarmActivateTask/OsAlarmActivateTaskRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsTask}}} * アラームのアクションで起動するタスク == OsAlarmCallback == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAction/OsAlarmCallback }}} * 型:Container * 多重度:0..1 * アラームアクションのアラームコールバック指定 == OsAlarmCallbackName == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAction/OsAlarmCallback/OsAlarmCallbackName }}} * 型:FunctionName * 多重度:1 * アラームのアクションで呼び出すアラームコールバックの名称 == OsAlarmIncrementCounter == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAction/OsAlarmIncrementCounter }}} * 型:Container * 多重度:0..1 * アラームアクションのカウンタインクリメント指定 == OsAlarmIncrementCounterRef == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAction/OsAlarmIncrementCounter/OsAlarmIncrementCounterRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsCounter}}} * アラームのアクションでインクリメントするカウンタ == OsAlarmSetEvent == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent }}} * 型:Container * 多重度:0..1 * アラームアクションのイベントセット指定 == OsAlarmSetEventRef == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsEvent}}} * アラームのアクションでセットするイベント == OsAlarmSetEventTaskRef == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAction/OsAlarmSetEvent/OsAlarmSetEventTaskRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsTask}}} * アラームのアクションでイベントをセットするタスク == OsAlarmAutostart == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAutostart }}} * 型:Container * 多重度:0..1 * アラーム自動起動設定 == OsAlarmAlarmTime == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAutostart/OsAlarmAlarmTime }}} * 型:IntegerParam * 多重度:1 * 上限値:18446744073709551615 * 下限値:0 * アラーム自動起動時の初回満了時刻 == OsAlarmAutostartType == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAutostart/OsAlarmAutostartType }}} * 型:EnumerationParam * 多重度:1 * 選択肢: * ABSOLUTE:絶対アラームとして自動起動する * RELATIVE:相対アラームとして自動起動する * アラームの動作種別 == OsAlarmCycleTime == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAutostart/OsAlarmCycleTime }}} * 型:IntegerParam * 多重度:1 * アラーム自動起動時の周期時間、0の場合は単発アラームとなる * 上限値:18446744073709551615 * 下限値:0 == OsAlarmAppModeRef == {{{ /AUTOSAR/EcucDefs/Os/OsAlarm/OsAlarmAutostart/OsAlarmAppModeRef }}} * 型:Reference * 多重度:1..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsAppMode}}} * 自動起動するアプリケーションモード == OsAppMode == {{{ /AUTOSAR/EcucDefs/Os/OsAppMode }}} * 型:Container * 多重度:1..* * アプリケーションモードコンテナ == OsApplication == {{{ /AUTOSAR/EcucDefs/Os/OsApplication }}} * 型:Container * 多重度:0..* * OSAPオブジェクトコンテナ == OsApplicationCoreAssignment == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsApplicationCoreAssignment }}} * 型:IntegerParam * 多重度:0..1 * OSAPを割付けるコアID == OsApplicationCoreRef == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsApplicationCoreRef }}} * 型:Reference * 多重度:0..1 * 参照先:{{{/AUTOSAR/EcucDefs/EcuC/EcucHardware/EcucCoreDefinition}}} == OsTrusted == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsTrusted }}} * 型:BooleanParam * 多重度:1 * デフォルト値:false * 信頼OSAPか非信頼OSAPかを表す == OsTrustedApplicationDelayTimingViolationCall == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsTrustedApplicationDelayTimingViolationCall }}} * 型:BooleanParam * 多重度:1 * デフォルト値:true == OsTrustedApplicationWithProtection == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsTrustedApplicationWithProtection }}} * 型:BooleanParam * 多重度:1 * デフォルト値:false == OsAppAlarmRef == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsAppAlarmRef }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsAlarm}}} * OSAPに所属するアラーム == OsAppCounterRef == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsAppCounterRef }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsCounter}}} * OSAPに所属するカウンタ == OsAppEcucPartitionRef == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsAppEcucPartitionRef }}} * 型:Reference * 多重度:0..1 * 参照先:{{{/AUTOSAR/EcucDefs/EcuC/EcucPartitionCollection/EcucPartition}}} * OSAPに対応するEcucPartition == OsAppIsrRef == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsAppIsrRef }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsIsr}}} * OSAPに所属するISR == OsAppScheduleTableRef == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsAppScheduleTableRef }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsScheduleTable}}} * OSAPに所属するスケジュールテーブル == OsAppTaskRef == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsAppTaskRef }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsTask}}} * OSAPに所属するタスク == OsRestartTask == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsRestartTask }}} * 型:Reference * 多重度:0..1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsTask}}} * OSAP再起動時に起動するタスク * 本パラメータを指定しない場合、リスタートタスクの起動は行われない == OsApplicationHooks == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsApplicationHooks }}} * 型:Container * 多重度:1 * OSAP固有フックコンテナ == OsAppErrorHook == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsApplicationHooks/OsAppErrorHook }}} * 型:BooleanParam * 多重度:1 * OSAP固有のエラーフック呼出し有無 == OsAppShutdownHook == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsApplicationHooks/OsAppShutdownHook }}} * 型:BooleanParam * 多重度:1 * OSAP固有のシャットダウンフック呼出し有無 == OsAppStartupHook == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsApplicationHooks/OsAppStartupHook }}} * 型:BooleanParam * 多重度:1 * OSAP固有のスタートアップフック呼出し有無 == OsApplicationTrustedFunction == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsApplicationTrustedFunction }}} * 型:Container * 多重度:0..* * 信頼関数定義 == OsTrustedFunctionName == {{{ /AUTOSAR/EcucDefs/Os/OsApplication/OsApplicationTrustedFunction/OsTrustedFunctionName }}} * 型:FunctionName * 多重度:1 * 信頼関数名 == OsCounter == {{{ /AUTOSAR/EcucDefs/Os/OsCounter }}} * 型:Container * 多重度:0..* * カウンタオブジェクトコンテナ == OsCounterMaxAllowedValue == {{{ /AUTOSAR/EcucDefs/Os/OsCounter/OsCounterMaxAllowedValue }}} * 型:IntegerParam * 多重度:1 * 上限値:18446744073709551615 * 下限値:1 * カウンタのティックの最大値 == OsCounterMinCycle == {{{ /AUTOSAR/EcucDefs/Os/OsCounter/OsCounterMinCycle }}} * 型:IntegerParam * 多重度:1 * 上限値:18446744073709551615 * 下限値:1 * 接続されたアラームがカウンタに指定できる最小周期値 == OsCounterTicksPerBase == {{{ /AUTOSAR/EcucDefs/Os/OsCounter/OsCounterTicksPerBase }}} * 型:IntegerParam * 多重度:1 * 上限値:4294967295 * 下限値:1 * OSがこの値をどのように使用するか不明 * カウンタ固有の値(OSは不使用) == OsCounterType == {{{ /AUTOSAR/EcucDefs/Os/OsCounter/OsCounterType }}} * 型:EnumerationParam * 多重度:1 * 選択肢: * HARDWARE:ハードウェアカウンタ * SOFTWARE:ソフトウェアカウンタ * カウンタのタイプ == OsSecondsPerTick == {{{ /AUTOSAR/EcucDefs/Os/OsCounter/OsSecondsPerTick }}} * 型:FloatParam * 多重度:0..1 * 上限値:Inf * 下限値:0 * ハードウェアカウンタにおける1ティック当たりの実時間(単位:秒) * ジェネレータは、ユーザが実時間を計算するために、変換マクロを生成する生成されるマクロの形式は、{{{OS_TICKS2_(ticks)}}}である * {{{}}}にはNS、US、MS、SECが入り、4種類のマクロを出力する * {{{)}}}は本コンテナを含むカウンタの名称である == OsCounterAccessingApplication == {{{ /AUTOSAR/EcucDefs/Os/OsCounter/OsCounterAccessingApplication }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsApplication}}} * カウンタにアクセス可能なOSAP == OsDriver == {{{ /AUTOSAR/EcucDefs/Os/OsCounter/OsDriver }}} * 型:Container * 多重度:0..1 * OsDriverコンテナの節がないため、削除漏れと思われる * TOPPERS/ATK2では削除している == OsGptChannelRef == {{{ /AUTOSAR/EcucDefs/Os/OsCounter/OsDriver/OsGptChannelRef }}} * 型:Reference * 多重度:0..1 * 参照先:{{{/AUTOSAR/EcucDefs/Gpt/GptChannelConfigSet/GptChannelConfiguration}}} * OsDriverコンテナの節がないため、削除漏れと思われる * TOPPERS/ATK2では削除している == OsTimeConstant == {{{ /AUTOSAR/EcucDefs/Os/OsCounter/OsTimeConstant }}} * 型:Container * 多重度:0..* * OSがこの値をどのように使用するか不明 * OsSecondsPerTickで同様の値を設定しているように思われる * TOPPERS/ATK2では削除している == OsTimeValue == {{{ /AUTOSAR/EcucDefs/Os/OsCounter/OsTimeConstant/OsTimeValue }}} * 型:FloatParam * 多重度:1 * 上限値:Inf * 下限値:0 * OSがこの値をどのように使用するか不明 * OsSecondsPerTickで同様の値を設定しているように思われる * TOPPERS/ATK2では削除している == OsEvent == {{{ /AUTOSAR/EcucDefs/Os/OsEvent }}} * 型:Container * 多重度:0..* * イベントオブジェクトコンテナ == OsEventMask == {{{ /AUTOSAR/EcucDefs/Os/OsEvent/OsEventMask }}} * 型:IntegerParam * 多重度:0..1 * 上限値:18446744073709551615 * 下限値:0 * イベントマスク値 == OsIsr == {{{ /AUTOSAR/EcucDefs/Os/OsIsr }}} * 型:Container * 多重度:0..* * ISRオブジェクトコンテナ == OsIsrCategory == {{{ /AUTOSAR/EcucDefs/Os/OsIsr/OsIsrCategory }}} * 型:EnumerationParam * 多重度:1 * 選択肢: * CATEGORY_1:C1ISR * CATEGORY_2:C2ISR * ISRのカテゴリ == OsIsrResourceRef == {{{ /AUTOSAR/EcucDefs/Os/OsIsr/OsIsrResourceRef }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsResource}}} * ISRが獲得するリソース == OsIsrTimingProtection == {{{ /AUTOSAR/EcucDefs/Os/OsIsr/OsIsrTimingProtection }}} * 型:Container * 多重度:0..1 * ISRオブジェクトタイミング保護設定コンテナ == OsIsrAllInterruptLockBudget == {{{ /AUTOSAR/EcucDefs/Os/OsIsr/OsIsrTimingProtection/OsIsrAllInterruptLockBudget }}} * 型:FloatParam * 多重度:0..1 * 上限値:Inf * 下限値:0 * 全割込み禁止時間バジェット(単位:秒) == OsIsrExecutionBudget == {{{ /AUTOSAR/EcucDefs/Os/OsIsr/OsIsrTimingProtection/OsIsrExecutionBudget }}} * 型:FloatParam * 多重度:0..1 * 上限値:Inf * 下限値:0 * C2ISR実行時間バジェット(単位:秒) == OsIsrOsInterruptLockBudget == {{{ /AUTOSAR/EcucDefs/Os/OsIsr/OsIsrTimingProtection/OsIsrOsInterruptLockBudget }}} * 型:FloatParam * 多重度:0..1 * 上限値:Inf * 下限値:0 * OS割込み禁止バジェット(単位:秒) == OsIsrTimeFrame == {{{ /AUTOSAR/EcucDefs/Os/OsIsr/OsIsrTimingProtection/OsIsrTimeFrame }}} * 型:FloatParam * 多重度:0..1 * 上限値:Inf * 下限値:0 * ISRタイムフレーム(単位:秒) == OsIsrResourceLock == {{{ /AUTOSAR/EcucDefs/Os/OsIsr/OsIsrTimingProtection/OsIsrResourceLock }}} * 型:Container * 多重度:0..* * ISRのリソース占有時間バジェット設定コンテナ == OsIsrResourceLockBudget == {{{ /AUTOSAR/EcucDefs/Os/OsIsr/OsIsrTimingProtection/OsIsrResourceLock/OsIsrResourceLockBudget }}} * 型:FloatParam * 多重度:1 * 上限値:Inf * 下限値:0 * リソース占有時間バジェット(単位:秒) == OsIsrResourceLockResourceRef == {{{ /AUTOSAR/EcucDefs/Os/OsIsr/OsIsrTimingProtection/OsIsrResourceLock/OsIsrResourceLockResourceRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsResource}}} * リソース占有時間バジェットを監視するリソース == OsOS == {{{ /AUTOSAR/EcucDefs/Os/OsOS }}} * 型:Container * 多重度:1 * OS設定コンテナ == OsNumberOfCores == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsNumberOfCores }}} * 型:IntegerParam * 多重度:0..1 * 上限値:65535 * 下限値:1 * 複数のコアの中で、どのコアがマスタコアかを指定するコンテナが存在しない * ComなどのBSWはマスタコアでしか使用できないため、RTEジェネレータがマスタコア/スレーブコアの判別ができない問題がある * TOPPERS/ATK2では、{{{/AUTOSAR/EcucDefs/Os/OsOS/OsMasterCoreId}}}を新設している * 本OSを起動するコア数の最大値 == OsScalabilityClass == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsScalabilityClass }}} * 型:EnumerationParam * 多重度:0..1 * 選択肢: * SC1:スケーラビリティクラス1 * SC2:スケーラビリティクラス2(タイミング保護) * SC3:スケーラビリティクラス3(メモリ保護) * SC4:スケーラビリティクラス4(タイミング保護+メモリ保護) * スケーラビリティクラス * 本パラメータが省略された場合、実装定義のデフォルト値が選択される == OsStackMonitoring == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsStackMonitoring }}} * 型:BooleanParam * 多重度:1 * スタックモニタリングの使用有無 == OsStatus == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsStatus }}} * 型:EnumerationParam * 多重度:1 * 選択肢: * EXTENDED:標準エラーのみ検出 * STANDARD:標準エラーと拡張エラーを検出 * エラーコード種別の指定 == OsUseGetServiceId == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsUseGetServiceId }}} * 型:BooleanParam * 多重度:1 * {{{OSErrorGetServiceId()}}}の使用有無 == OsUseParameterAccess == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsUseParameterAccess }}} * 型:BooleanParam * 多重度:1 * エラーが発生したシステムサービスの引数取得の使用有無 == OsUseResScheduler == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsUseResScheduler }}} * 型:BooleanParam * 多重度:1 * デフォルト値:true * AUTOSAR仕様では、スケジューラリソースをサポートしないため本パラメータは使用されない == OsHooks == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsHooks }}} * 型:Container * 多重度:1 * フック設定コンテナ == OsErrorHook == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsHooks/OsErrorHook }}} * 型:BooleanParam * 多重度:1 * エラーフックの呼出し有無 == OsPostTaskHook == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsHooks/OsPostTaskHook }}} * 型:BooleanParam * 多重度:1 * ポストタスクフックの呼出し有無 == OsPreTaskHook == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsHooks/OsPreTaskHook }}} * 型:BooleanParam * 多重度:1 * プレタスクフックの呼出し有無 == OsProtectionHook == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsHooks/OsProtectionHook }}} * 型:BooleanParam * 多重度:0..1 * プロテクションフックの呼出し有無 == OsShutdownHook == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsHooks/OsShutdownHook }}} * 型:BooleanParam * 多重度:1 * シャットダウンフックの呼出し有無 == OsStartupHook == {{{ /AUTOSAR/EcucDefs/Os/OsOS/OsHooks/OsStartupHook }}} * 型:BooleanParam * 多重度:1 * スタートアップフックの呼出し有無 == OsResource == {{{ /AUTOSAR/EcucDefs/Os/OsResource }}} * 型:Container * 多重度:0..* * リソースオブジェクトコンテナ == OsResourceProperty == {{{ /AUTOSAR/EcucDefs/Os/OsResource/OsResourceProperty }}} * 型:EnumerationParam * 多重度:1 * 選択肢: * INTERNAL:標準リソース * LINKED:リンクリソース * STANDARD:内部リソース * リソース種別 == OsResourceAccessingApplication == {{{ /AUTOSAR/EcucDefs/Os/OsResource/OsResourceAccessingApplication }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsApplication}}} * リソースにアクセス可能なOSAP == OsResourceLinkedResourceRef == {{{ /AUTOSAR/EcucDefs/Os/OsResource/OsResourceLinkedResourceRef }}} * 型:Reference * 多重度:0..1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsResource}}} * リンクリソースにおけるリンク先リソース == OsScheduleTable == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable }}} * 型:Container * 多重度:0..* * スケジュールテーブルオブジェクトコンテナ == OsScheduleTableDuration == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableDuration }}} * 型:IntegerParam * 多重度:1 * 上限値:18446744073709551615 * 下限値:0 * スケジュールテーブル周期(ティック数) == OsScheduleTableRepeating == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableRepeating }}} * 型:BooleanParam * 多重度:1 * スケジュールテーブルの繰り返し指定 == OsSchTblAccessingApplication == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsSchTblAccessingApplication }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsApplication}}} * スケジュールテーブルにアクセス可能なOSAP == OsScheduleTableCounterRef == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableCounterRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsCounter}}} * スケジュールテーブルに接続するカウンタ == OsScheduleTableAutostart == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableAutostart }}} * 型:Container * 多重度:0..1 * スケジュールテーブル自動起動設定コンテナ == OsScheduleTableAutostartType == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableAutostart/OsScheduleTableAutostartType }}} * 型:EnumerationParam * 多重度:1 * 選択肢: * ABSOLUTE:ティックの絶対値で自動起動する * RELATIVE:ティックの相対値で自動起動する * SYNCHRON:同期待ち状態で自動起動する * 自動起動種別の指定 == OsScheduleTableStartValue == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableAutostart/OsScheduleTableStartValue }}} * 型:IntegerParam * 多重度:0..1 * 上限値:18446744073709551615 * 下限値:0 * OsScheduleTableAutostartTypeがABSOLUTEの場合、自動起動するスケジュールテーブルに対して設定するティックの絶対値として使用される * OsScheduleTableAutostartTypeがRELATIVEの場合、自動起動するスケジュールテーブルに対して設定するティックの相対値として使用される == OsScheduleTableAppModeRef == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableAutostart/OsScheduleTableAppModeRef }}} * 型:Reference * 多重度:1..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsAppMode}}} * 自動起動するアプリケーションモード == OsScheduleTableExpiryPoint == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableExpiryPoint }}} * 型:Container * 多重度:1..* * スケジュールテーブル満了点設定コンテナ == OsScheduleTblExpPointOffset == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblExpPointOffset }}} * 型:IntegerParam * 多重度:1 * 上限値:18446744073709551615 * 下限値:0 * スケジュールテーブル満了点オフセット(スケジュールテーブル先頭からのティック数) == OsScheduleTableEventSetting == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting }}} * 型:Container * 多重度:0..* * スケジュールテーブル満了点セットするイベントの設定コンテナ == OsScheduleTableSetEventRef == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsEvent}}} * 満了点アクションでセットするイベント == OsScheduleTableSetEventTaskRef == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableEventSetting/OsScheduleTableSetEventTaskRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsTask}}} * 満了点アクションでイベントをセットするタスク == OsScheduleTableTaskActivation == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation }}} * 型:Container * 多重度:0..* * スケジュールテーブル満了点で起動するタスクの設定コンテナ == OsScheduleTableActivateTaskRef == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTableTaskActivation/OsScheduleTableActivateTaskRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsTask}}} * 満了点アクションで起動するタスク == OsScheduleTblAdjustableExpPoint == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblAdjustableExpPoint }}} * 型:Container * 多重度:0..1 * スケジュールテーブル満了点同期設定コンテナ == OsScheduleTableMaxLengthen == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblAdjustableExpPoint/OsScheduleTableMaxLengthen }}} * 型:IntegerParam * 多重度:1 * 上限値:18446744073709551615 * 下限値:0 * 同期補正で満了点の遅延を伸ばしてもよい最大値(ティック数) == OsScheduleTableMaxShorten == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableExpiryPoint/OsScheduleTblAdjustableExpPoint/OsScheduleTableMaxShorten }}} * 型:IntegerParam * 多重度:1 * 上限値:18446744073709551615 * 下限値:0 * 同期補正で満了点の遅延を縮めてもよい最大値(ティック数) == OsScheduleTableSync == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableSync }}} * 型:Container * 多重度:0..1 * スケジュールテーブル同期設定コンテナ * 本コンテナを省略した場合、同期なしスケジュールテーブルとなる == OsScheduleTblExplicitPrecision == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableSync/OsScheduleTblExplicitPrecision }}} * 型:IntegerParam * 多重度:0..1 * 上限値:18446744073709551615 * 下限値:0 * スケジュールテーブルを同期状態とみなす最大差分(ティック数) == OsScheduleTblSyncStrategy == {{{ /AUTOSAR/EcucDefs/Os/OsScheduleTable/OsScheduleTableSync/OsScheduleTblSyncStrategy }}} * 型:EnumerationParam * 多重度:1 * 選択肢: * EXPLICIT:明示同期 * IMPLICIT:暗黙同期 * NONE:同期なし * デフォルト値:NONE * スケジュールテーブルの同期方式 == OsSpinlock == {{{ /AUTOSAR/EcucDefs/Os/OsSpinlock }}} * 型:Container * 多重度:0..* * スピンロックオブジェクトコンテナ == OsSpinlockLockMethod == {{{ /AUTOSAR/EcucDefs/Os/OsSpinlock/OsSpinlockLockMethod }}} * 型:EnumerationParam * 多重度:1 * 選択肢: * LOCK_ALL_INTERRUPTS * LOCK_CAT2_INTERRUPTS * LOCK_NOTHING * LOCK_WITH_RES_SCHEDULER * デフォルト値:LOCK_NOTHING == OsSpinlockAccessingApplication == {{{ /AUTOSAR/EcucDefs/Os/OsSpinlock/OsSpinlockAccessingApplication }}} * 型:Reference * 多重度:1..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsApplication}}} * スピンロックにアクセス可能なOSAP == OsSpinlockSuccessor == {{{ /AUTOSAR/EcucDefs/Os/OsSpinlock/OsSpinlockSuccessor }}} * 型:Reference * 多重度:0..1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsSpinlock}}} * ネストして獲得可能なスピンロック指定 * 獲得するスピンロックの順に本パラメータを記述することで、スピンロック獲得順序を示すリストを管理し、チェックすることができる == OsTask == {{{ /AUTOSAR/EcucDefs/Os/OsTask }}} * 型:Container * 多重度:0..* * タスクオブジェクトコンテナ == OsTaskActivation == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskActivation }}} * 型:IntegerParam * 多重度:1 * 上限値:4294967295 * 下限値:1 * 最大起動要求回数 == OsTaskPriority == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskPriority }}} * 型:IntegerParam * 多重度:1 * 上限値:4294967295 * 下限値:0 * タスク優先度 == OsTaskSchedule == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskSchedule }}} * 型:EnumerationParam * 多重度:1 * 選択肢: * FULL:フルプリエンプティブスケジューリング * NON:ノンプリエンプティブスケジューリング * タスクのスケジューリングポリシ == OsTaskAccessingApplication == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskAccessingApplication }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsApplication}}} * タスクにアクセス可能なOSAP == OsTaskEventRef == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskEventRef }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsEvent}}} * タスクの持つイベント == OsTaskResourceRef == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskResourceRef }}} * 型:Reference * 多重度:0..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsResource}}} * タスクが獲得するリソース == OsTaskAutostart == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskAutostart }}} * 型:Container * 多重度:0..1 * タスクオブジェクトの自動起動指定コンテナ == OsTaskAppModeRef == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskAutostart/OsTaskAppModeRef }}} * 型:Reference * 多重度:1..* * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsAppMode}}} * 自動起動するアプリケーションモード == OsTaskTimingProtection == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskTimingProtection }}} * 型:Container * 多重度:0..1 * タスクオブジェクトタイミング保護設定コンテナ == OsTaskAllInterruptLockBudget == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskTimingProtection/OsTaskAllInterruptLockBudget }}} * 型:FloatParam * 多重度:0..1 * 上限値:Inf * 下限値:0 * 全割込み禁止時間バジェット(単位:秒) == OsTaskExecutionBudget == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskTimingProtection/OsTaskExecutionBudget }}} * 型:FloatParam * 多重度:0..1 * 上限値:Inf * 下限値:0 * タスク実行時間バジェット(単位:秒) == OsTaskOsInterruptLockBudget == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskTimingProtection/OsTaskOsInterruptLockBudget }}} * 型:FloatParam * 多重度:0..1 * 上限値:Inf * 下限値:0 * OS割込み禁止バジェット(単位:秒) == OsTaskTimeFrame == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskTimingProtection/OsTaskTimeFrame }}} * 型:FloatParam * 多重度:0..1 * 上限値:Inf * 下限値:0 * タスクタイムフレーム(単位:秒) == OsTaskResourceLock == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskTimingProtection/OsTaskResourceLock }}} * 型:Container * 多重度:0..* * タスクのリソース占有時間バジェット設定コンテナ == OsTaskResourceLockBudget == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskTimingProtection/OsTaskResourceLock/OsTaskResourceLockBudget }}} * 型:FloatParam * 多重度:1 * 上限値:Inf * 下限値:0 * リソース占有時間バジェット(単位:秒) == OsTaskResourceLockResourceRef == {{{ /AUTOSAR/EcucDefs/Os/OsTask/OsTaskTimingProtection/OsTaskResourceLock/OsTaskResourceLockResourceRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsResource}}} * リソース占有時間バジェットを監視するリソース == OsIoc == {{{ /AUTOSAR/EcucDefs/Os/OsIoc }}} * 型:Container * 多重度:0..1 * IOC情報コンテナ == OsIocCommunication == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication }}} * 型:Container * 多重度:0..* * IOCオブジェクトコンテナ == OsIocBufferLength == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocBufferLength }}} * 型:IntegerParam * 多重度:0..1 * 上限値:4294967295 * 下限値:0 * IOCのキューサイズ * 本パラメータを指定した場合、IOCはキューありとなり、本パラメータを省略した場合、IOCはキューなしとなる == OsIocDataProperties == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocDataProperties }}} * 型:Container * 多重度:1..* * 通信データ情報コンテナ * 本コンテナが1つ定義された場合、単一通信となり、2つ以上定義された場合、グループ通信となる == OsIocDataPropertyIndex == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocDataProperties/OsIocDataPropertyIndex }}} * 型:IntegerParam * 多重度:0..1 * 上限値:255 * 下限値:0 * 生成されるIOC用システムサービスの引数の順序 * 小さい値のデータから順に、引数に与えられる == OsIocInitValue == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocDataProperties/OsIocInitValue }}} * 型:StringParam * 多重度:0..1 * 通信データの初期値 == OsIocDataTypeRef == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocDataProperties/OsIocDataTypeRef }}} * 型:Reference * 多重度:1 * 参照先:IMPLEMENTATION-DATA-TYPE * 通信データのデータ型 == OsIocReceiverProperties == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocReceiverProperties }}} * 型:Container * 多重度: * R4.0.3:1 * R4.2.2:1..* * レシーバ情報コンテナ == OsIocFunctionImplementationKind == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocReceiverProperties/OsIocFunctionImplementationKind }}} * 型:EnumerationParam * 多重度:0..1 * 選択肢: * DO_NOT_CARE:指定しない * FUNCTION:関数 * MACRO:マクロ * デフォルト値:DO_NOT_CARE * IOC用システムサービスの実装方法の選択 == OsIocReceiverPullCB == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocReceiverProperties/OsIocReceiverPullCB }}} * 型:FunctionName * 多重度:0..1 * IOCによるデータ受信時に呼び出すコールバック == OsIocReceivingOsApplicationRef == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocReceiverProperties/OsIocReceivingOsApplicationRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsApplication}}} * レシーバが所属するOSAP == OsIocSenderProperties == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocSenderProperties }}} * 型:Container * 多重度:1..* * センダ情報コンテナ * 本コンテナが1つ定義された場合、1:1通信となり、2つ以上定義された場合、N:1通信となる == OsIocFunctionImplementationKind == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocSenderProperties/OsIocFunctionImplementationKind }}} * 型:EnumerationParam * 多重度:0..1 * 選択肢: * DO_NOT_CARE:指定しない * FUNCTION:関数 * MACRO:マクロ * デフォルト値:DO_NOT_CARE * IOC用システムサービスの実装方法の選択 == OsIocSenderId == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocSenderProperties/OsIocSenderId }}} * 型:IntegerParam * 多重度:0..1 * 上限値:255 * 下限値:0 * N:1通信時におけるセンダID == OsIocSendingOsApplicationRef == {{{ /AUTOSAR/EcucDefs/Os/OsIoc/OsIocCommunication/OsIocSenderProperties/OsIocSendingOsApplicationRef }}} * 型:Reference * 多重度:1 * 参照先:{{{/AUTOSAR/EcucDefs/Os/OsApplication}}} * センダが所属するOSAP