Changes between Version 5 and Version 6 of tips/pdu_id


Ignore:
Timestamp:
Jan 31, 2019, 10:28:16 PM (5 years ago)
Author:
fujisft-shigihara
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • tips/pdu_id

    v5 v6  
    88
    99= はじめに =
    10 * COMスタックでは各モジュールにPDU-IDを設定するパラメータが存在する
    11 * 各PDU-IDがどのように使用されるか、モジュール間でどのように同じPDUを識別しているか、をCANプロトコルを題材に説明する
     10* COMスタックでは各モジュールにPDU-IDを設定するパラメータが存在する
     11* 各PDU-IDがどのように使用されるか,モジュール間でどのように同じPDUを識別しているか,をCANプロトコルを題材に説明する
    1212
    1313----
    1414= 用語説明 =
    1515== COMスタック ==
    16 * AUTOSARアーキテクチャにおける、通信スタック(Communication Services、Communication Hardware Abstraction、Communication Drivers)の総称
     16* AUTOSARアーキテクチャにおける,通信スタック(Communication Services,Communication Hardware Abstraction,Communication Drivers)の総称
    1717
    1818== PDU ==
     
    2828  * [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)]参照
    2929* グローバルPDUにはIDという概念はない
    30 * PDU-IDを示すデータ型(PduIdType)、PDUのバイト長を示すデータ型(PduLengthType)は、EcuCで定義し、COMスタックジェネレータで生成される{{{ComStack_Cfg.h}}}で定義する
     30* PDU-IDを示すデータ型(PduIdType),PDUのバイト長を示すデータ型(PduLengthType)は,EcuCで定義し,COMスタックジェネレータで生成される{{{ComStack_Cfg.h}}}で定義する
    3131  * [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スタック全体で使用される
    3333  * [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)]参照
    3434
    3535----
    3636
    37 = 各モジュール(Com、PduR、CanIf)におけるPDU-ID =
    38 * 各モジュールで定義するPDUには必ず、EcuCのPDUへの参照があり、どのPDUを示しているかを区別することができる
     37= 各モジュール(Com,PduR,CanIf)におけるPDU-ID =
     38* 各モジュールで定義するPDUには必ず,EcuCのPDUへの参照があり,どのPDUを示しているかを区別することができる
    3939  * [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)]参照
    4040* 各モジュールで定義するPDU-IDはスタック内のの上下のモジュールからAPIコール時に引数に指定されるIDを示している
    4141  * [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)]参照
    4242  * [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}}}となる
    4444  * [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を知る必要がある
    4646
    4747----
    4848
    4949= PduRの振る舞いについて =
    50 * PduRのルーティングテーブルではルーティングパスを{{{PduRSrcPdu}}}と{{{PduRDestPdu}}}のセット(1:N)で指定する
    51 * {{{PduRSrcPdu}}}と{{{PduRDestPdu}}}にそれぞれグローバルPDUへの参照があるためどのPDUを示しているか区別できる
     50* PduRのルーティングテーブルではルーティングパスを{{{PduRSrcPdu}}}と{{{PduRDestPdu}}}のセット(1:N)で指定する
     51* {{{PduRSrcPdu}}}と{{{PduRDestPdu}}}にそれぞれグローバルPDUへの参照があるためどのPDUを示しているか区別できる
    5252* 送信(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では使用しない
    5757    * [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)]参照
    5858* 受信(CanIf→PduR→Com)
    59   * CanIfからの受信の場合受信したPDUのグローバルPDUに紐付いた{{{PduRSrcPdu}}}のPDU-IDに対して{{{PduR_CanIfRxIndication}}}を呼び出す
     59  * CanIfからの受信の場合受信したPDUのグローバルPDUに紐付いた{{{PduRSrcPdu}}}のPDU-IDに対して{{{PduR_CanIfRxIndication}}}を呼び出す
    6060    * [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で送信完了通知が不要なら必要ないと定義されている
    6464      * [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)]参照
    6565    * R4.1ではこの記述が消えている
     
    6969* ゼロコストオペレーションを設定するパラメータはPduRにしか存在しない
    7070  * [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名を変換するマクロを用意する必要がある
    7373{{{
    7474#define PduR_ComTransmit       CanIf_Transmit
     
    7777  * [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)]参照
    7878  * [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のジェネレータは必要となる
    8282
    8383----
     
    157157        CanIfTxPduRef: /EcuC/EcuC/EcucPduCollection/Pdu_1
    158158}}}
    159 上記の場合各モジュールの処理は以下となる
     159上記の場合各モジュールの処理は以下となる
    160160* ComIPdu_1の送信
    161161  * Com