”
Efinity RISC-V Embedded Software IDE で新規プロジェクトを作成する1 ”の続き。
Efinity RISC-V Embedded Software IDE で新規プロジェクトを作成して、動作させてみようということで、前回は、Efinity RISC-V Embedded Software IDE で新規プロジェクトを作成し、C ソースコードを追加して、ビルドし成功した。今回は、Run Configuration を作成し、Run を行った。OpenOCD が起動して、アプリケーション・ソフトウェアを起動して、実行することができた。
Efinity RISC-V Embedded Software IDE で左の Project Explorer の gpioDemo3 を右クリックし、右クリックメニューから Run As -> Run Configurations... を選択した。
Run Configuration ダイアログが表示された。
すでに 3 個の Run Configuration が生成されていた。
gpioDemo3_softTap, gpioDemo3_ti, gpioDemo3_trion
gpioDemo3_trion をクリックして、Main タブの内容を見てみよう。
Debugger タブをクリックした。
こちらも設定が終了しているし、パスがちゃんと入っている。
Xyloni Development Kit を USB ケーブルで Ubuntu 22.04 のパソコンに接続した。
GTKTerm を起動した。
Configuration メニューの Port から設定を行った。
Configuration ダイアログが表示された。
Port を /dev/ttyUSB2 に設定した。
Baud Rate は 115200 bps に、Parity は none に、Bits は 8 bits に、Stopbits は 1 bit に、Flow control は none に設定した。
Efinity RISC-V Embedded Software IDE の Run Configuration で Run ボタンをクリックして、アプリケーション・ソフトウェアを起動した。
OpenOCD が起動した。
GTKTerm を見ると、Efinity RISC-V Embedded Software IDE で
gpio 0 demo ! onboard LEDs blinking
が表示されて、4 個の LED が点滅した。
その後、LED の点滅が消えて、
gpio 0 interrupt demo ! Ti180 press and release onboard button sw4 Ti60 press and release onboard button sw6 T120 press and release onboard button sw7
が表示された。
Xyloni Development Kit の BTN1 を押すと、もう一度、LED の点滅が始まった。GTKTerm の表示も同様だった。
OpenOCD を終了する。
Efinity RISC-V Embedded Software IDE の Console タブで Terminate ボタンをクリックして、OpenOCD をシャットダウンした。
2024年04月30日 04:26 |
Efinity RISC-V Embedded Software IDE
| トラックバック:0
| コメント:0
今まで、Efinity RISC-V Embedded Software IDE でサンプル・プロジェクトをやってきたが、一度も新規プロジェクトを作成して、動作させたことがない。Efinity RISC-V Embedded Software IDE で新規プロジェクトを作成する手順を確認しよう。
使用しているパソコンの OS は Ubuntu 22.204 である。
Efinity RISC-V Embedded Software IDE を起動した。
Efinity RISC-V Embedded Software IDE の File メニューから New -> Project を選択した。
New Project ダイアログが表示された。
Efinix Project -> Efinix Makefile Project を選択し、Next > ボタンをクリックした。
New Efinix Makefile Project Wizard ダイアログ表示された。
Projec type は Standalone のままとした。
Project name に名前を入力する。
Project name に
gpioDemo3 を入力した。
BSP location の Brows... ボタンをクリックした。
BSP location ダイアログが表示された。
/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/bsp を選択し、”開く”ボタンをクリックした。
BSP location が入力された。
Project location も /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone が入力されている。
Finish ボタンをクリックした。
Efinity RISC-V Embedded Software IDE に gpioDemo3 プロジェクトが生成された。
gpioDemo3.c も return するだけのコードが生成されていた。
gpioDemo3.c に /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/gpioDemo/src/main.c のコードをコピーしたのだが、このままでは、1 番めの LED が表示されなかったため、0xe を 0xf に書き換えた。
トンカチ・ボタンをクリックして、ビルドを行うとエラーになった。
init() 関数の csr_write(mtvec, trap_entry); の trap_entry が無いと言われているようだ。
ログを示す。
08:25:53 **** Build of configuration Default for project gpioDemo3 **** make all CC src/gpioDemo3.c CC ../common/start.S LD gpioDemo3 Memory region Used Size Region Size %age Used /media/masaaki/Ubuntu_Disk/Efinity/efinity-riscv-ide-2023.2/toolchain/bin/../lib/gcc/riscv-none-embed/8.3.0/../../../../riscv-none-embed/bin/ld: build/obj_files/gpioDemo3.o: in function `init': ram: 2800 B 4 KB 68.36% /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/gpioDemo3//src/gpioDemo3.c:63: undefined reference to `trap_entry' /media/masaaki/Ubuntu_Disk/Efinity/efinity-riscv-ide-2023.2/toolchain/bin/../lib/gcc/riscv-none-embed/8.3.0/../../../../riscv-none-embed/bin/ld: /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/gpioDemo3//src/gpioDemo3.c:63: undefined reference to `trap_entry' collect2: error: ld returned 1 exit status make: *** [../common/standalone.mk:31: build/gpioDemo3.elf] エラー 1 "make all" terminated with exit code 2. Build might be incomplete. 08:25:54 Build Failed. 4 errors, 0 warnings. (took 1s.116ms)
そこで、
csr_write(mtvec, trap);
に書き換えた。多分、割り込みルーチンを設定しているところなんだろう?と思う。
もう一度、トンカチ・ボタンをクリックして、ビルドを行った。
今度はビルドが成功した。
2024年04月29日 10:37 |
Efinity RISC-V Embedded Software IDE
| トラックバック:0
| コメント:0
”
Sapphire SoC の userTimerDemo をやってみる4(OpenOCD で userTimerDemo プロジェクトを実行) ”で Efinity RISC-V Embedded Software IDE からアプリケーションの userTimerDemo.elf ファイルを Xyloni Development Kit の Sapphire SoC にロードして実行することができた。しかし、このソフトウェアは電源ON 時に実行して欲しい。というときに使用するのが、BRAM Initial Content Updater だそうだ。この機能を使ってみたいということで、やってみたのだが、Ubuntu 22.04 パソコンの場合は、BRAM Initial Content Updater で Update memory contentボタンをクリックすると Efinity が落ちてしまった。
BRAM Initial Content Updater の情報は、
”Efinity® Software User Guide UG-EFN-SOFTWARE-v13.5 April 2024”の 87 ページの”About the BRAM Initial Content Updater” にある。この情報をもとにやってみよう。
まずは、Efinity の --optimize-zero-init-rom を 0 にする必要があるそうだ。
Efinity の File メニューから Edit Project... を選択した。
Project Editor ダイアログが起動した。
Synthesis タブをクリックした。
--optimize-zero-init-rom が 1 になっていた。
--optimize-zero-init-rom の 1 の部分をダブルクリックし、出てきた下向き三角をクリックして、0 に変更した。
--optimize-zero-init-rom が 0 になった。
OK ボタンをクリックして Project Editor ダイアログを終了した。
Efinity で論理合成、Place & Route、ビットファイルの生成を行った。
Open BRAM Initial Content Updater をクリックして、BRAM Initial Content Updater を起動した。
BRAM Initial Content Updater が起動した。
Select Memory Initialization File ボタンをクリックして、hex ファイルを指定する。
/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/userTimerDemo/build/userTimerDemo.hex を指定した。
sapphire0_inst/u_EfxSapphireSoc/system_ramA_logic/ram_symbol0 をクリックした。
Update Memory Content ボタンをクリックした。
Update Memory Content ボタンをクリックすると Efinity がコアダンプで落ちてしまった。orz
2024年04月28日 05:35 |
Efinity IDE
| トラックバック:0
| コメント:0
”
Sapphire SoC の userTimerDemo をやってみる3(Efinity RISC-V Embedded Software IDE で userTimerDemo プロジェクトを作成しビルド) ”の続き。
Github の Xyloni の
soc_sap_t8 に Timer0 を追加して userTimerDemo をやってみようということで、前回は、Efinity RISC-V Embedded Software IDE を起動して、userTimerDemo プロジェクトを作成し、インクルードファイルやシンボルファイルをインポートして、ビルドを行い成功した。
今回は、Run Configuration を作成して、ソフトウェアを実行し、タイマー割り込みで UART に”user timer 0 interrupt routine”の表示を出すことができた。
Efinity RISC-V Embedded Software IDE で左の Project Explorer の userTimerDemo を右クリックし、右クリックメニューから Run As -> Run Configurations... を選択した。
Run Configuration ダイアログが表示された。
Create, manage, and run configuration 画面
GDB OpenOCD Debugging を右クリックし、右クリックメニューから New Configuration を選択した。(実際には、出来あがった Run Configuration の userTimerDemo が存在する)
Main タブ
Project に uartEchoDemo が入っていた。
C/C++ Application の Browse... ボタンをクリックして、media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/userTimerDemo/build/userTimerDemo.elf を選択した。
Debugger タブをクリックした。
OpenOCD Setup の Executable path の Browse... ボタンをクリックしなくても、C:\Efinity\efinity-riscv-ide-2023.2\openocd\bin\openocd.exe が選択されていた。uartEchoDemo で Run Configuration をすでに作成済みだったからだと思う。
GDB Client Setup の Executable path の Browse... ボタンをクリックしなくても、C:\Efinity\efinity-riscv-ide-2023.2\toolchain\bin\riscv-none-embed-gdb.exe を選択した。
Apply ボタンをクリックした。
GTKTerm を起動した。
Configuration メニューの Port から設定を行った。
Configuration ダイアログが表示された。
Port を /dev/ttyUSB2 に設定した。
Baud Rate は 115200 bps に、Parity は none に、Bits は 8 bits に、Stopbits は 1 bit に、Flow control は none に設定した。
Run Configuration で Run ボタンをクリックし、ソフトウェアを起動した。
GTKTerm の画面に定期的に”user timer 0 interrupt routine ”が表示された。成功だ。
Efinity RISC-V Embedded Software IDE の様子を示す。OpenOCD が起動している。
2024年04月27日 14:59 |
Efinity RISC-V Embedded Software IDE
| トラックバック:0
| コメント:0
”
Sapphire SoC の userTimerDemo をやってみる2(Timer0 を追加した Sapphire SoC を Xyloni にコンフィギュレーション) ”の続き。
Github の Xyloni の
soc_sap_t8 に Timer0 を追加して userTimerDemo をやってみようということで、前回は、Efinity Programmer を起動して、Timer0 を追加した Sapphire SoC を Xyloni Development Kit にコンフィギュレーションした。今回は、Efinity RISC-V Embedded Software IDE を起動して、userTimerDemo プロジェクトを作成し、インクルードファイルやシンボルファイルをインポートして、ビルドを行い成功した。
使用してる OS は Ubuntu 22.04 だ。
efinity-riscv-ide-2023.2/Efinity-RISCV-IDE/efinity-riscv-ide/efinity-riscv-ide をダブルクリックした。
Efinity RISC-V Embedded Software IDE Launcher ダイアログが表示された。
Workspace の Brows... ボタンをクリックした。
Select Workspace Directory ダイアログが開いた。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0 をワークスペースとして指定した。
”開く”ボタンをクリックして終了した。
Efinity RISC-V Embedded Software IDE Launcher ダイアログの Launch ボタンをクリックした。
Efinity RISC-V Embedded Software IDE が表示された。
File メニューから New -> Makefile Project with Existing Code を選択した。
New Project ダイアログが表示された。
Brows... ボタンをクリックし、/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/userTimerDemo ディレクトリを選択し、”開く”ボタンをクリックした。
Finish ボタンをクリックした。
userTImeDemo プロジェクトが生成された。
main.c を開いた。
インクルードファイルとシンボルファイルをインポートする。
左のウインドウの userTimerDemo を右クリックし、右クリックメニューから import... を選択した。
Import ダイアログが表示された。
C/C++ を展開して、C/C++ Project Settings を選択した。
Next > ボタンをクリックした。
Select Project で userTimerDemo をクリックして、選択した。
Settings file の Brows... ボタンをクリックした。
ダイアログが表示された。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/config/project_settings_soc.xml を選択した。
”開く”ボタンをクリックした。
Select settings to import に Include Paths と # Symbols が入っている。
Finish ボタンをクリックした。
Efinity RISC-V Embedded Software IDE に戻った。
userTimerDemo の下に Includes ディレクトリが増えている。
トンカチ・ボタンをクリックしてビルドを行った。
ビルドが成功した。
2024年04月26日 04:16 |
Efinity RISC-V Embedded Software IDE
| トラックバック:0
| コメント:0
”
Sapphire SoC の userTimerDemo をやってみる1(Efinity で Sapphire SoC に Timer0 を追加) ”の続き。
Github の Xyloni の
soc_sap_t8 に Timer0 を追加して userTimerDemo をやってみようということで、前回は、Efinity 2023.2 で soc_sap_t8 の sapphire0 を編集して Timer0 を追加し、論理合成、Place & Route、ビットファイルの生成を行った。今回は、Efinity Programmer を起動して、Timer0 を追加した Sapphire SoC を Xyloni Development Kit にコンフィギュレーションした。
Efinity 2023.2 で Tools メニューから Open Programmer を選択して、Efinity Programmer を起動した。
Efinity Programmer が起動した。
Select Image File ボタンをクリックした。
Open Image File ダイアログが表示された。
/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/outflow/soc_sap_t8.hexファイルを選択して、Open ボタンをクリックした。
Programming Mode を SPI Active モードに変更する。
Programming Mode を SPI Active モードに変更した。
Xyloni Development Kit を USB ケーブルで Ubuntu 22.04 のパソコンに接続した。
Start Program ボタンをクリックし、HEX ファイルを Xyloni Development Kit に書き込んだ。
HEX ファイル形式の FPGA のビットストリームを Xyloni Development Kit に書き込んだ。
2024年04月25日 08:25 |
Efinity IDE
| トラックバック:0
| コメント:0
”
Xyloni Development Kit を使ってみる16(soc_sap_t8 をやってみる8) ”で Sapphire SoC で uartEchoDemo を実行することができた。今度は、userTimerDemo をやってみたいということで、Efinity 2023.2 で soc_sap_t8 の sapphire0 を編集して Timer0 を追加し、論理合成、Place & Route、ビットファイルの生成を行った。
Efinity 2023.2 を起動して、soc_sap_t8 プロジェクトを開く。
Project タブの IP の sapphire0 を右クリックし、右クリックメニューから Configure を選択した。
sapphire0 の IP Configuration ダイアログが開いた。
Timer タブをクリックし、User Timer 0 の Include the Timer 0. のチェックボックスをチェックした。
チェックすると下に項目が増えた。増えた項目はデフォルトのままとした。
Generate ボタンをクリックした。
Review generation configuration ダイアログが表示された。
Generate ボタンをクリックした。
Generation Success ダイアログが表示された。
OK ボタンをクリックした。
Synthesize ボタンをクリックして、論理合成、Place & Route 、ビットファイルの生成を行った。
論理合成、Place & Route 、ビットファイルの生成が終了した。
論理合成のレポートファイル、soc_sap_t8.map.rpt の一部を示す。
### ### Resource Summary (begin) ### ### ### INPUT PORTS : 33 OUTPUT PORTS : 51 EFX_ADD : 717 EFX_LUT4 : 3881 1-2 Inputs : 767 3 Inputs : 1535 4 Inputs : 1579 EFX_MULT : 4 EFX_FF : 3247 EFX_RAM_5K : 18 EFX_GBUFCE : 2 ### ### Resource Summary (end) ### ### ###
Place のレポート、soc_sap_t8.place.rpt の一部を示す。
---------- Resource Summary (begin) ---------- Inputs: 31 / 96 (32.29%) Outputs: 63 / 223 (28.25%) Clocks: 2 / 16 (12.50%) Logic Elements: 6193 / 7384 (83.87%) LE: LUTs/Adders: 4600 / 7384 (62.30%) LE: Registers: 3247 / 5280 (61.50%) Memory Blocks: 18 / 24 (75.00%) Multipliers: 4 / 8 (50.00%) ---------- Resource Summary (end) ----------
Route のレポート、soc_sap_t8.timing.rpt の Clock Frequency Summary を示す。
---------- 1. Clock Frequency Summary (begin) ---------- User target constrained clocks Clock Name Period (ns) Frequency (MHz) Waveform Targets io_systemClk 50.090 19.964 {0.000 25.045} {io_systemClk} jtag_inst1_TCK 166.670 6.000 {0.000 83.335} {jtag_inst1_TCK} Maximum possible analyzed clocks frequency Clock Name Period (ns) Frequency (MHz) Edge io_systemClk 40.623 24.617 (R-R) jtag_inst1_TCK 41.008 24.385 (F-R) Geomean max period: 40.815 ---------- Clock Frequency Summary (end) ---------------
2024年04月24日 08:41 |
Efinity IDE
| トラックバック:0
| コメント:0
”
Xyloni Development Kit を使ってみる14(soc_sap_t8 をやってみる6) ”の途中から続く。
”
Xyloni Development Kit を使ってみる14(soc_sap_t8 をやってみる6) ”の Import Launch Configuration をキャンセルして、Include Paths と # Symbols をインポートした後から続けてやってみる。
Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Run As -> Run Configuration を選択した。
Run Configuration ダイアログが表示された。
Create, manage, and run configuration 画面
GDB OpenOCD Debugging を右クリックし、右クリックメニューから New Configuration を選択する。(もうすでに userEchoDemo Default があるのは愛嬌として、許してください。今からこの userEchoDemo Default を作成します)
C/C++ Application の Brows... ボタンをクリックした。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/uartEchoDemo/build/uartEchoDemo.elf を選択した。
”開く”ボタンをクリックした。
C/C++ Application にフルパスの uartEchoDemo.elf が入った。
OpenOCD Setup の Executable path の Browse... ボタンをクリックして、/media/masaaki/Ubuntu_Disk/Efinity/efinity-riscv-ide-2023.2/openocd/bin/openocd を選択した。
GDB Client Setup の Executable path の Browse... ボタンをクリックして、/media/masaaki/Ubuntu_Disk/Efinity/efinity-riscv-ide-2023.2/toolchain/bin/riscv-none-embed-gdb を選択した。
Apply ボタンをクリックした。
Xyloni Development Kit を USB ケーブルで Ubuntu 22.04 のパソコンに接続した。
Run ボタンをクリックした。
GTKTerm を起動して、Configuration メニューの Port から設定を行う。
Configuration ダイアログが表示された。
Port を /dev/ttyUSB2 に設定した。
Baud Rate は 115200 bps に、Parity は none に、Bits は 8 bits に、Stopbits は 1 bit に、Flow control は none に設定した。
OpenOCD が起動した。こっちも、ついにやったよ。。。
OpenOCD のログを示す。
Open On-Chip Debugger 0.11.0+dev-04034-gfaf2fc486 (2023-05-02-15:45) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'. Info : set servers polling period to 50ms Info : clock speed 800 kHz Info : JTAG tap: fpga_spinal.bridge tap/device found: 0x00000001 (mfg: 0x000 (<invalid>), part: 0x0000, ver: 0x0) [fpga_spinal.cpu0] Target successfully examined. Info : starting gdb server for fpga_spinal.cpu0 on 3333 Info : Listening on port 3333 for gdb connections Started by GNU MCU Eclipse Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : accepting 'gdb' connection on tcp/3333 Warn : Target Descriptions Supported, but disabled Warn : Prefer GDB command "target extended-remote :3333" instead of "target remote :3333" Info : JTAG tap: fpga_spinal.bridge tap/device found: 0x00000001 (mfg: 0x000 (<invalid>), part: 0x0000, ver: 0x0) Info : JTAG tap: fpga_spinal.bridge tap/device found: 0x00000001 (mfg: 0x000 (<invalid>), part: 0x0000, ver: 0x0)
GTKTerm で
1 キーを押すと echo charactoer : 1 が表示された。
2 キーを押すと echo charactoer : 2 が表示された。
3 キーを押すと echo charactoer : 3 が表示された。
成功だ。
OpenOCD を終了する。
Console タブで Terminate ボタンをクリックして、OpenOCD をシャットダウンした。
2024年04月23日 04:29 |
Efinity RISC-V Embedded Software IDE
| トラックバック:0
| コメント:0
””XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる7 ”の続き。
”
”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる8 ”はうまく行かなかったので、パスする。
”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”Sapphire SoC の 実装”をやってみようということで、前回は、Windows 11 で Efinity RISC-V Embedded Software IDE を起動して、uartEchoDemo サンプル・デザインのプロジェクトを作成した。インクルード・ファイルやシンボル・ファイルをインポートして、プロジェクトをビルドして成功した。今回は、”
”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる8 ”で Run Configuration を作成して、Run したがエラーだったので、独自に Run Configuration を作成し、gdb や openocd をフルパス付で設定したところ、OpenOCD が走って、uartEchoDemo を実行することができた。
Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Run As -> Run Configurations... を選択した。
Run Configuration ダイアログが表示された。
Create, manage, and run configuration 画面
GDB OpenOCD Debugging を右クリックし、右クリックメニューから New Configuration を選択した。
Main タブ
Project に uartEchoDemo が入っていた。
C/C++ Application の Browse... ボタンをクリックした。
C:\Efinity\HDL\2023.2\xyloni_sapphire\embedded_sw\SappireSoC\software\standalone\uartEchoDemo\build\uartEchoDemo.elf を選択し、”開く”ボタンをクリックした。
C/C++ Application にフルパスの uartEchoDemo.elf が入った。
Debugger タブをクリックした。
OpenOCD Setup の Executable path の Browse... ボタンをクリックして、C:\Efinity\efinity-riscv-ide-2023.2\openocd\bin\openocd.exe を選択した。
GDB Client Setup の Executable path の Browse... ボタンをクリックして、C:\Efinity\efinity-riscv-ide-2023.2\toolchain\bin\riscv-none-embed-gdb.exe を選択した。
Apply ボタンをクリックした。
Xyloni Development Kit を USB ケーブルで Ubuntu 22.04 のパソコンに接続した。
Run ボタンをクリックした。
OpenOCD が起動した。ついにやったよ。。。
起動ログを示す。
Open On-Chip Debugger 0.11.0+dev-04034-gfaf2fc486-dirty (2023-05-02-16:04) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html C:\Efinity\HDL\2023.2\xyloni_sapphire\embedded_sw\SappireSoC\cpu0_yaml Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'. Info : set servers polling period to 50ms Info : clock speed 800 kHz Info : JTAG tap: fpga_spinal.bridge tap/device found: 0x00000001 (mfg: 0x000 (<invalid>), part: 0x0000, ver: 0x0) [fpga_spinal.cpu0] Target successfully examined. Info : starting gdb server for fpga_spinal.cpu0 on 3333 Info : Listening on port 3333 for gdb connections Started by GNU MCU Eclipse Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : accepting 'gdb' connection on tcp/3333 Warn : Target Descriptions Supported, but disabled Warn : Prefer GDB command "target extended-remote :3333" instead of "target remote :3333" Info : JTAG tap: fpga_spinal.bridge tap/device found: 0x00000001 (mfg: 0x000 (<invalid>), part: 0x0000, ver: 0x0) Info : JTAG tap: fpga_spinal.bridge tap/device found: 0x00000001 (mfg: 0x000 (<invalid>), part: 0x0000, ver: 0x0)
Windows 11 のアイコンを右クリックし、右クリックメニューからタスクマネージャーを選択した。
タスクマネージャーが起動した。
ポート(COM と LPT) を展開すると、USB Serial Port (COM15) が見えた。右クリックし、右クリックメニューからプロパティを表示すると、FTDI のドライバということが分かる。つまり、Xyloni Development Kit の Serial Port だ。
Efinity RISC-V Embedded Software IDE でターミナルを起動する。
Efinity RISC-V Embedded Software IDE で Open a Terminal ボタンをクリックした。
Launch Terminal ダイアログが表示された。
Choose terminal の下向き>をクリックし、
Serial Terminal を選択した。
Serial port には、先ほど確認した COM15 ポートを選択した。
その他はデフォルトままで、Baud rate が 115200 bps、Date size が 8 ビット、Parity が None、Stop bits が 1 ビットとした。
Terminal が起動した。
1 キーを押すと echo charactoer : 1 が表示された。
2 キーを押すと echo charactoer : 2 が表示された。
3 キーを押すと echo charactoer : 3 が表示された。
成功だ。。。やったよ。。。
Termial タブの X をクリックして、Termial タブを消した。
OpenOCD を終了する。
Console タブで Terminate ボタンをクリックして、OpenOCD をシャットダウンした。
2024年04月22日 03:55 |
Efinity RISC-V Embedded Software IDE
| トラックバック:0
| コメント:0
”
”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる7 ”の続き。
(2024/04/22:追記) この記事はエラーが出てうまく行きません。うまく行く方法は””XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる9 ”を見てください。”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”Sapphire SoC の 実装”をやってみようということで、前回は、Windows 11 で Efinity RISC-V Embedded Software IDE を起動して、uartEchoDemo サンプル・デザインのプロジェクトを作成した。インクルード・ファイルやシンボル・ファイルをインポートして、プロジェクトをビルドして成功した。今回は、Launch Configurations の default.launch を読み込んた。次に、Run Configuration を作成し、設定を行って Run したが、エラーになった。
Launch Configurations を読み込む。
Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Import... を選択した。
Import ダイアログが表示された。
Select 画面
Run/Debug を展開して、Launch Configurations を選択した。
Next > ボタンをクリックした。
Import Launch Configuration 画面
From Directory の Browse... ボタンをクリックした。
C:\Efinity\HDL\2023.2\xyloni_sapphire\embedded_sw\SappireSoC\config をクリックし、”フォルダーの選択”ボタンをクリックした。
左のウインドウに config が入った。
config のチェックボックスにチェックを入れた。
右のウインドウに 3 つの項目が追加された。
default.launch だけチェックを残して、他の 2 つのチェックを外した。
Finish ボタンをクリックした。
Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Run As -> Run Configurations... を選択した。
Run Configuration ダイアログが表示された。
Create, manage, and run configuration 画面
GDB OpenOCD Debugging -> default をクリックした。
Main のタブで Project の Brows... ボタンをクリックした。
Project Selection ダイアログが表示された。
uartEchoDemo が選択されている。
OK ボタンをクリックした。
C/C++ Application の Brows... ボタンをクリックした。
C:\Efinity\HDL\2023.2\xyloni_sapphire\embedded_sw\SappireSoC\software\standalone\uartEchoDemo\build\uartEchoDemo.elf を選択し、”開く”ボタンをクリックした。
C/C++ Application にフルパスの uartEchoDemo.elf が入った。
Debugger タブをクリックした。
Debugger タブ
Config options は cpu0.yaml の記述がないので、そのままとした。
Apply ボタンをクリックした。
Xyloni Development Kit を USB ケーブルで Windows 11 のパソコンに接続した。
Run ボタンをクリックして、ソフトウェアを起動したところ、下記のエラーが発生した。
なんかうまく行かないな。。。
(2024/04/22:追記) GDB OpenOCD Debugging -> default を削除した。
Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Run As -> Run Configurations... を選択した。
Run Configuration ダイアログが表示された。
Create, manage, and run configuration 画面
GDB OpenOCD Debugging -> default を右クリックし、右クリックメニューから Delete を選択して削除した。
2024年04月21日 17:50 |
Efinity RISC-V Embedded Software IDE
| トラックバック:0
| コメント:0
”
”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる6 ”の続き。
”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”Sapphire SoC の 実装”をやってみようということで、前回は、Efinity Programmer を起動して、Xyloni Development Kit に Sapphire SoC のビットファイルを SPI Active モードで書き込んだ。今回は、Windows 11 で Efinity RISC-V Embedded Software IDE を起動して、uartEchoDemo サンプル・デザインのプロジェクトを作成した。インクルード・ファイルやシンボル・ファイルをインポートして、プロジェクトをビルドして成功した。
Windows 11 で Windows マークをクリックし、Efinity RISC-V IDE 2023.2 をクリックして、起動した。
Efinity RISC-V Embedded Software IDE Launcher ダイアログが表示された。
Browse... ボタンをクリックし、C:\Efinity\HDL\2023.2\xyloni_sapphire\embedded_sw\SappireSoC フォルダを選択した。
Launch ボタンをクリックした。
Efinity RISC-V Embedded Software IDE が表示された。
Create a new Makefile project in a directory containing existing cod をクリックした。Makefile Project を生成する。
New Project ダイアログが表示された。
Existing Code Location の Browse... ボタンをクリックした。
ダイアログが表示された。
C:\Efinity\HDL\2023.2\xyloni_sapphire\embedded_sw\SappireSoC\software\standalone\uartEchoDemo を選択し、”開く”ボタンをクリックした。
Existing Code Location に C:\Efinity\HDL\2023.2\xyloni_sapphire\embedded_sw\SappireSoC\software\standalone\uartEchoDemo が入った。
Project Name に
uartEchoDemo と入力した。
Finish ボタンをクリックした。
uartEchoDemo プロジェクトが生成された。
インクルード・ファイルとシンボル・ファイルをインポートする。
左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから import... を選択した。
Import ダイアログが表示された。
C/C++ を展開して、C/C++ Project Settings を選択した。
Next > ボタンをクリックした。
Settings file の Brows... ボタンをクリックした。
”開く”ダイアログが表示された。
C:\Efinity\HDL\2023.2\xyloni_sapphire\embedded_sw\SappireSoC\config\project_settings_soc.xml を選択した。
”開く”ボタンをクリックした。
Select settings to import に Include Paths と # Symbols が入っている。
Finish ボタンをクリックした。
Efinity RISC-V Embedded Software IDE に戻った。
インクルード・パスが追加された。
左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから Clean Project を選択した。
Clean Project が成功した。
左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから Build Project を選択した。
ビルドが行われて成功した。しかし、エラーの表示は消えていない。
elf ファイルも生成されている。
2024年04月20日 04:58 |
Efinity RISC-V Embedded Software IDE
| トラックバック:0
| コメント:0
”
”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる5 ”の続き。
”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”Sapphire SoC の 実装”をやってみようということで、前回は、論理合成、Place & Route、ビットファイルの生成を行った。今回は、Efinity Programmer を起動して、Xyloni Development Kit に Sapphire SoC のビットファイルを SPI Active モードで書き込んだ。
最初に、Xyloni Development Kit を Windows 11 のパソコンに USB ケーブルで接続した。
Efinity から Open Programmer ボタンをクリックした。
Efinity Programmer が起動した。
Select Image File ボタンをクリックした。
Open Image File ダイアログが表示された。
xyloni_sapphire.hex ファイルを選択して、開くボタンをクリックした。
Efinity Programmer に戻って、Programming Mode を SPI Active モードに変更した。
Start Program ボタンをクリックし、HEX ファイルを Xyloni Development Board に書き込んだ。
HEX ファイルの書き込みが終了した。
ログを貼っておく。
金 4月 19 24 04:24:47 - Valid device ID found: 0x00000000 金 4月 19 24 04:24:47 - Board Profile: Xyloni Developement Board 金 4月 19 24 04:27:56 - Valid device ID found: 0x00000000 金 4月 19 24 04:27:56 - Board Profile: Xyloni Developement Board 金 4月 19 24 04:27:56 - Using FTDI URL (SPI = ftdi://0x0403:0x6011:0:1/1, JTAG = ftdi://0x0403:0x6011:0:2/1) 金 4月 19 24 04:27:56 - SPI Active Programming on ftdi://0x0403:0x6011:0:1/1 金 4月 19 24 04:27:57 - Unrecognized Flash device. Will use Generic Flash profile. Please contact support if you face any problem. 金 4月 19 24 04:27:57 - Flash device: Generic Flash Profile. JEDEC id: 0xEF7018 @ SPI freq 6.0 MHz 金 4月 19 24 04:27:57 - Erasing 172 KiB from flash @ 0x00000000 (may take a while...) 金 4月 19 24 04:28:01 - Finished erase in 4 seconds 金 4月 19 24 04:28:01 - Writing 169 KiB to flash @ 0x00000000 ... 金 4月 19 24 04:28:03 - Finished write in 1 seconds 金 4月 19 24 04:28:03 - Reading 169 KiB from flash @ 0x00000000 ... 金 4月 19 24 04:28:03 - Finished read in 0 seconds 金 4月 19 24 04:28:03 - Flash verify successful 金 4月 19 24 04:28:03 - "SPI active" programming...done
2024年04月19日 04:44 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
Petalinux をインストールする前にインストールしておきたいパッケージがあるが、それお一括でインストールするスクリプトファイルをダウンロードすることができる。
当然、Petalinux をインストールするので、Linux 限定だけど。WSL2 とかでもOKだと思う。
”
AR# 73296: PetaLinux: PetaLinux ビルド ホストに必要なパッケージをインストールする方法 ”
ここから、plnx-env-setup.sh がダウンロードできて、それをスーパー・ユーザー・モードで実行する。
sudo ./plnx-env-setup.sh
2024年04月18日 17:25 |
PetaLinux
| トラックバック:0
| コメント:0
Ubuntu 22.04 のパソコンに Vitis 2022.1 をインストールするために、AMD からインストーラーをダウンロードして、インストールしていると”Generating installed device list”で止まってしまって、5時間以上進んでいなかった。
仕方なく、インストールをキャンセルした。
もう一度、インストーラーを起動してインストールしても同じ”Generating installed device list”で止まってしまう。
Vitis 2022.1 のサポートOS に Ubuntu 22.04 が入っていないのが、まずいのか?ということで、Ubuntu 22.04 を消して、Ubuntu 20.04 に変更して、再度 Vitis 2022.1 のインストーラーを起動して、インストールしたのだが、やはり”Generating installed device list”で止まってしまう。
ググってみると、”
Vivado 2018.3 Final Processing hangs at 'Generating installed device list' on Ubuntu 19.04 ”が引っ掛かった。
”
Vivado 2018.3 Final Processing hangs at 'Generating installed device list' on Ubuntu 19.04 ”によると、2 つのパッケージをインストールすると、問題が解消できるようだ。
sudo apt intall libtinfo5 sudo apt intall libncurses5
早速、パッケージをインストールして Vitis 2022.1 のインストーラーを起動してみたが、数時間たってみると、Ubuntu が再起動していたようだった?失敗だ。orz
その後、Vitis 2023.2 をインストールしたら、インストールできたので、Vitis 2022.1 もインストールしたところ、成功した。。。良かった。
Vitis 2022.1 を 4 回インストールしてしまった。一回につき 58 GB 程度ダウンロードするから、232 GB ダウンロードしたのか? orz
2024年04月18日 05:13 |
Vitis
| トラックバック:0
| コメント:0
”
”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる4 ”の続き。
”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”Sapphire SoC の 実装”をやってみようということで、前回は、Interface Designer を起動して、GPIO ピンの入れ替えや PLL の設定変更を行った。今回は、論理合成、Place & Route、ビットファイルの生成を行った。
Efinity Software の dashboard で Automated Flow であることを確認し、Synthesize ボタンをクリックした。
論理合成、Place & Route、ビットファイルの生成が実行された。
Result タブをクリックし、Synthesis -> xyloni_sapphire.map.rpt を確認した。
プリミティブの使用量を以下にしめす。
### ### Resource Summary (begin) ### ### ### INPUT PORTS : 33 OUTPUT PORTS : 51 EFX_ADD : 482 EFX_LUT4 : 3194 1-2 Inputs : 543 3 Inputs : 1043 4 Inputs : 1608 EFX_FF : 2636 EFX_RAM_5K : 18 EFX_GBUFCE : 2 ### ### Resource Summary (end) ### ### ###
Placement -> xyloni_sapphire.place.rpt を示す。
Place された後の最終的なリソース使用量を示す。
---------- Resource Summary (begin) ---------- Inputs: 31 / 96 (32.29%) Outputs: 63 / 223 (28.25%) Clocks: 2 / 16 (12.50%) Logic Elements: 4972 / 7384 (67.33%) LE: LUTs/Adders: 3678 / 7384 (49.81%) LE: Registers: 2636 / 5280 (49.92%) Memory Blocks: 18 / 24 (75.00%) Multipliers: 0 / 8 (0.00%) ---------- Resource Summary (end) ----------
Routing -> xyloni_sapphire.timing.rpt を示す。
クロックのタイミング制約は満たされている。
---------- 1. Clock Frequency Summary (begin) ---------- User target constrained clocks Clock Name Period (ns) Frequency (MHz) Waveform Targets io_systemClk 40.000 25.000 {0.000 20.000} {io_systemClk} jtag_inst1_TCK 100.000 10.000 {0.000 50.000} {jtag_inst1_TCK} Maximum possible analyzed clocks frequency Clock Name Period (ns) Frequency (MHz) Edge io_systemClk 34.894 28.658 (R-R) jtag_inst1_TCK 45.442 22.006 (F-R) Geomean max period: 39.820 ---------- Clock Frequency Summary (end) ---------------
2024年04月18日 05:01 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
”
”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる3 ”の続き。
”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”Sapphire SoC の 実装”をやってみようということで、前回は、top_soc.v の SPI_1 ポートの追加を行った。もう一度、論理合成、Place & Route、ビットファイルの生成を行った。GitHub の
Efinix-Inc/xyloni の soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトの xyloni_sapphire.peri.xml と入れ替えた。今回は、Interface Designer を起動して、GPIO ピンの入れ替えや PLL の設定変更を行った。
Open Interface Designer ボタンをクリックし、Interface Designer を起動する。
Efinity Interface Designer が起動した。
Show/Hide GPIO Resouce Assigner ボタンをクリックし、GPIO Resource Assiger を表示する。
GPIO : Instance View タブが表示された。
system_gpio_0_io[0] の
Package Pin をダウブルクリックし、出てきた下向き三角をクリックすると、設定値がプルダウンメニューで表示された。プルダウンメニューから
C9 を選択する。
このピンはすでに gpio_0_io[15] に接続済みなので、Assigning GPIO Instance ダイアログが表示された。
OK ボタンをクリックした。
system_gpio_0_io(0) の >Package Pin は C9 に割り当てられた。
次に、system_gpio_0_io[15] だが、Package Pin は system_gpio_0_io[0] に割り当てられてしまったので、ブランクになっている。
前の system_gpio_0_io[0] と同様ステップを踏んで、Package Pin を B3 に割り当てた。
次に PLL の設定を行う。
Block Editor の Manual Configuration タブをクリックした。
Reset Pin Name を
systemClk_rstn に変更した。
Locked Pin Name を
systemClk_locked に変更した。
Multipller (M) を
24 に設定した。
Pre Divider (N ) を
1 に設定した。
下にスクロールした。
PLL Frequency の
Psot Divider (O) を
1 に設定した。
Output Divider を
32 に設定した。
Output Frequncy (MHz) が 24.9975 になった。
左のウインドウの Design : T8T81 -> GPIO (30) -> io_asyncReset:GPIOR_02 をクリックした。
Pin Name を
io_asyncResetn に変更した。
Check Design ボタンをクリックして、Check Design を行った。
Check Design が終了した。
最後に、File メニューから Edit Project... を選択した。
Project Editor ダイアログが表示された。
Design タブ をクリックした。
Top Module/Entity に
top_soc と入力した。
これを入力し忘れると、論理合成でエラーが出てしまう。
2024年04月17日 18:26 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
”
”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる2 ”の続き。
”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”Sapphire SoC の 実装”をやってみようということで、前回は、Verilog HDL ファイルや制約ファイルをインポートして、論理合成、Place & Route、ビットファイルの生成を行った。今回は、top_soc.v の SPI_1 ポートの追加を行った。もう一度、論理合成、Place & Route、ビットファイルの生成を行った。GitHub の
Efinix-Inc/xyloni の soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトの xyloni_sapphire.peri.xml と入れ替えた。
xyloni_sapphire プロジェクトの top_soc.v を開いた。
ポート宣言のところの system_spi_0_... の記述をコピーし、ペーストして、system_spi_1_... に記述をすべて変更した。
Sapphire SoC の生成のところで、SPI_1 を追加した ため、Example Design よりもポートが増えているからだ。
同じく、top_soc.v の memoryCheckerPass の行を削除する。
memoryCheckerPass の行を削除した。
次に top_soc.v の SapphireSoC IP のインスタンス部分で、SPI_0 の記述をコピー & ペーストして、SPI_1 の記述に変更する。
元の SPI_1 の記述を示す。
SPI_0 の接続をコピー & ペーストして、SPI_1 に変更した。
セーブ・ボタンをクリックして、セーブを行った。
Efinity を終了した。
Synthesize ボタンをクリックして論理合成、Place & Route、ビットファイルの生成を行った。
GitHub の
Efinix-Inc/xyloni の code の横の下向き三角をクリックし、プルダウンメニューから Download ZIP を選択して、ZIP ファイルをダウンロードした。
xyloni-master.zip がダウンロードされた。
xyloni-master.zip を解凍した xyloni-master フォルダの名前を xyloni に変更した。
xyloni_sapphire プロジェクトのフォルダを見ると、xyloni_sapphire.peri.xml ファイルがあったので、これを削除する。
xyloni_sapphire.peri.xml ファイルを削除した。
xyloni\design\soc_Opal_t8\soc_Opal_hw_t8\Xyloni_kit\soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトにコピーする。
soc_opalSoc.peri.xml を xyloni_sapphire プロジェクトにコピーした。
soc_opalSoc.peri.xml の名前を xyloni_sapphire.peri.xml に変更した。
2024年04月16日 04:53 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
”
”XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる1 ”の続き。
”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”Sapphire SoC の 実装”をやってみようということで、前回は、Windows 11 のパソコンで、Efinity を起動して、xyloni_sapphire プロジェクトを作成した。そして、RISC-V プロセッサの IP である SapphireSoC IP を生成した。今回は、Verilog HDL ファイルや制約ファイルをインポートして、論理合成、Place & Route、ビットファイルの生成を行った。
SapphireSoC IP を生成したときに生成された T120F324_devkit の Verilog HDL ファイルを xyloni_sapphire プロジェクトにコピーして、プロジェクトに加える。
左のウインドウの Project タブの xyloni_sapphire -> Design を右クリックし、右クリックメニューから Add を選択した。
Open ダイアログが表示された。
C:\Users\marse\Documents\HDL\Efinity\xyloni_sapphire\ip\SapphireSoC\T120F324_devkit フォルダの
top_soc.v を選択した。
File Option の Location の Copy to Project のチェックボックスをチェックした。
Open ボタンをクリックした。
top_soc.v が 左のウインドウの Project タブの xyloni_sapphire -> Design に加わった。
次に制約ファイルを xyloni_sapphire プロジェクトにコピーして、プロジェクトに加える。
左のウインドウの Project タブの xyloni_sapphire -> Constraint を右クリックし、右クリックメニューから Add を選択した。
Open ダイアログが表示された。
C:\Users\marse\Documents\HDL\Efinity\xyloni_sapphire\ip\SapphireSoC\T120F324_devkit フォルダの
constraints.sdc を選択した。
File Option の Location の Copy to Project のチェックボックスをチェックした。
Open ボタンをクリックした。
constraints.sdc が左のウインドウの Project タブの xyloni_sapphire -> constraint に加わった。
Dashboard の Synthesize ボタンをクリックして、論理合成、Place & Route、ビットファイルの生成を行った。
ビットファイルの生成まで終了したが、Unassigned Core Pins が 71 個ある。
2024年04月15日 04:28 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”Sapphire SoC の 実装”をやってみよう。
その第1弾として、RISC-V の IP の Sapphire SoC を生成する。
Windows 11 の Efinity 2023.2 を起動して、File メニューから Create Project... を選択した。
Name に
xyloni_sapphire と入力した。
Location は
C:\ Users\marse\Documents\HDL\Efinity\xyloni_sapphire とした。
Family は Trion, Device はT8F81, Timing Model は C2 とした。
OK ボタンをクリックした。
xyloni_sapphire プロジェクトが作成された。
左のウインドウの Project タブの IP を右クリックし、右クリックメニューから New IP を選択した。
IP Catalog ダイアログが表示された。
Efinix -> Processors and Peripherals -> Sapphire SoC を選択して、Next>> ボタンをクリックした。
IP Configuration ダイアログが表示された。
SOC タブ
デフォルトの状態を下に示す。
Option と Frequency (MHz) と Cache を変更する。
Opetin を
Lite に Frequency (MHz) を
25 MHz に、
Cache のチェックボックスのチェックを外した。
Cache/Memory タブ
デフォルトの状態を下に示す。
External Memory Interface のチェックボックスのチェックを外した。
Debug タブ
Target Board/Cable/Module を
Xyloni に変更した。
UART タブ
デフォルトのままとした。
SPI タブ
SPI は Flush と SD カードの 2 つのチャネルを使用するので、SPI 1 をイネーブルにするそうだ。
SPI 1 の Include the SPI 1 のチェックボックスにチェックを入れた。
I2C タブ
デフォルトのままとした。
GPIO タブ
GPIO 0 Bit Width を 16 ビットに変更した。
APB3 タブ
APB Slave 0 の Include the APB3 interface 0 のチェックボックスのチェックを外した。
AXI4 タブ
AXI Slave の Include the AXI4 Slave interface のチェックボックスのチェックを外した。
User Interrupt タブ
User A Interrupt の Include the User Interface A のチェックボックスのチェックを外した。
User Timer タブ
User Timer 0 の Include the User Timer 0 のチェックボックスのチェックを入れた。
Base Address タブ
Address Assignment Method はデフォルトの AUTO のままとした。
Deliverables タブ
Example Design (Ti60F255_devkit) と Example Design (Ti180J484_devkit) と Testbench/modelsim のチェックボックスのチェックを外した。
Summary タブ
Module Name に
SapphireSoc を入力した。
Summary を確認し、Generate ボタンをクリックした。
Review generation configuration ダイアログが表示された。
Generate ボタンをクリックした。
Generation Success ダイアログが表示された。
OK ボタンをクリックした。
IP Catalog ダイアログの Close ボタンをクリックして、閉じた。
Efinity の左のウインドウの Project タブの IP の下に IP : SapphireSoC が追加された。
xyloni_sapphire フォルダを示す。
embedded_sw フォルダと IP フォルダが作られている。
xyloni_sapphire\ip\SapphireSoC フォルダを示す。
Deliverables タブで指定した T120F324_devkit のサンプル・デザインとテストベンチのフォルダが見える。
2024年04月14日 07:04 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
昨日の記事 でもそうだが、Windows 11 の C ドライブにインストールした Efinity を使用して、D ドライブにプロジェクトを作成すると、デバイスが不正で、内部エラーになってしまうようだ。
Windows 11 の Efinity は C ドライブにインストールして、C ドライブにプロジェクトを作成した方が良い。 C ドライブにインストールした Efinity で D ドライブに Trion T8F81 の xyloni_sapphire プロジェクトを作成する。
Efinity 2023.2 を起動して、File メニューから Create Project... を選択した。
Name に
xyloni_sapphire と入力した。
Location に
D:/HDL/Efinity/xyloni_sapphire と入力した。つまり D ドライブにプロジェクトを作成する。
OK ボタンをクリックした。
Open Project ダイアログが表示された。
デバイスが不正だとのこと、OK ボタンをクリックするとプロジェクトが閉じて、アボートするようだ。
OK ボタンをクリックした。
Open Project ダイアログが表示された。
Internal error だそうだ。
OK ボタンをクリックした。
作成したプロジェクトは消えてしまった。
なお、C ドライブに xyloni_sapphire プロジェクトを先ほどと同じ設定で作成すると、 xyloni_sapphire プロジェクトが作成た。
安全性をみて、”Efinity は C ドライブにインストールして、C ドライブにプロジェクトを作成した方が良い”という結論になった。
2024年04月13日 20:26 |
Efinity IDE
| トラックバック:0
| コメント:0
”Xyloni Development Kit を使ってみる14(soc_sap_t8 をやってみる6) ”の続き。
Sapphire SoC のサンプルが
”Efinix-Inc/xyloni ”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようとうことで、前回は、ワークスペースのディレクトリ設定が間違っていたことに気づいたので、もう一度、Ubuntu 22.04 のパソコンでやり直してみたがやはり、OpenOCD の起動時にエラーになった。今回は、Ubuntu 22.04 のパソコンではうまく行かないので、Windows 11 のパソコンで xyloni をダウンロードして、Efinity で xyloni/design/soc_sap_t8/top_sapphire.xml を Open Project... で読み込んだところ、IP のアップデート・ダイアログが表示された。IP をアップデートしたら Internal Error で落ちてしまった。
(2024/04/13:追記) デバイスが不正だとエラーが出た原因は、C ドライブに Efinity をいインストールして、D ドライブにプロジェクトを置いているからだった。プロジェクトを C ドライブに移動したら、デバイスが不正だというエラーは出なくなった。ただし IP はアップデートしようとして失敗している。Windows 11 のパソコンで xyloni//design/soc_sap_t8 をやってみよう。
https://github.com/Efinix-Inc/xyloni で code の下向き三角をクリックし、Download ZIP を選択し、ダウンロードを行った。
xyloni-master.zip がダウンロードできたので、解凍した。
xyloni-masterが解答できたので、xyloni に名前を変えた。
Efinity を起動して、File メニューから Open Project... を選択した。
Open Project File ダイアログが開いた。
xyloni/design/soc_sap_t8/top_sapphire.xml を選択し、Open ボタンをクリックした。
IP Upgrades ダイアログが表示された。
Yes ボタンをクリックした。
IP Upgrades が進んでいく。
IP Upgrades が Fail した。
OK ボタンをクリックした。
Open Project ダイアログが表示された。
デバイスが不正だとのこと、OK ボタンをクリックするとプロジェクトが閉じて、アボートするようだ。
OK ボタンをクリックした。
Open Project ダイアログが表示された。
Internal error だそうだ。
OK ボタンをクリックした。
プロジェクトがクローズされた。
ダメだったので、次からは、”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”を参考に、一から Sapphire SoC を実装してみよう。
最初に OpenOCD を Windows 11 にインストールする必要があるのだろうか?
”Sapphire RISC-V SoC Hardware and Software User Guide UG-RISCV-SAPPHIRE-v6.0 December 2023”の 8 ページ の”Required Software”では、” The RISC-V IDE includes the following packages:”に”xPack GNU RISC-V Embedded GCC”と”OpenOCD Debugger”が入っているので、OpenOCD をインストールする必要はないみたいだ。
それじゃなぜ、Ubuntu 22.04 で OpenOCD をインストールする必要があったんだろうか?なぞだ?
2024年04月12日 04:21 |
Efinity IDE
| トラックバック:0
| コメント:0
”
Xyloni Development Kit を使ってみる13(soc_sap_t8 をやってみる5) ”の続き。
Sapphire SoC のサンプルが”
Efinix-Inc/xyloni ”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようとうことで、前回は、Efinity Programmer でFPGA をコンフィギュレーションし、Efinity RISC-V Embedded Software IDE で Run したところ、失敗した。その後、Run Configuration を変えて見たが、失敗した。OpenOCD が必要ということで、インストールしてから、Run してみたが、やはり失敗した。今回は、ワークスペースのディレクトリ設定が間違っていたことに気づいたので、もう一度、Ubuntu 22.04 のパソコンでやり直してみたがやはり、OpenOCD の起動時にエラーになった。
”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”RISC-V SDKでのプロジェクト作成、ビルド、デバッグ”を参照して、実行していく。ありがとうございます。
”
Xyloni Development Kit を使ってみる11(soc_sap_t8 をやってみる3) ”の Efinity RISC-V Embedded Software IDE Launcher ダイアログのワークスペース設定時に新規作成したワークスペース・ディレクトリを指定していたのだが、”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”RISC-V SDKでのプロジェクト作成、ビルド、デバッグ”では、xyloni/design/soc_sap_t8/embedded_sw/sapphire0 をワークスペースとして指定するようなので、もう一度、やってみることにした。
efinity-riscv-ide-2023.2/Efinity-RISCV-IDE/efinity-riscv-ide/efinity-riscv-ide をダブルクリックして起動した。
Efinity RISC-V Embedded Software IDE Launcher ダイアログが表示された。
Workspace の Brows... ボタンをクリックした。
Select Workspace Directory ダイアログが開いた。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0 をワークスペースとして指定して、Launch ボタンをクリックした。
Efinity RISC-V Embedded Software IDE が表示された。
Create a new Makefile project in a directory containing existing cod をクリックした。Makefile Project を生成する。
New Project ダイアログが表示された。
Existing Code Location の Browse... ボタンをクリックした。
ダイアログが表示された。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/uartEchoDemo を選択し、”開く”ボタンをクリックした。
New Project ダイアログで Finish ボタンをクリックした。
uartEchoDemo プロジェクトが生成された。
左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから import... を選択した。
Import ダイアログが表示された。
C/C++ を展開して、C/C++ Project Settings を選択した。
Next > ボタンをクリックした。
Settings file の Brows... ボタンをクリックした。
ダイアログが表示された。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/config/project_settings_soc.xml を選択した。
”開く”ボタンをクリックした。
Select settings to import に Include Paths と # Symbols が入っている。
Finish ボタンをクリックした。
Efinity RISC-V Embedded Software IDE に戻った。
include パスが入っているのが見える。
前のビルド結果が残っているので、削除する。
左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから Clean Project を選択した。
前のビルド結果が削除された。
左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから Build Project を選択した。
ビルドが行われて成功した。
以下の作業はうまく行きません。 次の作業は”Xyloni Development Kit を使ってみる16(soc_sap_t8 をやってみる8) ”を参照ください。 Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Import... を選択した。 Import ダイアログが表示された。 Select 画面 Run/Debug を展開して、Launch Configuration を選択した。 Next > ボタンをクリックした。 Import Launch Configuration 画面 From Directory の Browse... ボタンをクリックした。 xyloni/design/soc_sap_t8/embedded_sw/sapphire0/config ディレクトリを選択して、”開く”ボタンをクリックした。 左のウインドウに config が入った。 config のチェックボックスにチェックを入れた。 右のウインドウに 3 つの項目が追加された。default.launch だけチェックを残して、他の 2 つのチェックを外した。 Finish ボタンをクリックした。 Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Run As -> Run Configuration を選択した。 Run Configuration ダイアログが表示された。 Create, manage, and run configuration 画面 GDB OpenOCD Debugging -> default をクリックした。 Main のタブで Project の Brows... ボタンをクリックした。 Project Selection ダイアログが表示された。 uartEchoDemo が選択されている。 OK ボタンをクリックした。 C/C++ Application の Brows... ボタンをクリックした。 xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/uartEchoDemo/build/uartEchoDemo.elf を選択した。 ”開く”ボタンをクリックした。 C/C++ Application にフルパスの uartEchoDemo.elf が入った。 Debugger タブをクリックした。 Apply ボタンをクリックした。 Xyloni ボードを USB でパソコンに接続した。 Xyloni ボードには、”Xyloni Development Kit を使ってみる13(soc_sap_t8 をやってみる5) ”ですでに soc_sap_t8 が ROM に書かれている。 Efinity RISC-V Embedded Software IDE の Run Configuration ダイアログで Run ボタンをクリックし、プログラムを走らせた。 エラーになった。(画像を取るのを忘れてしまった)エラーメッセージを示す。Open On-Chip Debugger 0.11.0 Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html embedded:startup.tcl:26: Error: Can't find /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0\bsp\efinix\EfxSapphireSoc\openocd\ftdi.cfg in procedure 'script' at file "embedded:startup.tcl", line 26
/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0\bsp\efinix\EfxSapphireSoc\openocd\ftdi.cfg となっていて、バックスラッシュになっている。 実際に fgdi.cfg はある。 そこで、フルパスで指定してみた。 やはりエラーになった。 エラーメッセージを示す。Open On-Chip Debugger 0.11.0 Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/bsp/efinix/EfxSapphireSoc/openocd/ftdi.cfg:13: Error: invalid command name "ftdi" in procedure 'script' at file "embedded:startup.tcl", line 26 at file "/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/bsp/efinix/EfxSapphireSoc/openocd/ftdi.cfg", line 13
やはり、エラーだった。。。もう一度、Windows 11 でやってみよう。
2024年04月11日 18:14 |
Efinity RISC-V Embedded Software IDE
| トラックバック:0
| コメント:0
Sapphire SoC のサンプルが”
Efinix-Inc/xyloni ”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようとうことで、前回は、作成した uartEchoDemo の実行のための準備を進めて、Run Configuration を設定した。今回は、Efinity Programmer でFPGA をコンフィギュレーションし、Efinity RISC-V Embedded Software IDE で Run したところ、失敗した。その後、Run Configuration を変えて見たが、失敗した。OpenOCD が必要ということで、インストールしてから、Run してみたが、やはり失敗した。
(2024/04/22:追記) この記事はエラーが出てうまく行きません。うまく行く方法は””XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる9 ”を見てください。”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”RISC-V SDKでのプロジェクト作成、ビルド、デバッグ”を参照して、実行していく。ありがとうございます。
soc_sap_t8 の hex ファイルを SPI Active モードで Xyloni に書き込む。
Efinity Software で Select Image file ボタンをクリックし、/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/outflow/soc_sap_t8.hex を選択した。
Programming Mode を
SPI Active に変更した。
Start Program ボタンをクリックし、ビットファイルを FPGA にコンフィギュレーションした。
Efinity RISC-V Embedded Software IDE の Run Configuration ダイアログで Run ボタンをクリックし、プログラムを走らせた。
エラーが発生した。
Error in services launch sequence Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\debug.cfg -c echo "Started by GNU MCU Eclipse"] failed. Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace\bsp\efinix\EfxSapphireSoc\openocd\debug.cfg -c echo "Started by GNU MCU Eclipse"] failed. Cannot run program "openocd": Unknown reason
よく見るとパスの区切りが \ になっている。
Run Configuration ダイアログの Debugger タブの Config options の \ を / に変更した。
Apply ボタンをクリックしてから、Run ボタンをクリックした。
やはりエラーだった。
Error in services launch sequence Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/debug.cfg -c echo "Started by GNU MCU Eclipse"] failed. Launching command [openocd -c gdb_port 3333 -c telnet_port 4444 -c tcl_port 6666 -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/ftdi.cfg -f /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/workspace/bsp/efinix/EfxSapphireSoc/openocd/debug.cfg -c echo "Started by GNU MCU Eclipse"] failed. Cannot run program "openocd": Unknown reason
もしかして? OpenOCD インストールしてないかも?ということで、OpenOCD をインストールするために”
OpenOCDのインストール for ubuntu ”を参考に、OpenOCD をインストールした。
sudo apt install openocd インストールされてなかったようだ。。。orz
バージョンを確認した。
openocd -v バージョンは、
Open On-Chip Debugger 0.11.0
だった。
これで、もう一度 Efinity RISC-V Embedded Software IDE の Run Configuration ダイアログで Run ボタンをクリックすると、今度は、OpenOCD が Fail した。
Run Configuration ダイアログの Debugger タブの Config options に
-c 'set CPU0_YAML /media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/soc_sap_t8/embedded_sw/sapphire0/cpu0.yaml'
を追加しても同様にエラーだった。
2024年04月11日 07:28 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
”
Xyloni Development Kit を使ってみる11(soc_sap_t8 をやってみる3) ”の続き。
(2024/04/22:追記) この記事はエラーが出てうまく行きません。うまく行く方法は””XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築”の”Sapphire SoC の 実装”をやってみる9 ”を見てください。Sapphire SoC のサンプルが”
Efinix-Inc/xyloni ”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようとうことで、前回は、Efinity RISC-V Embedded Software IDE を起動して、uartEchoDemo プロジェクトを新規作成した。設定を行って、ビルドを行い成功した。今回は、作成した uartEchoDemo の実行のための準備を進めて、Run Configuration を設定した。
”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”RUN/DEBUGの設定を行う”を参照して、実行していく。ありがとうございます。
使用してるパソコンの OS は Ubuntu 22.04 だ。
Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Import... を選択した。
Import ダイアログが表示された。
Select 画面
Run/Debug を展開して、Launch Configuration を選択した。
Next > ボタンをクリックした。
Import Launch Configuration 画面
From Directory の Browse... ボタンをクリックした。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/config ディレクトリを選択して、”開く”ボタンをクリックした。
左のウインドウに config が入った。
config のチェックボックスにチェックを入れた。
右のウインドウに 3 つの項目が追加された。
default.launch だけチェックを残して、他の 2 つのチェックを外した。
Finish ボタンをクリックした。
Efinity RISC-V Embedded Software IDE で左の Project Explorer の uartEchoDemo を右クリックし、右クリックメニューから Run As -> Run Configuration を選択した。
Run Configuration ダイアログが表示された。
Create, manage, and run configuration 画面
GDB OpenOCD Debugging -> default をクリックした。
Main のタブで Project の Brows... ボタンをクリックした。
Project Selection ダイアログが表示された。
uartEchoDemo が選択されている。
OK ボタンをクリックした。
C/C++ Application の Brows... ボタンをクリックした。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/uartEchoDemo/build/uartEchoDemo.elf を選択した。
”開く”ボタンをクリックした。
C/C++ Application にフルパスの uartEchoDemo.elf が入った。
Debugger タブをクリックした。
Debugger タブ
Config options は cpu0.yaml の記述がないので、そのままとした。
Startup タブ
Apply ボタンをクリックした。
2024年04月08日 04:25 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
”
Xyloni Development Kit を使ってみる10(soc_sap_t8 をやってみる2) ”の続き。
Sapphire SoC のサンプルが”
Efinix-Inc/xyloni ”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようとうことで、前回は、Interface Designer を確認し、論理合成、Place & Route、ビットストリームを生成して、レポートを確認したところ、タイミング・エラーがあったが、このままやってみることにした。今回は、Efinity RISC-V Embedded Software IDE を起動して、uartEchoDemo プロジェクトを新規作成した。設定を行って、ビルドを行い成功した。
”
XyloniボードへのSapphire SoC実装とファームウエア開発プロジェクトの構築 ”の”RISC-V SDKでのプロジェクト作成、ビルド、デバッグ”を参照して、実行していく。ありがとうございます。
なお、使用してる OS は Ubuntu 22.04 だ。
efinity-riscv-ide-2023.2/Efinity-RISCV-IDE/efinity-riscv-ide/efinity-riscv-ide をダブルクリックした。
Efinity RISC-V Embedded Software IDE Launcher ダイアログが表示された。
Workspace の Brows... ボタンをクリックした。
Select Workspace Directory ダイアログが開いた。
xyloni/design/soc_sap_t8 ディレクトリに行って、 workspace ディレクトリを新規作成して選択した。 (2024/04/11:追記) xyloni/design/soc_sap_t8/embedded_sw/sapphire0 をワークスペースとして指定するのが正しいようです。("
Xyloni Development Kit を使ってみる14(soc_sap_t8 をやってみる6) "参照)
”開く”ボタンをクリックして終了した。
Efinity RISC-V Embedded Software IDE Launcher ダイアログの Launch ボタンをクリックした。
Efinity RISC-V Embedded Software IDE が表示された。
Create a new Makefile project in a directory containing existing cod をクリックした。Makefile Project を生成する。
New Project ダイアログが表示された。
Existing Code Location の Browse... ボタンをクリックした。
ダイアログが表示された。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/software/standalone/uartEchoDemo を選択し、”開く”ボタンをクリックした。
Project Name に
uartEchoDemo と入力した。
Finish ボタンをクリックした。
uartEchoDemo プロジェクトが生成された。
左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから import... を選択した。
Import ダイアログが表示された。
C/C++ を展開して、C/C++ Project Settings を選択した。
Next > ボタンをクリックした。
Settings file の Brows... ボタンをクリックした。
ダイアログが表示された。
xyloni/design/soc_sap_t8/embedded_sw/sapphire0/config/project_settings_soc.xml を選択した。
”開く”ボタンをクリックした。
Select settings to import に Include Paths と # Symbols が入っている。
Finish ボタンをクリックした。
Efinity RISC-V Embedded Software IDE に戻った。
前のビルド結果が残っているので、削除する。
左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから Clean Project を選択した。
前のビルド結果が削除された。
左のウインドウの uartEchoDemo を右クリックし、右クリックメニューから Build Project を選択した。
ビルドが行われて成功した。しかし、エラーの表示は消えていないのはなぜなんだ?
2024年04月07日 11:04 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
”
Xyloni Development Kit を使ってみる9(soc_sap_t8 をやってみる1) ”の続き。
Sapphire SoC のサンプルが”
Efinix-Inc/xyloni ”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみようということで、前回は、soc_sap_t8 プロジェクトを開き、HDL ファイルを確認し、sapphire0 IP の設定を確認した。今回は、Interface Designer を確認し、論理合成、Place & Route、ビットストリームを生成して、レポートを確認したところ、タイミング・エラーがあった。
Efinity Software から Open Interface Designer ボタンをクリックして、Interface Designer を起動した。
my_pll:PLL_0 を確認した。
Output Frequency (MHz)は 20.1369 MHz だった。20 MHz としたいところ、分周比の関係でこの周波数になったと思う。
GPIO も割り当てられているのが分かる。
気になるのは、JTAG が割り当てられていることだ。
JTAG User Tap (1) で、 jtag_inst1:JTAG_USER1 が割り当てられている。
JTAG はもう 1 つ JTAG_USER2 があるようだ。
制約ファイルの contraints.sdc を見たが、クロックの制約だけでなく、たくさん制約が書かれている。
Efinity Software の dashboard で Automated Flow であることを確認し、Synthesize ボタンをクリックして、すべてのフローを実行した。
Result タブをクリックし、Placement -> soc_sap_t8.place.rpt ファイルを確認した。
Logic Elements は 6072 / 7384 (82.23%) 使用されている。かなり、リソース使用量を食っている。
Memory Blocks: 18 / 24 (75.00%) 使用されている。
Result タブをクリックし、Routing -> soc_sap_t8.timing.rpt を確認した。
Timing でエラーが出ているが、io_systemClk は 25 MHz 程度で 20 MHz のクロックに対しては余裕がある。
Slack がマイナスになっているのは、JTAG クロックから、io_systemClk へのクロックパスのようだ。
View Timing Browser ボタンをクリックし、Timing Browser を表示するとクリティカル・パスがより一層明確に確認できるようだ。
しかし、このタイミング・エラーはこちらではどうにもならないので、無視して先に進むことにしよう。
2024年04月06日 08:27 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
”
Efinix の RISC-V プロセッサの Sapphire SoC を勉強する ”で勉強した Sapphire SoC のサンプルが”
Efinix-Inc/xyloni ”の”design/soc_sap_t8”の Sapphire SoC for Xyloni にあるので、やってみよう。
Efinity を起動して、File メニューから Open Project... を選択した。
Open Project File ダイアログが開いた。
xyloni/design/soc_sap_t8/top_sapphire.xml を選択し、Open ボタンをクリックした。
soc_sap_t8 プロジェクトが開いた。
top_sapphire.v ファイルを開いた。
左のウインドウの Project タブの IP -> IP: sapphire0 をダブルクリックしてファイルを開いた。
sapphire0.v ファイルが開いた。
sapphire0 の構成を見てみよう。
左のウインドウの Project タブの IP -> IP: sapphire0 を右クリックし、右クリックメニューから Configure を選択した。
IP Configuration ダイアログが表示された。
SOC タブ
Option は Standard で、Frequency は 20 MHz だった。
キャッシュは無し。
Cache/Memory タブ
On-Chip RAM Size は 4KB だった。
Debug タブ
UART タブ
UART0 は必須のようだ。
SPI タブ
SPI0 は必須のようだ。
I2C タブ
I2C 0 は必須じゃないが、実装されている。
GPIO タブ
GPIO 0 は実装されている。
APB3 タブ
APB Slave Address Size は 64 KB が選択されていた。
AXI4 タブ
残念ながら AXI4 Slave は生成される設定になっていない。
User Interrupt タブ
User A Interrupt にチェックが入っていた。
User Timer タブ
Timer は実装されていない。
Base Address タブ
Address Assignment Method は AUTO だった。
Deilverables タブ
Summary タブ
これまでの設定が表示されていた。
Close ボタンをクリックして、終了した。
2024年04月05日 05:02 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
Github の Efinix-Inc/xyloni の xyloni/design/Efinity_tutorial は前回で終了した。次は、Efinix の IP の Sapphire RISC-V SoC を使用している Xiloni Development Kit のサンプル・プロジェクトの soc_sap_t8 をやってみようと思っている。
そこで今回は、Sapphire SoC を学習してみよう。
Efinix の”RISC-V SoC: 組み込みコンピューティングの推進”ページ を読みながら Sapphire SoC に付いて学習する。
Efinix の”RISC-V SoC: 組み込みコンピューティングの推進”ページ から引用して、ブログに書いていく。
Sapphire SoC Efinity IP マネージャで必要なペリフェラルを選択し、SoC を構成することができるそうだ。
特徴を引用する。
・VexRiscv コア - 6 つのパイプラインステージ (フェッチ、インジェクタ、デコード、実行、メモリ、ライトバック)、割込処理、例外処理 ・システムクロック: 20 ~ 400 MHz ・オンチップ RAM: 4 ~ 512 KB (SPI FLASH用のブートローダーを含む) ・DDR または HyperRAM メモリコントローラ ・メモリサイズサポート: 4 MB ~ 3.5 GB ・ユーザ設定可能な外部メモリバス周波数 ・外部メモリアクセスのための半二重 AXI3 インターフェイス (最大 256 ビット) ・400 MHz DDR クロック周波数、800 Mbps ・200 MHz HyperRAM クロック周波数、400 Mbps ・ユーザロジック用の AXI マスタチャネル (最大 2 系統) ・ユーザロジック用の AXI スレーブチャネル (1 系統) ・浮動小数点ユニット ・Linux 用の MMU (メモリ マネジメント ユニット) ・カスタム命令セット (様々な機能を実現するための 1,024 ID) ・RISC-V アトミック拡張機能、Compressed 命令 (オプション) ・APB3 ペリフェラル: ・GPIO 最大 32 本 ・I2C マスタ 最大 3 個 ・Clint Timer ・PLIC ・SPI マスタ 最大 3 個 (最大 25 MHz) ・Timer 最大 3 個 ・UART 最大 3 個 ・APB3 ユーザペリフェラル 最大 5 個
PLIC は何かな?と思ってググって見たところ、”
RISC-VのPLIC(Platform-Level Interrupt Controller)について ”によると PLIC(Platform-Level Interrupt Controller) のようだ。
Sapphire SoC のブロック図を引用する。
ユーザ・ロジックとは AXI4 インタフェースで接続だそうだ。これは嬉しい。
命令キャッシュとデータ・キャッシュもあるようだ。
SoC デザイン フローを引用する。
ソフトウェアの作成は、”
Ubuntu 22.04 に efinity-riscv-ide-2023.2 をインストールする ”でインストールした efinity-riscv-ide-2023.2 を使用する。
Sapphire RISC-V SoC の使い方については、”
Sapphire RISC-V SoC Hardware and Software User Guide UG-RISCV-SAPPHIRE-v6.0 December 2023 ”を参照する。
2024年04月04日 04:24 |
Efinity IDE
| トラックバック:0
| コメント:0
”
Xyloni Development Kit を使ってみる7(Efinity_tutorial をやってみる4) ”の続き。
Github の Efinix-Inc/xyloni の xyloni/design/Efinity_tutorial をやってみようということで、前回は、Ubuntu 22.04 のパソコンで Xyloni Development Kit にプリインストールされている機能を確認し、Efinity Programmer を起動して、Efinity_tutorial のビットファイルをコンフィギュレーションして動作を確認した。今回は、外部入力クロックをやめて、内部オシレータの 10 kHz を使用して、カウンタを回した。
BGA49 と BGA 81 の T8 には 10 kHz の低周波オシレータが搭載されている。この低周波オシレータは常時動作している低消費電力回路のために用意されているようだ。(
”T8 Data Sheet DST8-v5.1February 2024”の 16 ページ の”Oscillator”参照)
最初に counter.vhd の Dataout に出力するカウンタのビット位置を cnt(29 downto 26) から cnt(17 downto 14) に変更する。これは、クロックが低速になるために速度を調整するためのようだ。
制約ファイルの counterconstrain.sdc において、クロック間隔を 100000 ns に変更した。
外部入力クロック・ピンを削除して、内部の低周波オシレータを使用する。
Efinity Software で Open Interface Designer ボタンをクリックし、Interface Designer を起動した。
左のウインドウの Design: T8F81 -> GPIO(7) -> clk : GPIOL_20 を右クリックし、右クリックメニューから Delete を選択し、削除した。
左のウインドウの Design: T8F81 -> Oscillator(0) を右クリックし、右クリックメニューから Create Block を選択した。
Block Editor で Instance Name を
clk に変更した。
Check Design ボタンをクリックして、Save ボタンでセーブした。
Efinity Software の dashboard で Automated Flow であることを確認し、Synthesize ボタンをクリックして、すべてのフローを実行する。
すべてのフローの実行が終了した。
Efinity Software の左のウインドウでResult タブをクリックし、new_project.timing.rpt をダブルクリックして開いた。
10 kHz のところ、184.570 MHz で全く問題ない。
---------- 1. Clock Frequency Summary (begin) ---------- User target constrained clocks Clock Name Period (ns) Frequency (MHz) Waveform Targets clk 99999.992 0.010 {0.000 49999.996} {clk} Maximum possible analyzed clocks frequency Clock Name Period (ns) Frequency (MHz) Edge clk 5.418 184.570 (R-R) Geomean max period: 5.418 ---------- Clock Frequency Summary (end) ---------------
Efinity_tutorial のビットファイルをコンフィギュレーションする。
Efinity Software の Tools メニューから Open Programmer を選択した。
Efinity Programmer が起動した。
Select Image file ボタンをクリックし、/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/Efinity_tutorial/outflow/new_project.bit を選択した。
Start Program ボタンをクリックし、ビットファイルを FPGA にコンフィギュレーションした。
ビットファイルのコンフィギュレーションが終了し、LED にカウンタの値が表示されている。成功だ。
Efinity Programmer のログを貼っておく。
火 4月 2 24 03:51:58 - Valid device ID found: 0x00000000 火 4月 2 24 03:51:58 - Board Profile: Xyloni Developement Board 火 4月 2 24 03:53:06 - Valid device ID found: 0x00000000 火 4月 2 24 03:53:06 - Board Profile: Xyloni Developement Board 火 4月 2 24 03:53:06 - Using FTDI URL (SPI = ftdi://0x0403:0x6011/1, JTAG = ftdi://0x0403:0x6011/2) 火 4月 2 24 03:53:06 - jtag programming started! 火 4月 2 24 03:53:06 - JTAG Programming on ftdi://0x0403:0x6011/2 火 4月 2 24 03:53:06 - Programming '/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/Efinity_tutorial/outflow/new_project.bit' via JTAG at freq 6.0 MHz 火 4月 2 24 03:53:07 - ... finished with JTAG programming 火 4月 2 24 03:53:08 - Detecting device status... 火 4月 2 24 03:53:11 - Device is in user mode!
2024年04月03日 04:40 |
Xyloni Development Kit
| トラックバック:0
| コメント:0
”
Xyloni Development Kit を使ってみる6(Efinity_tutorial をやってみる3) ”の続き。
Github の Efinix-Inc/xyloni の xyloni/design/Efinity_tutorial をやってみようということで、前回は、Place 、Route、ビットストリームの生成を行って、レポートを確認した。今回は、Ubuntu 22.04 のパソコンで Xyloni Development Kit にプリインストールされている機能を確認し、Efinity Programmer を起動して、Efinity_tutorial のビットファイルをコンフィギュレーションして動作を確認した。
Windows 11 では、Xyloni Development Kit にプリインストールされている機能を確認済みだ 。
USB ドライバ関連は鬼門のようなので、Ubuntu 22.04 のパソコンでも USB-UART の機能の確認は必要だと思う。
Ubuntu 22.04 の端末で、GTKTerm を起動した。
gtkterm & GTKTerm が起動した。
Configuration メニューから Port を選択した。
Configuration ダイアログが表示された。
USB の Port は /dev/ttyUSB0 から /dev/ttyUSB3 まであったが、そのうちの /dev/ttyUSB2 を選択した。
Baud Rate は 115200 bps に設定した。
Xyloni Development Kit の BTN1 を押すと、Xyloni Test Menu が表示された。
Enter キーを押すと、SD Card Info が表示された。
問題なさそうだ。
さて、Efinity_tutorial のビットファイルをコンフィギュレーションする。
Efinity Software の Tools メニューから Open Programmer を選択した。
Efinity Programmer が起動した。
Select Image file ボタンをクリックし、/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/Efinity_tutorial/outflow/new_project.bit を選択した。
Start Program ボタンをクリックし、ビットファイルを FPGA にコンフィギュレーションした。
ビットファイルのコンフィギュレーションが終了し、LED にカウンタの値が表示されている。成功だ。
Efinity Programmer のログを貼っておく。
月 4月 1 24 21:42:47 - Board Profile: Xyloni Developement Board 月 4月 1 24 21:42:57 - Valid device ID found: 0x00000000 月 4月 1 24 21:42:57 - Board Profile: Xyloni Developement Board 月 4月 1 24 21:42:57 - Using FTDI URL (SPI = ftdi://0x0403:0x6011/1, JTAG = ftdi://0x0403:0x6011/2) 月 4月 1 24 21:42:57 - jtag programming started! 月 4月 1 24 21:42:57 - JTAG Programming on ftdi://0x0403:0x6011/2 月 4月 1 24 21:42:57 - Programming '/media/masaaki/Ubuntu_Disk/Efinity/xyloni/design/Efinity_tutorial/outflow/new_project.bit' via JTAG at freq 6.0 MHz 月 4月 1 24 21:42:58 - ... finished with JTAG programming 月 4月 1 24 21:42:59 - Detecting device status... 月 4月 1 24 21:43:02 - Device is in user mode!
なお、JTAG で FPGA をコンフィギュレーションしているので、電源を ON/OFF すると、プリインストールされている機能に戻る。
2024年04月02日 04:00 |
Xyloni Development Kit
| トラックバック:0
| コメント:0