バックナンバーはこちら。
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についても記載するパラメータがある。
- アクセスするメモリ空間を疑似的に切り替える概念を実現。
- 今回は使用しないので、そういう概念があるのを認識程度に留める。
バックナンバーはこちら。
コメント