01signal.com

Quartus / Linux: コマンドラインで FPGA をプログラミングする

コマンドライン?

はい、 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
このページは英語から自動翻訳されています。 不明な点は元のページを参照してください。
Copyright © 2021-2024. All rights reserved. (38a9d8fd)