AN-946: LINを経由するフラッシュ / EEメモリの書き込み—プロトコル6 (Rev. 0) PDF

AN-946
アプリケーション・ノート
LIN を経由するフラッシュ/EE メモリの書き込み—プロトコル 6
著者:Aude Richard
はじめに
ADuC703x デバイス・ファミリの重要な機能は、インサーキッ
トでコードを内蔵フラッシュ/EE メモリへダウンロードするデ
バイスの機能です。このインサーキットでのコード・ダウンロ
ード機能は、LIN 通信バスを使って実行されます。
こ の ア プ リ ケ ー シ ョ ン ・ ノ ー ト で は 、 ADuC7032-8L と
ADuC7033 に組込まれているダウンロード・プロトコル(プロト
コル 6)について説明します。このプロトコルを使うと、ユーザ
は量産時の書き込み用またはアプリケーションの更新用に使う
LIN 書き込みツールを開発できるようになります。
このアプリケーション・ノートで用語「ホスト」は、データの
ADuC703x へのダウンロードを実行するホスト・マシン(マイク
ロコントローラ、DSP、またはその他のマシン)を意味します。
ローダは、 特に ADuC703x に内蔵されているシリアル・ダウン
ロード・ファームウェアを意味します。
このアプリケーション・ノートでは、プロトコル 6 についての
み説明していることに注意してください。
プロトコル 6 は、UDS (ISO/DIS 14229-1.2, Road Vehicles Unified
Diagnostic Services)により定められた一般的手順に従いまが、
コード・スペースが限定されているため、サービスは実際に必
要な最小限に限定されています。
プロトコル 4 は、www.analog.com から提供している AN-881 ア
プ リ ケ ー シ ョ ン ・ ノ ー ト 「 Programming Flash/EE Memory via
LIN—Protocol 4」で説明しています。
プロトコルは 3 行目のデバイス・ブランドに示してあります。
A60 は、プロトコル 6 のリリース・バージョンを、A40 はプロ
トコル 4 のリリース・バージョンを、それぞれ表します。
表 1.プロトコル表示例
Line
LFCSP
Line 1
Line 2
Line 3
Line 4
ADuC7033
BCPZ 8L
A60 #Date Code
Assembly Lot Number
書き込みシーケンスは診断テスタから起動して制御することが
できます。この診断テスタは一般に、コントローラ・エリア・
ネットワーク(CAN)を介して LIN マスターに接続されます。LIN
マスターは、CAN バスから LIN バスへ診断メッセージを転送す
るゲートウェイとして機能します。CAN から LIN への診断メッ
セージの転送を可能にするため、モジュールの書き込みを行う
LIN コマンドは、LIN Diagnostic and Configuration Specification
(Revision 2.0, September 23, 2003)に準拠する必要があります。
ADUC703X ローダの動作
LIN を介した無人でのダウンロードを可能にするときは、リセ
ット時に NTRST がロー・レベルで、かつアドレス 0x80014 のフ
ラッシュ/EE メモリ値が 0x27011970 に一致しない、またはペー
ジ 0 のチェックサムに一致しない場合にのみ、ADuC703x にロ
ーダ・モードを開始させるようにします(図 1 参照)。
通常 NTRST はロー・レベルに維持されるため、ダウンロー
ド・モードの開始は、フラッシュ・アドレス 0x80014 の値で決
定されます。一般に、ユーザ・アプリケーションではフラッシ
ュ・アドレス 0x80014 の値は 0xFFFFFFFF でないため、ユー
ザ・コードには、ロケーション 0x80014 を消去、またはページ
0(フラッシュ・アドレス 0x0~0x200)を消去して、デバイスをリ
セットするメカニズムが組込まれている必要があります。この
メカニズムを使うと、デバイスを再書き込みするダウンロー
ド・モードを開始することができます。理想的には、プログラ
ムの書き込み中に電源故障または他のエラーが発生した場合で
も、ダウンロード・モードを再起動できるようにするため、フ
ラッシュ・アドレス 0x80014 の値を最後に書き込む必要があり
ます。
ページ 0 のチェックサムは、アドレス 0x80014 のワードの 2 ハ
ーフ・ワードを除いた、ページ 0 の全ハーフ・ワードの単純な
和です。この和をアドレス 0x80014 に格納しておく必要がありま
す。
Rev. 0
社/〒105-6891 東京都港区海岸 1-16-1 ニューピア竹芝サウスタワービル
電話 03(5402)8200
大阪営業所/〒532-0003 大阪府大阪市淀川区宮原 3-5-36 新大阪 MT ビル 2 号
電話 06(6350)6868
本
AN-946
目次
はじめに .............................................................................................. 1
消去ルーチン.................................................................................. 6
ADUC703X ローダの動作 ............................................................. 1
ダウンロード要求 .......................................................................... 6
パケット構造 ...................................................................................... 4
データ転送...................................................................................... 6
内蔵ローダに実装されているコマンド ........................................... 5
チェック・ルーチン ...................................................................... 7
NAD の割り当て ............................................................................ 5
ECU リセット ................................................................................. 7
識別子による読み出し .................................................................. 5
LIN 書き込みユーティリティの例 ................................................... 8
Rev. 0
- 2/8 -
AN-946
図 1 .ダウンロード・モードの開始
Rev. 0
- 3/8 -
AN-946
パケット構造
表 2 .フレーム識別子 0x3C
ロ ー ダ と の LIN 通 信 は 、 LIN Diagnostic and Configuration
Specification, Revision 2.0, September 23, 2003に定める次の一
般的条件に準拠する必要があります。








カーネルは、マスター要求フレームとスレーブ応答フレー
ムの 2 つの各 LIN 診断フレームに対してスロットを設ける
必要があります。
LIN マスターからの要求は、表 2 に示すパケット・デー
タ・ユニット(PDU)フォーマットに準拠する必要がありま
す。
応答は、表 3 に示す PDU フォーマットに準拠する必要があ
ります。
PCI タイプ・シングル・フレーム(SF)だけを使用すること
ができます。先頭フレーム(FF)と連続フレーム(CF)は、サ
ポートしていません。
すべてのフレームは従来型チェックサムを使用しています。
認識できないコマンドは無視されます。
通信エラーのようなエラーを持つフレームは無視されます。
したがって、異常な消去ルーチン・フレームは無視されま
す。異常なダウンロード要求フレームは無視されるため、後
続転送データ・フレームは認識されず、書き込みは発生し
ません。データ転送フレームが異常な場合、データ転送フ
レームの認識を停止します。実際、正しい NAD と PCI ≠
0x05 または SID ≠ 0x36 または不正なチェックサムを持つフ
レームでは、データ転送フレームの認識を停止します。
内蔵ローダに実装されているコマンドのセクションの表 4
~表 6 および表 8~表 14 の Values の列に示すアドレスは、
ハード・コードされた値であり例ではありません。
Rev. 0
- 4/8 -
Byte
Description
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Node address (NAD)
Protocol control information (PCI)
Service identifier (SID)
Data 1
Data 2
Data 3
Data 4
Data 5
表 3 .フレーム識別子 0x3D
Byte
Description
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Node address
Protocol control information
Response identifier (RSID = SID + 0x40)
Data 1
Data 2
Data 3
Data 4
Data 5
Application Note
AN-946
内蔵ローダに実装されているコマンド
このセクションで説明する 7 個のコマンドがプロトコル 6 に実
装されています。







表 5.識別子による読み出し要求
NAD の割り当て
識別子による読み出し
消去ルーチン
ダウンロード要求
データ転送
チェック・ルーチン
ECU のリセット
NAD の割り当て
Byte
Description
Values
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
NAD
PCI
SID
Identifier
AD supplier ID LSB
AD supplier ID MSB
Function ID LSB
Function ID MSB
User value
0x06
0xB2
0x0/0x32/0x33/0x34
0x3A
0x00
0x32
0x00
新しい NAD をスレーブへ割り当てるこのコマンドは、さまざ
まなネットワーク・システムがそれぞれの論理スレーブ・ノー
ドに対してさまざまな NAD を使う必要があるため必要になり
ます。
識別子 0x0
要求
表 6 .識別子 0x0 データ・フレーム応答
識別子 0x0 を使った識別子による読み出し要求では、LIN 製品
識別情報が返されます。ADuC703x LIN 製品の場合、この情報
は表 6 に示す 8 バイトのデータ・フレーム応答で構成さます。
LIN コンソシアムにより、アナログ・デバイセズに対してサプ
ライヤ ID 0x003A が割り当てられています。機能 ID は、プロト
コル 6 に対して 0x0032 です。
ネットワーク故障で発生するスレーブの喪失に対して保護する
ために、スレーブはブロードキャスト NAD 0x7F による NAD 割
り当てコマンドを常に認識することに注意してください。この
NAD の割り当てコマンドが送信されると、スレーブの実際の
NAD に無関係にこの認識が行われます。次に、カーネルはサプ
ライヤ ID と機能 ID をチェックして、コマンドがこのスレーブ
を対象にしたものか否かを判断します。
Description
Initial NAD
PCI
SID
Analog Devices supplier ID LSB
Analog Devices supplier ID MSB
Function ID LSB
Function ID MSB
New NAD
Description
Values
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
NAD
PCI
RSID
AD Supplier ID LSB
AD Supplier ID MSB
Function ID LSB
Function ID MSB
Variant
User value
0x06
0xF2
0x3A
0x00
0x32
0x00
0x00
識別子 0x32、識別子 0x33、識別子 0x34
表 4 .NAD の割り当て要求
Byte
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Byte
これらの識別子に対する応答では、デバイス・メモリからユー
ザ設定のデータが返されます。ローダは、データ・バイト値が
フラッシュ/EE メモリの最終ページにあるものと想定します(表
7)。
Values
0x7F
0x06
0xB0
0x3A
0x00
0x32
0x00
User value
表 7 .その他の識別子へ割り当てられたフラッシュ・ロケーシ
ョン
応答
スレーブはこの要求に応答しません。
識別子による読み出し
書き込みシーケンスをアボートした後、診断テスタは識別子に
よる読み出し要求を使って LIN スレーブの識別を要求した後に、
2 回目の書き込みを試みます。
要求
4 つの識別子(識別子 0x0、識別子 0x32、識別子 0x33、識別子
0x34)をサポートしています。
Address
ID
Byte
Contents
0x977ED
0x977EE
0x977EF
0x977F0
0x977F1
0x977F2
0x977F3
0x977F4
0x977F5
0x977F6
0x977F7
0x977F8
0x977F9
0x977FA
0x977FB
0x32
0x32
0x32
0x32
0x32
0x33
0x33
0x33
0x33
0x33
0x34
0x34
0x34
0x34
0x34
Data 1
Data 2
Data 3
Data 4
Data 5
Data 1
Data 2
Data 3
Data 4
Data 5
Data 1
Data 2
Data 3
Data 4
Data 5
User value
User value
User value
User value
User value
User value
User value
User value
User value
User value
User value
User value
User value
User value
User value
フラッシュ/EE メモリの最終ページの最後の 4 バイトはチェッ
クサムに予約されていることに注意してください。
応答
LIN スレーブの肯定応答を表 8 に示します。
Rev. 0
- 5/8 -
AN-946
表 8 .LIN スレーブ応答
ダウンロード要求
Byte
Description
Values
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
NAD
PCI
RSID
Data 1
Data 2
Data 3
Data 4
Data 5
User value
0x06
0xF2
User value
User value
User value
User value
User value
消去ルーチンと概要のセクションを参照してください。
要求
表 10.ダウンロード要求
スレーブは否定応答を行いません。
消去ルーチン
Byte
Description
Values
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
NAD
PCI
SID
Index of start page, LSB P
Index of start page, MSB P
Number of pages to be programmed, N
Unused
Unused
User value
0x04
0x34
User value
User value
User value
0xFF
0xFF
概要
ダウンロード要求コマンドは、書き込み対象のメモリ領域を指
定します。データ転送コマンドを使って送信された後続データ
は、ページ P からの N ページ分へ書き込まれます。
1 回に複数のページを消去し、ダウンロードを要求し、複数の
後続ページに対する更新データを転送することができます。更
新方法の選択は、診断テスタにのみ依存しますが、1000 LIN フ
レームあたり 1 フレームで送信エラーが表示されることが予想
されるため、各ページに対して独立に消去、書き込み、評価の
サイクルを繰り返すことが推奨されます。次の 4 つの制約を考
慮する必要があります。




応答
スレーブはこの要求に応答しません。
データ転送
スレーブの 1 フラッシュ・ページ、すなわち 512 バイトよ
り小さいメモリ領域を書き込むことはできません。
ページ 0 の書き込みには特別な注意が必要です。初期にロ
ケーション 0x80014 = 0xFFFFFFFF を書き込む必要がありま
す。
フラッシュ/EE メモリの 1 ページの評価の他に、全ユーザ・
フラッシュ/EE メモリ領域のチェックサムの評価を行った
後に ECU リセットを実行することが推奨されます。
最終ページを検証した後に、ページ 0 を再書き込みする必要
があります(消去なしで)。ただし 0x80014 は除きます。これ
はチェックサムまたは別の必要な値に割り当てられます。
これらの要求は、ダウンロード要求の後ろでのみ機能します。
要求
データ転送コマンドはフラッシュ・データを送信します。スレ
ーブは N × 512 バイトのデータを期待します。ここで、N はダ
ウンロード要求コマンドで指定されるページ数です。 4 バイ
ト・ワードのみ許容されます。19.2 kbps の LIN ボー・レートで、
1 ページのフラッシュに約 512/4 × 10 ms = 1.28 sec を要します。
表 11.データ転送要求
Byte
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
要求
消去ルーチンは、ページ P から N ページ分のフラッシュ・ペー
ジの値を消去します。各フラッシュ・ページは 512 バイトで構成
されています。値 N = 0 は将来用途に予約されています。
表 9.消去ルーチン要求
Byte
Description
Values
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
NAD
PCI
SID
Subfunction ID, 1st byte
Subfunction ID, 2nd byte
Index of start page, LSB P
Index of start page, MSB P
Number of pages to be erased, N
User value
0x06
0x31
0xFF
0x00
User value
User value
User value
応答
スレーブはこの要求に応答しません。
バイト 5 とバイト 6 のインデックスは、9 ビット右シフトしたペ
ージ・スタート・アドレスです。たとえば、フラッシュ/EE メモ
リ内のページ 2 のスタート・アドレスは 0x80400 です。これを 9
ビット右シフトすると 0x0402 になります。このインデックスは、
バイト 5 = 0x02 とバイト 6 = 0x04 として表されます。
応答
スレーブはこの要求に応答しません。
Rev. 0
Description
NAD
PCI
SID
Data 1
Data 2
Data 3
Data 4
Unused
- 6/8 -
Values
User value
0x05
0x36
User value
User value
User value
User value
0xFF
AN-946
応答
チェック・ルーチン
表 13.チェック・ルーチン応答
要求
チェック・ルーチン・コマンドは、ページ P からページ P + N −
1 までのメモリ領域のチェックサムを計算します。N = 0 での応
答は定義されていません。このコマンドは各ページに対して実
行する必要がありますが、すべての書き込みが完了した後にも
実行する必要があります。これは、消去コマンドまたはダウン
ロード・コマンドでのエラーが目的のページ以外のページに影
響を与えることがあるためです。診断テスタは、LIN スレーブ
から受信したチェックサムをフラッシュ・データ・コンテナか
ら提供される基準チェックサムと比較します。チェックサムが
異なる場合には、書き込み手順が繰り返されます。このチェッ
クサムは、ページ P の先頭 16 ビット・ワードからページ P + N
− 1 の最終 16 ビット・ワードまでのすべての 16 ビット値の和で
す。チェックサム= (Σ 16 ビット・ワード) modulo 32 です。1 ペ
ージの場合、スレーブがチェック・ルーチン要求を受信してか
らチェックサムの計算まで 500 µs を要します。ここでは、巡回
冗長性チェック(CRC)アルゴリズムは次の理由で使用されませ
ん。


Byte
Description
Values
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
NAD
PCI
RSID
Checksum LSB
Checksum, 2nd byte
Checksum, 3nd byte
Checksum, MSB
Unused
User value
0x05
0x71
User value
User value
User value
User value
0xFF
ECU リセット
要求
表 14 .ECU リセット要求
CRC チェックサムの計算には、ここで使用するシンプルな
チェックサムの計算より約 8 倍の時間を要します。
アナログ・デバイセズは、チェックされる領域内の必ずし
もすべてのハーフ・ワードまたはビットが必要に応じて書
き込まれるとは限らないエラー・モデルを想定しています。
このようなページでは常にゼロの数が少ないためチェック
サム値が大きくなります。あるいは、消去されていないペ
ージに一貫して書き込みを行うと、ゼロの数が大きくなる
ためチェックサム値が小さくなります。3 番目の可能性は、
ハーフ・ワードまたはビットが 1 個だけ誤ることです。こ
のようなエラーを検出する確率は、CRC またはシンプルな
チェックサムの使用に関係なく同じであることです。
表 12.チェック・ルーチン要求
Byte
Description
Values
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
NAD
PCI
SID
Subfunction ID
Unused
Unused
Unused
Unused
User value
0x02
0x11
0x01
0xFF
0xFF
0xFF
0xFF
ECU リセット・コマンドは、スレーブのリセットを実行します。
ADuC703x デバイスは、図 1 に示すように再起動します。アド
レ ス 0x80014 の 値 が ペ ー ジ 0 の チ ェ ッ ク サ ム ま た は 値
0x27011970 に一致すると、アプリケーション・ソフトウェアが
実行されます。
Byte
Description
Values
応答
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
NAD
PCI
SID
Subfunction ID, 1st byte
Subfunction ID, 2nd byte
Index of start page, LSB P
Index of start page, MSB P
Number of pages, N
User value
0x06
0x31
0xFF
0x01
User value
User value
User value
スレーブはこの要求に応答しません。
Rev. 0
- 7/8 -
AN-946
LIN書き込みユーティリティの例
詳細については、最寄りのアナログ・デバイセズにお尋ねくだ
さい。
AN07126-0-5/08(0)-J
D06318-0-8/07(0)-J
アナログ・デバイセズは、USB―LIN 間アダプタを必要とする
LINBWSD デ モ ・ ソ フ ト ウ ェ ア を 提 供 し て い ま す 。 Vector
Informatik 社の CANoe.LIN™ツールを使って開発したフラッシュ
/EE 書き込みデモ・ユーティリティも提供しています。
©2008 Analog Devices, Inc. All rights reserved.
Rev. 0
商標および登録商標は各社の所有に属します。
- 8/8 -