バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
ISO14229ことUDSの話。
UDSの機能単位の内の、
Routine
Upload/Download
について。
登場人物
博識フクロウのフクさん

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

今回は「Routine」か。
結構そっけない機能単位だね。

内包されるサービスも1つだけだね。
Service | SID | Description |
---|---|---|
RoutineControl | $31 | ECU内のルーチンの開始、停止、結果を要求 |

このルーチンってのがミソかな?
具体的にどういう処理になるの?

決まってない。

え?いや、事例的なのは?

まぁ私の経験上だけだと、
開発中だけに使うオンラインキャリブレーション機能とかかなぁ。
あと、あり得るとしたらECU内部のロギング機能なんてのに利用される可能性は高そうだ。

つまり本当に何でも良いって感じ?

そうだね。
とはいえ、車両の目的と異なる機能であることが多いから、
開発中限定とかの制限が掛かることになるかな。

I/O Control以上に特殊なことができそうだもんね。
Upload/Download

最後になるのがUpload/Download機能単位。
Service | SID | Description |
---|---|---|
RequestDownload | $34 | オフボードテスタ―からECUへのデータ転送ネゴシエーション要求 |
RequestUpload | $35 | ECUからオフボードテスタ―へのデータ転送ネゴシエーション要求 |
TransferData | $36 | データ転送要求(Upload、Download共にこのSIDを利用) |
RequestTransferExit | $37 | データ転送終了要求 |
RequestFileTransfer | $38 | ファイル転送のネゴシエーション要求 |

んー、言ってることは分かるけど、具体的な流れがイメージできないなー。

そうだと思うよ。
この機能単位は他の機能単位と違って、複数のSIDを組み合わせて目的を実現するタイプだね。

例えば?

オフボードテスタ―からECUへのデータ転送をするには、以下の流れになる。
①RequestDownloadでDownload処理開始要求
②TransferDataを繰り返しでデータ取得
③RequestTransferExitで転送処理終了

あー。
RequestDownloadで直接Downloadが出来るわけじゃなくて、
実データはTransferDataで取得するんだ。
とすると、
Uploadは
①RequestUploadでUpload処理開始要求
②TransferDataを繰り返しでデータ転送
③RequestTransferExitで転送処理終了

そうそう。

そう言えば、
データの読み書きってReadMemoryByAddress(SID$23)とWriteMemoryByAddress(SID$3D)ってのが無かった?
あれとは違うの?

単純な読み書きという意味ではほぼ一緒なんだけど、
Upload/Download機能単位のサービスの特徴としては
- 圧縮
- 暗号化
の指定ができるというのがある。
これを利用してリプログラミング(ソフトウェアのアップデート)の
- データ転送効率を引き上げ
- 秘匿性を確保
ってのを実現している。

なるほど。
それは確かに目的が違う感じがするね。

最後のRequestFileTransferは?

私も使われているところは見たことないけど、
パソコン上のファイルパス指定のような方式でファイル的にデータ転送を行うときに使われるようだよ。
流れは他のと一緒で、
①RequestFileTransferでファイルアクセス処理開始要求
②TransferDataを繰り返しでデータ転送
③RequestTransferExitで転送処理終了
読み/書きの切り替えに関してはRequestFileTransferのパラメータで指定する。

ECUでファイルって概念は使うのかな?

無いとは言い切れないね。
ECUもいろいろあるし、例えば外部と無線で通信するテレマティクスユニットなんかは持っててもおかしくはないかな。

ほー。確かにありそうかも。

とりあえず、各機能単位別に内包サービスの概要説明は終わったってところだ。
まとめ

まとめだよ。
- Routineの説明。
- 主に開発時に使用するような機能で利用される。
- Upload/Downloadの説明。
- データ転送用で圧縮と暗号化も出来るサービス群。
バックナンバーはこちら。
ボッシュ自動車ハンドブック 日本語第4版
CAN入門講座: 組込みマイコンで学ぶCANプロトコルとプログラミング
CANおよびCANopenによる組み込みネットワーク
カーハッカーズ・ハンドブック ―車載システムの仕組み・分析・セキュリティ
車載イーサネット “クルマIT”高度化への基盤技術
詳解 車載ネットワーク -CAN、CAN FD、LIN、CXPI、Ethernetの仕組みと設計のために
自動車用ECU開発入門 システム・ハードウェア・ソフトウェアの基本とAUTOSARによる開発演習 (エンジニア入門シリーズ122)
車載ネットワ-ク・システム徹底解説: CAN,LIN,FlexRayのプロトコルと実装 (Design wave mook)
コメント