M5Stack FIREのファームウェアはM5GOのものでした


psRAMが無事使えるようになったM5Stack FIREですが、もともと入っていたファームウェアは消えてしまいました。
これはどこかに提供されていないのか、探してみたのですが、どうやらそもそもFIREには専用のファームウェアはなく、M5GO用のものがインストールされていたようです。
ファイルは以下で提供されています。

m5stack/M5GO

上記で提供されているv0.15をFIREにインストールしてみたところ、購入時と同じ状態になりました。
購入時のファームウェアからUARTへ出力される起動メッセージは保存してあったのですが、上記のファームウェアの出力はSPIFFSの利用状況やMicroPythonのバージョン・ビルド日時も含めて全く同じです。
ですので、おそらくこれが初期ファームウェアだったと思われます。

で、「あれ?M5GOFIREってモーションセンサに違いが無かったっけ?」と疑問が湧いたのですが、このファームウェアでも起動時のジャイロの動作デモ(Nextを何回か押すと出てくるもの)は問題なく動作しました。

調べてみると、M5GOもFIREもジャイロ&加速度センサ自体は同一(MPU-6050)で、コンパスがM5GOはANK8963、FIREはMAG3110になっているようです。そして、M5GOに搭載されているMPU-9250の実体はMPU-6050+ANK8963なのでした。

I2Cでデバイスの接続状況を調べてみたところ、

>>> from machine import I2C
>>> import i2c_bus
>>> i2c=i2c_bus.get(i2c_bus.PORTA)
>>> i2c.scan()
[14, 104, 117]
>>> 

MPU-6050(addr=104)は接続されていますが、ANK8963(addr=12)は接続されておらず、代わりにMAG3110(addr=14)が接続されています。

ただ、ANK8963はMicroPythonのドライバがあるのですが、MAG3110については不明です。

というわけで、M5Stack FIREとは

・FIRE≒(M5GO – 各種センサ類 – ANK8963 )+ 4MB psRAM + MAG3110
・ソフトウェアは同じ(現時点psRAMは無効)

ということのようです。

M5Stack FIRE: psRAMはファームウェアを入れ替えたら動きました

先日、psRAMが使えないと書いたM5Stack FIREですが、twitterを見ていると使えている人もいるようです。
この方はファームウェアを入れ替えられています。
私も試してみたところ、無事psRAMが使えるようになりました。

bottom stack(というのかな?バッテリーが入っている部分)を着けた状態でも動作し、ツイッターで流れていた以下のような処置も特に必要ありませんでした。

psRAM領域への書き込みも成功しました。

>>> import machine
>>> hex(machine.mem32[0x3f800000])
'0x3ffae7d0'
>>> machine.mem32[0x3f800000] = 0xa5c33c5a
>>> hex(machine.mem32[0x3f800000])
'-0x5a3cc3a6'
>>>

試したファームウェアは以下のリポジトリにある「m5cloud-psram-20180516-v0.4.0.bin」です。

m5stack/M5Cloud: Micropython Web IDE beta version

FIREに元から入っているファームウェア(MicroPython ESP32_LoBo_v3.2.20 – 2018-06-28)よりちょっと古いバージョン(MicroPython ESP32_LoBo_v3.2.16 – 2018-05-15)ですが、リポジトリではこれが最新です。一応クラウドで入力したコードを実行することもできます。
(ただ、実行ボタンを押すごとにFIREがリブートしてWiFi接続も最初から行うので、かなり使い勝手は劣ります。)

というわけで現時点の私の解釈は

・現行のFIREに工場出荷でインストールされているファームウェアはpsRAMが無効になっているらしい
・そのため、psRAMを使うには、psRAMを有効にしたファームウェアをインストールすることが必要だった

ということです。

ただ、新しいファームウェアはM5Stackをリブートせずにクラウドからコードを実行できていたので、できれば新しいファームウェアのpsRAMイネーブル版を提供して欲しいところです。