介紹
PetaLinux基於Yocto,編譯Linux內核、文件系統等,非常龐大,需要的軟件很多。如果從網絡下載,可能消耗比較長的時間。
本文基於Xilinx PetaLinux 2020.2.
下載sstate文件
進入Xilinx 網站嵌入式下載專區, 在頁面內搜索“sstate”,找到和下載對應的文件。2020.1下,每個架構是一個獨立的sstate文件。以前的版本,所有架構是一個sstate文件。2020.1下有下列四個文件。
-
aarch64 sstate-cache (TAR/GZIP - 25.88 GB)
-
arm sstate-cache (TAR/GZIP - 9.09 GB)
-
mbfull sstate-cache (TAR/GZIP - 3.12 GB)
-
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://
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