GIMONS DEVELOPER WORKS/PhantomX

最終更新:2024/1/18

ファームウェア更新手順

告知

2024/1/18
GreenPAKの個体差を吸収するためにDMACとの排他制御タイミングを調整しました(GP1.hex)。
2024/1/3
DMACとの排他制御の安定性を向上させました。
GP1のファームウェアを標準版(GP1.hex)とXVI専用版(GP1_XVI.hex)に分離しました。

2024年1月以降に頒布する基板には改良版ファームを書き込んであります。

ファームウェアのダウンロード

ファームウェア(改良版/20240118)のダウンロード(TAR.GZ形式)

ファームウェア(旧版/20220320)のダウンロード(TAR.GZ形式)

更新手順

前提条件

  • SSH等でターミナル操作及びファイル転送が出来る状態にセットアップしたRaspberryPi本体とRaspberryPi OSが必要になります。
  • 基本的な操作(ターミナル操作、ファイル転送、解凍作業)に不慣れな場合はファームウェアの更新はお勧めしません。
  • PhantomXのベースボードおよびリロケータをX68000本体から外して作業します。
    リロケータを外す際には短辺方向に少しずつ傾けながら外してください(長辺方向だとピンが曲がりすぐに折れます)。
  • XVIの16MHzサポートやFPUボードのサポートが不要な場合はファームウェアの更新は必要ありません。
  • ファームウェアの書き込みに失敗した場合に復旧できない可能性はゼロではありません。
    正しく手順を慎重に守れば失敗するリスクは殆どありません。
  • 改良版ファームウェアで問題が出た場合には頒布版ファームウェアを再度書き込む必要があります。

I2Cの有効化

ベースボードにはSLG46826GもしくはSLG46824G(以下GreenPAKと呼びます)が4つ実装されておりそれぞれファームウェアを書き込む必要があります。
ファームウェアの書き込みにはRaspberryPiから各GreenPAKにI2Cで通信を行う必要があります。

従って、まずRaspberryPiでI2Cが使用できるように設定を行います。

コンフィグレーションツールの起動
sudo raspi-config

"Interface Options"を選択

"I2C"を選択

"YES"を選択

以上でI2Cが利用できるようになります。

ジャンパの準備

I2Cはクロック(SCL)とデータ信号(SDA)の2本の信号線を用いて通信する方式です。

クロック(SCL)はRaspberryPiのSCLと全てのGreenPAKで共通ですのでジャンパを一つ付けて接続します。
データ信号(SDA)は基板上のそれぞれのGreenPAKに対応したジャンパがありますので付け替えながら作業します。

頒布開始当初のベースボードにはファームウェアのバグFIXが必要になることを想定してジャンパを付けて出荷していました。
2022年秋以降はファームウェアが十分に安定していると判断しジャンパを付けていません。
お手元のベースボードにジャンパが無い場合は別途用意していただく必要があります。

GreenPAKとジャンパの対応関係

横一列に並んだGreenPAKにはそれぞれ左から順にGP1からGP4という名前をつけています。
それぞれのGreenPAKのSDA端子は右下のジャンパの上段のピンに結線されています。
下段のピンは全てRaspberryPIのSDA端子に結線されています。

RaspberryPiのSDA端子は共通です(ジャンパの下段に結線されています)。
ファームウェアを更新する個々のGreenPAKのSDA端子をジャンパで接続して作業を行います。

例えば一番右のGP4のファームウェアを書き込むときには次のように接続します。
リロケータをつけたまま机の上などで作業する場合はピンがとても折れやすいので注意が必要です。

ファームウェアと更新ツールの準備

このページの一番上にあるリンクから最新のファームウェアと更新ツールをダウンロードしてください。

そのモジュールをRaspberry Pi上で展開すれば以下のファイルが入手できます。

-rw-r--r-- 1 pi pi   715 Jan 14 20:10 GP1.hex
-rw-r--r-- 1 pi pi   715 Jan 14 20:10 GP1_XVI.hex
-rw-r--r-- 1 pi pi   715 Nov 13 22:02 GP2.hex
-rw-r--r-- 1 pi pi   715 Oct 10 11:32 GP3.hex
-rw-r--r-- 1 pi pi   715 Oct  9 11:46 GP4.hex
-rwxr-xr-x 1 pi pi 13624 Jan  3  2022 gputil
				

拡張子がhexのファイルがファームウェアです。
GP+連番はそれぞれGreenPAKのGP1~4に該当します。

GP1_XVIはXVI専用のGP1ファームウェアです。
通常はGP1.hexを書き込んでください。
GP1_XVI.hexはXVI16MHzモードで僅かに性能が向上する特別バージョンです。

gputilはファームウェアの更新ツールです。

更新ツールの使用方法(通信確立および現在のファームウェアの参照)

ファームウェアのアーカイブに含まれるgputilの使用方法を説明します。

引数無しで起動すると簡単なヘルプが出力されます。

pi@raspberrypi:~/phantomx_fw_20240118 $ ./gputil
GreenPAK configuration utility
Copyright (C) 2021-2022 GIMONS

Usage: ./gputil [-t TYPE] [-w FILE] [-c CODE]
 -t is config type, TYPE is {reg|nvm|eeprom}.
 -w is write operation, FILE is configration file path..
 -c control code, CODE is {0..f}. Default is 1.
				

該当するGreenPAKのジャンパが接続されていることを確認しIC内のファームウェアを参照します。
引数に"-t nvm"を指定してください。

pi@raspberrypi:~/phantomx_fw_20240118 $ ./gputil -t nvm
				

GreenPAKとの通信に成功すれば以下のように出力されます。

pi@raspberrypi:~/phantomx_fw_20240118 $ ./gputil -t nvm
GreenPAK configuration utility
Copyright (C) 2021-2022 GIMONS

Chip configration data.
---------------------------------------
Page |  0 1 2 3 4 5 6 7 8 9 A B C D E F
-----+---------------------------------
0x00 | 05000002b45ec4800200b00ed64a58ea
0x01 | 25149d040000000000102057805c8574
0x02 | b592e1186a61b0000000000000000000
0x03 | 000000000000000000e9bafe0070fd15
0x04 | 4aa10f0aa10000000000000000000000
0x05 | 00000000000000000000000000000000
0x06 | 00000000000000000000808000000000
0x07 | 00000000000000000000000000000000
0x08 | 00030000001422300c00000000000000
0x09 | d50b0000e000bfbfac00000400000000
0x0A | 000000200001000651200400ae020001
0x0B | 08000201000002040108000201000002
0x0C | 04010000020001000000010100000000
0x0D | 00000000000000000000000000000000
0x0E | 00000000000000000000000000000000
0x0F | 41151024262310101000b800000000a5
				

これが現在のファームウェアです。
何らかのデータが表示されているならば GreenPAKと正しく通信ができておりファームウェアの更新が可能です。

もし以下のように全て0で表示されたなら接続もしくは通信に失敗しています。

pi@raspberrypi:~/phantomx_fw_20240118 $ ./gputil -t nvm
GreenPAK configuration utility
Copyright (C) 2021-2022 GIMONS

Chip configration data.
---------------------------------------
Page |  0 1 2 3 4 5 6 7 8 9 A B C D E F
-----+---------------------------------
0x00 | 00000000000000000000000000000000
0x01 | 00000000000000000000000000000000
0x02 | 00000000000000000000000000000000
0x03 | 00000000000000000000000000000000
0x04 | 00000000000000000000000000000000
0x05 | 00000000000000000000000000000000
0x06 | 00000000000000000000000000000000
0x07 | 00000000000000000000000000000000
0x08 | 00000000000000000000000000000000
0x09 | 00000000000000000000000000000000
0x0A | 00000000000000000000000000000000
0x0B | 00000000000000000000000000000000
0x0C | 00000000000000000000000000000000
0x0D | 00000000000000000000000000000000
0x0E | 00000000000000000000000000000000
0x0F | 00000000000000000000000000000000
				

この状態ではファームウェアの更新はできません。
I2Cの設定やジャンパ接続を確認してください(ジャンパの端子が汚れている場合はジャンパをグリグリしてください)。

ごく稀に正しくジャンパ設定されているにも関わらず通信に失敗することがあります。
これはGP1から4に順次更新していく途中でGreenPAKの状態が不安定になり
I2Cの通信に失敗しているようです(割と高い確率で発生します)。

この事象が発生した時には
RaspberryPiをシャットダウンして一度電源を完全に切ってください。
その後再度電源オンで起動します。
リブートではありません。必ず電源オフが必要です。

更新ツールの使用方法(ファームウェアの更新)

まず引数に"-t nvm"を指定してGreenPAKと正しく通信が出来ていることを確認した後に更新します。

pi@raspberrypi:~/phantomx_fw_20240118 $ ./gputil -t nvm
GreenPAK configuration utility
Copyright (C) 2021-2022 GIMONS

Chip configration data.
---------------------------------------
Page |  0 1 2 3 4 5 6 7 8 9 A B C D E F
-----+---------------------------------
0x00 | 05000002b45ec4800200b00ed64a58ea
0x01 | 25149d040000000000102057805c8574
0x02 | b592e1186a61b0000000000000000000
0x03 | 000000000000000000e9bafe0070fd15
0x04 | 4aa10f0aa10000000000000000000000
0x05 | 00000000000000000000000000000000
0x06 | 00000000000000000000808000000000
0x07 | 00000000000000000000000000000000
0x08 | 00030000001422300c00000000000000
0x09 | d50b0000e000bfbfac00000400000000
0x0A | 000000200001000651200400ae020001
0x0B | 08000201000002040108000201000002
0x0C | 04010000020001000000010100000000
0x0D | 00000000000000000000000000000000
0x0E | 00000000000000000000000000000000
0x0F | 41151024262310101000b800000000a5
				

正しく通信できていますので更新作業に入ります。

ファームウェアの更新には"-t nvm -w ファームウェアファイル名"という引数を使用します。
以下の'?'には1~4の該当する番号が入ります。

pi@raspberrypi:~/phantomx_fw_20240118 $ ./gputil -t nvm -w GP?.hex
				

以下、GP1にGP1.hexを書き込んだ時のログです。

pi@raspberrypi:~/v2firm_20240118 $ ./gputil -t nvm -w GP1.hex
GreenPAK configuration utility
Copyright (C) 2021-2022 GIMONS

Configration file.
---------------------------------------
Page |  0 1 2 3 4 5 6 7 8 9 A B C D E F
-----+---------------------------------
0x00 | 0510a02902004e66149231196771b2c5
0x01 | e016847b9e05400c01fa20083104ce49
0x02 | 0100a00240950998a002000000000000
0x03 | 0000000000000000001135fd0080fdd7
0x04 | 699ded599d0000000000000000000000
0x05 | 00000000000000000000000000000000
0x06 | 00000000000000000000808000000000
0x07 | 00000000000000000000000000000000
0x08 | 00000000001422300c00000000000000
0x09 | 45e00000000000404040d00710020000
0x0A | 000e002000010008000201000e020001
0x0B | 08000201000002000100550201008f02
0x0C | 0001000b020001000000010100000000
0x0D | 00000000000000000000000000000000
0x0E | 00000000000000000000000000000000
0x0F | 000000000000000000000000000000a5

Erase chip configration.
---------------------------------------
Page 0x00 : complete
Page 0x01 : complete
Page 0x02 : complete
Page 0x03 : complete
Page 0x04 : complete
Page 0x05 : complete
Page 0x06 : complete
Page 0x07 : complete
Page 0x08 : complete
Page 0x09 : complete
Page 0x0A : complete
Page 0x0B : complete
Page 0x0C : complete
Page 0x0D : complete
Page 0x0E : complete
Page 0x0F : complete

Write configration data.
---------------------------------------
Addr 0x02
Page 0x00 : complete
Page 0x01 : complete
Page 0x02 : complete
Page 0x03 : complete
Page 0x04 : complete
Page 0x05 : complete
Page 0x06 : complete
Page 0x07 : complete
Page 0x08 : complete
Page 0x09 : complete
Page 0x0A : complete
Page 0x0B : complete
Page 0x0C : complete
Page 0x0D : complete
Page 0x0E : complete
Page 0x0F : complete

Chip configration data.
---------------------------------------
Page |  0 1 2 3 4 5 6 7 8 9 A B C D E F
-----+---------------------------------
0x00 | 0510a02902004e66149231196771b2c5
0x01 | e016847b9e05400c01fa20083104ce49
0x02 | 0100a00240950998a002000000000000
0x03 | 0000000000000000001135fd0080fdd7
0x04 | 699ded599d0000000000000000000000
0x05 | 00000000000000000000000000000000
0x06 | 00000000000000000000808000000000
0x07 | 00000000000000000000000000000000
0x08 | 00000000001422300c00000000000000
0x09 | 45e00000000000404040d00710020000
0x0A | 000e002000010008000201000e020001
0x0B | 08000201000002000100550201008f02
0x0C | 0001000b020001000000010100000000
0x0D | 00000000000000000000000000000000
0x0E | 00000000000000000000000000000000
0x0F | 41151024262310101000b800000000a5
				

これでファームウェアの書き込みが完了しました。

この操作をGP1からGP4まで繰り返せば全てのファームウェアの更新作業が完了です。

兎に角心配な方はファームウェアを1つ更新するごとにRaspberryPIをシャットダウンすることです。
以下の手順をGP1からGP4まで4回繰り返せば更新に失敗することはまず無いと思います。

  1. ジャンパを変える
  2. RaspberryPIに電源をつなぐ
  3. RaspberryPI OSを起動する
  4. RaspberryPI OSにログインする
  5. ファームウェアを展開したディレクトリに移動する
  6. ./gputil -nvm でI2C通信が正常か確認する
  7. ./gputil -nvm -w GP{1|2|3|4}.hex でファームを書き込む
  8. RaspberryPI OSをシャットダウンする
  9. RaspberryPIの電源をはずす



[EOF]