1. 程式人生 > >PetaLinux安裝教程,基於Ubuntu

PetaLinux安裝教程,基於Ubuntu

前言

PetalLinux是Xilinx公司推出的嵌入式Linux開發工具,專門針對Xilinx公司的FPGA SoC晶片和開發板,使用者可以在PetaLinux工具的幫助下進行完整的開發流程,包括設計,驗證,模擬,下載等。
本文將詳細介紹PetaLinux的安裝流程,雖然實際上基本就是把Xilinx的UG1144翻譯一遍。但對於初學者而言,全是英文的Guidance還是很難受的,可能某一步要輸入某個命令,但是卻並不知道為什麼要這麼做,這並不好,也容易打擊信心,尤其是UG裡還有一點小錯誤。

安裝前的準備工作

  • 你需要一個執行著Linux作業系統的電腦作為主機
    • 你可以用虛擬機器,也可以裝雙系統,或者你甚至可以直接把系統換成Linux。
    • 在這裡,我用的是VMware虛擬機器下的Ubuntu Kylin 14.04 LTS
  • 你需要一個足夠大的硬碟空間,一個足夠好的CPU,儘量大的記憶體。
    • 畢竟是用來做開發的,對於配置要求還是比較高,Xilinx推薦4GB記憶體,20GB硬碟,2GHz主頻CPU。
    • 然則,20GB硬碟遠遠不夠!!我分配了100GB,安裝完之後就剩30G空間了;我電腦一共就8GB記憶體,只能分給虛擬機器2GB,倒是沒出現什麼問題,就是安裝的時候比較慢,Guidance說只要“few minutes”,然而我需要花一局OW的時間。
    • 以下是Xilinx的推薦配置,不要相信他推薦的硬碟容量,其他都還好。
      這裡寫圖片描述
  • 安裝一系列的支援包。以下是列表,最左邊是支援包的名稱,右側是各個作業系統下,該支援包的安裝包名稱(很繞口,其實就是同一個功能在不同系統下有不同的叫法),只需要關注你所用的作業系統的那一列就可以了。記得在安裝之前把這些支援庫全部安裝好

    ,不然到時候等了好久,結果告訴你缺少庫,請少俠重頭再來,那就哭暈在廁所了。
    這裡寫圖片描述

  • 把shell設定成bash(這一步你看不懂的話可以忽略,因為有些人喜歡把shell設定為dash),具體設定方法是$ sudo dpkg-reconfigure bash,這裡UG1144寫錯了。

  • 下載安裝Vivado for Linux。或者你想在Windows下用Vivado搞完之後把檔案扔到虛擬機器裡也可以,只是比較麻煩,還不如直接裝在Linux裡,實測介面和Windows下完全一樣。推薦WebPack版本,雖說是閹割版,但還是可以用ZYNQ系列和MicroBlaze的全部功能,只是少了UltraScale系列和一些高階的7系列,重點是免費啊= =||

安裝步驟

  • 建立安裝路徑,比如$ mkdir ~/Desktop/petalinux
  • 執行安裝檔案;
    • $ ./petalinux-v2016.3-final-installer.run ~/Desktop/petalinux
    • 如果缺少後面的安裝路徑引數,則預設會安裝在當前路徑;
  • 經過漫長的等待~~~來到了Agreement部分了,就是一些協議,不同意就不讓裝,Windows下一般用勾選的方式,Linux終端沒有這種條件,只能用Vim展示給你看。
    • 按 Enter 進入協議文字,按 q 退出協議文字,然後就會有問你同不同意,輸入 y 同意協議,進入下一條協議,按 q 退出,y 同意,若干次之後,就進入安裝部分了。
  • 再次經過漫長的等待,安裝完成。

環境配置

裝好了工具,接下來就是要配置環境了。
環境配置方法很簡單,先確保你的shell是bash,具體設定方法看上面的“安裝前準備工作”部分。
然後執行$ source <path-to-installed-PetaLinux>/settings.sh
比如我的安裝路徑是 ~/Desktop/petalinux,那對應的命令就是$ source ~/Desktop/petalinux/settings.sh

執行$ echo $PETALINUX
如果顯示出你的安裝路徑,那就證明環境變數配置好了

有一個問題是,每次開啟一個新的終端,環境變數都會被重置,需要重新source,作為一個強迫症,我覺得這種重複而無聊的工作必然是可以自動化的。解決方案如下:

修改 ~/.bashrc 這個檔案
在最後加上 $ source ~/Desktop/petalinux/settings.sh
.bashrc 是終端的初始化配置指令碼,每次開啟新的終端是的時候,都會執行這個指令碼,把環境變數配置指令碼加在裡面,就能在開啟的時候自動配置了。

安裝PetaLinux BSP

BSP(Board Support Package)板級支援包,是一個檔案包,當你使用特定的硬體平臺時,可以幫你隔離底層硬體,更方便地進行上層開發。Xilinx的開發板基本上都有對應的BSP,在PetaLinux環境下可以很方便地生成一個基礎工程,在基礎工程的基礎上進行配置和增刪修改等,會比從零開始做簡單得多。這裡詳細介紹了BSP的安裝流程。

  • 把這個BSP檔案放在你喜歡的地方。你可以把BSP檔案看做一個種子,通過特定的命令可以讓其“成長”為一個工程,一個模板工程,一個基於特定板子的基礎工程,讓你可以在此基礎上直接進行開發而不需要關心板子上的具體電路等。
  • 好吧,其實我是騙你的,根本不需要什麼安裝,下載完放著就可以了;然則Guidance裡說這就是Installation,所以也算不上騙吧┑( ̄Д  ̄)┍

利用BSP生成一個工程

剛剛說到,BSP相當於一個種子,可以種出一個工程,現在我們就來動手吧。

  • 首先 cd 到你希望放置工程的路徑。比如我的就是:
    • $ cd ~/Desktop/petalinux_project
  • 建立一個工程
    • petalinux-create -t project -s ~/Desktop/BSP/zc706.bsp
    • 把上面的路徑換成你的BSP放置的路徑,檔名也換成你的BSP的檔名(廢話…)
    • -t 表示的是 type,型別是project,-s 表示 source,源是你的BSP檔案
    • 你也可以加一個 -n 引數,自定義工程的名稱。n for name
  • 好的,一個BSP工程建立完畢。

建立一個自定義工程

建立工程肯定不可能只從BSP生成嘛,以下步驟可以建立一個自定義的工程,而不是基於某個特定開發板的工程。

  • 先 cd 到你希望放置工程的路徑。比如我的就是:
    • $ cd ~/Desktop/petalinux_project
  • 建立一個工程
    • petalinux-create -t project --template zynq --name test_proj
    • 這樣就建立了一個基於zynq晶片模板,名為test_proj的工程了。
    • template屬性可以選擇zynq,zynqMP,microblaze。

將硬體平臺從Vivado工程匯出

Vivado中,可以通過以下方法匯出硬體描述檔案(.hdf)
- File -> Export -> Export to hardware
將匯出的 hdf 檔案放好,待會需要用到。

將工程的硬體配置匯入PetaLinux

我們從Vivado中得到了一個硬體,並匯出為 .hdf 檔案,現在可以把它匯入PetaLinux平臺。

  • 首先 cd 到你的工程根目錄下
  • 匯入硬體配置檔案
    • $ petalinux-config --get-hw-description=~/Desktop
    • 注意引數是 存有hdf檔案的路徑,而不是檔案本身。
  • 然後應該會彈出一個選單讓你配置,配置完之後 save,exit即可。
    • 其實一般不用怎麼動,尤其是第一次跟著做的話基本一臉懵逼
    • 每個細目具體是什麼意思,參考UG1144的附錄B和附錄C

生成系統映象檔案

生成一個Linux映象檔案。

  • 首先 cd 到你的工程根目錄下
  • 生成系統映象
    • $ petalinux-build
    • 生成日誌 build.log 存放在‘build’子目錄中
    • 映象檔案存放在 /images/linux 中

生成引導映象

我們有了一個系統映象,有了一個FPGA的位元流檔案,還有了一個u-boot。我們就可以生成一個引導映象BOOT.bin
命令如下:
$ petalinux-package --boot --fpga xxx.bit --u-boot
其中 xxx.bit 是你在Vivado裡生成出來的位元流檔案。
然後你就可以看見當前目錄下生成了一個BOOT.bin,就是引導映象檔案。

打包Pre-Built映象

舉個栗子,我們成功地做了一個映象系統,現在需要將其備份,可以通過以下命令將其打包為“Pre-Built映象”。
首先 cd 到工程根目錄。
$ petalinux-package --prebuilt --fpga xxx.bit
然後就會出現一個prebuilt目錄,裡面有完整的系統映象檔案。
我們可以用prebuilt的映象來引導系統,命令如下:
$ petalinux-boot --qemu --prebuilt 3
其中3代表的是 < BOOT_LEVEL >,可以選擇為1/2/3,分別代表不同的引導層次,具體請參考UG1144的24頁。

在QEMU中啟動系統

上面說到的用prebuilt的映象引導是其中一種方法,也可以直接引導。
在工程根目錄下執行如下命令:

  • $ petalinux-boot --qemu --u-boot
    • 這樣就可以把u-boot下載到QEMU中;
    • 其中 qemu 表示在QEMU虛擬環境中啟動,可以換成 --jtag,這樣就可以通過J-TAG下載到板子上。
  • $ petalinux-boot --qemu --kernel
    • 這樣就可以把核心下載到QEMU中;
    • 其實還需要一個 --dtb引數的,dtb是device tree blob,裝置樹檔案,用來描述外掛的裝置地址,如果預設此引數,則會自動選用 /images/linux/system.dtb 檔案

那麼,到這裡,就安裝成功並簡單地測試了一下了。
UG1144是個好東西,後面還有打包韌體包、封裝自己的BSP、新增使用者庫、新增使用者應用、自動登入等等的教程。
剛開始看確實很痛苦啊,看了一整天,跟著做,做完了部落格裡寫的部分,才看了不到一半。而且是全英文,雖然我英語不差,但是看起來還是有些吃力。
┑( ̄Д  ̄)┍話雖如此,還是推薦看英文的UG,畢竟原汁原味,我水平也有限,有一些可能理解不到位。反正,一起加油吧。。。