====== ファームウェア更新方法 (Hexファイルの書き込み) ======
このページでは、サークル「MT40」で頒布している、「[[:mobiledecoder2:top|Nゲージ向けDCCデコーダ (第二世代)]]」のファームウェアを更新する方法についてご案内しております。
これ以外の機種の場合は、該当の機種のページをご参照ください。
この手順書は、avrdudeコマンドを直接操作してコンパイル済みのHexファイルを書き込む方法の案内となります。 \\
他に[[mobiledecoder2:firmupdate:arduino|Arduino IDEから書き込む方法]]もあります。
----
====== はじめに ======
[[:mobiledecoder2:top|Nゲージ向けDCCデコーダ (第二世代)]]では、マイコンに[[https://www.microchip.com/wwwproducts/en/ATtiny1606|ATtiny1606]]または[[https://www.microchip.com/wwwproducts/en/ATtiny806|ATtiny806]]を使用しております。 \\
そのため、ファームウェアの書き換えを行うためにはUPDIインターフェースに対応したマイコンライターを用意する必要があります。
この手順書では、マイコンライターを用意するところから説明します。
----
====== 更新に必要なもの ======
ファームウェア更新を行うために必要となるものは、下記となります。
** Arduino **
{{ :mobiledecoder2:update:jtag2updi:arduino.jpg?300 |}}
マイコンへの書き込み機として、Arduinoを使用します。 \\
([[https://github.com/ElTangas/jtag2updi|jtag2updi]]を書き込んで使用します) \\
この手順でプログラムを書き換えますので、スケッチを消去してもよいものをご用意ください。
互換機等でも対応可能であると思われます。
** 4.7kΩの抵抗 **
{{ :mobiledecoder2:update:jtag2updi:register.jpg?300 |}}
UPDIの信号線に挿入します。 \\
この例ではリード付きの1/6Wタイプを用意しましたが、もっと大きなものや、チップ抵抗にリード線をはんだ付けしたものでも可能です。
** ブレッドボード用のジャンプワイヤ **
{{ :mobiledecoder2:update:jtag2updi:cable1.jpg?300 |}}
リード線の前後に抵抗の足などをはんだ付けしたものでも代用可能です。
** ワニ口クリップ付きの配線 **
{{ :mobiledecoder2:update:jtag2updi:cable2.jpg?300 |}}
ファームウェア更新対象のデコーダをに対して、車両から外した状態で電力を供給するために使用します。 \\
車載した状態で線路電源を投入すれば書き込み可能な状態となりますが、プログラム端子と線路電源の接触によるデコーダ焼損のリスクがあるため推奨しません。
----
====== デコーダ側のプログラムポートの確認 ======
デコーダの各機種ごとに、プログラムポートの位置と配線の向きを確認してください。
** [[mobiledecoder2:k3066ra|K3066RAシリーズ]] **
{{:mobiledecoder2:firmupdate:jtag2updi:k3066ra-progconn.jpg?400|}}
** [[mobiledecoder2:k3057ra|K3057RAシリーズ]] **
{{:mobiledecoder2:firmupdate:k3057ra-progconn.jpg?400|}}
どの機種も1.27mmピッチとなっておりますので、1.27mmピッチピンヘッダを使ったケーブルを作成すればより確実に書き込みを行うことができます。
Atmel ICEやPICKit4、各種評価基板など、UPDIに対応した純正の書き込み機をお持ちの場合は、この手順に従ってArduinoで書き込みを行う必要はなく、それらを使って書き込みを行うことができます。 \\
配線手順に従って接続を行い、書き込みを行ってください。
----
====== 配線方法 ======
DCCデコーダ基板のPROG端子の「GND」を、Arduinoの「GND」端子にジャンプワイヤで接続します。
PROG端子の「UPDI」は、4.7kΩの抵抗器を介して、Arduinoの「#6」端子 (Digital #6) に接続します。
線路電源の端子については、ワニ口クリップで線路電源 (コマンドステーション出力やDC12V) 、またはArduino上から供給する+5V電源に接続します。
{{ :mobiledecoder2:k3066ra:k3066ra_progconn.jpg?400 |}}
{{ :mobiledecoder2:k3057ra:k3057ra_progconn.jpg?400 |}}
もっとも単純な接続事例を下記写真で示しますので、参考にしてください。
{{:mobiledecoder2:update:jtag2updi:conn_k3066ra.jpg?400|}}
** 接続時の注意点 **
* PROG端子に接続するワイヤと、デコーダ上のPROG端子以外の接点と接触していないことをかならず確認してから通電を開始してください。 \\ PROG端子と関係のない端子が電気的に接触している場合、高確率でデコーダが焼損します。 \\ (特にRail+、Rail-、12Vに接触した場合はほぼ確実に焼損します)
* PROG端子に接続するワイヤ2本 (GND、UPDI) 同士が接触している場合は、ファームウェアの書き込みはできませんが焼損はしません。 安心して配線を確認後、書き込み操作をやり直してください。
===== K3057シリーズで接続される場合の注意 =====
K3057シリーズは構造上、線路端子の裏側に別のパターンが存在しており、そのままワニ口クリップで基板を挟むとはんだレジストが損傷し、意図せず短絡してデコーダ焼損が発生するケースがあります。 \\
そのため、下記例のように適当な厚紙やプラ板などを挟み、線路端子の反対側を保護するように接続してください。
{{:mobiledecoder2:firmupdate:jtag2updi:k3057-warning.jpg?400|}}
{{:mobiledecoder2:firmupdate:jtag2updi:k3057-warning-2.jpg?400|}}
----
====== ArduinoをAVRライターにする ======
用意したArduinoにjtag2updiを書き込み、UPDIライターとして機能するようにします。
書き込み方法等の詳細は[[mobiledecoder2:firmupdate:jtag2updi|こちら]]をご確認ください。
----
====== ファームウェアの準備 ======
[[https://github.com/ytsurui/dcc-decoder2-firmware/releases/tag/v1.0.2|こちら]]のページから、使用しているデコーダに適合するファームウェアをダウンロードしてください。
現在の最新バージョン: Version 2022.12.09 (v1.0.5)
{{:mobiledecoder2:update:jtag2updi:download-firmware.png?400|}}
^ デコーダの型番 ^ 対応するファームウェア ^
| K3066RA | [[https://github.com/ytsurui/dcc-decoder2-firmware/releases/download/v1.0.5/MotorDecoder2-ATtiny1606-v1.0.5.hex|MotorDecoder2-ATtiny1606-v1.0.5.hex]] |
| K3057RA | ::: |
| K3057RA-S | ::: |
| K7012RA | ::: |
| T-EC215RA | ::: |
| M02F0RA | ::: |
| M02F7RA | ::: |
| K3057-T | [[https://github.com/ytsurui/dcc-decoder2-firmware/releases/download/v1.0.5/FuncDecoder2-ATtiny806-v1.0.5.hex|FuncDecoder2-ATtiny806-v1.0.5.hex]] |
| K3057-ST | ::: |
| T-EC215Tc | ::: |
| T-EC215F | ::: |
----
====== 書き込みを行うためのフォルダ準備 ======
書き込みに用いるプログラム(avrdude.exe)、コンフィグファイル(avrdude.conf)、ファームウェアファイルそれぞれのパスをすべてコマンドに書けば動作するのですが、面倒ですので必要なファイルを一度すべて同じフォルダにコピー後、書き込みコマンドを実行します。
下記のファイルが必要となります。
^ ファイル名 ^ 存在しているパス ^
| avrdude.exe | C:\Program Files (x86)\Arduino\hardware\tools\avr\bin |
| avrdude.conf | [[https://github.com/ElTangas/jtag2updi|jtag2updi]]を展開したフォルダ |
| ファームウェアファイル | ダウンロードしたファイルをコピー |
各ファイルは、それぞれ下記の場所にあります。
** avrdude.exe **
{{:mobiledecoder2:firmupdate:jtag2updi:file-copy1.png?400|}}
** avrdude.conf **
{{:mobiledecoder2:firmupdate:jtag2updi:file-copy2.png?400|}}
すべてのファイルを集めてきて、下記の内容のフォルダを作ります。
{{:mobiledecoder2:firmupdate:jtag2updi:file-copy3.png?400|}}
----
====== バッチファイルの作成 ======
先ほどのフォルダの中に、「write.bat」というファイルを作成します。 \\
「新規テキストドキュメント」を作成し、ファイル名と拡張子を書き換えてしまうのが最も手っ取り早い手段であると思われます。
{{:mobiledecoder2:firmupdate:jtag2updi:make-bat-file-1.png?400|}}
{{:mobiledecoder2:firmupdate:jtag2updi:make-bat-file-2.png?400|}}
作成した「write.bat」を右クリックし、「編集」をクリックします。
{{:mobiledecoder2:firmupdate:jtag2updi:make-bat-file-3.png?400|}}
バッチファイルの中身に、下記の内容を書き込みます。
avrdude -Cavrdude.conf -v -c jtag2updi -P com4 -p t1606 -U flash:w:MotorDecoder2.ATtiny1606.hex
なお、下記の内容は環境に合わせて適宜変更してください。
* -P com4の「com4」の部分: Arduinoが接続されているCOMポート
* -p t1606の「t1606」部分: \\ モーターデコーダに書き込む場合は「t1606」\\ ファンクションデコーダに書き込む場合は「t806」
* -U flash:w:MotorDecoder2.ATtiny1606.hexの「MotorDecoder2.ATtiny1606.hex」の部分: \\ ダウンロードしてきたファームウェアファイルの名前
書き込み後、ファイルを保存して閉じます。
これで書き換えの準備は完了です。
------
====== ファームウェアの書き込み ======
[[#配線方法|配線方法]]に従って、ファームウェア書き換え対象のデコーダとArduinoを接続します。
デコーダの線路電源端子にはコマンドステーションからの電源、またはDC12Vを接続し、デコーダが動作する状態にします。 \\
また、Arduinoはパソコンに接続し、パソコンから操作できる状態にします。
{{:mobiledecoder2:firmupdate:jtag2updi:power-on.jpg?400|}}
この状態で、先ほど作成した「write.bat」を起動します。
{{:mobiledecoder2:firmupdate:jtag2updi:write-1.png?400|}}
{{:mobiledecoder2:firmupdate:jtag2updi:write-2.png?400|}}
正常に書き込みが開始されると、2枚目の画像のように進行状況が表示され、完了すると自動的に閉じられます。 \\
画面が閉じればファームウェア書き換え作業は完了です。 線路電源を落としてデコーダを取り外してください。
----