本地sstate-cache配置【Xilinx-Petalinux学习】
来源:互联网 发布:怎么理解面向对象编程 编辑:程序博客网 时间:2024/05/19 21:03
工具:PetaLinux 2017.1
*20170918:找到了缩短Checking sstate mirror时间的方法。
1.按照本篇内容配置本地的sstate-cache中的arm/sstate-cache和downloads
2.在petalinux-build之前,断开linux的网络连接。
这样Checking sstate mirror这个步骤可能仅仅需要不到十秒钟。
*20170908:重新安装了2017.2的petalinux,并在第一个工程就使用了sstate-cache,在Checking sstate mirror这一步速度飞快,不到10秒。
不知道是跟2017.2这个版本有关系,还是说因为我在2017.1时候用了很久后才添加的sstate-cache,总之4~6秒的时间跟5分钟的时间比起来还是太快了。~*
使用PetaLinux的petalinux-build指令编译kernel和rootfs时候,跟2016.3一前的版本比较起来运行的特别慢,下图是控制台输出
那是因为PetaLinux从2016.4的版本开始使用了基于Yocto的工程,百度百科:Yocto
其实我还没有仔细学习它到底是个什么东东,只是些许明白Xilinx基于Yocto创建了一个貌似是全功能支持的PetaLinux,已经包含了全部的petalinux-image shared sstate-cache,Yocto将其分为了各个小块。
从Xilinx官网下载PetaLinux安装包时候,里面包含了最小配置的shared sstate-cache。当使用petalinux-build命令时,Yocto会先检查本地的state-cache来确认是否满足编译要求。如果本地的资源或者文件缺失,它会通过网络从Xilinx提供的一个网络地址上下载缺少的sstate-cache来补齐本地的数据,最终完成编译。下载地址可以在ug1144中找到,或者是通过petalinux-config –> Yocto Settings -> Network sstate feeds URL下看到,地址是:
http://petalinux.xilinx.com/sswreleases/rel-v2017.1/arm/sstate-cache
那么问题来了,每次新建一个工程都会有不同的rootfs配置,那么petalinux-build命令都需要在后台从Xilinx官网提供的网址去下载数据。。。。本来网速就不咋滴,还要去下载,只有两个词来形容这个过程: 慢,好慢。。而且每次petalinux-build都要重新进行Checking sstate mirror object availability检查,不知道是不是在线检查,好慢。。我只好分别针对kernel rootfs device-tree分别进行build来减少编译的时间。
所以没有办法,只能从官网去下载好。
Xilinx官网的Downloads -> Embedded Development页面下:网址。可以看到有一个sstate cache的文件。
就是它了,看起来好大,需要11.08GB。而我顺眼看了一下2017.2的版本需要18.66GB,天啊,我还是赶紧两个都提前下好吧。经过了好几天的下载,总是失败,终于在晚上没有关机的情况下下载速度达到了4MB/s的情况下下载完成。
顺便下载README看一下怎么使用。内容如下:
Setting local sstate-cache mirrors
1) Extract the downloaded tar contents of sstate-cache at any location 2) run petalinux-config -> Yocto Settings ->Local sstate feeds settings ->local sstate url (press Enter) 3) Provide the path of sstate-cache from above Ex: /<path>/aarch64/sstate-cache for ZynqMP projects /<path>/arm/sstate-cache for Zynq projects /<path>/mb-lite/sstate-cache for MB AXI lite projects /<path>/mb-full/sstate-cache for MB AXI full projects 4) Save the configurations to use the sstate-cache 5) verify the changes in build/conf/plnxtool.conf 6) petalinux-build Setting download mirrors 1) Extract the downloaded tar contents of sstate-cache at any location 2) run petalinux-config -> Yocto Settings -> YOCTO SOURCE MIRROR URL (X) external path -> External Source Mirror url settings () external source mirrors url path (press Enter) 3) Provide the path of sstate-cache from above file:///<path>/downloadsfor all projects 4) Save the configurations to use the download mirrors 5) verify the changes in build/conf/plnxtool.conf 6) petalinux-build
下面在一个工程中测试一下。
首先将下载好的state-rel-v2017.1.tar.gz解压,在其目录中即可看到sstate-cache,其中包括了4种,分别是针对zynq的arm文件夹,针对ultrascale+的aarch64文件夹,针对microblaze的mb-full和mb-lite文件夹。
$ petalinux-configYocto Settings ---> YOCTO SOURCE MIRROR URL (external path) ---> External Source Mirror url settings ---> () external source mirrors url path ---> enter file:///home/vacajk/Development/software/sstate-rel-v2017.1/downloads Local sstate feeds settings ---> () local sstate feeds url ---> enter /home/vacajk/Development/sstate-rel-v2017.1/arm/sstate-cache
保存,退出。
打开工程中的文件:./build/conf/plnxtool.conf验证是否成功修改了sstate-cache的目标地址。
PREMIRRORS_prepend = "git://.*/.* file:///home/vacajk/Development/sstate-rel-v2017.1/downloads \n \ftp://.*/.* file:///home/vacajk/Development/sstate-rel-v2017.1/downloads \n \http://.*/.* file:///home/vacajk/Development/sstate-rel-v2017.1/downloads \n \https://.*/.* file:///home/vacajk/Development/sstate-rel-v2017.2/downloads \n"SIGGEN_UNLOCKED_RECIPES += "arm-trusted-firmware busybox"IMAGE_CLASSES_remove = "xilinx-bootbin"UNINATIVE_DLDIR = "/opt/pkg/petalinux/components/yocto/source/arm/downloads/uninative"SSTATE_MIRRORS = "file://universal/(.*) file:///opt/pkg/petalinux/components/yocto/source/arm/sstate-cache/universal-4.8/\1\n"SSTATE_MIRRORS .= "\nfile://.* file:///opt/pkg/petalinux/components/yocto/source/arm/sstate-cache/PATH\n"SSTATE_MIRRORS_append = " \file://.* file:///home/vacajk/Development/sstate-rel-v2017.1/arm/sstate-cache/PATH \n \file://.* http://www.author.xilinx.com/sswreleases/rel-v2017.1/arm/sstate-cache/PATH;downloadfilename=PATH \n \file://.* http://petalinux.xilinx.com/sswreleases/rel-v2017.1/arm/sstate-cache/PATH;downloadfilename=PATH \n \"MACHINE = "plnx_arm"PACKAGE_CLASSES = "package_rpm"EXTERNAL_TOOLCHAIN_microblaze = "/opt/pkg/petalinux/tools/linux-i386/microblazeel-xilinx-linux-gnu"DL_DIR = "${TOPDIR}/downloads"SSTATE_DIR = "${TOPDIR}/sstate-cache"XILINX_SDK_TOOLCHAIN = "/opt/pkg/petalinux/tools/hsm"IMAGE_LINGUAS = " "TMPDIR = "/home/vacajk/Development/petalinux/zed_video/zed_video/build/tmp"
看起来说是有了,试一下petalinux-build。
$ petalinux-build
因为我这个工程比较稳定了,编译了很多次了,看起来也没什么加速,但对于有新需求的肯定有加速,尤其是需要使用PetaLinux中rootfs内自带的库时,肯定加速效果明显。
编译过一次后,petalinux-build指令主要消耗的时间是在Checking sstate mirror object availability上,我的工程里没有加任何其他内容,这个过程有两次,每次一般需要使用4分钟左右(我的i9神机。。。跑的CentOS 7.3虚拟机)。
先这样吧,之后准备使用PetaLinux中rootfs自带的OpenCV试一试。
- 本地sstate-cache配置【Xilinx-Petalinux学习】
- -02-建立PetaLinux工程【Xilinx-Petalinux学习】
- -00-开始【Xilinx-Petalinux学习】
- -03-PetaLinux通过eMMC方式启动【Xilinx-Petalinux学习】
- -04-OpenCV的移植【Xilinx-Petalinux学习】
- -08-OpenAMP系统实现【Xilinx-Petalinux学习】
- -05-OpenCV程序测试【Xilinx-Petalinux学习】
- -10-GPIO驱动程序【Xilinx-Petalinux学习】
- Xilinx petalinux 2015.4 试用
- -06-OpenCV通过USB摄像头采集图像【Xilinx-Petalinux学习】
- -07-OpenCV的软硬件处理速度对比【Xilinx-Petalinux学习】
- -09-EMIO Slice 自定义IP设计【Xilinx-Petalinux学习】
- -01-开发环境搭建与PetaLinux的安装【Xilinx-Petalinux学习】
- [zynq] 理解xilinx的petalinux
- ZYNQ中的UIO驱动和中断程序学习【Xilinx-Petalinux学习】
- Xilinx petalinux 安装常见错误及解决方法
- Xilinx Petalinux 开发环境搭建与安装
- VDMA IP的GUI配置介绍【Xilinx-VDMA模块学习】
- JavaSE 反射 Part4
- 利用回溯法解决1-9之间添加"+"或"-"或""使得运算结果为100的问题
- HDU 5726 RMQ+二分
- hive面试之【自连接,行转列,列转行】
- javaseday27(网络编程)
- 本地sstate-cache配置【Xilinx-Petalinux学习】
- 开源车牌识别软件EasyPR 使用
- [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第2讲(对象的实现及全局变量的定义)
- Hibernate初探之一对多映射
- unity3d 生成安卓的keystore修改(安卓工程签名)
- IDEA 安装sliksvn插件
- base64编码转码util
- poj1007DNA Sorting(排序水)
- Config server