【分享】PetaLinux 工程的離線編譯


介紹

PetaLinux基於Yocto,編譯Linux內核、文件系統等,非常龐大,需要的軟件很多。如果從網絡下載,可能消耗比較長的時間。
本文基於Xilinx PetaLinux 2020.2.

下載sstate文件

進入Xilinx 網站嵌入式下載專區, 在頁面內搜索“sstate”,找到和下載對應的文件。2020.1下,每個架構是一個獨立的sstate文件。以前的版本,所有架構是一個sstate文件。2020.1下有下列四個文件。

  1. aarch64 sstate-cache (TAR/GZIP - 25.88 GB)

  2. arm sstate-cache (TAR/GZIP - 9.09 GB)

  3. mbfull sstate-cache (TAR/GZIP - 3.12 GB)

  4. mblite sstate-cache (TAR/GZIP - 3.12 GB)

點擊對應的文件后,登錄Xilinx賬號,開始下載。在下載管理器里可以看到下載地址,比如https://xilinx-ax-dl.entitlenow.com/dl/ul/2020/11/20/R210411015/sstate_aarch64_2020.2.tar.gz/30e9814fd75c278b9222afab52258f2b/5FC29FDF?akdm=0&filename=sstate_aarch64_2020.2.tar.gz。這個下載地址會隨着時間變化,在大約一天內可以重復使用。推薦使用Free Download Manager等下載管理軟件下載。
下載后,在本地Linux機器上解壓。比如解壓到/opt/Xilinx/peta/2020.2/sstate,從而在其中看到下列目錄。

:/opt/Xilinx/peta/2020.2/sstate/aarch64$ ls 
00  06  0c  12  18  1e  24  2a  30  36  3c  42  48  4e  54  5a  60  66  6c  72  78  7e  84  8a  90  96  9c  a2  a8  ae  b4  ba  c0  c6  cc  d2  d8  de  e4  ea  f0  f6  fc
01  07  0d  13  19  1f  25  2b  31  37  3d  43  49  4f  55  5b  61  67  6d  73  79  7f  85  8b  91  97  9d  a3  a9  af  b5  bb  c1  c7  cd  d3  d9  df  e5  eb  f1  f7  fd
02  08  0e  14  1a  20  26  2c  32  38  3e  44  4a  50  56  5c  62  68  6e  74  7a  80  86  8c  92  98  9e  a4  aa  b0  b6  bc  c2  c8  ce  d4  da  e0  e6  ec  f2  f8  fe
03  09  0f  15  1b  21  27  2d  33  39  3f  45  4b  51  57  5d  63  69  6f  75  7b  81  87  8d  93  99  9f  a5  ab  b1  b7  bd  c3  c9  cf  d5  db  e1  e7  ed  f3  f9  ff
04  0a  10  16  1c  22  28  2e  34  3a  40  46  4c  52  58  5e  64  6a  70  76  7c  82  88  8e  94  9a  a0  a6  ac  b2  b8  be  c4  ca  d0  d6  dc  e2  e8  ee  f4  fa  universal
05  0b  11  17  1d  23  29  2f  35  3b  41  47  4d  53  59  5f  65  6b  71  77  7d  83  89  8f  95  9b  a1  a7  ad  b3  b9  bf  c5  cb  d1  d7  dd  e3  e9  ef  f5  fb  universal-4.8

下載download文件

同樣,Xilinx 網站嵌入式下載專區, 在頁面內搜索“ downloads”,找到和下載對應的文件。 2020.2下,downloads的大小是36.01 GB。

下載后,在本地Linux機器上解壓。比如解壓到/opt/Xilinx/peta/2020.2/downloads,從而在其中看到下列文件。

:/opt/Xilinx/peta/2020.2/downloads$ ls *linux*.tar.gz
git2_github.com.linux-can.can-utils.git.tar.gz     git2_github.com.Xilinx.linux-xlnx.git.tar.gz                                     git2_git.linuxfoundation.org.diamon.babeltrace.git.tar.gz
git2_github.com.linux-test-project.ltp.git.tar.gz  git2_git.kernel.org.pub.scm.linux.kernel.git.kdave.btrfs-progs.git.tar.gz
git2_github.com.Xilinx.linux-examples.git.tar.gz   git2_git.kernel.org.pub.scm.linux.kernel.git.shemminger.bridge-utils.git.tar.gz

設置本地sstate

運行petalinux-config,進入菜單“Yocto Settings ->Local sstate feeds settings ->local sstate feeds url” ,按Enter鍵,提供上述sstate目錄。對於arm64,目錄是/opt/Xilinx/peta/2020.2/sstate/aarch64。每個CPU架構使用不同的sstate目錄。
具體步驟也可以參考sstate_rel_2020.2_README.tar.gz里解壓出來的Readme.

設置后,文件project-spec/configs/config里有下列內容。

#
# Local sstate feeds settings
#
CONFIG_YOCTO_LOCAL_SSTATE_FEEDS_URL="/opt/Xilinx/peta/2020.2/sstate/aarch64"
CONFIG_YOCTO_NETWORK_SSTATE_FEEDS=y

設置本地download

運行petalinux-config,進入菜單“Yocto Settings ->Add pre-mirror url” 里,按Enter鍵,以格式“file:// ”提供上述download目錄,比如“file:///opt/Xilinx/peta/2020.2/downloads”。不同CPU架構可以使用相同的download目錄。
sstate_rel_2020.2_README.tar.gz里解壓出來的Readme也描述了這個步驟。

設置后,文件project-spec/configs/config里有下列內容。

#
# Add pre-mirror url 
#
CONFIG_PRE_MIRROR_URL="file:///opt/Xilinx/peta/2020.2/downloads"

設置離線編譯

運行petalinux-config,進入菜單“Yocto Settings -> [] BB NO NETWORK”,按Enter鍵,選擇“BB NO NETWORK”。

設置后,文件project-spec/configs/config里有下列內容。

#
# Network sstate feeds URL
#
CONFIG_YOCTO_NETWORK_SSTATE_FEEDS_URL="http://petalinux.xilinx.com/sswreleases/rel-v${PETALINUX_VER%%.*}/aarch64/sstate-cache"
CONFIG_YOCTO_BB_NO_NETWORK=y

編譯

設置本地sstate、本地download、離線編譯后,進行編譯,就不從網絡下載文件了。

其它

PREMIRRORS_prepend

本地download也可以通過在文件project-spec/meta-user/conf/petalinuxbsp.conf里添加下列行設置。

# ===============================================
# AR 71798
# https://www.xilinx.com/support/answers/71198.html
PREMIRRORS_prepend = " \
	git://.*/.* file:///opt/Xilinx/peta/2020.2/downloads/   \
	ftp://.*/.* file:///opt/Xilinx/peta/2020.2/downloads/    \
	http://.*/.* file:///opt/Xilinx/peta/2020.2/downloads/   \
	https://.*/.*  file:///opt/Xilinx/peta/2020.2/downloads/ \
"

參考文檔

PetaLinux fails to build gstreamer using sstate cache

相關文檔

使用petalinux2020.1進行離線編譯

使用petalinux進行離線編譯

整合Xilinx PetaLinux工程編譯和Open Source U- Boot/Linux編譯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM