【XCP】最小構成のMBD事例 第2章 その226【CAN-FD③】

【XCP】最小構成のMBD事例 第2章 その226【CAN-FD③】 事例
【XCP】最小構成のMBD事例 第2章 その226【CAN-FD③】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

前回はXCPonCAN-FDに対応すべく現状の仮想ECU、仮想HILS構成を再確認。
結論としては

  • CANのところをCAN-FD化
  • XCP経由で変数のやり取りをしている部分を32bit化

当然動作確認もする必要があるが、python-can、PyXCPを駆使してなんとかする方針。

今回は、AUTOSAR-XCPのCAN-FD対応について。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

AUTOSAR-XCPのCAN-FD対応に向けての方針

太郎くん
太郎くん

まずはAUTOSAR-XCPのCAN-FD対応をやるわけだけど、
どこをどうすればいいんだ?

フクさん
フクさん

うーん、そうだねー。
まずはCanIfに相当する部分。
次にXCPのMAX_CTOMAX_DTOの変更。
ってあたりかな。

太郎くん
太郎くん

CanIfに相当する部分の修正が必要なのか・・・。
結構面倒そうだなぁ・・・。

フクさん
フクさん

いや、たぶんそうでもないよ。
実は最初からCAN-FDを想定した作りにはしてある。
何しろCAN-FDの実験をしたときのCanTpで使用したものを持ってきてるからね。
そういう意味では部分レベルではCAN-FDの実績はあるものを使っているとは言える。

太郎くん
太郎くん

そっか、CanTpの時にもCAN-FDはやってたもんね。
確かここらへん。

CanIfのCAN-FD対応の勘所

フクさん
フクさん

といっても、どこらへんがCAN-FD対応なのかは示しておこう。

太郎くん
太郎くん

確かに、知らんうちにCAN-FD対応されてた。
では、なんかあった時に困るもんね。

フクさん
フクさん

ポイントは受信割り込み時のところになるな。

int rx_interrupt(void *param, vcanMessage* msg)
{
	_WaitForSigleObject(hMutex, -1);

	// for CAN-FD
	static const uint8 cantp_canfd_dlc_snd_table[] = {
	0U,		1U,		2U,		3U,		4U,		5U,		6U,		7U,
	8U,		12U,	16U,	20U,	24U,	32U,	48U,	64U,
	};

	XcpInfo.SduDataPtr = msg->Data;
	XcpInfo.SduLength = cantp_canfd_dlc_snd_table[msg->Dlc];
	if (msg->Id == 1) {
		Xcp_CanIfRxIndication(1, &XcpInfo);
	}
	_ReleaseMutex(hMutex);
	return 0;
}
太郎くん
太郎くん

そういえば、cantp_canfd_dlc_snd_tableってのいて、ちょっと気になってはいたんだよな。
これでDLCを実際のデータ長に変えてる感じ?

フクさん
フクさん

そうだね。
CAN-FDの場合、8以下の場合はDLCとデータフィールドのサイズは一致するんだけど、8を超えるとちょっと数え方が変わる
配列の中身を見てもらえればわかるんだけど、以下の関係になってる。

DLCデータフィールドサイズ
912
1016
1120
1224
1332
1448
1564
太郎くん
太郎くん

ここら辺はいつも分からなくなるんだよねー。

フクさん
フクさん

まぁ、「こういう仕様だ。」以上のことは言えないしね。

まとめ

フクさん
フクさん

まとめだよ。

  • AUTOSAR-XCPのCAN-FD対応に向けての方針を決める。
    • CanIf相当の部分とXCPのパケット長のところを修正する必要あり。
    • といってもCanIf相当の部分は実はすでにCAN-FD対応済み
  • CAN-FD対応の際はDLCの仕様の特殊さに注意する必要がある。
    • 8以下の時と8を超えた時で雰囲気が変わる。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました