目次

ファームウェア更新方法 (Hexファイルの書き込み)

このページでは、サークル「MT40」で頒布している、「Nゲージ向けDCCデコーダ (第二世代)」のファームウェアを更新する方法についてご案内しております。

これ以外の機種の場合は、該当の機種のページをご参照ください。

この手順書は、avrdudeコマンドを直接操作してコンパイル済みのHexファイルを書き込む方法の案内となります。
他にArduino IDEから書き込む方法もあります。


はじめに

Nゲージ向けDCCデコーダ (第二世代)では、マイコンにATtiny1606またはATtiny806を使用しております。
そのため、ファームウェアの書き換えを行うためにはUPDIインターフェースに対応したマイコンライターを用意する必要があります。

この手順書では、マイコンライターを用意するところから説明します。


更新に必要なもの

ファームウェア更新を行うために必要となるものは、下記となります。

Arduino

マイコンへの書き込み機として、Arduinoを使用します。
(jtag2updiを書き込んで使用します)
この手順でプログラムを書き換えますので、スケッチを消去してもよいものをご用意ください。

互換機等でも対応可能であると思われます。

4.7kΩの抵抗

UPDIの信号線に挿入します。
この例ではリード付きの1/6Wタイプを用意しましたが、もっと大きなものや、チップ抵抗にリード線をはんだ付けしたものでも可能です。

ブレッドボード用のジャンプワイヤ

リード線の前後に抵抗の足などをはんだ付けしたものでも代用可能です。

ワニ口クリップ付きの配線

ファームウェア更新対象のデコーダをに対して、車両から外した状態で電力を供給するために使用します。
車載した状態で線路電源を投入すれば書き込み可能な状態となりますが、プログラム端子と線路電源の接触によるデコーダ焼損のリスクがあるため推奨しません。


デコーダ側のプログラムポートの確認

デコーダの各機種ごとに、プログラムポートの位置と配線の向きを確認してください。

どの機種も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電源に接続します。

もっとも単純な接続事例を下記写真で示しますので、参考にしてください。

接続時の注意点

K3057シリーズで接続される場合の注意

K3057シリーズは構造上、線路端子の裏側に別のパターンが存在しており、そのままワニ口クリップで基板を挟むとはんだレジストが損傷し、意図せず短絡してデコーダ焼損が発生するケースがあります。
そのため、下記例のように適当な厚紙やプラ板などを挟み、線路端子の反対側を保護するように接続してください。


ArduinoをAVRライターにする

用意したArduinoにjtag2updiを書き込み、UPDIライターとして機能するようにします。

書き込み方法等の詳細はこちらをご確認ください。


ファームウェアの準備

こちらのページから、使用しているデコーダに適合するファームウェアをダウンロードしてください。

現在の最新バージョン: Version 2022.12.09 (v1.0.5)

デコーダの型番 対応するファームウェア
K3066RA MotorDecoder2-ATtiny1606-v1.0.5.hex
K3057RA
K3057RA-S
K7012RA
T-EC215RA
M02F0RA
M02F7RA
K3057-T 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 jtag2updiを展開したフォルダ
ファームウェアファイル ダウンロードしたファイルをコピー

各ファイルは、それぞれ下記の場所にあります。

avrdude.exe

avrdude.conf

すべてのファイルを集めてきて、下記の内容のフォルダを作ります。


バッチファイルの作成

先ほどのフォルダの中に、「write.bat」というファイルを作成します。
「新規テキストドキュメント」を作成し、ファイル名と拡張子を書き換えてしまうのが最も手っ取り早い手段であると思われます。

作成した「write.bat」を右クリックし、「編集」をクリックします。

バッチファイルの中身に、下記の内容を書き込みます。

avrdude -Cavrdude.conf -v -c jtag2updi -P com4 -p t1606 -U flash:w:MotorDecoder2.ATtiny1606.hex

なお、下記の内容は環境に合わせて適宜変更してください。

書き込み後、ファイルを保存して閉じます。

これで書き換えの準備は完了です。


ファームウェアの書き込み

配線方法に従って、ファームウェア書き換え対象のデコーダとArduinoを接続します。

デコーダの線路電源端子にはコマンドステーションからの電源、またはDC12Vを接続し、デコーダが動作する状態にします。
また、Arduinoはパソコンに接続し、パソコンから操作できる状態にします。

この状態で、先ほど作成した「write.bat」を起動します。

正常に書き込みが開始されると、2枚目の画像のように進行状況が表示され、完了すると自動的に閉じられます。
画面が閉じればファームウェア書き換え作業は完了です。 線路電源を落としてデコーダを取り外してください。