FMQL 開発プロセス
全体的な開発プロセスは次のとおりです。
具体的な開発プロセス:
- Vivadoプロジェクトの構築
- まず、独自のプロジェクトの機能要件に従って、回路図と組み合わせて、vivadoプロジェクトでビルドする必要があるPSおよびPL部分のリソースを明確にします。
ビルドではvivado2018.2のvivadoバージョンを使用します。
- vivadoプロジェクトを作成します。
vivado ソフトウェアをダブルクリックして開き、[Create Progect] オプションをクリックします。
「次へ」をクリックし、プロジェクト名を入力し、保存パスを選択して、「プロジェクト サブディレクターの作成」にチェックを入れます。パスに漢字を使用したり、プロジェクト名に中間行「-」を含めたりすることはできません。
引き続き「次へ」をクリックし、最初のオプション RTL プロジェクトを選択し、「現時点ではソースを指定しない」にチェックを入れます。このオプションはプログラミング ファイルを追加するためのものです。通常、zynq の開発時に自分でコードを記述する必要はありません。そのため、このオプションにチェックを入れます。
「次へ」をクリックすると、SOC モデルを選択するウィンドウが表示されます。チップ モデルは回路図から取得できます。回路図のチップ モデルが完了していない場合は、ハードウェアに移動して特定のモデルを問い合わせることができます検索で必要なチップモデルを検索し、チップを選択し、「次へ」をクリックします。
その後、パラメータ表示画面が表示されますので、SOCモデルが正しいことを確認後、「完了」をクリックしてプロジェクトの作成を完了します。
プロジェクトが作成されると、以下に示すように、正式な編集プロジェクト インターフェイスに入ります。
左側のメニュー バーのポップアップ ウィンドウで [ブロック デザインの作成] オプションをクリックし、ブロック デザイン プロジェクトの名前を入力します。ここではデフォルトの名前が使用されます。必要に応じて変更できます。
[OK] をクリックし、次に左側のメニューの [ブロック デザインの作成] オプションをクリックします。以下に示すように、オフにすることができます。
IP Catalog と Project Summary の 2 つのウィンドウは、通常は使用されません。
右ページまたは右ページ上のメニューバーの「+」をクリックしてIPコアを追加するか、右側の空白部分を右クリックし、ポップアップメニューで「IPの追加」オプションを選択します。追加する必要があるのは、zynq コアの PS IP です。プラス記号をクリックして zynq を検索し、PS の IP コアを見つけ、選択してダブルクリックして追加します。
PS IP コアをダブルクリックすると、PS 設定インターフェイスを開いたり、PS リソースを設定したりできます。設定する最も重要なことは、DDR の選択です。同様に、PL パーツの IP をダブルクリックして構成インターフェイスを開いて、いくつかのパラメーターを構成することもできます。
ビルディング ブロック設計のその他の具体的な詳細についてはここでは繰り返しません。プロジェクトの関係は次のとおりです。
https://download.csdn.net/download/qq_38584212/87924602
プロジェクトをビルドしたら、まず保存し、右上のメニューのチェック ボタン (図の赤でマーク) をクリックして、ビルドされたブロックの設計が正しいかどうかを確認します。成功したポップアップは、ブロック設計に接続エラーはありません。
「ソース」メニューで黄色の三角形の付いた「design_1」を右クリックし、ポップアップ・メニューから「出力ファイルの生成」を選択します。
ポップアップ ウィンドウで [グローバル] オプションを選択し、[生成] をクリックして、プロダクトを出力します。
その後、小さな黄色の三角形が付いた design_1 を右クリックし、ポップアップ メニューで [Create HDL Wrapper] を選択してトップレベル ファイルを生成します。トップレベル ファイルは、後続の制約ファイルの追加に使用され、対応するピンを生成します。制約する必要がある。
「Source」メニューの前にある青い点のある design1_wrapper をダブルクリックすると、右側のウィンドウに、制約する必要がある生成済みのピンがいくつか表示されます。
次に、これらのピンに対応する制約を追加し、「ソース」メニューで「constrs_1」を右クリックし、ポップアップ メニューから「制約セットの編集」を選択する必要があります。
新しくポップアップしたウィンドウで [ファイルの作成] をクリックし、制約ファイルの名前 .xdc を入力して [OK] をクリックすると、拡張子 .xdc が付いた新しい制約ファイルが constrs_1 ディレクトリに追加されます。
次に、左側のメニューで [Open Elaborated Design] オプションをクリックすると、制約を追加するためのインターフェイスがポップアップ表示されます (ブロック デザインのサイズに応じて、開く時間は異なり、プロジェクトによっては開くまでに 10 分から 20 分かかる場合があります)。開くと、下の図に表示されます。表に赤い文字のプロンプトが表示されなくなるまで、対応する制約ピンと電圧を選択する必要があることを示します。これは、追加する必要があるすべてのピンに対応する制約が割り当てられていることを示します。
以前に作成した xdc ファイルにコードを手動で追加して制約を追加することもできます (この方法はエラーが発生しやすいため、お勧めできません)。
独自のプロジェクトで必要な PL 端子の制約ピンは回路図にあるはずです。
例えば、RJ45ソケットのビット番号からネットワークポートの制約を検索し、対応するPYHチップを見つけることができ、PHYチップの接続がPL端子の制約となります。
制約を追加した後、プロジェクトを保存すると、上部に「再ロード」というメッセージが表示されます。「再ロード」をクリックすると、対応する .xdc ファイルに制約コードが自動的に追加されます。
すべて完了したら、左側のメニューの「Generate Bitstream」オプションをクリックします。
ポップアップ インターフェイスで最初のオプションを選択し、プルダウンしてプロジェクトのコンパイルに使用する CPU の数を選択します。数が多いほど、プロジェクトのコンパイルは速くなりますが、より多くのコンピューター リソースが占有されます。 [OK] をクリックし、合成、実装、およびビット ファイルの生成が完了するまで待ちます。
ビットファイルが正常に生成されると、次のウィンドウが表示されます。「キャンセル」をクリックします。
HDF ファイルをエクスポートするには、「ファイル」-「エクスポート」-「ハードウェアのエクスポート」をクリックします。
ポップアップ ウィンドウで、[ビットストリームを含める] にチェックを入れ、[OK] をクリックすると、対応する vivado プロジェクト ディレクトリに .hdf ファイルを保存する追加の .sdk フォルダーが作成されます。
次の手順では、vivado プロジェクトのディレクトリに移動し、FMQL 移植に必要な 4 つのファイル .bit、.hdf、.bd、および .xci を見つけます。これら 4 つのファイルが配置されているディレクトリは次のとおりです。
.bit ファイル
パス:\your_project\project_1.runs\impl_2\*.bit
.hdf ファイル
パス: \your_project\project_1.sdk\*.hdf
.bd ファイル
パス:\your_project\project_1.srcs\sources_1\bd\design_1\*.bd
.xci ファイル
パス:\your_project\project_1.srcs\sources_1\bd\design_1\ip\
design_1_processing_system7_0_1\*.xci
-
- FMQL移植部分
Procise ソフトウェアを開き、新しい Procise プロジェクトを作成し、[新しいプロジェクト] をクリックしてプロジェクト名を入力し、[次へ] をクリックします。
チップ モデルを選択するには、チップに印刷されているモデルを直接見るか、回路図を見てハードウェアの同僚に尋ねることができます。間違ったチップ モデルを選択すると、最終的なシステムが起動に失敗したり、フリーズしたりする可能性があります。
その後、「次へ」をクリックし続け、「完了」をクリックして新しいプロジェクトを完了します。
上部のメニューバーで「ツール」→「統合ツールオプション」をクリックします。
ポップアップ ウィンドウで、IAR インストール パスを IAR オプションに追加します。これにより、IAR ソフトウェアが Procise を通じて直接かつ自動的に開けるようになります。
上部のメニュー バーで PSOC をクリックし、ドロップダウン メニューで最初の項目 From Vivado を選択します
ポップアップ ウィンドウで [参照] をクリックします。最初のオプションでは、前に vivado プロジェクトから取り出した 4 つのファイルの中から .bd ファイルを選択し、2 番目のオプションでは .xci ファイルを選択して、[OK] をクリックします。
「OK」をクリックすると、DDR と FIXED_IO を引き出すように求めるダイアログボックスが表示されます。「OK」をクリックします。
数秒待つと、新しいウィンドウが表示されます。FSBL と DeviceTree の 2 つのオプションを選択して、「OK」をクリックします。
数秒待つと、Procise が自動的に接続して IAR ソフトウェアを開き、図の赤丸で囲まれた IAR ソフトウェアの上部メニューにある [作成] ボタンをクリックすると、以下のコンパイル ウィンドウにエラーが表示されます: 0。コンパイルは成功しました。
もう一度注意してください: IARソフトウェアはリモートでは使用できません。リモートで使用しないとコンパイルが失敗します。
コンパイルが成功すると、Procise プロジェクト ディレクトリに fsbl およびデバイス ツリーのソース コード フォルダーが生成されます。
Fsbl 径:\Your Project\SDK\design_1_platform\FSBL\Debug\Exe\fsbl.out
DeviceTree 経路:\ プロジェクト \SDK\design_1_platform\DeviceTree
fsbl.out ファイルと DeviceTree フォルダーを取り出します。
BOOT.bin の生成には、fsbl.out、bit file、および uboot.elf の 3 つのファイルが使用されます。
DeviceTree フォルダーと .hdf ファイルは、.dtb デバイス ツリー ファイルのコンパイルと生成に使用されます。
再び Procise ソフトウェアに戻り、メニュー バーで [PSOC-Create Boot Image] オプションを選択します。
ポップアップ ウィンドウで [基本] を選択し、最初の行で [参照] をクリックして、生成された BOOT.bin および .bif ファイルを保存するパスを選択します。
プルダウンをロックして BOOT.bin ファイルの保存パスを選択し、[ファイル名] に .bif ファイルの名前を入力します。このファイルは必要ありませんので、必要に応じて入力して、[クリック] をクリックします。保存。
[追加] ボタンをクリックし、ポップアップ ウィンドウの [参照] ボタンをクリックして、fsbl、bit ファイル、および u-boot.elf ファイルを順番に追加することを選択します。追加の順序が間違ってはいけません。追加の順序が間違っていると、Linux が起動しません。
すべて追加したら、最後に「イメージの作成」をクリックして BOOT.bin ファイルを生成します。
-
- 仮想マシンで.dtbデバイス ツリー ファイルをコンパイルして生成します。
FMQL デバイス ツリーのコンパイルに使用した仮想マシンを開きます。
前回の IAR コンパイルで生成された Procise プロジェクト ディレクトリ内の DeviceTree フォルダーを仮想マシンの任意のディレクトリにコピーします (このディレクトリは自分で定義したもので、DeviceTree のパスをコマンドで自分で定義したパスに変更してデバイスをコンパイルします)木)
自分で定義したディレクトリに置きました。
次に、.hdf ファイルを仮想マシンの次のディレクトリにコピーします。
コンパイル環境ディレクトリ FMQL-Linux-SDK_20201022 に戻ります。
マウスを右クリックして「ターミナルで開く」を選択します
実行コマンド:source env.sh 再度開いたコンソールではコマンドを再実行する必要があります
実行コマンド:./build.sh --hw /home/fmsh/tangbojian/DeviceTree/ --hdf device-tree/xlnx-dts/design_1_wrapper.hdf dtb
デバイスツリーをコンパイルする
このうち、/home/fmsh/tangbojian/DeviceTree/ パスは DeviceTree フォルダーが格納されるパスとして設定され、design_1_wrapper.hdf は viaodo プロジェクトで生成された .hdf ファイルの名前に変更されます。
ビルドされた vivado プロジェクトに PL パートがない場合、デバイス ツリーのコンパイル時に .hdf ファイルをインポートする必要はなく、デバイス ツリーをコンパイルするコマンドは次のようになります。
./build.sh --hw /home/{user_name}/Downloads/DeviceTree/ --nofpga dtb
デバイス ツリーが正常にコンパイルされると、system-top.dtbファイルがImageディレクトリに生成されます。使用するには、このファイルの名前をdevicetree.dtbに変更する必要があります。
デバイス ツリー ノードを変更します。
fmql と zynq には、デバイス ツリー ノードを変更する異なる方法があります。fmql によって追加されたノードは、system-user.dtsi という名前のファイルに配置され、新しい子ノードは、親ノードの参照を通じて定義する必要があります。対応するディレクトリは次のとおりです。以下に続きます:
他の 4 つのファイルのデバイス ツリーは変更しないでください。変更したとしても、コンパイル後には有効になりません。残りの 4 つのファイルは、DeviceTree フォルダとリソース デバイス ツリーを含む .hdf ファイルを介してコンパイル後に生成されます。 vivado プロジェクトによって構築されたノードの説明は、使用するときに system-user.dtsi ファイルを変更せずに一度コンパイルすることで、他の 4 つのファイル内のデバイス ツリー ノードが DeviceTree に従って更新されます。フォルダーと . 4 つのファイル内のデバイス ツリー ノードの参照名を指定し、参照によって新しいデバイス ツリーの子ノード情報を system-user.dtsi ファイルに追加します。
以下は、EMMC パーティション ノードと PYH ノードの system-user.dtsi ファイルをネットワーク ポートに追加する例です。
再コンパイル後、新しく追加されたデバイス ツリー ノードの情報は、上記 4 つのファイルでは確認できません。コンパイルしたばかりのsystem-top.dtbファイルを逆コンパイルすることによってのみ、新しく追加されたノードが有効であるかどうかを確認できます。
逆コンパイルコマンド: dtc -I dtb -O dts system-top.dtb > devicetree.dts
コンパイルされた devicetree.dts ファイルは、直接開いて表示できます。
PHYノードのアドレス情報は、PHYチップの回路図とマニュアルに従って決定されます。
さらに、Rootfs はシステムを起動できます。
いいね、お気に入り、フォローしていただけると嬉しいです!!!ヾ(o◕∀◕)ノ