SPADI-A Wiki/SPADI-A DAQ マニュアル/ファームウェア/ファームウェアの書き込み方法


ファームウェアの書き込み、ハードウェアのセットアップ方法

(執筆完了時削除 --> 執筆責任者: 洲波泥 太郎, 執筆締め切り: 2024/xx/xx)

ここでは、ファームウェアの書き込み方法について記述する。もともとのドキュメントは RCNP 白鳥氏が書いたものがあり、それを編集しなおしたものである。

AMANEQ ボード本体および HR-TDC メザニンカードへの書き込み

新規に AMANEQ ボード本体、HR-TDCメザニンカードを購入した場合、まずファームウェアを書き込む必要がある。AMANEQ、および HR-TDC メザニンには AMD Xilinx の FPGA チップを利用しており、ファームウェアの書き込みで用いるソフトウェアは Vivado を用いる。2024年9月現在、Vivado 2024.1 というバージョンが最新であるが、安定して動くことが分かっている Vivado 2023.2 を用いることが多い。ただ、論理合成、配置配線などを行うわけではなく、単に書き込むだけなので、あまりバージョンは気にしなくてよいと思われる。

AMANEQ および HR-TDC メザニンカード用のファームウェアは mcs ファイルと呼ばれる不揮発性のメモリ (電源を切っても記憶しているメモリ) に書き込むものと bit ファイルと呼ばれる揮発性のメモリ (電源を切っても記憶しているメモリ) に書き込むものの 2 種類が存在する。mcs ファイルの書き込みは数分程度かかる一方で、bit ファイルの書き込みは数十秒程度で終わる。そのため、テスト的にファームウェアの動作検証をしたい場合、もしくは一時的に特定のファームウェアが必要な場合 (例えばジッタークリーナーの設定の際は LR-TDC のファームウェアが必要) に bit ファイルを用いる。ただ、bit ファイルは電源を切ると書き込んだ内容が消えてしまうため、パワーサイクル (電源を落としてから再投入すること) を繰り返しても同じファームウェアを用いたい場合、mcs ファイルを不揮発性メモリに書き込む。新規に購入したボードのセットアップをする場合、よくやる手としては、まず bit ファイルでいろいろと設定したのち、実験の本番で使う mcs ファイルを書き込む。

mcs ファイル、もしくは bit ファイルは AMANEQ 本体、または HR-TDC メザニンカードについている JTAG 経由で書き込みを行うことができる。この書き込み方法に加えて、AMANEQ 本体への mcs ファイルの書き込みは、ネットワーク経由で行うこともできる。ただし、AMANEQ 本体にすでに何らかのファームウェアがすでに書き込まれていることが前提である。HR-TDCメザニンカードにはネットワーク経由でファームウェアを書き込むことはできない。また、bit ファイルの書き込みは JTAG 経由でしかできない。

ここでは、以下の書き込み方法を順番に説明する。

mcs ファイルを JTAG 経由で AMANEQ 本体に書き込む

  1. まず、mcs ファイルの準備を行う。例として、LR-TDC firmware を AMANEQ に書き込む。mcs ファイルは以下のディレクトリ
    https://github.com/AMANEQ-official/StrLrTdc/tree/main/mcs
    の amaneq-4-strlrtdc-v2.5.mcs という RAW ファイルをダウンロードする。ダウンロード方法は、このページの amaneq-4-strlrtdc-v2.5.mcs をクリックして、さらに Download raw file というボタンをクリックすればよい。ここで、amaneq-4-* はAMANEQ v4 用の mcs ファイルであることを表す。AMANEQ v1 に書き込みを行う場合は、amaneq-1-* という mcs ファイルを選ぶ。v2.5 の部分はファームウェアのバージョン。(以下のキャプチャー画像では Vivado 2019.1のときの画像を使用。ただ、Vivado 2024.2 とほとんど同じ。また、MCSファイル名: amaneq_skeleton_wosdram.mcs をサンプルとして用いている。ちなみに、Vivado 2019.1 のときは MCS ファイルとセットで PRM ファイルというファイルも必要だったが、Vivado 2023.2 のような新しい Vivado では必要なくなったようだ。)
  2. PCとAMANEQのJTAGをXilinxのダウンロードケーブルで繋ぎ、AMANEQの電源をONする。電源ONはAC/DCアダプターを挿すのみでよい。初回電源投入時はLEDも何も点かない状態。
    amaneq_fw_writting_01.png
  3. Vidadoで新規プロジェクトファイルを作る (図は一度作ったプロジェクトファイル)
    amaneq_fw_writting_02.png
  4. Open Hardware ManageのOpen targetをクリック。「Auto Connect」を選択。
    amaneq_fw_writting_03.png
  5. 繋がると”Hardware”が表示される。Xilinxのダウンロードケーブルのランプがグリーンになる。繋がらない場合はエラーメッセージが出る。(繋がらない時はケーブルがちゃんとささってない場合やUSBダウンロードケーブルが認識されていないなど)
    amaneq_fw_writting_04.png
  6. SPIフラッシュメモを追加する。”Hardware”内の 「c7k160t_0」上で右クリックし、”Add Configuration Memory Device”を選択。ウィンドウがポップアップし、ここで Manufacturer 「Cypress/Spansion」、Type 「All」、Density (Mb) 「128」、Width 「x1_x2_x4」 を選択すると、Name 「s25fl128sxxxxxx0-spi-x1_x2_x4」, Alias 「s25fl127s-spi-x1_x2_x4」 が出てくるのでこれを選択し、OK ボタンを押す。Do you want to program the configuration memory device now? と聞かれるがとりあえず Cancel ボタンを押す(OKボタンを押しても良い)。
    amaneq_fw_writting_05.png
    amaneq_fw_writting_06.png
  7. 書き込みを行うSPIフラッシュメモリを選択する。Memory Partの”…”をクリック。
    amaneq_fw_writting_07.png
  8. SPIフラッシュメモリ名「s25fl128sxxxxxx0-spi-x1_x2_x4」、Alias「s25fl127s-spi-x1_x2_x4」を選択し、”OK”を押す。
    amaneq_fw_writting_08.png
  9. ダウンロード作業はHardwareのSPIフラッシュメモリ名を右クリックし、「Program Configuration Memory Device」を選択する。
    amaneq_fw_writting_09.png
  10. Configuration fileとして使用するMCSファイル (amaneq-4-strlrtdc-v2.5.mcs) を選択する。ちなみに、Vivado 2019.1 の場合、PRMファイル(amaneq-4-strlrtdc-v2.5.prm) も選択する必要がある。 (上記画像は Vivado 2019.1 の場合で、prmファイルを選択するようになっているが、Vivado 2023.2 では、PRM file の項目がグレイアウトしている) 。その他の設定はデフォルトのままでよい。"OK" を押すとfirmwareファイルのダウンロードが開始される。
    amaneq_fw_writting_10.png
  11. ダウンロード作業中の図。図のようなインジケーター表示される。エラー時は赤い文字でエラーメッセージが出る。(SPIフラッシュメモリの選択ミスなど)。問題が無ければ、だいたい5分で完了する。
    amaneq_fw_writting_11.png
    amaneq_fw_writting_12.png
  12. ダウンロードが成功すると図の表示が出る。
    amaneq_fw_writting_13.png
  13. “Open Hardware manager”を右クリックすると「Close」が出るので、クリックすると AMANEQ との接続が切れる。これでダウンロードケーブルの抜き差しや AMANEQ の電源を OFF する。
    amaneq_fw_writting_14.png
  14. これで firmware のサウンロード作業は完了。電源 ON にて LED が赤く点灯。LED の点灯の仕方はファームウェアバージョンによって異なるので、上記写真と異なる場合もある。mcs ファイルは不揮発性メモリに書き込まれるが、この内容が読み込まれるのは、電源投入時である。そのため、mcs ファイルを書き込んだ時点では、hul-common-lib のバイナリを用いてファームウェアバージョンなどを読んでも、更新されない。電源を再投入して、バージョンを確認すると、更新されているのがわかる。
  15. DIP の最初のビット(DIP-1)を "0" にするとデフォルト IP が設定される。LR-TDC の場合、ネットワークプロセッサーとしてSiTCP を用いるため、デフォルトIP は 192.168.10.16 となる。一方、HR-TDC の場合は SiTCP-XG を用いるため、デフォルトIP は 192.168.10.10 となる。ping をこれらの IP に飛ばすと、通信できることがわかる。ちなみに、SFP1 の光モジュールスロットに指すモジュールが異なるので注意する。LR-TDC の場合、SFP (1 Gbps) の光モジュールを挿入し、HR-TDC の場合、 SFP+ (10 Gbps) の光モジュールを挿入する。

bit ファイルを JTAG 経由で AMANEQ 本体に書き込む

mcs ファイルを JTAG 経由で HR-TDC メザニンカードに書き込む

  1. まず、mcs ファイルの準備を行う。mcs ファイルは以下のディレクトリ
    https://github.com/AMANEQ-official/MznStrHrTdc/tree/main/mcs
    の amaneq-4-strlrtdc-v2.5.mcs という RAW ファイルをダウンロードする。ダウンロード方法は、このページの mzn-strhrtdc-v2.4.1.mcs をクリックして、さらに Download raw file というボタンをクリックすればよい。
  2. PC と HR-TDC メザニンの JTAG を Xilinx のダウンロードケーブルで繋ぎ、AMANEQ の電源を ON する。電源 ON は AC/DC アダプターを挿すのみでよい。(初回電源投入時はLEDはどうなるか要確認?)
    (ここに写真を挿入)
  3. Vidadoで新規プロジェクトファイルを作る (図は一度作ったプロジェクトファイル)
    (ここに写真を挿入)
  4. Open Hardware ManageのOpen targetをクリック。「Auto Connect」を選択。
    (ここに写真を挿入)
  5. 繋がると "Hardware" が表示される。Xilinx のダウンロードケーブルのランプがグリーンになる。繋がらない場合はエラーメッセージが出る。(繋がらない時はケーブルがちゃんとささってない場合や USB ダウンロードケーブルが認識されていないなど)
    (ここに写真を挿入)
  6. SPIフラッシュメモを追加する。"Hardware" 内の 「c7k160t_0???」上で右クリックし、”Add Configuration Memory Device”を選択。ウィンドウがポップアップし、ここで Manufacturer 「Cypress/Spansion」、Type 「All」、Density (Mb) 「128???」、Width 「x1_x2_x4???」 を選択すると、Name 「s25fl128sxxxxxx0-spi-x1_x2_x4???」, Alias 「s25fl127s-spi-x1_x2_x4???」 が出てくるのでこれを選択し、OK ボタンを押す。Do you want to program the configuration memory device now? と聞かれるがとりあえず Cancel ボタンを押す(OKボタンを押しても良い)。
    (ここに写真を挿入)
  7. 書き込みを行うSPIフラッシュメモリを選択する。Memory Partの”…”をクリック。
    (ここに写真を挿入)
  8. SPIフラッシュメモリ名「s25fl128sxxxxxx0-spi-x1_x2_x4???」、Alias「s25fl127s-spi-x1_x2_x4???」を選択し、”OK”を押す。
    (ここに写真を挿入)
  9. ダウンロード作業は Hardware の SPI フラッシュメモリ名を右クリックし、「Program Configuration Memory Device」を選択する。
    (ここに写真を挿入)
  10. Configuration file として使用する MCS ファイル(.mcs)を選択する。ちなみに、Vivado 2019.1 の場合、PRMファイル(.prm) も選択する必要がある。 その他の設定はデフォルトのままでよい。"OK" を押すとfirmwareファイルのダウンロードが開始される。
    (ここに写真を挿入)
  11. ダウンロード作業中の図。図のようなインジケーター表示される。エラー時は赤い文字でエラーメッセージが出る。(SPIフラッシュメモリの選択ミスなど)。問題が無ければ、だいたい5分で完了する。
    (ここに写真を挿入)
  12. ダウンロードが成功すると図の表示が出る。
    (ここに写真を挿入)
  13. "Open Hardware manager" を右クリックすると「Close」が出るので、クリックすると HR-TDC メザニン との接続が切れる。これでダウンロードケーブルの抜き差しや AMANEQ 本体の電源を OFF する。
    (ここに写真を挿入)
  14. これで firmware のダウンロード作業は完了。AMANEQ 本体の電源 ON にて LED が赤く点灯???mcs ファイルは不揮発性メモリに書き込まれるが、この内容が読み込まれるのは、電源投入時である。そのため、mcs ファイルを書き込んだ時点では、amaneq-soft のバイナリを用いてファームウェアバージョンなどを読んでも、更新されない。電源を再投入して、バージョンを確認すると、更新されているのがわかる。

bit ファイルを JTAG 経由で HR-TDC メザニンカードに書き込む

mcs ファイルをネットワーク経由で AMANEQ 本体に書き込む

  1. まず、プログラムを書き込むための hul-common-lib をインストールする。インストール方法は、以下のページのインストールのインストラクションを参照のこと。
    https://github.com/spadi-alliance/hul-common-lib
    この hul-common-lib をインストールすると、install/bin ディレクトリができ、いくつかの実行体ができる。ここでは flash_memory_programmer というプログラムを用いる。
  2. mcs ファイルの準備を行う。例として、LR-TDC firmware を AMANEQ に書き込む。mcs ファイルは以下のディレクトリ
    https://github.com/AMANEQ-official/StrLrTdc/tree/main/mcs
    の amaneq-4-strlrtdc-v2.5.mcs という RAW ファイルをダウンロードする。ダウンロード方法は、このページの amaneq-4-strlrtdc-v2.5.mcs をクリックして、さらに Download raw file というボタンをクリックすればよい。ここで、amaneq-4-* はAMANEQ v4 用の mcs ファイルであることを表す。AMANEQ v1 に書き込みを行う場合は、amaneq-1-* という mcs ファイルを選ぶ。v2.5 の部分はファームウェアのバージョン。
  3. すでになんらかの firmware が書き込まれた AMANEQ をネットワークに繋いで、ping が通ることを確認。
  4. flash_memory_programmer を用いて mcs ファイルを書き込む。具体的には、このディレクトリに移動してから、以下のようなコマンドを打つ。<path to mcs file directory>/amaneq-4-strlrtdc-v2.5.mcs
    cd <hul-common-lib>/install/bin
    ./flash_memory_programmer 192.168.10.16 <path to mcs file directory>/amaneq-4-strlrtdc-v2.5.mcs
  5. 書き込みが終わると、以下のようなメッセージが表示される。
    (あとで追記)
  6. これで書き込みが完了。AMANEQ の電源を切って、再投入する。
  7. 電源 ON にて LED が赤く点灯するはず。LED の点灯の仕方はファームウェアバージョンによって異なるので、上記写真と異なる場合もある。mcs ファイルは不揮発性メモリに書き込まれるが、この内容が読み込まれるのは、電源投入時である。そのため、mcs ファイルを書き込んだ時点では、hul-common-lib のバイナリを用いてファームウェアバージョンなどを読んでも、更新されない。電源を再投入して、バージョンを確認すると、更新されているのがわかる。
  8. DIP の最初のビット(DIP-1)を "0" にするとデフォルト IP が設定される。LR-TDC の場合、ネットワークプロセッサーとしてSiTCP を用いるため、デフォルトIP は 192.168.10.16 となる。一方、HR-TDC の場合は SiTCP-XG を用いるため、デフォルトIP は 192.168.10.10 となる。ping をこれらの IP に飛ばすと、通信できることがわかる。ちなみに、LR-TDC を書き込まれていた状態から HR-TDC のファームウェアを入れた場合、SFP1 の光モジュールスロットの光モジュールはSFP光モジュールから SFP+ の光モジュールに差し替える必要がある。これは、LR-TDC の場合、SFP (1 Gbps) の光モジュールに対応し、HR-TDC の場合、 SFP+ (10 Gbps) の光モジュールに対応することによる。

リンク

本稿執筆者

2024/xx/xx 洲波泥 太郎 (SPADI大学), 脱九 花子 (SPADI大学)
2024/xx/xx 脱九 花子 (SPADI大学)