本原創文章由深圳市小眼睛科技有限公司創作,版權歸本公司所有,如需轉載,需授權并注明出處(www.meyesemi.com)
1. 簡介
本案例旨在 ARM端運行 Linux系統,基通過 FSPI測試。
2. ARM端和 FPGA端通信流程
(1)ARM端實現SPI Master功能
打開 SPI設備節點:打開/dev/spidev4.0設備節點。
配置 FSPI總線:使用 ioctl命令配置 FSPI總線的極性、相位、通信速率和數據長度等參數。
選擇傳輸模式:可以選擇單線模式、雙線模式或四線模式。當設置為四線模式時,數據的發送和接收都將采用四線模式。本案例僅支持四線模式。
數據傳輸:將數據發送至 FSPI總線,并從 FSPI總線讀取數據。
校驗數據:校驗傳輸的數據,然后打印出讀寫速率和誤碼率。
(2) FPGA端實現 SPI Slave功能
數據存儲:FPGA將 SPI Master發送的數據保存至 DRAM。
數據讀取:當 SPI Master發起讀數據請求時,FPGA從 DRAM讀取數據,并通過 FSPI總線傳輸至 SPI Master。
3.操作流程
打開終端,將本案例 bin目錄下( 05-開發資料 \軟件開發資料\linux_demo\mes_fpga_fspi_demo\bin)的可執行程序 mes_spi_rw拷貝至開發板文件系統(源碼可以在 src路徑下查看)。
?#修改 Linux內核日志的顯示級別,內核的日志級別被設置為只顯示緊急或更高級別的消息
echo 1 4 1 7 > /proc/sys/kernel/printk
在終端執行如下指令,切換到 mes_fpga_fspi_demo可執行程序所在目錄
#切換到 mes_fpga_fspi_demo可執行程序所在目錄
cd ‘可執行文件所在目錄’
#查看 mes_spi_rw是否在該目錄下
ls
若可執行文件 mes_spi_rw在當前目錄下,則修改可執行文件的權限
#修改文件權限
chmod 777 mes_spi_rw
#查詢是否修改成功
ls -ld mes_spi_rw
查詢確認文件修改權限成功后,執行 ./mes_spi_rw -h可以查看該程序的幫助信息#查看幫助信息
./mes_spi_rw -h
執行結果如下圖:
從上圖可知,本次實測寫速率為 5.81 MB/s,讀速率為 10.5 MB/s,誤碼率為 0.00%。
(2)性能測試
進行性能測試時,需要將 FSPI總線的通信時鐘頻率設置至 150MHz。在此設置下,
ARM將通過 FSPI總線向 FPGA的 DRAM寫入 1MB的隨機數據,隨后讀取這些數據,并重復此過程 100次。測試過程中不進行數據校驗,最終將輸出 FSPI總線的讀寫速度和錯誤率。執行結果如下圖。本案例設計一次讀寫 2048Byte隨機數據至 FPGA DRAM,因此誤碼率較高。
./mes_spi_rw -d /dev/spidev4.0 -s 150000000 -OH -m 3 -S 1048576 -c 1