2388301_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2388301_ja-JP

2388301_ja-JP

AutosarプログラムでOsIf_GetCounterを呼び出すとE_OS_CALLEVEL

チームの皆さん、こんにちは。

私たちは NXP S32K588 をAUTOSARベースのプログラムで使用しており、 ETAS OSEB MCALを組み合わせています。

いくつかのMCALコンポーネントは、タイムアウト方法を以下のいずれかに設定できるタイムアウト機構を提供しています:

  • OSIF_COUNTER_SYSTEM
  • OSIF_COUNTER_DUMMY

タイムアウト方法が OSIF_COUNTER_SYSTEMに設定されている場合、影響を受けるドライバーは初期化シーケンス中にOsIf_GetCounter()を通じてOSIFカウンターにアクセスしようとします。

これらのドライバー初期化関数は EcuM_Init()から呼び出されるため、AUTOSAR OSは以下の方法でエラーを報告します:

エラーフック => E_OS_CALLEVEL

_Naveen__0-1782813128855.png

私たちの理解では、これはAUTOSAR OSカウンターAPIは タスクISRなどの有効なOSコンテキストからのみアクセスが許可されているのに対し、EcuM_Init()はOSスケジューラが起動する前に実行されるためです。

この状況に対処するための推奨されるアプローチについてアドバイスをいただけますか?具体的には:

  • OS起動前のMCALタイムアウト処理に関して、推奨される設定はありますか?
  • EcuM_Init()から初期化されたドライバーにはOSIF_COUNTER_DUMMYを使うべきでしょうか?
  • プリOSフェーズ中にタイムアウト機能を安全に有効にするための、ETAS OS、EB MCAL、またはNXP固有のガイドラインや回避策はありますか?



Re: Invokation of OsIf_GetCounter in Autosar program causes E_OS_CALLEVEL

こんにちは、

ありがとうございます。SW/RTDチームに追加のフィードバックがあれば聞いてみます。

BR、ペトル

Re: Invokation of OsIf_GetCounter in Autosar program causes E_OS_CALLEVEL

こんにちは、

あなたの分析は正しいようです。OSIF_COUNTER_SYSTEMで設定されたドライバがOS起動前にEcuM_Init()から初期化されている場合、AUTOSAR OSの実装によってOsIf_GetCounter E_OS_CALLEVELが発生することがあります。

OS起動前の段階で初期化されるモジュールの場合、一般的な回避策は、OSベースのタイミングサービスの使用を避け、代わりにOSIF_COUNTER_DUMMY(または別のOS以外のタイミングソース)を使用することです。

具体的な推奨事項は、ETAS OSの実装方法や使用しているMCAL/RTDのバージョンによっても異なる場合があります。さらなる検証のためにS32DSとRTD(またはMCAL)バージョンを共有していただけませんか?

BR、ペトル

タグ(1)
評価なし
バージョン履歴
最終更新日:
昨日
更新者: