コマンドライン?
はい、 GUI programmerよりもはるかに便利です。 bitstream file を使用して FPGA をロードする作業は繰り返し行われます。同じコンピュータに接続された同じボード上の同じ FPGA には、常に同じファイルです。そしてどういうわけか、 GUI tools はそれを困難な式典に変えます (そして、どのデバイスが接続されているかを正確に判断できない場合は、クイズさえも行うので、正確なデバイスを知っているはずです)。
コマンド ラインでは、文字通り、 bash historyからコマンドを選択し、 Enterを押します。そして驚くべきことに、コマンド ライン ツールは、 GUI ツールが行うばかげた質問をしません。
まず、いくつかの遊び
environmentをセットアップします。
$ /path/to/quartus/15.1/nios2eds/nios2_command_shell.sh
見つかったすべてのデバイスを一覧表示するには ( cable は自動検出されます):
$ quartus_pgm --auto Info: ******************************************************************* Info: Running Quartus Prime Programmer Info: Version 15.1.0 Build 185 10/21/2015 SJ Lite Edition Info: Copyright (C) 1991-2015 Altera Corporation. All rights reserved. [ ... ] Info: agreement for further details. Info: Processing started: Sun May 27 15:06:22 2018 Info: Command: quartus_pgm --auto Info (213045): Using programming cable "USB-BlasterII [2-5.1]" 1) USB-BlasterII [2-5.1] 02B040DD 5CGTFD9(A5|C5|D5|E5)/.. 020A40DD 5M2210Z/EPM2210 [ ... ]
bitstreamをロードする場合、上記のようにデバイスをリストする必要はありません。 JTAG chainでの FPGA の位置を教えていただけると助かります。本当に、ボードを探索するために一度行われることです。
jtagd
TCP/IP port 1309をリッスンするこの daemonに注意することが重要です。 USB busを介して JTAG アダプターと対話するため、 GUI programmer とコマンド ライン ツールの両方がこれに依存しています。 daemon が実行されていない場合は、これらの両方が daemon を開始します。
ただし、 Quartusの複数のバージョンを使用している場合、特に FPGA に古いバージョンをロードしてから新しいバージョンを試した場合、これが混乱の原因になる可能性があります。これは、新しいバージョンの Quartus が古いバージョンの jtagdを引き続き使用するためです。また、この古い jtagd は、新しいバージョンの Quartus がサポートしている FPGAs をサポートしていない可能性があります。したがって、結論としては、奇妙なことが起こった場合、これで問題が解決する可能性があり、とにかく害はないということです。
$ killall jtagd
FPGAのロード
quartus_pgm は、出力の大部分を緑色のテキストで表示します。一般的に言えば、赤いテキストがなければすべて問題ありません。
$ quartus_pgm -m jtag -o "p;path/to/file.sof"
または、 JTAG chain に JTAG の位置を明示的に追加します (特に最初のデバイスでない場合)。この場合は @1です。つまり、 JTAG chainの最初のデバイスです。 2 番目のデバイスの場合は、 @2 などを選択します。
$ quartus_pgm -m jtag -o "p;path/to/file.sof@1"
Info: *******************************************************************
Info: Running Quartus Prime Programmer
Info: Version 15.1.0 Build 185 10/21/2015 SJ Lite Edition
Info: Copyright (C) 1991-2015 Altera Corporation. All rights reserved.
Info: Your use of Altera Corporation's design tools, logic functions
Info: and other software and tools, and its AMPP partner logic
Info: functions, and any output files from any of the foregoing
Info: (including device programming or simulation files), and any
Info: associated documentation or information are expressly subject
Info: to the terms and conditions of the Altera Program License
Info: Subscription Agreement, the Altera Quartus Prime License Agreement,
Info: the Altera MegaCore Function License Agreement, or other
Info: applicable license agreement, including, without limitation,
Info: that your use is for the sole purpose of programming logic
Info: devices manufactured by Altera and sold by Altera or its
Info: authorized distributors. Please refer to the applicable
Info: agreement for further details.
Info: Processing started: Sun May 27 15:35:02 2018
Info: Command: quartus_pgm -m jtag -o p;path/to/file.sof@1
Info (213045): Using programming cable "USB-BlasterII [2-5.1]"
Info (213011): Using programming file p;path/to/file.sof@1 with checksum 0x061958E1 for device 5CGTFD9E5F35@1
Info (209060): Started Programmer operation at Sun May 27 15:35:05 2018
Info (209016): Configuring device index 1
Info (209017): Device 1 contains JTAG ID code 0x02B040DD
Info (209007): Configuration succeeded -- 1 device(s) configured
Info (209011): Successfully performed operation(s)
Info (209061): Ended Programmer operation at Sun May 27 15:35:09 2018
Info: Quartus Prime Programmer was successful. 0 errors, 0 warnings
Info: Peak virtual memory: 432 megabytes
Info: Processing ended: Sun May 27 15:35:09 2018
Info: Elapsed time: 00:00:07
Info: Total CPU time (on all processors): 00:00:03
何か問題が発生した場合 — デバイスの不一致、 JTAG chain のスキャンの失敗など、赤で書かれたエラーのため、見逃すことは困難です。コマンド ライン インターフェースの良い点は、試行するたびにすべてが最初から開始されるため、ボードの電源を入れて再試行するだけです。
Cyclone 10 GX FPGA development kit
このボードは私にいくつかの余分なトラブルを引き起こしたので、それについてのいくつかの言葉.このボードをコンピュータに接続すると、 09fb:6810として表示されますが、 FPGA (最後に「@2」があることに注意してください) をロードしようとすると、次のようになります。
$ quartus_pgm -m jtag -o "p;thecode.sof@2"
Error (213019): Can't scan JTAG chain. Error code 86.
デバイスの ID が 09fb:6010に変わります。そのため、明らかに firmware の reprogramming がいくつかあります ( system log は、新しい IDとの切断と再接続を示しています)。ボードは Quartusの GUI Programming Toolで GX0000406 として認識されますが、「Auto Detect」をクリックすると「Unable to scan device chain. Hardware is not connected」となります。
では、 scanを試してみませんか?
$ quartus_pgm --auto
[ ... ]
Info (213045): Using programming cable "10CGX0000406 [1-5.1.2]"
1) 10CGX0000406 [1-5.1.2]
Unable to read device chain - Hardware not attached
私の場合の問題は、実行中の jtagd が、 Cyclone 10 デバイスを認識しない古いバージョンの Quartusによって起動されたことにあるようです。したがって、上記のアドバイスに従って、それを殺してください。その後、上記のコマンドを使用したプログラミングは Quartus Pro 17.1で機能しました。
$ quartus_pgm --auto
[...]
Info (213045): Using programming cable "USB-BlasterII [1-5.1.2]"
1) USB-BlasterII [1-5.1.2]
031820DD 10M08SA(.|ES)/10M08SC
02E120DD 10CX220Y