はじめに
USBオーディオインターフェース(or USBDDC)によくXMOSチップが搭載されていることがあります。
XMOSとは大雑把にいうと、FPGAのような論理回路の動作をxC言語と呼ばれる組込みソフトウェアで制御する独自のデバイスです1。
こうしたオーディオインターフェースの中に、基板にXSYS端子と呼ばれる書き込み用のコネクタが出ていたりするものがある2ので、ちょっといじって遊んでみたくなりました3。
しかしプログラムはチップに上書きする形になるため、もとのプログラムが消えてしまいます(実際にこれで100ドルの基板をただのガラエポ板にしてしまうところでした!)。そこであらかじめ回路情報をバックアップする方法と、再書き込みして復元する方法を調査しましたので備忘録がてら残しておきます。
※基本的にネット上にフリーで転がっている情報のまとめに過ぎませんが、
バックアップしたイメージの取り扱いなど、知的財産的な問題が生じないようご留意ください!!
(自己責任でお願いします)
用意するもの/こと
- XSYSコネクタの搭載されたXMOS搭載基板
- xTAG : 基板のXSYSコネクタに接続します。
- xTAGが使用できるように、xTimeComposer(開発環境)のインストール
- USB Audio Software Design Guide を参考に、ざっくり書き込み方法を理解
XMOSプログラミング自体に関しては勉強不足かつ本稿の趣旨と離れる上、
こちら に詳細な記述がありますので割愛します。
手順
xflash コマンドを使用します。
既存のプログラム情報を.binファイル形式で吸い出し、これを再度書き込むことで復元が可能でした。
当たり前ですが吸い出したバイナリファイルを別の型番のXMOSチップに書き出すことはできません。
吸い出し/書き込みともに時間がかかります(10分以上でした)ので気長に待ちましょう。
対象XMOSの型番を確認
記載があればもちろんそれを参考にすればよいですし
分からなければチップ表面の記載を見ます。
例えば U11692C20
といった記載があります。
こちらを検索することで、当該XMOSが
XUF216-512-TQ128-C20
であることがわかります。
プログラム吸い出し
xTAGをXSYS端子に、USBコネクタをPCに接続。対象のXMOS基板にも電源を入れます。
xTIME Composer Command Promptから下記を実行します。
targetオプションには、下記例のようにサポートされている石の型番を直接書いてもよいですし、
.xnファイルの場所を直接指定することもできるようです。
xflash --read-all -o out.bin --target XUF216-512-TQ128-C20
out.binがバックアップするファイルになりますので、適切に保存しておきましょう。
プログラム書きこみ
xflash --write-all out.bin --target XUF216-512-TQ128-C20
参考
似たようなことをやっている人がいました。
[read/write flash on XUF216 chip] (https://www.xcore.com/viewtopic.php?t=6204)
[trying to backup XU216-512-TQ128-C20]
(https://www.xcore.com/viewtopic.php?t=3530)
[XMOSによるUSB Audioの詳細について]
(https://www.xmos.ai/usb-multichannel-audio)
-
ジャンル分けするとしたらPLD(Programmable logic device)の一種となるようです。 ↩
-
たとえば、DIYINHK社のUSBDDCモジュールが挙げられるでしょう。一時話題になったこういうXMOS開発基板にXMOS社から提供される USB Audio 2.0 Reference Design等(配布サイト) を書き込むことでUSB DDCとして使用可能になるものもあります。 ↩
-
入出力を増やしたり、外部のペリフェラルを制御したりなどいろいろなことができそうです。 ↩