這篇是延伸自之前建立 RISC-V 環境的文章。 目標是在 Lattice Versa ECP5 EVB 上實際跑起 RISC-V Linux, 但中間踩了一個晶片型號不符的坑。
關鍵問題:晶片型號不對
市場上流通的板子使用的是 LFE5UM-45F, 而不是工具預設的 LFE5UM5G-85F。 筆者從淘寶買的是舊版,沒有 "5G" 字樣,導致燒錄時 ID 不符合而失敗。
解法:重新編譯時明確指定晶片型號:
./make.py --device LFE5UM \
--board=versa_ecp5 \
--cpu-count=1 \
--build
硬體準備
在上電前,需要正確設定 J50 跳線(bypass iSPclock), 否則板子可能無法正常啟動。
連上 USB 後,FT2232H 會出現兩個裝置:
/dev/ttyUSB0:JTAG 介面/dev/ttyUSB1:Serial console(115200 baud)
燒錄 bitstream
使用 openFPGALoader 取代原廠工具:
openFPGALoader -b ecp5_evn versa_ecp5.bit
udev 權限設定
建立 /etc/udev/rules.d/99-ftdi.rules,讓一般使用者也能存取 FTDI 介面:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", \
MODE="0664", GROUP="plugdev"
sudo udevadm control --reload-rules
sudo udevadm trigger
雙核心 SMP 設定
45F 型號支援雙核心 SMP 設定,
如果要啟用可以在 make.py 加上 --cpu-count=2。
啟動成功
設定正確後,透過 ttyUSB1 可以看到 Linux 核心的開機訊息, 最終進入 RISC-V Linux shell。 在一塊 FPGA 開發板上跑起完整的 Linux 還是很有成就感的。
原文發佈於 blog.richliu.com