« 写真スタジオで写真撮影 | トップページ | 後払い(掛売)に対応しました »

2018.06.04

MITOUJTAGから未知のSPI ROMにも書き込みできるようにした

XILINX FPGAは汎用のSPI ROMをコンフィギュレーションROMとして使用できますが、昨今のメモリ業界は入れ替わりが早く、古いSPI ROMはディスコンとなり、新しいROMはiMPACTからもVivadoからも書き込みができないなど、対応しているROMを探すのが難しくなってしまいました。

MITOUJTAGも同じで、W25Q32だの、JVSIGやSVSIG・・など型番が少し変わったROMに対応させていくのが大変だと感じていました。

すると、SPI ROMデバイスのIDCODEと、そのROMのサイズやアルゴリズムなどをテキストファイルで書いておいて、ツールが動的にそれを読み込めばいいのではないかという発想になります。

MITOUJTAGを改良し、ファイルからSPI ROMのパラメータを読み込めるようにしました。

sun

検証に使ったボードは特電のSpartan-6ボード。このボードのSPI ROMをMacronix社のMX25R3235Fに乗せ換えます。

Sp6mx25

ROMはブランクなので、当然ながらFPGAは起動前の状態で、I/Oは全ピン入力状態としえて見えます。

Mj_sp6_notconfig

MITOUJTAGはこのSPI ROMのIDCODEを知らないので、最初は書き込みができません。不明と出てしまいます。

Mj_unknown_spirom

そこで、下記のようなファイルを作成し、MITOUJTAGのsysフォルダにspiromid.txtというファイル名で置いておきます。

#idcode  , pagesize , maxpages , page_addr_shift , algorithm  , devicename
#
# Choose an algorithm from below.
#   ATMEL ST NUMONIX INTEL SST MICRON WINBOND SPANSION CYPRESS ISSI ONSEMI MACRONIX
#

0xc22816 , 256      , 16384    , 8               , macronix   , MX25R3235F
0xc22015 , 256      , 8192     , 8               , macronix   , MX25L1606E
0xbf2641 , 256      , 8192     , 8               , sst        , SST26VF016B

最初の列はIDCODE、次の列はページサイズです。ページサイズは普通は256です。その次の列はページ数なのですが、ページサイズが普通は256なので、32Mbit品ならここは16384となります。

次は製造元を表す列ですが、 ATMEL ST NUMONIX INTEL SST MICRON WINBOND SPANSION CYPRESS ISSI ONSEMI MACRONIXの中から選びます。これでアルゴリズムが選択されます。

最後はデバイス名です。デバイス名は画面に表示されるだけなので、違っていても動作に影響はありません。

このファイルを記述すると、未知のSPI ROMでも認識できるようになります。

Mj_spirom_update

もちろん書き込みも成功し、

Mj_spirom_success

ちゃんと起動しました。

Mj_sp6

sun

SPI ROMの書き込みアルゴリズムは、ST/Micron/Winbond/Intelなどの標準的なアルゴリズムのほか、ATMEL、SSTなどの変則的なものにも一部対応しています。

今回の改良により、ユーザの手元で書き込みパラメータを編集できるようになりました。これで今後どんなSPI ROMが出てきても怖くありませんね。

この修正パッチは次回のMITOUJTAGの更新で提供しますが、ご必要な方にはすぐに提供しますので、ご連絡ください。

|

« 写真スタジオで写真撮影 | トップページ | 後払い(掛売)に対応しました »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 写真スタジオで写真撮影 | トップページ | 後払い(掛売)に対応しました »