首页 > 技术文章 > 【分享】PetaLinux 工程的离线编译

hankfu 2020-12-02 16:31 原文

介绍

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编译

推荐阅读