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 -