DE-Core Using printf On DE-Core + RISC-V
From Terasic Wiki
(Difference between revisions)
(→操作步驟:) |
(→操作步驟:) |
||
(11 intermediate revisions not shown) | |||
Line 1: | Line 1: | ||
printf 功能需要借助 Uart 硬體來實現,DE-Core 開發板預留的 TMD 介面,可用於外接 Uart-to-USB Board. | printf 功能需要借助 Uart 硬體來實現,DE-Core 開發板預留的 TMD 介面,可用於外接 Uart-to-USB Board. | ||
+ | |||
+ | == 1.下載Project Code == | ||
+ | 使用者先需前往下列的網址下載 demo code. | ||
+ | |||
+ | http://mail.terasic.com.tw/~johnny/release/DE_CORE/DE-CORE-RISCV.tar.gz | ||
+ | |||
+ | 此 demo code包含了Quartus project 以及 RISC-V的相關資源, 包含工具链(Toolchains)、SDK. | ||
+ | |||
+ | <div style="text-align:left;color:#4a4a4a;">[[File:De-core riscv 08.png|550px]]</div> | ||
== 2.連接設定 == | == 2.連接設定 == | ||
Line 9: | Line 18: | ||
將上圖的三樣物件連接如下圖. | 將上圖的三樣物件連接如下圖. | ||
- | <div style="text-align:left;color:#4a4a4a;">[[File:De-core riscv | + | <div style="text-align:left;color:#4a4a4a;">[[File:De-core riscv 01a.png|350px]]</div> |
+ | |||
+ | |||
+ | *UART driver : https://www.taiwaniot.com.tw/%E6%8A%80%E8%A1%93%E6%96%87%E4%BB%B6/arduino-%E6%8A%80%E8%A1%93%E6%96%87%E4%BB%B6/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%9Dch340%E6%99%B6%E7%89%87%E7%A8%8B%E5%BC%8F/ | ||
== 3. 硬體部分== | == 3. 硬體部分== | ||
Line 30: | Line 42: | ||
#: <span style="color:#0000f0;"> '''sh programming_pof.sh''' </span> | #: <span style="color:#0000f0;"> '''sh programming_pof.sh''' </span> | ||
#使用者也可以在 windows下使用 Quartus programmer 將 .pof 燒錄入DE-Core版內 | #使用者也可以在 windows下使用 Quartus programmer 將 .pof 燒錄入DE-Core版內 | ||
- | #要確認code是否正確燒錄入MAX10 FPGA內,使用者可以設置 SW2.1= | + | #要確認code是否正確燒錄入MAX10 FPGA內,使用者可以設置 SW2.1=1, SW2.2=0,如下圖所示.將JTAG切換至RISC-V. |
#: <div style="text-align:left;color:#4a4a4a;">[[File:De-core riscv 03.png|450px]]</div> | #: <div style="text-align:left;color:#4a4a4a;">[[File:De-core riscv 03.png|450px]]</div> | ||
#使用Quartus programmer偵測device, 可以看到如下圖的Unkown device. 代表FPGA code有正確燒錄. | #使用Quartus programmer偵測device, 可以看到如下圖的Unkown device. 代表FPGA code有正確燒錄. | ||
Line 43: | Line 55: | ||
=== 操作步驟:=== | === 操作步驟:=== | ||
#移除 USB Cable,以關閉 DE-Core 開發板的電源; | #移除 USB Cable,以關閉 DE-Core 開發板的電源; | ||
- | #設置 SW2.1= | + | #設置 SW2.1=1, SW2.2=0,如下圖所示; |
#: <div style="text-align:left;color:#4a4a4a;">[[File:De-core riscv 03.png|450px]]</div> | #: <div style="text-align:left;color:#4a4a4a;">[[File:De-core riscv 03.png|450px]]</div> | ||
#使用 USB Cable 連接 DE-Core 開發板(J2)和 PC; | #使用 USB Cable 連接 DE-Core 開發板(J2)和 PC; | ||
#將 Uart-to-USB Board 接入 DE-Core 開發板的 TMD 介面(JP6),並使用 USB Cable 連接 Uart-to-USB Board 和 PC; | #將 Uart-to-USB Board 接入 DE-Core 開發板的 TMD 介面(JP6),並使用 USB Cable 連接 Uart-to-USB Board 和 PC; | ||
#開啟 Terminal 執行 <span style="color:#0000f0;"> '''sudo apt install libftdi1-dev''' </span> 安装 openocd 所需要的库文件 | #開啟 Terminal 執行 <span style="color:#0000f0;"> '''sudo apt install libftdi1-dev''' </span> 安装 openocd 所需要的库文件 | ||
- | #開啟 Terminal,執行 <span style="color:#0000f0;"> ''' | + | #開啟 Terminal,執行 <span style="color:#0000f0;"> '''sudo screen /dev/ttyUSB0 115200''' </span>,Terminal 被鎖定,用於顯示字元;(可使用<span style="color:#0000f0;"> '''ls /dev/ttyUSB*''' </span> 命令查看 USB 被識別為 /dev/ttyUSB0 還是 /dev/ttyUSB1,若是被識別為 /dev/ttyUSB1,則應使用命令 <span style="color:#0000f0;"> '''sudo screen /dev/ttyUSB1 115200''' </span>). |
#:Note : 若是linux內還未安裝 screen, 可以執行 <span style="color:#0000f0;"> '''sudo apt-get install screen''' </span> | #:Note : 若是linux內還未安裝 screen, 可以執行 <span style="color:#0000f0;"> '''sudo apt-get install screen''' </span> | ||
#另外開啟一個 Terminal,並進入以下目錄:DE-CORE-RISCV/RISC-V/Freedom-E-SDK; | #另外開啟一個 Terminal,並進入以下目錄:DE-CORE-RISCV/RISC-V/Freedom-E-SDK; |
Latest revision as of 11:04, 17 January 2020
printf 功能需要借助 Uart 硬體來實現,DE-Core 開發板預留的 TMD 介面,可用於外接 Uart-to-USB Board.
Contents |
1.下載Project Code
使用者先需前往下列的網址下載 demo code.
http://mail.terasic.com.tw/~johnny/release/DE_CORE/DE-CORE-RISCV.tar.gz
此 demo code包含了Quartus project 以及 RISC-V的相關資源, 包含工具链(Toolchains)、SDK.
2.連接設定
本實驗需要下面三樣物件來組合成帶有UART功能的 DE-Core硬體.
將上圖的三樣物件連接如下圖.
3. 硬體部分
這節將介紹如何修改 quartus porject內的 I/O以符合實際的 USB to UART硬體連接情況, 以及介紹如何燒錄 .pof入 DE-Core FPGA.
Quartus Project 中,DE-Core 上的TMD connector 連接 pin assignment 如下圖所示:
本例中使用的 TMD_D[7], TMD[6] 分別用作 UART_TX, UART_RX,若使用其他 TMD 引腳或 TMD 與 Uart 硬體連接方式與上圖不同,則需要修改 Quartus Project,重新編譯,生成 pof。
操作步驟 :
- 設置 SW2.1=0, SW2.2=1,如下圖所示, 以用於透過JTAG配置FPGA;
- 使用 USB Cable 連接 DE-Core 開發板(J2)和 PC;
- 開啟 Terminal,並進入目錄:DE-CORE-RISCV/Quartus_Project/DECORE_RISCV/demo_batch
- cd DE-CORE-RISCV/Quartus_Project/DECORE_RISCV/demo_batch
- 執行以下命令配置 FPGA
- sh programming_pof.sh
- 使用者也可以在 windows下使用 Quartus programmer 將 .pof 燒錄入DE-Core版內
- 要確認code是否正確燒錄入MAX10 FPGA內,使用者可以設置 SW2.1=1, SW2.2=0,如下圖所示.將JTAG切換至RISC-V.
- 使用Quartus programmer偵測device, 可以看到如下圖的Unkown device. 代表FPGA code有正確燒錄.
4. SDK 部分
本節將介紹在 Ubuntu下, 透過 USB to UART硬體連接到DE-Core內的RISC-V, 並且運行UART demo,在Ubuntu的 terminal列印字串.
使用 printf 列印資訊的示例位於以下目錄:DE-CORE-RISCV/RISC-V/Freedom-E-SDK/software/demo_uart。
操作步驟:
- 移除 USB Cable,以關閉 DE-Core 開發板的電源;
- 設置 SW2.1=1, SW2.2=0,如下圖所示;
- 使用 USB Cable 連接 DE-Core 開發板(J2)和 PC;
- 將 Uart-to-USB Board 接入 DE-Core 開發板的 TMD 介面(JP6),並使用 USB Cable 連接 Uart-to-USB Board 和 PC;
- 開啟 Terminal 執行 sudo apt install libftdi1-dev 安装 openocd 所需要的库文件
- 開啟 Terminal,執行 sudo screen /dev/ttyUSB0 115200 ,Terminal 被鎖定,用於顯示字元;(可使用 ls /dev/ttyUSB* 命令查看 USB 被識別為 /dev/ttyUSB0 還是 /dev/ttyUSB1,若是被識別為 /dev/ttyUSB1,則應使用命令 sudo screen /dev/ttyUSB1 115200 ).
- Note : 若是linux內還未安裝 screen, 可以執行 sudo apt-get install screen
- 另外開啟一個 Terminal,並進入以下目錄:DE-CORE-RISCV/RISC-V/Freedom-E-SDK;
- 清除之前編譯的可執行檔和設定檔:
- make clean PROGRAM=demo_uart
- 編譯:
- make software PROGRAM=demo_uart
- 燒錄二進位檔案:
- make upload PROGRAM=demo_uart
- 燒錄完成後,可在第 5 步中開啟的 Terminal 中觀察到列印的資訊,下圖是 demo_uart 的列印資訊;