PULPino在zedboard上的下載、測試
PULPino是一個開源的微型控制系統,基於一個32位RISC-V核心,由瑞士蘇黎世聯邦理工學院與義大利博洛尼亞大學聯合開發。核心IPC接近1,完全支援基整數指令集(RV32I),壓縮指令(RV32C)和部分支援乘法指令集擴充套件(RV32M)。在https://github.com/pulp-platform上有全部原始碼,包括:處理器、外設、匯流排、編譯器等,下面是我在zedboard上下載、測試PULPino的過程。試驗環境是Ubuntu14.04,64bit。
1、下載、編譯GCC編譯器
PULPino中引入了一些擴充套件指令,所以需要修改原來RISC-V提供的編譯器,方法很簡單,首先
然後在終端中使用source ~/.bashrc,使得新的設定生效。此時在終端中輸入riscv32-unknown-elf-,然後按兩下tab鍵,就會出現所有的GCC工具。
2、安裝vivado 2015.1
因為PULPino提供的工程是在vivado 2015.1中測試的,所以這裡也下載這個版本,避免出現莫名其妙的問題,下載、解壓後,輸入
安裝完成後,從xilinx官網獲取licence,下載匯入。修改bashrc(使用命令gedit ~/.bashrc),將xilinx可執行檔案的路徑新增到PATH,如下:
此時輸入vivado可以直接開啟vivado,但是會提示一些資料夾的許可權不足,按照提示修改即可。
3、需要PyYAML,使用 sudo python ./setup.py install 進行安裝即可。
4、下載pulpino原始碼
在終端中輸入如下指令:
很快,大約13.11MB,進入所在目錄,執行./update-ips.py,這個命令會將各個IP的程式碼從github上clone到ipx目錄下。
5、編譯pulpino
在編譯的最後需要用到gmake,所以在編譯前先建立一個gmake的軟連線,如下:
進入pulpino的fpga目錄,輸入make all,會自動編譯需要下載到FPGA的bit檔案、rootfs、devicetree、fbsl、uboot等,都會在pulpino/fpga/sw/sd_image目錄下出現。
在編譯得到rootfile的時候可能需要給出交叉編譯工具(BR2_TOOLCHAIN_EXTERNAL_PATH)的路徑,輸入如下路徑即可
6、製作zedboard啟動的SD卡
需要將上面得到的bit檔案、rootfs、devicetree、fbsl、uboot等複製到SD卡中,在複製之前,需要格式化SD卡,將其分為兩個分割槽,一個boot分割槽,一個root分割槽,分割槽製作的方法在www.wiki.xilinx.com/Prepare+Boot+Medium中有詳述,按照其中的步驟一步步來即可。這裡也簡單提一下,不清楚的可以參考那篇文章。我是通過USB讀卡器讀寫SD卡的,插上讀卡器之後,使用命令
會在最後列出SD對應的碟符,我的是sdb,所以使用如下指令擦除第一個sector,將其中的X換為b,在後面不再強調這一點
使用如下指令檢視SD卡的情況:
輸出類似如下:
使用上面結果第一行的SD卡總大小除以8225280,得到扇面數,也就是8068792320 / 8225280 = 980,這個值在下面會用到,接下來進行分割槽:
拔出SD卡,再插入計算機,此時在/dev目錄下應該出現了sdb1、sdb2,使用如下命令格式化這兩個分割槽:
然後載入這兩個分割槽
將pulpino/fpga/sw/sd_image目錄下的BOOT.bin、uImage、devicetree.dtb三個檔案複製到/mnt/boot,也就是SD的Boot分割槽,將rootfs.tar解壓縮到/mnt/root,也就是root分割槽,解壓指令如下:
SD卡就製作完成了。
7、安裝minicom,這是一個linux下使用的串列埠工具,使用如下命令即可安裝:
8、將zedboard接電源,並且將J14 UART口接計算機,網口接到hub,要求有DHCP功能,家用的無線路由器都有這個功能。波動開關,加電。
9、此時在終端中使用ls /dev可以發現又一個新裝置ttyACM0,這個對應的就是zedboard,開啟minicom,如下:
其餘保持不變,返回後,點選回車,即可連上,如下:
輸入reset,重新啟動zedboard。登入時使用者名稱是root,沒有密碼。
10、設定zedboard的SSH
在zedboard上新建一個使用者,與主機的使用者名稱相同,我這裡就是leisl,
改為如下:
此時就可以正常使用ssh訪問zedboard了,也可以使用scp傳遞檔案了。
11、進入pulpino/fpga/sw/apps/spiload,輸入make,得到spiload,上傳到zedboard
12、編譯應用程式
首先安裝cmake、libswitch-perl
執行這個配置檔案。接下來可以編譯應用程式,在build目錄下,輸入make led_demo,將pulpino/build/apps/fpga/led_demo/slm_files目錄下的spi_stim.txt上傳到開發板,如下:
然後在ssh或者minicom中執行./spiload ./spi_stim.txt,可以發現亮了7個紅色LED燈。但是實際上這個程式要豐富的多,LED燈應該是類似於跑馬燈那樣點亮的,而不是一下子點亮,需要修改pulpino/sw/apps/fpga/led_demo目錄下的main.c,將其中waste_time函式中的迴圈次數變大,改為1000000,重新到build目錄下編譯,然後上傳,執行,可以發現跑馬燈的效果。
13、編譯應用程式helloworld
首先需要修改一下helloworld,具體原因不知道,但是如果不做這個修改,不會顯示helloworld,修改pulpino/sw/apps/helloworld目錄下的main.c檔案,如下:
然後進入build目錄,輸入make helloworld,將pulpino/build/apps/helloworld/slm_files目錄下的spi_stim.txt上傳到開發板,具體步驟參考上面的,然後再minicom中執行,
有個地方需要注意,spiload要加上引數-t,表示在這幾秒之內pulpino通過UART輸出的資訊都顯示在螢幕上,就可以發現helloworld了。
其餘的試驗還沒有做,有興趣的朋友可以試試,到時告訴我測試步驟、測試結果啊。
相關文章
- zedboard的demo評測Zed
- 面試題:上傳和下載怎麼測試?面試題
- 效能測試工具Lmbench的使用和下載
- 在Linux下測試磁碟的I/OLinux
- 在Ubuntu上建立並測試GRE tunnelUbuntu
- 使用jmeter測試工具完成檔案的下載JMeter
- Jmeter下載安裝配置---測試小白JMeter
- Linux測試上行和下載速率Linux
- 儲存過程在主從庫上的測試儲存過程
- 你在測試金字塔的哪一層?(上)
- 在Android上測試非同步任務Android非同步
- Zookeeper 在Windows下的安裝過程及測試Windows
- (一)效能測試(壓力測試、負載測試)負載
- 【車載測試】硬體在環模擬(HiL)
- 在大型金融資料集上使用機器學習的特徵工程測試機器學習特徵工程
- Webservice測試方案(目錄及下載連結)Web
- CRF++在Windows下以及Linux下的安裝及測試方法CRFWindowsLinux
- 簡單談一下我對持續測試下的測試左移、迭代測試和測試右移的理解吧
- ltp測試操作步詳解(壓力測試網站最詳、下載、使用)網站
- 如何下載Junit並在eclipse上配置JunitEclipse
- 在Rainbond上使用Locust進行壓力測試AI
- 介面測試,負載測試,併發測試,壓力測試區別負載
- 軟體測試中的43個功能測試點(上)
- 開源的負載測試/壓力測試工具 NBomber負載
- Android單元測試(7):Robolectric,在JVM上呼叫安卓的類AndroidJVM安卓
- 《軟體測試自動化》電子書下載
- 《野火流明》「千映測試」預下載正式開啟!
- 藉助Docker,在win10下編碼,一鍵在Linux下測試DockerWin10Linux
- 在持續測試中使用哪種測試?談談DevOps在測試策略中的實踐!dev
- 在Java SE下測試CDI Bean和持久層 - relationJavaBean
- 軟體測試中的43個功能測試點(下)
- 安卓下的串列埠測試安卓串列埠
- 在不使用網線的mac上搭建IPv6測試環境Mac
- 效能測試、負載測試、壓力測試有什麼區別?負載
- DVWA下載、安裝、使用(漏洞測試環境搭建)教程
- 三菱 MX COMPONENT下載及安裝測試
- QTP專案實戰課程測試指令碼下載QT指令碼
- 經典書籍《軟體測試》下載(英文版)