作者:付汉杰,hankf@xilinx.com,文章转载自:赛灵思中文社区论坛
PetaLinux环境下,也可以使用Yocto/openembedded的bitbake。Xilinx ug1144有详细说明。
为了方便,我编写了以下脚本,导入bitbake需要的环境。将下列脚本保存为sh文件,使用source导入,之后就能使用bitbake。脚本的第一个输入参数是PetaLinux版本号,比如2019.2。如果source时没有提供版本号,而系统有环境变量XILINX_VERSION,脚本就使用XILINX_VERSION作为PetaLinux版本号。如果source时没有提供PetaLinux版本号,系统也没有定义XILINX_VERSION,则缺省使用2019.2作为PetaLinux版本号。
#!/bin/bash # hankf@xilinx.com echo -e "\nBegin to run script: $0" echo ""; # $1: the first argument could be Xilinx Petalinux version. if [ "$1" = "" ]; then if [ "$XILINX_VERSION" = "" ]; then XILINX_VERSION=2019.2 fi else XILINX_VERSION=$1 fi echo "Use Xilinx version: $XILINX_VERSION" export XILINX_VERSION # Xilinx UG1144 # Accessing BitBake in a Project # 1. Run petalinux-config or petalinux-config --oldconfig or petalinux-config --silentconfig at least once after creating the project, so that the required environment is setup. # 2. Source the PetaLinux tools script: # source /opt/Xilinx/peta/$XILINX_VERSION/settings.sh # 3. Source the Yocto e-SDK: source /opt/Xilinx/peta/$XILINX_VERSION/components/yocto/source/aarch64/environment-setup-aarch64-xilinx-linux source /opt/Xilinx/peta/$XILINX_VERSION/components/yocto/source/aarch64/layers/core/oe-init-build-env export PATH=/opt/Xilinx/peta/$XILINX_VERSION/tools/hsm/bin:$PATH export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE PETALINUX" # it will enter directory "build" # To test if the BitBake is available, run: # bitbake strace
在petalinux工程的目录,使用source执行上述脚本后,会进入build目录。这时可以执行各种bitbake命令,比如执行"bitbake strace"。
为了以后编译PetaLinux编译方便,或者为了创建离线编译环境,可以通过bitbake命令提前下载编译所需要的所有软件包。Yocto 2.5使用命令“bitbake --runall=fetch”, 之前的版本使用命令“bitbake -c fetchall”。 根据 Yocto Project Mega-Manual 的31章,OpenEmbedded提供了一下target系统image的例子。下面是其中一些image的描述。
core-image-base: A console-only image that fully supports the target device hardware. core-image-clutter: An image with support for the Open GL-based toolkit Clutter, which enables development of rich and animated graphical user interfaces. core-image-minimal: A small image just capable of allowing a device to boot. core-image-rt: A core-image-minimal image plus a real-time test suite and tools appropriate for real-time use. core-image-sato: An image with Sato support, a mobile environment and visual style that works well with mobile devices. The image supports X11 with a Sato theme and applications such as a terminal, editor, file manager, media player, and so forth.
对于core-image-sato,使用命令“bitbake core-image-sato --runall=fetch”可以下载编译core-image-sato所需要的所有软件包。
hankf:~/zcu106_bsp_peta/build$ hankf:~/zcu106_bsp_peta/build$ bitbake core-image-sato --runall fetch Loading cache: 100% |###########################################################################| Time: 0:00:01 Loaded 3980 entries from dependency cache. Parsing recipes: 100% |#########################################################################| Time: 0:00:09 Parsing of 2894 .bb files complete (2893 cached, 1 parsed). 3981 targets, 164 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies Initialising tasks: 100% |######################################################################| Time: 0:00:07 NOTE: Executing RunQueue Tasks NOTE: Tasks Summary: Attempted 484 tasks of which 3 didn't need to be rerun and all succeeded. Xilinx petalinux工程使用的配置名称是petalinux-user-image,使用命令“bitbake petalinux-user-image --runall=fetch”可以下载编译petalinux-user-image所需要的所有软件包。 hankf:~/zcu106_bsp_peta/build$ bitbake petalinux-user-image --runall=fetch Loading cache: 100% |############################################| Time: 0:00:00 Loaded 3980 entries from dependency cache. Parsing recipes: 100% |##########################################| Time: 0:00:03 Parsing of 2894 .bb files complete (2893 cached, 1 parsed). 3981 targets, 164 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies Initialising tasks: 100% |#######################################| Time: 0:00:01 NOTE: Executing RunQueue Tasks NOTE: Tasks Summary: Attempted 252 tasks of which 252 didn't need to be rerun and all succeeded.
之后,可以在build/downloads目录下可以看到大量的.tar.gz文件。把这些.tar.gz文件,拷贝到一个目录,然后设置工程使用本地下载的文件。具体设置,可以参考 整合Xilinx PetaLinux工程编译和Open Source U- Boot/Linux编译.