コスモリサーチの凄腕エンジニアたちが日々、難題と格闘した記録
Copyright Cosmo Research Corp.

FX3(CYUSB30xx)のブートに関するメモ

FX3のコンフィグ

USBブートの場合、USB2.0接続でないと動作しない。
基板上の接続をUSB3.0/USB2.0ともに有効にする必要がある。

また、PMODEの設定はZ11としてUSBブート状態にする必要がある。

参考: EZ-USB® FX3™/FX3S™ブートオプションについて(AN76405)

USB Control Centerを使用する場合

FX3 SDKをインストールするとついてくるControl Centerを使用してコンフィグ出来る。

  1. PMODEの設定をZ11にして電源ONする。
  2. Program > FX3 > RAMにて、RAM上に任意プログラムを書き込んで起動する。
  3. RAMではなく、SPI FLASHも動作する。

この操作はGUIでの操作になるので、何度も実行するのは面倒である。

※SPIに書き込むイメージファイルは、通常のイメージファイルとは違うため、注意が必要である。

elf2img.exe -i XXXX.elf -o XXXX.img               # 通常(RAM書き込み用)イメージ作成
elf2img.exe -i XXXX.elf -o XXXX.img -i2cconf 0x00 # SPI書き込み用イメージ作成

libusb-1.0付属のfxload.cを使用する場合

事前準備その1(zadigによるドライバの変更)

事前の準備として、USB boot状態のFX3のドライバをWinUSB(libusb-1.0)に変更する必要がある。
この変更にはzadigを使用する。
恒久的にドライバが変更されるため、注意すること。
具体的な操作は、zadigにて、VendorID="04B4" ProductID="00F3"のドライバをWinUSBに変更する。

事前準備その2(libusb-1.0付属のfxloadのコンパイル)

msys2にて、コンパイル環境を構築し、pacmanにてlibusb-1.0のライブラリをインストールしておく。
その後、fxloadをコンパイルする。

git clone https://github.com/libusb/libusb.git
cd libusb/examples
gcc fxload.c exusb.c -o fxload.exe -lusb-1.0 -I/mingw32/include/libusb/libusb-1.0 -static

fxload.exeにてコンフィグ実行

  1. PMODEの設定をZ11にして電源ONする。
  2. fxload.exe -t fx3 -i <fx3 image file>

実行結果

C:\Users\cosmo\Desktop>fxload.exe -t fx3 -i SlaveFifoSync\Debug\SlaveFifoSync.img
found device 'Cypress FX3' [04b4:00f3] (3,8)
microcontroller type: fx3
SlaveFifoSync\Debug\SlaveFifoSync.
img: type Cypress IMG format
open firmware image SlaveFifoSync\Debug\SlaveFifoSync.img for RAM upload
normal FW binary executable image with checksum
FX3 bootloader version: 0x000000A9
writing image...
transfer execution to Program Entry at 0x4000c71c

一度ドライバをインストールしておけば、上記を実行するだけでFX3に任意のプログラムがロードされる。