iCE40 UltraPlusのコンフィグROMにRaspberryPiから書き込んでみた

製品紹介

超低消費電力が売りのiCE40 UltraPlusですが,ちょっと遊べる(?)ボード exLeaf-i を社長が作ったので使ってみることに.ボードはこんな感じ.iCE40 UltraPlus 5K,コンフィグROM(M25P80互換),と,オシレータがのっているだけのシンプルな構成.

普段大きめのFPGAを使っていると,合成・配置配線にかかる時間の短さに驚かされます.ちょっとした回路で用途に応じたI/O操作をするのに便利そう.…と思うと,残念に感じられるのがLatticeのダウンロードケーブルを使ったコンフィギュレーションが面倒なこと.

XilinxやIntelのFPGAで一般的に使っているJTAG経由のコンフィギュレーションに比べると,いちいちROMにデータを書き込んで起動しなおすというのは手間に感じます.また,LatticeのProgrammerだと,デバッグ中にチップ内のワンタイムROMにうっかり書き込んでしまうという事故も発生しそうです.

というわけで,https://www.olimex.com/wiki/ICE40HX1K-EVB#Iceprog_with_Raspberry_PI を参考に普段使いのRaspbrryPiを使ってROMにデータを書き込んでみました.

前準備

あらかじめRaspberryPiでSPIを使えるようにしておく必要があります.

raspi-config

を使って,設定しておきます./dev/spidev0.0がみえていればオーケーです.

ツールのビルドとインストール

SPI経由でデータを書き込むためにはSPI上でROMの消去や書き込みコマンドを発行するプログラムが必要です.冒頭に掲載したリンク先では,flashromが使用されています.

gitでcloneしてmakeすれば使えます.

git clone https://www.flashrom.org/git/flashrom.git
cd flashrom
make CONFIG_ENABLE_LIBPCI_PROGRAMMERS=no \
     CONFIG_ENABLE_LIBUSB0_PROGRAMMERS=no \
     CONFIG_ENABLE_LIBUSB1_PROGRAMMERS=no all install

接続

RaspberryPiとexleaf-iの接続は次の通り.

RaspberryPi M25P80 ボード上のピン
19 MOSI SDO 2
21 MISO SDI 3
23 CLK SCK 4
24 CE0 #SS  1
1   3.3V   6
9   GND   5

ジャンプワイヤーなどで簡単につなくだけで大丈夫でした.

使ってみる

iCEcube2を使って生成したbinファイルを,ボードとSPI接続したラズベリーパイに転送,flashromを使ってROMにデータを書き込めばいい,のですが,搭載しているROMとサイズが違うといってうまく書き込みができませんでした.

生成したbitファイルのサイズが104157Bであるのに対し,搭載しているROM M25P80は,1048576B.たしかにbinファイルとROMのサイズが違う.

そこで,

dd': tr '\0' '\377' < /dev/zero | ^C bs=1 count=944419 of=image
cat top_bitmpa.bin image > image.bit

として差分の944419Bを埋めたファイルを作成し,flashromで書き込むと,無事に書き込めました.

root@raspberrypi:/home/pi# flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=20000 -w image.bit
flashrom p1.0-131-g3a41e2a on Linux 4.9.41-v7+ (armv7l)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Winbond flash chip "W25Q80.V" (1024 kB, SPI) on linux_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

次は

RISC-Vでも実装してみるかなあ.

コメント

  1. […] もちろん,バージョンアップ前同様,iCE40 UltraPlus 5K,コンフィグROM(M25P80互換),と,オシレータを搭載したシンプルな構成と,そのコンパクトなサイズは踏襲したまま.(前のバージョンについては,“iCE40 UltraPlusのコンフィグROMにRaspberryPiから書き込んでみた”に紹介があります.) […]

タイトルとURLをコピーしました