Changes between Version 5 and Version 6 of tips/pdu_id
- Timestamp:
- Jan 31, 2019, 10:28:16 PM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
tips/pdu_id
v5 v6 8 8 9 9 = はじめに = 10 * COMスタックでは 、各モジュールにPDU-IDを設定するパラメータが存在する11 * 各PDU-IDがどのように使用されるか 、モジュール間でどのように同じPDUを識別しているか、をCANプロトコルを題材に説明する10 * COMスタックでは,各モジュールにPDU-IDを設定するパラメータが存在する 11 * 各PDU-IDがどのように使用されるか,モジュール間でどのように同じPDUを識別しているか,をCANプロトコルを題材に説明する 12 12 13 13 ---- 14 14 = 用語説明 = 15 15 == COMスタック == 16 * AUTOSARアーキテクチャにおける 、通信スタック(Communication Services、Communication Hardware Abstraction、Communication Drivers)の総称16 * AUTOSARアーキテクチャにおける,通信スタック(Communication Services,Communication Hardware Abstraction,Communication Drivers)の総称 17 17 18 18 == PDU == … … 28 28 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_TPS_ECUConfiguration.pdf#page=148&view=fitv AUTOSAR_TPS_ECUConfiguration.pdf(4.3)]参照 29 29 * グローバルPDUにはIDという概念はない 30 * PDU-IDを示すデータ型(PduIdType) 、PDUのバイト長を示すデータ型(PduLengthType)は、EcuCで定義し、COMスタックジェネレータで生成される{{{ComStack_Cfg.h}}}で定義する30 * PDU-IDを示すデータ型(PduIdType),PDUのバイト長を示すデータ型(PduLengthType)は,EcuCで定義し,COMスタックジェネレータで生成される{{{ComStack_Cfg.h}}}で定義する 31 31 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_SWS_CommunicationStackTypes.pdf#page=14&view=fitv AUTOSAR_SWS_CommunicationStackTypes.pdf(COMTYPE029)]参照 32 * {{{ComStack_Cfg.h}}}は 、{{{ComStack_Types.h}}}からincludeされるため、COMスタック全体で使用される32 * {{{ComStack_Cfg.h}}}は,{{{ComStack_Types.h}}}からincludeされるため,COMスタック全体で使用される 33 33 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_SWS_CommunicationStackTypes.pdf#page=9&view=fitv AUTOSAR_SWS_CommunicationStackTypes.pdf(Figure 1)]参照 34 34 35 35 ---- 36 36 37 = 各モジュール(Com 、PduR、CanIf)におけるPDU-ID =38 * 各モジュールで定義するPDUには必ず 、EcuCのPDUへの参照があり、どのPDUを示しているかを区別することができる37 = 各モジュール(Com,PduR,CanIf)におけるPDU-ID = 38 * 各モジュールで定義するPDUには必ず,EcuCのPDUへの参照があり,どのPDUを示しているかを区別することができる 39 39 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_SWS_PDURouter.pdf#page=143&view=fitv AUTOSAR_SWS_PDURouter.pdf(Figure 32)]参照 40 40 * 各モジュールで定義するPDU-IDはスタック内のの上下のモジュールからAPIコール時に引数に指定されるIDを示している 41 41 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_TPS_ECUConfiguration.pdf#page=161&view=fitv AUTOSAR_TPS_ECUConfiguration.pdf(4.4.2.1)]参照 42 42 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_TPS_ECUConfiguration.pdf#page=162&view=fitv AUTOSAR_TPS_ECUConfiguration.pdf(Figure 4.9)]参照 43 * つまり 、ComがはPduRに対してPduR_ComTransmitを呼び出すときの引数(PDU-ID)は、PduR側でコンフィギュレーションした値である{{{PduRSourcePduHandleId}}}となる43 * つまり,ComがはPduRに対してPduR_ComTransmitを呼び出すときの引数(PDU-ID)は,PduR側でコンフィギュレーションした値である{{{PduRSourcePduHandleId}}}となる 44 44 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_SWS_PDURouter.pdf#page=35&view=fitv AUTOSAR_SWS_PDURouter.pdf(PDUR161)]参照 45 * 従って 、ComはPduRのarxmlを、PduRはCom/CanIfのarxmlを、CanIfはPduRのarxmlを読み込んで、送信先PDU-IDを知る必要がある45 * 従って,ComはPduRのarxmlを,PduRはCom/CanIfのarxmlを,CanIfはPduRのarxmlを読み込んで,送信先PDU-IDを知る必要がある 46 46 47 47 ---- 48 48 49 49 = PduRの振る舞いについて = 50 * PduRのルーティングテーブルでは 、ルーティングパスを{{{PduRSrcPdu}}}と{{{PduRDestPdu}}}のセット(1:N)で指定する51 * {{{PduRSrcPdu}}}と{{{PduRDestPdu}}}にそれぞれグローバルPDUへの参照があるため 、どのPDUを示しているか区別できる50 * PduRのルーティングテーブルでは,ルーティングパスを{{{PduRSrcPdu}}}と{{{PduRDestPdu}}}のセット(1:N)で指定する 51 * {{{PduRSrcPdu}}}と{{{PduRDestPdu}}}にそれぞれグローバルPDUへの参照があるため,どのPDUを示しているか区別できる 52 52 * 送信(Com→PduR→CanIf) 53 * Com→PduRの場合 、Comは対象のグローバルPDUに紐付いた{{{PduRSrcPdu}}}のPDU-ID({{{PduRSourcePduHandleId}}})に対して{{{PduR_ComTransmit}}}を呼び出す54 * 続いて 、PduR→CanIfでは、対象のグローバルPDUに紐付いた{{{CanIfTxPduId}}}に対して、{{{CanIf_Transmit}}}を呼び出す55 * このとき 、{{{PduRDestPdu}}}に設定したPDU-IDは送信完了通知おいて、CanIfから{{{PduR_CanIfTxConfirmation}}}が呼び出される際のPDU-IDとなる56 * 従って 、{{{PduRDestPdu}}}のPDU-ID({{{PduRDestPduHandleId}}})の多重度は0..1となっており、受信PDUでは使用しない53 * Com→PduRの場合,Comは対象のグローバルPDUに紐付いた{{{PduRSrcPdu}}}のPDU-ID({{{PduRSourcePduHandleId}}})に対して{{{PduR_ComTransmit}}}を呼び出す 54 * 続いて,PduR→CanIfでは,対象のグローバルPDUに紐付いた{{{CanIfTxPduId}}}に対して,{{{CanIf_Transmit}}}を呼び出す 55 * このとき,{{{PduRDestPdu}}}に設定したPDU-IDは送信完了通知おいて,CanIfから{{{PduR_CanIfTxConfirmation}}}が呼び出される際のPDU-IDとなる 56 * 従って,{{{PduRDestPdu}}}のPDU-ID({{{PduRDestPduHandleId}}})の多重度は0..1となっており,受信PDUでは使用しない 57 57 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_SWS_PDURouter.pdf#page=123&view=fitv AUTOSAR_SWS_PDURouter.pdf(PDUR322_Conf)]参照 58 58 * 受信(CanIf→PduR→Com) 59 * CanIfからの受信の場合 、受信したPDUのグローバルPDUに紐付いた{{{PduRSrcPdu}}}のPDU-IDに対して{{{PduR_CanIfRxIndication}}}を呼び出す59 * CanIfからの受信の場合,受信したPDUのグローバルPDUに紐付いた{{{PduRSrcPdu}}}のPDU-IDに対して{{{PduR_CanIfRxIndication}}}を呼び出す 60 60 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_TPS_ECUConfiguration.pdf#page=163&view=fitv AUTOSAR_TPS_ECUConfiguration.pdf(Figure 4.10)]参照 61 * このとき,CanIfでもIPDU-ID({{{CanIfRxPduId}}})が設定でき 、多重度が1であるが、少なくともCANプロトコルでは必要ない(どこからも利用されない)62 * 続いて 、PduR→Comでは、対象のグローバルPDUに紐付いた{{{ComIPduHandleId}}}に対して、{{{Com_RxIndication}}}を呼び出す63 * {{{ComIPduHandleId}}}は多重度0..1で 、送信完了通知が不要なら必要ないと定義されている61 * このとき,CanIfでもIPDU-ID({{{CanIfRxPduId}}})が設定でき,多重度が1であるが,少なくともCANプロトコルでは必要ない(どこからも利用されない) 62 * 続いて,PduR→Comでは,対象のグローバルPDUに紐付いた{{{ComIPduHandleId}}}に対して,{{{Com_RxIndication}}}を呼び出す 63 * {{{ComIPduHandleId}}}は多重度0..1で,送信完了通知が不要なら必要ないと定義されている 64 64 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_SWS_COM.pdf#page=128&view=fitv AUTOSAR_SWS_COM.pdf(COM175_Conf)]参照 65 65 * R4.1ではこの記述が消えている … … 69 69 * ゼロコストオペレーションを設定するパラメータはPduRにしか存在しない 70 70 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_SWS_PDURouter.pdf#page=116&view=fitv AUTOSAR_SWS_PDURouter.pdf(PDUR317_Conf)]参照 71 * {{{configuration generator}}}は{{{configuration editor}}}の意味と思われるが 、いずれにしても、ゼロコストオペレーションとするかどうかはコンフィギュレーション設定時に影響することを言っている72 * PduRにて 、ゼロコストオペレーション設定時に以下のようなAPI名を変換するマクロを用意する必要がある71 * {{{configuration generator}}}は{{{configuration editor}}}の意味と思われるが,いずれにしても,ゼロコストオペレーションとするかどうかはコンフィギュレーション設定時に影響することを言っている 72 * PduRにて,ゼロコストオペレーション設定時に以下のようなAPI名を変換するマクロを用意する必要がある 73 73 {{{ 74 74 #define PduR_ComTransmit CanIf_Transmit … … 77 77 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_SWS_PDURouter.pdf#page=57&view=fitv AUTOSAR_SWS_PDURouter.pdf(7.5)]参照 78 78 * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_SWS_PDURouter.pdf#page=143&view=fitv AUTOSAR_SWS_PDURouter.pdf(11.5.1)]参照 79 * つまり 、ComやCanIfは、PduRの{{{PduRZeroCostOperation}}}に関係なく、対象のグローバルPDUに紐付いた{{{PduRSourcePduHandleId}}}を使用すればよい80 * この場合 、PduRのジェネレータで、{{{PduRSourcePduHandleId}}}と対象のグローバルPDUに紐付いた{{{CanIfTxPduId}}}が一致しているか等のチェック処理が必要81 * ゼロコストオペレーションでもあっても 、PduRのジェネレータは必要となる79 * つまり,ComやCanIfは,PduRの{{{PduRZeroCostOperation}}}に関係なく,対象のグローバルPDUに紐付いた{{{PduRSourcePduHandleId}}}を使用すればよい 80 * この場合,PduRのジェネレータで,{{{PduRSourcePduHandleId}}}と対象のグローバルPDUに紐付いた{{{CanIfTxPduId}}}が一致しているか等のチェック処理が必要 81 * ゼロコストオペレーションでもあっても,PduRのジェネレータは必要となる 82 82 83 83 ---- … … 157 157 CanIfTxPduRef: /EcuC/EcuC/EcucPduCollection/Pdu_1 158 158 }}} 159 上記の場合 、各モジュールの処理は以下となる159 上記の場合,各モジュールの処理は以下となる 160 160 * ComIPdu_1の送信 161 161 * Com