Type: Note
---Intro---
把 OpenRISC 燒進 DE0-Nano 執行嵌入式的 Linux 系統
Environment & Requirement:
VMWare
Ubuntu 12.04.2 Desktop i386
FPGA板 - DE0-Nano
USB to UART (FTDI接腳)
個人建議 看 這篇 官方版本的
---Content---
基本上是看 這篇 完成的
但中間有遇到不少問題, 所以記錄一下
安裝相依lib
sudo apt-get install libmpc-dev libgmp3-dev libmpfr-dev lzop libsdl1.2-dev xterm automake libtool
有些東西是他電腦本來就有安裝的, 但剛裝好的Ubuntu沒有, 如下
sudo apt-get install git sudo apt-get install screen sudo apt-get install libftdi-dev
接著 他把需要的東西都打包好了
在 $HOME 執行下述代碼
mkdir openrisc; cd openrisc/ git clone https://github.com/kevinmehall/openrisc-tools-build.git toolchain cd toolchain git submodule update --init make PARALLEL=6 PREFIX=$PWD/../root
然後, 開個新檔案 openrisc_env.sh
內容如下, 之後還滿容易用到的, 就乖乖用一個吧
export OPENRISC=$HOME/openrisc export ALTERA_PATH=/opt/altera export ARCH=openrisc export CROSS_COMPILE=or32-linux- export PATH=$PATH:$OPENRISC/root/bin export PATH=$PATH:$ALTERA_PATH/12.0sp2/quartus/bin目的在設置 OpenRISC toolchain 和 Altera Quartus 的路徑
記得要修改成你的安裝路徑
Quartus 請自行安裝 ( 作者提供的連結 或到 官網 去載 free - web edition )
上面的 PATH 要指到Quartus目錄下的bin
進到 剛 git 下來的 linux 目錄
Configure the kernel and compile it
cd linux make defconfig make -j6 vmlinux
Running in Simulation
修改 arch/openrisc/or1ksim.cfg 裡的設定
將 channel = "tcp:10084" 改成 channel = "xterm:"
所以你需要有xterm, 我是裝 Ubuntu Desktop 版的
執行下述代碼, or1ksim 在 剛設置的 path 底下
or1ksim -f arch/openrisc/or1ksim.cfg vmlinuxOK 你得到了一個模擬的 linux 系統
打 poweroff 可以關掉
Running on Hardware
你得先安裝 Quartus
tar -xzvf 12.0sp2_263_quartus_free_linux.tar.gz sudo 12.0sp2_263_quartus_free_linux/setup記得把壓縮檔改成 你下載的檔名
然後安裝路徑要跟PATH設定的一樣
如果你 PATH 設定跟我的一樣 就把安裝路徑設在 /opt/altera
下載 ORPSoC RTL
git clone git://openrisc.net/stefan/orpsoc放哪都可, 我把它放到 ~/openrisc 裡
你可以在這個目錄下 找到 DE0-Nano 專用的資料夾 boards/altera/de0_nano
所以先到這個目錄底下吧
cd orpsoc ; cd boards/altera/de0_nano
再來是修正 pin 腳, 方便接線
vim syn/quartus/tcl/UART0_pin_assignments.tcl
作者用了下面這個patch
說明修改方式
diff --git a/boards/altera/de0_nano/syn/quartus/tcl/UART0_pin_assignments.tcl b/boards/altera/de0_nano/syn/quartus/tcl/UART0_pin_assignments.tcl index 0b3ae0c..72f6904 100644 --- a/boards/altera/de0_nano/syn/quartus/tcl/UART0_pin_assignments.tcl +++ b/boards/altera/de0_nano/syn/quartus/tcl/UART0_pin_assignments.tcl @@ -1,4 +1,4 @@ -set_location_assignment PIN_C16 -to uart0_srx_pad_i +set_location_assignment PIN_D12 -to uart0_srx_pad_i set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to uart0_srx_pad_i -set_location_assignment PIN_D15 -to uart0_stx_pad_o +set_location_assignment PIN_B12 -to uart0_stx_pad_o set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to uart0_stx_pad_o反正就是把 PIN_C16 改成 PIN_D12
PIN_D15 改成 PIN_B12
對腳位有興趣的可以下載 官方使用手冊
再來就是請
run the synthesis
rm syn/quartus/run/orpsoc.tcl cd syn/quartus/run make OR32_TOOL_PREFIX=or32-linux- all如果你已經 run 過會出現 第一行 rm 欲刪除的檔案
刪除它以確保重新生成
等它一下吧~
完成後 你會看到 .sof file 和 一些有的沒的
設定Linux
作者提供了一個 .dts設定檔 把它放到 最開始 載下來的 linux 裡cd $HOME/openrisc/toolchain/linux/arch/openrisc/boot/dts/ wget http://kevinmehall.net/openrisc/guide/de0_nano.dts.txt mv de0_nano.dts.txt de0_nano.dts
回到 linux 目錄, 修改一下設定
cd $HOME/openrisc/toolchain/linux make menuconfig你會看到一個藍底的畫面
> [Processor type and Features]
> [Builtin DTB]
> 輸入 de0_nano
> [Ok]
> [Exit]
重新 compile linux
make vmlinux
接上你的 UBS to FTDI 傳輸線
我這邊是買了 UB-391 傳輸線, 作者有推薦 改造 Nokia CA-42 cable反正能把 USB 轉 Serial Port 就好了
Start & Hello OpenRISC with DE0-Nano
回到 de0-nano 的專屬目錄把 .sof 寫進 FPGA 裡
cd $HOME/openrisc/orpsoc/boards/altera/de0_nano/syn/quartus/run make pgm有出現 JTAG 錯誤的 請參考 下面的 ---Problem---
執行下述代碼後, 重新 make pgm
sudo killall jtagd which jtagd sudo `which jtagd`
最後 跟 Serial Port 通訊
screen /dev/ttyUSB0 115200[ctrl-a \] 可以離開 screen
---Troubleshooting---
Error (213019): Can't scan JTAG chain. Error code 89
poweroff 結束模擬
"make PARALLEL=6 PREFIX=$PWD/../root" 失敗, 可以 參考 這篇, 試著安裝官方 toolchain 以確保必要的元件都已經安裝好了
---Reference---
Getting Started with OpenRISC
DE0-nano上でopenriscを使ってlinux起動のメモ
DE0-Nano官方使用手冊
沒有留言:
張貼留言