【XCP】最小構成のMBD事例 第2章 その203【AUTOSAR⑨】

【XCP】最小構成のMBD事例 第2章 その203【AUTOSAR⑨】 事例
【XCP】最小構成のMBD事例 第2章 その203【AUTOSAR⑨】

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

はじめに

前回からAUTOSAR-XCPのコンフィグレーションを始めたところ。
Xcp_Cfg.hとXcp_Cfg.cを作成する必要があるが、
まずはXcp_Cfg.hを済ませた。

今回はXcp_Cfg.cに関連するところとなる。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

Xcp_Cfg.c

太郎くん
太郎くん

Xcp_Cfg.cの作り方もREADME.txtに記載されてる感じだね。

フクさん
フクさん

これも、とっととコードを見た方が良いだろう。

#define COUNTOF(a) (sizeof(a)/sizeof(*(a)))

static Xcp_DaqListType* g_channels_daqlist[4][253];


static Xcp_EventChannelType g_channels[] = {
	{.XcpEventChannelNumber = 0
	  ,.XcpEventChannelMaxDaqList = COUNTOF(g_channels_daqlist[0])
	  ,.XcpEventChannelTriggeredDaqListRef = g_channels_daqlist[0]
	  ,.XcpEventChannelName = "Default 10MS"
	  ,.XcpEventChannelRate = 10
	  ,.XcpEventChannelUnit = XCP_TIMESTAMP_UNIT_1MS
	  ,.XcpEventChannelProperties = 1 << 2 /* DAQ  */
											| 1 << 3 /* STIM */
	},
	{.XcpEventChannelNumber = 1
	  ,.XcpEventChannelMaxDaqList = COUNTOF(g_channels_daqlist[1])
	  ,.XcpEventChannelTriggeredDaqListRef = g_channels_daqlist[1]
	  ,.XcpEventChannelName = "Default 10MS"
	  ,.XcpEventChannelRate = 10
	  ,.XcpEventChannelUnit = XCP_TIMESTAMP_UNIT_1MS
	  ,.XcpEventChannelProperties = 1 << 2 /* DAQ  */
											| 1 << 3 /* STIM */
	},
	{.XcpEventChannelNumber = 2
	  ,.XcpEventChannelMaxDaqList = COUNTOF(g_channels_daqlist[2])
	  ,.XcpEventChannelTriggeredDaqListRef = g_channels_daqlist[2]
	  ,.XcpEventChannelName = "Default 100MS"
	  ,.XcpEventChannelRate = 100
	  ,.XcpEventChannelUnit = XCP_TIMESTAMP_UNIT_1MS
	  ,.XcpEventChannelProperties = 1 << 2 /* DAQ  */
											| 1 << 3 /* STIM */
	},
	{.XcpEventChannelNumber = 3
	  ,.XcpEventChannelMaxDaqList = COUNTOF(g_channels_daqlist[3])
	  ,.XcpEventChannelTriggeredDaqListRef = g_channels_daqlist[3]
	  ,.XcpEventChannelName = "Default 1MS"
	  ,.XcpEventChannelRate = 1
	  ,.XcpEventChannelUnit = XCP_TIMESTAMP_UNIT_1MS
	  ,.XcpEventChannelProperties = 1 << 2 /* DAQ  */
											| 1 << 3 /* STIM */
	},
};

Xcp_ConfigType g_DefaultConfig = {
	.XcpEventChannel = g_channels
  ,.XcpSegment = NULL
  ,.XcpInfo = {.XcpMC2File = "XcpSer" }
  ,.XcpMaxEventChannel = COUNTOF(g_channels)
  ,.XcpMaxSegment = 0/*COUNTOF(g_segments)*/

};

Xcp_Cfg.cの説明

太郎くん
太郎くん

これは・・・何を定義してるんだ???

フクさん
フクさん

DAQ、STIMで使うイベントチャンネルの定義だね。

太郎くん
太郎くん

確かにパラメータを見るとそんな感じだ。

太郎くん
太郎くん

でも、一番下の
Xcp_ConfigType g_DefaultConfig
の中で定義されてるSegment関連が良く分からないな。

フクさん
フクさん

Segmentは今回使用しないが、
XCPはアクセスするメモリ空間を疑似的に切り替えるSegmentという概念がある。
Online Calibrationの機能と連携することが多く、
ROM空間をRAM空間に割り当てて、概念的にはROMをリアルタイムに書き換える
って仕様がある。

太郎くん
太郎くん

なんかややこしい機能だな。

フクさん
フクさん

そうだね。
XCPの中でも一番難解な仕様なんじゃないかな。

太郎くん
太郎くん

でも、今回は未使用ってことはとりあえず、

そういう機能あるってのを認識する程度で良いのか。

フクさん
フクさん

(それを太郎くん自身が言うのはどうかと思う。)

まとめ

フクさん
フクさん

まとめだよ。

  • Xcp_Cfg.cの作成したコードを確認。
    • DAQ、STIMで使うイベントチャンネルの定義がほとんど。
  • Online Calibrationで使用されるSegmentについても記載するパラメータがある。
    • アクセスするメモリ空間を疑似的に切り替える概念を実現。
    • 今回は使用しないので、そういう概念があるのを認識程度に留める。

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

コメント

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