MicroBlaze プロセッサを使っていて DLMB と ILMB ポートに microblaze_local_memory を付けているが、その増減方法が分からなかった。その増減方法を IDA さんに教えてもらったので、備忘録として書いておく。
microblaze_0_local_memory を展開して、lmb_bram をダブルクリックして設定を行った。

Block RAM Generator 設定ダイアログが開く。

Port A Option タブの Write Depth を設定しようとしてもハイドされていて設定できない。

何処を設定するのか、悩んでいたら IDA さんが、Address Editor で設定すると教えてくれた。ありがとうございます。
Address Editor を開いて dlmb_bram_if_cntlr/SLMB の Range を 64k バイトに設定したところ、正常に設定できた。(上の図は設定されたところだ)
- 2021年04月28日 21:23 |
- MicroBlaze
-
| トラックバック:0
-
| コメント:1
MicroBlaze のアプリケーション・ソフトウェアをブート時にロードしたいと思っていた。ツィッターでツイートするとバサロさんが Vivado の Associate ELF Files で MicroBlaze に ELF ファイルを関連付ける方法を教えてくれた。早速やってみよう。
Associate ELF Files については、”
Vivado Design Suite ユーザー ガイド エンベデッド プロセッサ ハードウェアデザイン UG898 (v2020.1) 2020 年 6 月 10 日”の 146 ページの”UpdateMEM を使用した BIT ファイルの MMI および ELF データでのアップデート”に記載がある。
Vivado のデザインは”
GPS と 3軸加速度センサーを使ったシステム5(Vivado 2020.1 のプロジェクトを作成中)”の GPS と 3 軸加速度センサーを 4 個使ったシステムで、それぞれ 1 個の MicroBlaze プロセッサが搭載されていてるので、合計 5 個の MicroBlaze プロセッサが搭載されている。
すでに、Vitis で アプリケーション・ソフトウェアを作成してある。

Vivado 2020.1 の Tools メニューから Associate ELF Files... を選択する。
Associate ELF Files ダイアログが開く。

gps_uartlite/microblaze_0 の Associate ELF File を指定する。右端の・・・ボタンをクリックする。
Select ELF Files ダイアログが開く。
mb_gps.elf を選択して OK ボタンをクリックする。(適当な ELF ファイルが無い場合は Add Files... ボタンをクリックして、適当な ELF ファイルを選択する)

gps_uartlite/microblaze_0 の Associate ELF File に mb_gps.elf が指定された。

Associate ELF Files ダイアログを OK ボタンをクリックして閉じると、Vivado の右上に write_bitstream Out-of-date と表示された。
Flow Navigator から Generate Bitsteram をクリックして、ビットファイルを生成する。

Running write_bitstream になって、ビットファイルを生成しているところだ。つまり、 Generate Bitsteram のフェーズのみ実行されるので、時間がかからなくて良い。

write_bitstream Complete になった。

Associate ELF Files で MicroBlaze に ELF ファイルを関連付ける方法をやってみたが、PS の DDR SDRAM を MicroBlaze のメモリとして使用する方法もある。
旧 Xilinx ツールの EDK を使用する例ではあるが、”
シンプルな AMP : Zynq SoC Cortex-A9 ベアメタル システムと MicroBlaze プロセッサ”がある。これも参考になると思う。
最後にツィッターでは IDA さんにもいろいろ通してていただいた。皆様、ありがとうございます。
- 2020年11月18日 05:10 |
- MicroBlaze
-
| トラックバック:0
-
| コメント:0
”
Nexys Video でMicroBlaze のチュートリアルをやってみる6(Vitis その2 + デバック)”の続き。
Nexys Video を使用して”
Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”第 4 章 演習 3: エンベデッド MicroBlaze プロセ ッサのプログラム”をやってみようと思うということで、前回は、ラン・コンフィグレーションを作り、デバックモードで起動して、GPIO の Write アクセスを Vivado Analyzer で観察した。今回は、”
Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”手順 13: ロジックからプロセッサへのクロストリガーの設定”をやってみよう。
Vitis で 50 行目のブレーク・ポイントを削除した。

Vivado Analyzer で Trigger mode を BASIC_OR_TRIG_IN に、TRIG_OUT mode を TRIGGER_OR_TRIG_IN に変更した。
AWVALID は Rise でトリガをかけてある。

Vivado Analyzer の Status ウインドウで Run trigger for this ILA core ボタンをクリックする。
トリガを待っている。

Vitis で Resume ボタンをクリックして、ソフトウェアを走らせる。

Vitis は停止したが、 exit で停止しているようだ。クロストリガーでは停止していないようだ?

Vivado Analyzer はトリガーがかかっている。

波形を拡大した。

ロジックからプロセッサへのクロストリガーはうまく行かなかった。
- 2020年10月11日 05:10 |
- MicroBlaze
-
| トラックバック:0
-
| コメント:0
”
Nexys Video でMicroBlaze のチュートリアルをやってみる5(Vitis その1)”の続き。
Nexys Video を使用して”
Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”第 4 章 演習 3: エンベデッド MicroBlaze プロセ ッサのプログラム”をやってみようと思うということで、前回は、Vitis を起動して、プラットフォームとアプリケーション・プラットフォームを作成し、テンプレートとして Peripheral Tests を選択しビルドし成功した。今回は、ラン・コンフィグレーションを作り、デバックモードで起動して、GPIO の Write アクセスを Vivado Analyzer で観察した。
Explorer から Microblaze_tut_system -> Microblaze_tut を右クリックし、右クリックメニューから Generate Linker Script を選択する。

Basic タブの Place code Sections in: と Place Data Sections in: 、 Place Heap and Stack in: で mig_7series_0_memaddr を選択する

Explorer から Microblaze_tut_system -> Microblaze_tut -> src -> lscript.ld を開くと設定が変わっている。

Assistant ウインドウから Microblaze_tut_system -> Microblaze_tut -> Debug を右クリックし、右クリックメニューから Debug AS -> Debug Configurations... を選択する。

Debug Configurations ダイアログが開く。
Singu Application Debug を右クリックし、右クリックメニューから New Configuration を選択する。

Debugger_Microblaze_tut-Default という名前の Debug Configurations ダイアログが開いた。
とりあえず Close ボタンをクリックして、ダイアログを閉じる。

Nexys Video の PROG 、 UART ポートを USB ケーブルでパソコンに接続して、電源 ON した。
JP4 は JTAG モードに変更した。
gtkterm を sudo で開いて、 /dev/ttyUSB1 をポートとして指定する。ボーレートは 9600 bps だ。

Vitis IDE に戻って、 testperiph.c を書き換える。
41 行目に
while(1)
を入力した。
59 行目にブレーク・ポイントを入力した。

Assistant ウインドウから Microblaze_tut_system -> Microblaze_tut -> Debug を右クリックし、右クリックメニューから Debugger_Microblaze_tut-Default を選択する。

Debug モードになって、 testperiph.c の main() の最初の行でストップした。

Vivado に戻って、 Flow Navigator から PROGRAM AND DEBUG -> Open Hardware Manager -> Open Target をクリックし、 Auto Connect を選択した。

HARWARE MANAGER が起動し、hw_ila_1 が表示された。

Settings - hw_ila_1 で Trigger mode: を TRIG_IN_ONLY、 TRIG_OUT mode: を TRIG_IN_ONLY に変更した。

Run Trigger ボタン(緑の横三角)をクリックして、波形キャプチャをスタートした。
Windows sample が 512 of 1024 になった。この時点でトリガを待っている。

Vitis で Resume ボタンをクリックして、50 行目までソフトウェアを進める。

Vivado Analyer で波形がキャプチャできた。

gtkerm の表示を示す。

Settings - hw_ila_1 で Trigger mode: を BASIC_ONLY、 TRIG_OUT mode: を DISABLED に戻した。
デバックモードを終了して、もう一度、Assistant ウインドウから Microblaze_tut_system -> Microblaze_tut -> Debug を右クリックし、右クリックメニューから Debugger_Microblaze_tut-Default を選択した。
Vivado に戻って、 Flow Navigator から PROGRAM AND DEBUG -> Open Hardware Manager -> Open Target をクリックし、 Auto Connect を選択した。
今度は、 hw_ila_1 の Trigger Setup で AWVALID を R でトリガにした。
Run Trigger ボタン(緑の横三角)をクリックして、波形キャプチャをスタートした。
Windows sample が 512 of 1024 になった。この時点でトリガを待っている。
Vitis の Resume ボタンをクリックして、50 行目までソフトウェアを進める。
Vivado Analyer で波形がキャプチャできた。

今度は、AWVALID などの制御信号もキャプチャできている。
- 2020年10月10日 16:52 |
- MicroBlaze
-
| トラックバック:0
-
| コメント:0
”
Nexys Video でMicroBlaze のチュートリアルをやってみる4(手順 2: IP インテグレーター デザインの作成 その3)”の続き。
Nexys Video を使用して”
Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”第 4 章 演習 3: エンベデッド MicroBlaze プロセ ッサのプログラム”をやってみようと思うということで、前回はできあがった回路を論理合成、インプリメンテーション、ビットストリームの生成を行って、XSA ファイルを生成した。今回は、Vitis を起動して、プラットフォームとアプリケーション・プラットフォームを作成し、テンプレートとして Peripheral Tests を選択した。
Viavdo 2020.1 の Tools メニューから Launch Vitis IDE を選択する。
Eclipse Launcher ダイアログが表示された。
Browse... ボタンをクリックする。

MicroBlaze_tut プロジェクトのディレクトリに行って、フォルダの作成ボタンをクリックする。

vitis_work を作成した。それを選択して、OKボタンをクリックする。

Workspace: に MicroBlaze_tut/vitis_work が入った。そのまま、 Launch ボタンをクリックする。

Vitis 2020.1 の Welcome 画面が表示された。

Create Application Project をクリックする。
New Application Project の Create a New Application Project 画面が表示された。
Next > ボタンをクリックする。

Platform 画面では、Create a new platform hardware (XSA) タブをクリックする。
XSA File: の Browse... ボタンをクリックする。

MicroBlaze_tut/mb_subsystem_wrapper.xsa ファイルを指定した。

Application Project Details 画面で、Application project name: に Micorblaze_tut と入力した。

Domain 画面はデフォルトのままとした。

Templates ウインドウでは、 Peripheral Tests を選択して、 Finish ボタンをクリックした。

プラットフォームとアプリケーション・プロジェクトが作成された。

トンカチマークをくりっくして、ビルドを行った。
ビルドは成功した。
- 2020年10月09日 04:32 |
- MicroBlaze
-
| トラックバック:0
-
| コメント:0
”
Nexys Video でMicroBlaze のチュートリアルをやってみる3(手順 2: IP インテグレーター デザインの作成 その2)”の続き。
Nexys Video を使用して”
Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”第 4 章 演習 3: エンベデッド MicroBlaze プロセ ッサのプログラム”をやってみようと思うということで、前回は、、”手順 2: IP インテグレーター デザインの作成”を更に進めていって、ブロックデザインが完成したと思ったが、クロックのピンなどがなかった。今回は、クロックピンや clocking Wizard を追加して、ブロックデザインを完成させ、論理合成、インプリメンテーション、ビットストリームの生成を行った。
やはり、”
Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”は、ザイリンクス KC705 FPGA 評価ボードのチュートリアルなので、Nexys Video に適用できないところがある。前回のブロックデザインでは、MIG のクロック sys_clk_i が直接出ている。これは 200 MHz のクロック入力だが、Nexys Video のクロックは 100 MHz だった。
Board ウインドウから System Clock と Reset を Diagram ウインドウにドラック & ドロップした。

clocking Wizard を追加した。
clk_out1 を MIG 用の 200 MHz に設定変更して、Reset Type を Active Low に変更した。

最終的に完成したブロックデザインを示す。
Processor System Reset と Clocking Wizard IP を追加してある。

MIG 以外の IP のクロックは MIG の ui_clk から自動的に接続されていたので、とりあえずこれで良いことにする。
Validate Design を行ったところ、成功した。

Vivado の Source ウインドウで mb_system_i を右クリックし右クリックメニューから Create HDL Wrapper... を選択して Verilog HDL のラッパーファイルを生成した。

Generate Bitstream をクリックして、論理合成、インプリメンテーション、ビットストリームの生成を行った。
成功して、ビットファイルが生成された。

Project Summary を示す。
タイミングもメットしている。

さて、XSA ファイルを出力しよう。
Vivado の File メニューから Export -> Export Hardware... をクリックする。
Export Hardware Platform ダイアログが表示された。
Platform Type はデフォルトの Fixed のままで Next > ボタンをクリックする。

Output 画面では、Inclue bitstream のラジオボタンを選択する。

Files ではデフォルトのままとする。

Exporting Hardware Platform で Finish ボタンをクリックする。

mb_subsystem_wrapper.xsa ファイルが生成された。
- 2020年10月08日 04:58 |
- MicroBlaze
-
| トラックバック:0
-
| コメント:0
Nexys Video を使用して”
Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”第 4 章 演習 3: エンベデッド MicroBlaze プロセ ッサのプログラム”をやってみようと思うということで、前回は”手順 2: IP インテグレーター デザインの作成”を進めていって、axi_uartlite_0 のインスタンスまで終了した。今回は、”手順 2: IP インテグレーター デザインの作成”を更に進めていく。
次は、Board ウインドウの GPIO 8 LEDs を Diagram ウインドウにドラック & ドロップした。

axi_gpio_0 の Auto Connect ダイアログが表示された。OK ボタンをクリックする。

Diagram ウインドウの + ボタンをクリックして、AXI BRAM Controller を Add IP する。

Run Block Automation をクリックする。

microblaze_0 の設定画面が開く。下図の様に設定を行った。

micoblaze_0_local_memory, Processor System Reset, MicroBlaze Debug Module が追加され、それらと MIG 7 Series が配線された。

Run Connection Automation をクリックする。
Run Connection Automation ダイアログが開いた。
All Automation (9 out of 9 selected) のチェックボックスにチェックを入れて、OK ボタンをクリックする。

配線がだいたい完成したが、まだ Run Connection Automation が表示されている。Run Connection Automation をクリックする。
mdm_1 の M_AXI ポートを接続する。
OK ボタンをクリックする。

Run Connection Automation 後のブロックデザインを示す。

microblaze_0_axi_periph IP の M00_AXI インターフェースと axi_gpio_0 IP の S_AXI インターフェースの接続線を選択し、右クリックし、右クリックメニューから Debug を選択する。

Debug を設定すると、Run Connection Automation が表示された。
Run Connection Automation をクリックする。

All Automation にチェックが入っている。
OK ボタンをクリックする。

system_ila が配線され、 Diagram ウインドウの回路が完成した。

Address Editor 画面を示す。
- 2020年10月04日 04:27 |
- MicroBlaze
-
| トラックバック:0
-
| コメント:0