T-Core Using printf with Freedom E300
From Terasic Wiki
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 的列印資訊;