こんにちは 、
現在、S32K312上でDMAを備えたFlexCAN拡張RX FIFOの開発に取り組んでいます。 enhanced FIFOenhanced FIFO拡張FIFO
私たちはrtd v 7.0.1を使用しており、現在直面しているいくつかの所見や問題点についてご説明をいただきたいと考えています。
DMAを有効にしたFlexCAN Enhanced RX FIFOの推奨MEX構成を確認していただけますか?私たちの構成が意図されたRTD利用モデルに沿っていることを確実にしたいと考えています。
FlexCANの正誤表で示されているように、拡張RX FIFOが有効になっている場合、以下のメッセージバッファは使用されません。
MB0~MB7、MB10、MB12、MB20、MB22、MB30、MB32、MB40、MB50、およびMB60。
当社の体制は以下のとおりです。
観察された行動:
このシナリオで予想される挙動と、メッセージ喪失が確認される可能性のある理由について説明していただけますか?
RTDドライバのデバッグ中に、FlexCAN_Ip_RxFifo APIがDMAパラメータを再構成しているように見えました。
具体的には:
これにより、総転送サイズは64バイト(解釈によっては約68バイト)となり、リファレンスマニュアルで説明されている強化RX FIFOエントリサイズとは一致しないようです。
このAPIの意図された動作と、これらのDMA設定の背景について説明していただけますか?
デバッグ中のもう一つの観察点は、DMAがFIFOからソフトウェアバッファにデータを転送しているように見えるにもかかわらず、以下の通りです:
参考のためにスクリーンショットを添付します。
これは予想される動作なのか、またEnhanced RX FIFOメモリをランタイムデバッグ時にどのように解釈すべきか説明していただけますか?
また、RTDの構造とリファレンスマニュアルの間に不一致も観察されました。
もう少し詳しく教えていただけますか:
私たちの要件は以下を使用することです。
意図された動作は以下のとおりです。
拡張RX FIFOによって予約されているメッセージバッファ(MB0~MB7、MB10、MB12、MB20、MB22、MB30、MB32、MB40、MB50、およびMB60)は意図的に使用されず、残りのメッセージバッファが送信に使用されます。
以下の情報を提供していただけますか:
再開まで今しばらくお待ちください。
こんにちは、
1. MEX構成検証
A: あなたのメキシコは、あなたが説明した環境とは合っていないようです
- ウォーターマークは1に設定されています
- DMA転送設定は必須ではなく、ドライバはDMAを独自に設定します。ただし、独自のDMA設定や転送を行う場合は別です。
2. 強化RX FIFO + DMAデータ損失観測
A: DMA完了割り込みの後、受信したすべてのメッセージが読み出され、割り当てられたDMAチャネルは無効化されます。
SO、したがって、FlexCAN_Ip_RxFifoが再度呼び出されなくても、RXFIFOはエントリ0からメッセージを受け付けますが、DMAが再開されないためRXFIFOは読み出されません。
3. FlexCAN_Ip_RxFifo DMA再構成
A:マイナーループカウントとは何ですか?ドライバ自体はマイナーループサイズ(NBYTES)を80に設定し、最大64バイトのペイロードメッセージとRXFIFOからのIDHITおよびタイムスタンプ情報を読み取っています。
SO、実際のところあなたの計算が理解できません。コードを共有してみませんか?
4. RX FIFOメモリ監視機能の強化
A: 拡張 RX FIFO 要素領域の最初の部分のみが表示され、拡張 FIFO 出力ポートのアドレス範囲を表します。デバッグ中にRXFIFOメモリを表示することは推奨されません。FIFOエンジンの適切な動作のためには、DMA動作中にCPUが強化FIFO出力ポートアドレス範囲にアクセスしないようにすべきです。実際にはこのメモリ空間を表示することで読み込みが発生します。
5. 構造サイズの不一致
A: FlexCAN_Ip_MsgBuffType は RXFIFO の構造を完全に反映していません。転送終了時にドライバが内部バッファを読み出し、ユーザーバッファの各フィールドを適切なデータで埋めます。
上記の通り、DMAは1回のDMA要求ごとに80バイトの読み込みを設定すべきです。
ドライバは、DMAが終わってイベントが呼び出された後に再度DMAを再起動(コールFlexCAN_Ip_RxFifo)する必要があるように書かれていますFLEXCAN_EVENT_DMA_COMPLETE。
以下のデモを参照して、強化RXFIFOやDMAの使用例を挙げられますが、これはRTD400で行われます
https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K344-FlexCAN-Ip-TX-RX-EnhanceRXFIFO-DMA-...
BR、ペトル