PetaLinux工具文档参考指南UG1144(v2019.
1)2019年5月22日条款中英文版本如有歧义,概以英文本为准.
修订历史下表列出了本文档的修订历史.
章节修订总结2019年5月22日2019.
1版第6章:升级工作空间新增"petalinux-upgrade命令"一节.
第12章:技术FAQ新增"封装管理"一节.
第10章:高级设置更新"ZynqUltraScale+MPSoC和Zynq-7000器件FPGA管理器配置和使用".
修订历史UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南2目录修订历史.
2第1章:简介.
6引言.
6第2章:建立环境.
8安装要求.
8安装步骤.
10PetaLinux工作环境建立.
12设计流程简介.
13第3章:创建工程.
14PetaLinuxBSP安装.
14使用VivadoDesignSuite设置硬件平台.
15将硬件平台导出到PetaLinux工程.
16创建新的PetaLinux工程.
17第4章:设置和构建.
19版本控制.
19导入硬件配置.
20构建系统镜像.
21生成ZynqUltraScale+MPSoC的启动镜像.
24生成Zynq-7000器件的启动镜像.
24生成MicroBlaze处理器的启动镜像.
25生成MicroBlaze比特流文件.
25构建最优化.
26第5章:启动和封装.
30封装预建镜像.
30使用petalinux-boot命令处理预建镜像.
30启动QEMU上的PetaLinux镜像.
31利用SD卡在硬件上启动PetaLinux镜像.
34利用JTAG在硬件上启动PetaLinux镜像.
36使用TFTP启动硬件上的PetaLinux镜像.
39BSP封装.
41第6章:升级工作空间.
43petalinux-upgrade选项.
43UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南3升级PetaLinux工具.
43升级PetaLinux工程.
44第7章:自定义工程.
46固件版本设置.
46根文件系统类型配置.
46启动镜像存储配置.
47主闪存分区配置.
48管理镜像大小.
48配置INITRDBOOT.
49设置INITRAMFS启动.
50设置TFTP启动.
51设置NFS启动.
52设置JFFS2启动.
53配置SD卡ext文件系统启动.
54第8章:自定义Rootfs.
57包含预构建库.
57包含预构建应用.
58创建和添加定制库.
59测试用户库.
61创建和添加定制应用.
62创建和添加定制模块.
63构建用户应用.
64测试用户应用.
66构建用户模块.
66PetaLinux自动登录.
67开机时应用程序自动运行.
68添加层级.
69将现有配方添加到RootFS.
70添加封装组.
71第9章:调试.
72在QEMU中调试Linux内核.
72使用TCF代理调试应用程序.
73使用GDB调试ZynqUltraScale+MPSoC应用.
78调试单独的PetaLinux组件.
81第10章:高级设置.
83Menuconfig使用方法.
83PetaLinux的menuconfig系统.
83配置树外构建.
89设置工程组件.
92第11章:Yocto功能.
97SDK生成(目标系统引导生成)97UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南4访问工程中的BitBake.
98共享sstate-cache.
99下载镜像.
99机器支持.
99SoC变体支持.
100镜像功能.
101第12章:技术FAQ.
102故障排除.
102附录A:移植.
106工具目录结构.
106DT覆盖支持.
106更改构建.
106附录B:PetaLinux工程结构.
107工程层级.
110附录C:生成启动组件.
111第一阶段启动加载器(FSBL)111Arm可信固件(ATF)111PMU固件.
112仅用于MicroBlaze平台的FS-Boot.
113附录D:QEMU虚拟网络模式.
114非根模式下重定向端口.
114指定QEMU虚拟子网络.
115附录E:QEMU支持的赛灵思IP模型.
116附录F:XenZynqUltraScale+MPSoC示例.
118要求.
118附录G:附加资源与法律提示.
121赛灵思资源.
121参考资料.
121DocumentationNavigator与设计中心.
121请阅读:重要法律提示.
122UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南5第1章简介引言PetaLinux是一种嵌入式Linux软件开发套件(SDK),主要用于赛灵思FPGA基片上系统设计.
本指南可帮助读者熟悉实现PetaLinux全面用途的工具.
我们假定您具有Linux基本知识,比如了解如何运行Linux命令.
您应该知晓操作系统和主机系统功能,比如操作系统版本、Linux分布、安全权限以及基本Yocto概念.
PetaLinux工具包含:Yocto可扩展SDK(eSDK)最少量的下载XSCT和工具链PetaLinuxCLI工具注释:赛灵思软件开发套件(SDK)(XSDK)是集成设计环境(IDE),用于在赛灵思微处理器上创建嵌入式应用程序.
PetaLinuxSDK是一种赛灵思开发工具,含有构建、开发、测试和部署嵌入式Linux系统所需的所有功能.
Yocto可扩展SDK(eSDK)下表详细说明了已安装的四个可扩展SDK.
表1:可扩展SDK路径架构$PETALINUX/components/yocto/source/aarch64ZynqUltraScale+MPSoC$PETALINUX/components/yocto/source/armZynq-7000器件$PETALINUX/components/yocto/source/microblaze_fullMicroBlaze平台完整设计$PETALINUX/components/yocto/source/microblaze_liteMicroBlaze平台简化设计最少量的下载BitBake在查找上游任何源文件之前要校验PREMIRRORS.
当您拥有未使用DL_DIR变量定义的共享目录时,PREMIRRORS即合适.
工具的所有工程都使用这些PREMIRRORS并从中获取源代码.
工具中的PREMIRROR指向:$PETALINUX/components/yocto/downloads.
下载目录拥有Linux内核、U-Boot以及其他小型实用工具的源代码打包工具.
如需了解更多信息,请参阅下载镜像.
第1章:简介UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南6XSCT和工具链对于所有内嵌式软件应用程序,PetaLinux工具都使用下面的XSCT.
所有三个架构的Linux工具链都来自Yocto.
PetaLinux命令行接口(CLI)工具这包含您需要的所有PetaLinux命令.
第1章:简介UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南7第2章建立环境安装要求PetaLinux工具安装要求如下:工作站最低要求:8GBRAM(推荐的赛灵思工具的最低要求)2GHzCPU时钟或同等频率(最低8核)100GB未使用HDD空间支持的操作系统:-RedHatEnterprise工作站/服务器7.
4,7.
5,7.
6(64位)-CentOS7.
4、7.
5、7.
6(64位)-UbuntuLinux16.
04.
5、18.
04.
1(64位)您需要拥有根访问权才能安装下表所示的所需软件包.
PetaLinux工具需要以非根用户的身份安装.
PetaLinux要求在您的Linux主机工作站中安装很多标准开发工具和库.
在Linux主机上安装下表所列的库和工具.
下文列出的所有Linux工作站环境都拥有PetaLinux工具所需的32位库.
如果还有任何其他工具链软件包需要主机上有32位库,在发布petalinux-build之前要安装相同的库和工具.
下表列出了所需的软件包,并介绍了在不同Linux工作站环境中的安装方法.
PetaLinux工具要求您的主机系统/bin/sh为"bash".
如果您在使用Ubuntu分布,而您的/bin/sh为"dash",请咨询系统管理员,更改默认的系统shell/bin/sh,请使用sudodpkg-reconfiguredash命令更改.
表2:封装和Linux工作站环境工具/库CentOS7.
4、7.
5、7.
6(64位)RedHatEnterprise工作站/服务器7.
4、7.
5、7.
6(64位)UbuntuLinux16.
04.
5、18.
04.
1(64位)dos2unixdos2unix-6.
0.
3-4.
el7.
x86_64.
rpmdos2unix-6.
0.
3-4.
el7.
x86_64.
rpmtofrodos_1.
7.
13+ds-2.
debian.
tar.
xzipiproute-3.
10.
0-74.
el7.
x86_64.
rpmiproute-3.
10.
0-74.
el7.
x86_64.
rpmiproute24.
3.
0-1ubuntu3gawkgawk-4.
0.
2-4.
el7.
x86_64.
rpmgawk-4.
0.
2-4.
el7.
x86_64.
rpmgawk(1:4.
1.
3+dfsg-0.
1)gccgcc-4.
8.
5-11.
el7.
x86_64gcc-4.
8.
5-11.
el7.
x86_64-g++(gcc-c++)gcc-c++-4.
8.
5-11.
el7.
x86_64gcc-c++-4.
8.
5-11.
el7.
x86_64-makemake3.
81make3.
82make3.
81netstatnet-tools2.
0net-tools2.
0net-tools第2章:建立环境UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南8表2:封装和Linux工作站环境(续)工具/库CentOS7.
4、7.
5、7.
6(64位)RedHatEnterprise工作站/服务器7.
4、7.
5、7.
6(64位)UbuntuLinux16.
04.
5、18.
04.
1(64位)ncursesdevelncurses-devel5.
9-13ncurses-devel5.
9-13libncurses5-devtftpservertftp-servertftp-servertftpdzlibdevel(另,安装此版本的32位版本)zlib-devel-1.
2.
7-17.
el7.
x86_64.
rpmzlib-devel-1.
2.
7-17.
el7.
x86_64.
rpmzlib1g:i386openssldevelopenssl-devel1.
0openssl-devel1.
0libssl-devflexflex2.
5.
37flex2.
5.
37flexbisonbison-2.
7bison-2.
7.
4bisonlibselinuxlibselinux2.
2.
2libselinux2.
2.
2libselinux1gnupggnupggnupggnupgwgetwgetwgetwgetdiffstatdiffstatdiffstatdiffstatchrpathchrpathchrpathchrpathsocatsocatsocatsocatxtermxtermxtermxtermautoconfautoconfautoconfautoconflibtoollibtoollibtoollibtooltartar:1.
24tar:1.
24tar:1.
24unzipunzipunzipunziptexinfotexinfotexinfotexinfozlib1g-dev--zlib1g-devgcc-multilib--gcc-multilibbuild-essential--build-essentialSDL-develSDL-develSDL-devel-glibc-develglibc-develglibc-devel-32-bitglibcglibc-2.
17-157.
el7_3.
4.
i686glibc-2.
17-157.
el7_3.
4.
x86_64glibc-2.
17-157.
el7_3.
4.
i686glibc-2.
17-157.
el7_3.
4.
x86_64-glib2-develglib2-develglib2-devel-automakeautomakeautomake-screenscreenscreenscreenpaxpaxpaxpaxgzipgzipgzipgziplibstdc++libstdc++-4.
8.
5-11.
el7.
x86_64libstdc++-4.
8.
5-11.
el7.
i686libstdc++-4.
8.
5-11.
el7.
x86_64libstdc++-4.
8.
5-11.
el7.
i686-第2章:建立环境UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南9快速安装软件包以下几节将描述如何快速安装Ubuntu和Redhat/CentOS软件包.
Ubuntusudoapt-getinstall-ygccgitmakenet-toolslibncurses5-devtftpdzlib1g-devlibssl-devflexbisonlibselinux1gnupgwgetdiffstatchrpathsocatxtermautoconflibtooltarunziptexinfozlib1g-devgcc-multilibbuild-essential-devzlib1g:i386screenpaxgzipRedhat/CentOSsudoyuminstallgawkmakewgettarbzip2gzippythonunzipperlpatchdiffutilsdiffstatgitcppgccgcc-c++glibc-develtexinfochrpathsocatperl-Data-Dumperperl-Text-ParseWordsperl-Thread-Queuepython34-pipxzwhichSDL-develxtermautoconflibtoolzlib-develautomakeglib2-develzlibncurses-developenssl-develdos2unixflexbisonglibc.
i686screenpaxglibc-devel.
i686compat-libstdc+-33.
i686libstdc+.
i686注意!
如果不确定主机系统封装管理的正确流程,请咨询系统管理员.
重要提示!
PetaLinux2019.
1只适用于从VivadoDesignSuite2019.
1.
导出的硬件设计.
安装步骤要求完成PetaLinux工具安装要求.
如需了解更多信息,请参阅安装要求.
下载PetaLinux发行包.
可以从PetaLinux下载页面下载PetaLinux安装程序.
VivadoDesignSuite、赛灵思SDK和PetaLinux版本同步.
运行PetaLinux工具安装程序在不选择任何选项的情况下,PetaLinux工具即被安装到当前工作目录中.
此外,您还可以指定安装路径.
例如:若要将PetaLinux工具安装在/opt/pkg/petalinux/2019.
1中:$mkdir-p/opt/pkg/petalinux/2019.
1$.
/petalinux-v2019.
1-final-installer.
run/opt/pkg/petalinux/2019.
1注释:切勿将安装程序权限更改为CHMOD775,否则将产生BitBake错误.
这会将PetaLinux工具安装到/opt/pkg/petalinux/2019.
1目录中.
重要提示!
一旦安装,您就无法移动或拷贝已安装的目录.
在上述举例中,您无法移动或拷贝/opt/pkg/petalinux,因为完整路径将被存储在Yoctoe-SDK环境文件中.
第2章:建立环境UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南10注释:您无法将工具作为根用户安装.
确保/opt/pkg/petalinux可写入.
您可以在安装之后更改权限,以便使其在全局可读取可执行(0755).
将工具安装到/opt/pkg/petalinux目录不是强制要求.
您可以在具有755权限的任何所需位置安装.
阅读并同意PetaLinux最终用户许可协议(EULA)是PetaLinux工具安装流程中的强制和不可分割的组成部分.
您可以在安装之前阅读许可协议.
如果您希望保存许可备查,可在以下文件中查找纯ASCII文本许可:$PETALINUX/etc/license/petalinux_EULA.
txt:EULA详细规定了PetaLinux拥有的权利和限制条件.
$PETALINUX/etc/license/Third_Party_Software_End_User_License_Agreement.
txt:该第三方协议详细说明了PetaLinux工具的可分发和不可分发组件.
默认设置是启用WebTalk选项,向赛灵思反馈工具使用统计数据.
您可以运行petalinux-util--webtalk命令,关闭WebTalk功能:重要提示!
在运行PetaLinux命令之前,您需要找到PetaLinux设置源.
如需了解更多信息,请参阅PetaLinux工作环境建立.
$petalinux-util--webtalkoff注释:若需了解下载区中的共享状态,请参见构建最优化.
故障排除本节描述在安装PetaLinux工具时可能遇到的一些常见问题.
如果PetaLinux工具安装失败,则会在PetaLinux安装目录中生成$PETALINUX/post-install.
log文件.
表3:PetaLinux安装故障排除描述/错误消息描述和解决方案WARNING:Youhavelessthan1GBfreespaceontheinstallationdrive问题描述此警告消息表明安装驱动几乎已满.
安装之后,可能没有足够的空闲空间来开发硬件工程和/或软件工程.
解决方案:清理安装驱动以腾出更多的空闲空间.
或者,将PetaLinux安装至另一个硬盘驱动.
WARNING:Notftpserverfound问题描述此警告消息表明工作站没有运行TFTP服务.
如果没有TFTP服务,就不能使用U-Boot网络/TFTP功能将Linux系统镜像下载到目标系统.
对于其他启动模式,可以忽略此警告.
解决方案:工作站启用TFTP服务.
如果不确定如何启用此服务,请与系统管理员联系.
ERROR:GCCisnotinstalled-unabletocontinue.
Pleaseinstallandretry问题描述此警告消息表明主机工作站没有安装gcc.
解决方案:使用Linux工作站封装管理系统安装gcc.
如果不确定如何安装,请与系统管理员联系.
请参阅安装步骤.
ERROR:YouaremissingthefollowingsystemtoolsrequiredbyPetaLinux:missing-tools-list或ERROR:YouaremissingthesedevelopmentlibrariesrequiredbyPetaLinux:missing-library-list问题描述此错误消息表明,"missing-tools-list"或"missing-library-list"中未列有所需的工具或库.
解决方案:安装所缺少的工具包.
如需了解更多信息,请参阅安装要求.
第2章:建立环境UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南11表3:PetaLinux安装故障排除(续)描述/错误消息描述和解决方案.
/petalinux-v2019.
1-final-installer.
run:line52:/proj/petalinux/petalinux-v2019.
1_daily_latest/petalinux_installation_log:Permissiondenied问题描述此错误消息表明PetaLinux安装目录没有写入权限.
解决方案:授予安装目录755权限.
PetaLinux工作环境建立在安装之后,根据提供的settings脚本源,可自动完成剩余的建立.
要求本节假设PetaLinux工具安装完成.
如需了解更多信息,请参阅安装步骤.
步骤建立PetaLinux工作环境1.
获取适当的设置脚本:Bash作为用户登录shell:$source/settings.
shCshell作为用户登录shell:$source/settings.
csh下面是第一次获取建立脚本时的一个输出例子:PetaLinuxenvironmentsetto'/opt/pkg/petalinux'INFO:CheckingfreediskspaceINFO:CheckinginstalledtoolsINFO:CheckinginstalleddevelopmentlibrariesINFO:CheckingnetworkandotherservicesWARNING:Notftpserverfound-pleasesee"PetaLinuxSDKInstallationGuide"foritsimpactandsolution2.
验证工作环境已经设置为:$echo$PETALINUX输出:/opt/pkg/petalinux环境变量$PETALINUX应该指向已安装的PetaLinux路径.
根据PetaLinux安装路径,输出可能与本例不同.
故障排除本节介绍了在设定PetaLinux工作环境过程中您可能遇到的一些常见问题.
第2章:建立环境UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南12表4:PetaLinux工作环境问题解答描述/错误消息描述和解决方案WARNING:/bin/shisnotbash问题描述该警告消息表示您的默认shell已连接到dash.
解决方案:PetaLinux工具要求您的主机系统/bin/sh为bash.
如果您在使用Ubuntu分布而且您的/bin/sh是dash,请咨询您的系统管理员使用sudodpkg-reconfiguredash命令来更改您的默认主机系统/bin/sh.
FailedtoopenPetaLinuxlib问题描述该错误消息表示PetaLinux库加载失败.
可能的原因如下:PetaLinuxsettings.
sh未加载.
正在运行的LinuxKernel已配置了SELinux.
这可造成安全性背景和加载库方面的问题.
解决方案:1.
从顶层PetaLinux目录中找到settings.
sh脚本源.
如需了解更多信息,请参阅PetaLinux工作环境建立.
2.
如果您已启用SELinux,请确定SELinux是否处于强制模式.
如果SELinux配置为强制模式,请重新配置SELinux至授权模式(参见SELinux手册)或更改库安全性环境以允许访问.
$cd$PETALINUX/tools/xsct/lib/lnx64.
o$chcon-R-ttextrel_shlib_tlib设计流程简介一般而言,PetaLinux工具遵从顺序工作流程模型.
下表提供了一个示例设计工作流程,展示了任务应完成的顺序以及该任务的相应工具或工作流程.
表5:设计流程简介设计流程步骤工具/工作流程硬件平台创建(仅用于定制硬件)Vivado设计工具创建PetaLinux工程petalinux-create-tproject初始化PetaLinux工程(仅用于定制硬件)petalinux-config--get-hw-description设置系统级选项petalinux-config创建用户组件petalinux-create-tCOMPONENT设置Linux内核petalinux-config-ckernel配置根文件系统petalinux-config-crootfs构建系统petalinux-build部署系统的封装petalinux-package启动系统进行测试petalinux-boot第2章:建立环境UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南13第3章创建工程PetaLinuxBSP安装PetaLinux参考板级支持包(BSP)是受支持的电路板上的参考设计,以便您可以开始在自己的工程上工作并进行自定义.
此外,这些设计可作为在受支持的电路板上创建自己的工程的基础使用.
PetaLinuxBSP以可安装BSP文件的形式提供并包含所有必要的设计和配置文件、预建和测试硬件以及可随时下载到您的电路板或在QEMU系统仿真环境中启动的软件镜像.
您可以将BSP下载到您选择的任何位置.
BSP参考设计未包含在PetaLinux工具安装程序中,需要单独下载和安装.
PetaLinuxBSP包可在Xilinx.
com下载中心获得.
在每个BSP中都有一个README,介绍了BSP的详细内容.
注释:只下载您需要的BSP.
要求本节假定已满足了以下要求:PetaLinuxBSP已下载.
您可以从PetaLinux下载中下载PetaLinuxBSP.
PetaLinux工作环境建立已完成.
有关更多详细信息,请参见PetaLinux工作环境建立.
从BSP中创建工程1.
更改至您要在其中创建PetaLinux工程的目录.
例如,如果您要在/home/user下创建工程:$cd/home/user2.
在命令控制台上运行petalinux-create命令:petalinux-create-tproject-s所引用的电路板基于已安装的BSP.
您将看到与下列输出类似的输出:INFO:Createproject:INFO:Projects:INFO:*xilinx-zcu102-v2019.
1INFO:hasbeensuccessfullyinstalledto/home/user/INFO:Newprojectsuccessfullycreatedin/home/user/在上述示例中,当命令运行时,它就告诉您从BSP中提取和安装工程.
如果规定的位置在网络文件系统(NFS)上,它将TMPDIR更改为/tmp/;否则,它将被设置为$PROOT/build/tmp.
如果/tmp/也在NFS上,则它会抛出一个错误.
您可以通过"petalinux-config→Yocto-settings"随时更改TMPDIR.
切勿为两个不同的PetaLinux工程配置与TMPDIR相同的位置,否则可能造成构建错误.
第3章:创建工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南14如果您从/home/user运行ls,您将看到已安装的工程.
如需了解有关PetaLinux工程结构的详情,请参见附录B:PetaLinux工程结构.
注意!
切勿在安装区创建PetaLinux工程,切勿将安装区作为临时构建区使用.
故障排除本节描述在安装PetaLinuxBSP时可能遇到的一些常见问题.
表6:PetaLinuxBSP安装故障排除描述/错误消息描述和解决方案petalinux-create:commandnotfound问题描述:此消息表明无法找到petalinux-create命令,因此无法继续安装BSP.
解决方案:必须为PetaLinux工具建立环境.
如需了解更多信息,请参阅PetaLinux工作环境建立.
使用VivadoDesignSuite设置硬件平台本节描述如何为PetaLinux工程设置硬件平台.
要求本节假定已满足了以下要求:已安装VivadoDesignSuite.
可以从Vivado设计工具下载页面下载VivadoDesignSuite.
已设置Vivado工具工作环境.
如果还没有,请按照以下步骤获取适当的设置脚本:$source/settings64.
sh熟悉VivadoDesignSuite和赛灵思SDK工具.
如需了解更多信息,请参阅《VivadoDesignSuite用户指南:着手设计》(UG910).
设置Linux硬件平台可以用Vivado创建自己的硬件平台.
无论如何创建和配置硬件平台,都需要更改少量的硬件IP和软件平台配置,以便硬件平台适用于Linux.
这些更改说明如下:ZynqUltraScale+MPSoC以下列出ZynqUltraScale+MPSoC硬件工程启动Linux的硬件要求:1.
外部存储器至少有64MB内存(必要)2.
串行控制台UART(必要)3.
非易失性存储器(可选),如QSPI闪存和SD/MMC第3章:创建工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南154.
以太网(可选,对网络访问必不可少)重要提示!
如果使用带中断的软IP或带中断的外部PHY器件,确保中断信号已连接.
Zynq-7000器件以下列出Zynq-7000硬件工程启动Linux的硬件要求:1.
一个三时序计数器(TTC)(必要)重要提示!
如果启用多个TTC,Zynq-7000Linux内核将使用来自设备树的第一个TTC块.
请确保TTC没有被使用.
2.
外部存储器至少有32MB内存(必要)3.
串行控制台UART(必要)4.
非易失性存储器(可选),如QSPI闪存和SD/MMC5.
以太网(可选,对网络访问必不可少)重要提示!
如果使用软IP,请确保中断信号已连接.
如果使用带中断的软IP或带中断的外部PHY器件,确保中断信号已连接.
MicroBlaze处理器(AXI)以下列出MicroBlaze硬件工程启动Linux的要求:1.
IP核检查清单:外部存储器至少有32MB内存(必要)带中断连接的双通道定时器(必要)串行控制台带中断连接的UART(必要)非易失性存储器,如线性闪存或SPI闪存(必要)带中断连接的以太网(可选,但是网络访问的必要条件)2.
MicroBlaze处理器设置:通过在MicroBlaze设置向导中选择带MMU的Linux或带MMU的低端Linux设置模板来支持带MMU的MicroBlaze处理器.
注释:不要禁用模板所启用的任何与指令集相关的选项,除非您理解此类变动的含义.
系统从非易失性存储器启动时,MicroBlaze处理器初始引导加载程序fs-boot的并行闪存至少需要4KB的块RAM,SPI闪存至少需要8KB的块RAM.
将硬件平台导出到PetaLinux工程本节介绍了如何向PetaLinux工程导出硬件平台.
注释:器件支持存档(DSA)是一种硬件描述格式,将在VivadoDesignSuite2019.
1中推出.
DSA是一种超级HDF集,含有附加配置,可用XSCT/XSDK进行更改.
第3章:创建工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南16要求本节假设用VivadoDesignSuite创建硬件平台.
如需了解更多信息,请参阅使用VivadoDesignSuite设置硬件平台.
导出硬件平台在您配置了硬件工程之后,要构建硬件比特流.
PetaLinux工程要有硬件描述文件(.
hdf/.
dsa文件),并包含有关处理器系统的信息.
您可以从VivadoDesignSuite中运行导出硬件,获得硬件描述文件.
在工程初始化(或更新)过程中,PetaLinux生成设备树源文件、U-Boot配置报头文件,并根据硬件描述文件启用Linux内核驱动程序.
这些详细信息可在附录B:PetaLinux工程结构中查阅.
对于ZynqUltraScale+MPSoC平台,您需要利用平台管理单元(PMU)固件和ATF启动.
有关构建PMU固件和ATF的信息,请参见附录C:生成启动组件.
如果您要为Cortex-R5F启动构建第一阶段引导加载程序(FSBL),您还需要利用赛灵思SDK进行构建,因为利用PetaLinux工具构建的FSBL是用于Cortex-A53启动的.
有关如何利用赛灵思SDK为Cortex-R5F构建FSBL的详细信息,请参见《ZynqUltraScale+MPSoC:软件开发指南》(UG1137).
创建新的PetaLinux工程本节介绍了如何创建新的PetaLinux工程.
从模板中创建的工程在构建之前必须捆绑到实际硬件实例上.
要求本节假定PetaLinux工作环境建立已完成.
如需了解更多信息,请参阅PetaLinux工作环境建立.
创建新的工程petalinux-create命令用于创建新的PetaLinux工程:$petalinux-create--typeproject--template--name参数如下:--template-支持下列平台类型:zynqMP(UltraScale+MPSoC)zynq(Zynq-7000器件)microblaze(MicroBlazeCPU)注释:MicroBlaze选项不得与Zynq-7000器件或可编程逻辑电路(PL)中的ZynqUltraScale+设计配合使用.
--name-您正在构建的工程名称.
该命令可从默认模板中创建新的PetaLinux工程文件夹.
以下步骤可自定义这些设置,以便与以前创建的硬件工程匹配.
如果使用了--template选项,而未使用BSP,您可以使用petalinux-config命令来选择与您的电路板设计接近的默认电路板配置,如下所示:第3章:创建工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南171.
petalinux-config--get-hw-description=2.
按需设置CONFIG_SUBSYSTEM_MACHINE_NAME.
可能的値:ac701-full、ac701-lite、kc705-full、kcu105、zc1275-revb、zcu1285-reva、zc1751-dc1、zc1751-dc2、zc702、zc706、avnet-ultra96-rev1、zcu100-revc、zcu102-rev1.
0、zcu104-revc、zcu106-reva、zcu111-reva、zedboard、vcu118-rev2.
0、sp701-rev1.
0在petalinux-config中,选择"DTGSettings→(template)MACHINE_NAME",将模板更改为任何上述可能的值.
提示:如需了解有关PetaLinux工程结构的详细信息,请参阅附录B:PetaLinux工程结构.
注意!
当在NFS上创建PetaLinux工程时,petalinux-create自动将TMPDIR更改为/tmp/.
如果/tmp也在NFS上,它会抛出一个错误.
如果您要将TMPDIR更改至本地存储,请使用"petalinux-config→Yocto-settings→TMPDIR".
切勿为两个不同的PetaLinux工程配置与TMPDIR相同的位置.
这可能造成构建错误.
如果TMPDIR位于/tmp/.
.
,删除工程不会将其清理干净.
您必须显式执行此步骤或使用petalinux-build-xmrproper.
第3章:创建工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南18第4章设置和构建版本控制本节详细介绍了有关PetaLinux工程中的版本管理/控制的内容.
要求本节假定您已创建了一个新的PetaLinux工程或有现有的PetaLinux工程.
如需了解更多创建PetaLinux工程的信息,请参见创建新的PetaLinux工程.
版本控制您可以对您的PetaLinux工程目录进行版本控制,但下列内容除外:/.
petalinux/!
.
petalinux/metadata/build//images/linux/pre-built/linux/project-spec/meta-plnx-generated//components/plnx-workspace//*/*/config.
old/*/*/rootfs_config.
old/*.
o/*.
log/*.
jou默认情况下,在创建工程的过程中,这些文件被添加到.
gitignore中.
注释:在提交源控制之前,应利用petalinux-build-xmrproper清理PetaLinux工程.
重要提示!
版本控制是目前在进程中的一项工作.
建议您用BSP方法分享工程.
注释:在并行开发中,在petalinux-config中的TMPDIR对每个用户都应该是唯一的.
在将工程登入版本控制之前,使用${PROOT}作为参考来指定TMPDIR的相对路径.
UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南19导入硬件配置本节介绍了利用新建硬件配置更新现有/新建PetaLinux工程的流程.
这可让您使PetaLinux工具软件平台做好准备,以构建一个按照您的新硬件平台自定义的Linux系统.
要求本节假定已满足了以下要求:您已导出了硬件平台并生成了.
hdf/.
dsa文件.
如需了解更多信息,请参阅导出硬件平台.
您已创建了一个新的PetaLinux工程或有现有的PetaLinux工程.
如需了解更多创建PetaLinux工程的信息,请参阅创建新的PetaLinux工程.
步骤导入硬件配置导入硬件配置的步骤如下:1.
更改至您的PetaLinux工程目录中.
$cd2.
利用petalinux-config命令导入硬件描述,按如下要求提供含有.
hdf/.
dsa文件的目录路径:$petalinux-config--get-hw-description=注释:如果DSA和HDF文件都被放入硬件描述目录,则DSA文件所赋予的优先权要大于HDF文件.
当petalinux-config--get-hw-description为PetaLinux工程进行第一次运行或工具检测到系统主硬件候选项发生变化时,它会启动顶层系统配置菜单:-*-ZYNQMPConfigurationLinuxComponentsSelection--->AutoConfigSettings--->-*-SubsystemAUTOHardwareSettings--->DTGSettings--->ARMTrustedFirmwareCompilationConfiguration--->PMUFIRMWAREConfiguration--->FPGAManager--->u-bootConfiguration--->ImagePackagingConfiguration--->FirmwareVersionConfiguration--->YoctoSettings--->第4章:设置和构建UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南20确保选定了"SubsystemAUTOHardwareSettings",然后进入菜单,与以下所示类似:SubsystemAUTOHardwareSettingsSystemProcessor(psu_cortexa53_0)--->MemorySettings--->SerialSettings--->EthernetSettings--->FlashSettings--->SD/SDIOSettings--->RTCSettings--->[*]AdvancedbootableimagesstorageSettings--->"SubsystemAUTOHardwareSettings→"菜单可自定义整个系统范围内的硬件设置.
该步骤可能需要几分钟才能完成,因为工具将根据"自动配置设置--->"和"子系统自动硬件设置--->"设置,解析硬件描述文件,以获取更新设备树、PetaLinuxU-Boot配置文件以及内核配置文件所需的硬件信息.
例如,如果选定ps7_ethernet_0作为"PrimaryEthernet",而您启用了内核配置和U-Boot配置的自动更新,则该工具将自动启用其内核驱动并更新U-Boot头文件配置,以便U-Boot使用选定的以太网控制器.
注释:如需了解有关自动配置设置菜单的详情,请参见设置.
--oldconfig/--silentconfig选项可允许您重复使用以前的配置.
旧配置在含有无人值守更新的规定组件的目录内拥有文件名CONFIG.
old.
注释:--oldconfig选项在未来版本中将被废弃.
使用--silentconfig代替.
构建系统镜像要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
构建PetaLinux系统镜像的步骤1.
更改至您的PetaLinux工程目录中.
$cd2.
运行petalinux-build,构建系统镜像:$petalinux-build该步骤生成设备树DTB文件、第一阶段引导加载程序(如果选定的话)、U-Boot、Linux内核以及根文件系统镜像.
最后,它生成必需的启动镜像.
3.
编译进展在控制台上显示.
等待编译完成.
提示:详细的编译日志详见/build/build.
log.
在构建完成时,生成的镜像将位于/images和/tftpboot目录之内.
第4章:设置和构建UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南21控制台显示编译进展.
例如:[INFO]buildingproject[INFO]generatingKconfigforproject[INFO]silentconfigproject[INFO]sourcingbitbake[INFO]generatingplnxtoolconf[INFO]generatingmeta-plnx-generatedlayer[INFO]generatingbbappendsforproject.
Thismaytaketime!
[INFO]generatingu-bootconfigurationfiles[INFO]generatingkernelconfigurationfiles[INFO]generatinguserlayers[INFO]generatingkconfigforRootfs[INFO]silentconfigrootfs[INFO]generatingpetalinux-user-image.
bbINFO:bitbakepetalinux-user-imageParsingrecipes:100%|Time:0:00:29Parsingof2777.
bbfilescomplete(0cached,2777parsed).
3812targets,147skipped,0masked,0errors.
NOTE:ResolvinganymissingtaskqueuedependenciesInitialisingtasks:100%|Time:0:00:05Checkingsstatemirrorobjectavailability:100%|Time:0:00:10Sstatesummary:Wanted923Found685Missed476Current0(74%match,0%complete)NOTE:ExecutingSetSceneTasksNOTE:ExecutingRunQueueTasksNOTE:TasksSummary:Attempted3316tasksofwhich2254didn'tneedtobererunandallsucceeded.
INFO:CopyingImagesfromdeploytoimagesINFO:Creatingimages/linuxdirectoryNOTE:Failedtocopybuiltimagestotftpdir:/tftpboot[INFO]successfullybuiltproject默认镜像在您运行petalinux-build时,它为Zynq-7000器件和MicroBlaze平台生成FIT镜像.
还会生成RAM磁盘镜像rootfs.
cpio.
gz.
u-boot.
完整编译日志build.
log存储在您的PetaLinux工程的构建子目录中.
最终镜像/images/linux/image.
ub,是一种FIT镜像.
内核镜像(包括RootFS)是ZynqUltraScale+MPSoC的"Image"、Zynq-7000器件的"zImage"以及MicroBlaze处理器的"image.
elf".
构建镜像位于/images/linux目录中.
如果在PetaLinux工程的系统级配置中启用了该选项,其副本也被放置在/tftpboot目录中.
重要提示!
默认情况下,除了内核、RootFS和U-Boot之外,PetaLinux工程也被配置为生成和构建第一阶段引导加载程序.
如需了解更多有关自动生成的第一阶段引导加载程序的详细信息,请参见附录C:生成启动组件.
故障排除本节介绍了在构建PetaLinux镜像过程中您可能遇到的一些常见问题/警告.
第4章:设置和构建UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南22警告/错误:do_package:Couldnotcopylicensefile/opt/pkg/petalinux/components/yocto/source//layers/core/meta/files/common-licenses/to/opt/pkg/petalinux/build/tmp/work/-xilinx-linux/image/usr/share/licenses//COPYING.
MIT:[Errno1]Operationnotpermitted:描述:当安装了工具时,/opt/pkg/petalinux/components/yocto/source//layers/core/meta/files/common-licenses/中的所有许可证文件都将拥有"644"读写权限.
因此,这些文件可由其他人读取,但不可写入.
解决方案:方法1:手动修改来自层级的许可证文件的权限$chmod666/opt/pkg/petalinux/components/yocto/source//layers/core/meta/files/common-licenses/*在创建硬链接时,用户将拥有对链接源的写入权限.
方法2:禁用内核上的硬链接保护$sysctlfs.
protected_hardlinks=0在创建硬链接时,该内核将允许源不被当前用户写入.
方法3:在/meta-user/conf/petalinuxbsp.
conf中设置以下Yocto变量LICENSE_CREATE_PACKAGE_forcevariable="0"SIGGEN_LOCKEDSIGS_TASKSIG_CHECK="none"构建系统不会尝试创建链接,但许可证也不会在最终镜像上.
生成uImage如果想使用uImage,请使用petalinux-package--image.
例如:$petalinux-package--image-ckernel--formatuImage注释:该选项仅支持Zynq-7000器件和MicroBlaze处理器.
uImage将生成到PetaLinux项目的子目录images/linux.
然后,需要设置U-Boot,以使用uImage启动.
如果已选择PetaLinuxu-bootconfig作为U-Boot设置目标,则可以修改PetaLinux工程的/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.
h以覆盖CONFIG_EXTRA_ENV_SETTINGS宏,从而定义U-Boot启动命令来使用uImage启动.
注释:在未来版本中不推荐使用该选项,因为petalinux-build会生成uImage.
第4章:设置和构建UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南23生成ZynqUltraScale+MPSoC的启动镜像本节仅用于ZynqUltraScale+MPSoC,其中介绍了如何为ZynqUltraScale+MPSoC生成BOOT.
BIN.
要求本节假定您已经构建了PetaLinux系统镜像.
如需了解更多信息,请参阅构建系统镜像.
生成启动镜像在执行此步骤之前,要确保您已构建了硬件比特流.
启动镜像可放入闪存或SD卡.
在您打开电路板的电源时,它可从启动镜像中启动.
启动镜像通常含有第一阶段引导加载程序、FPGA比特流(可选)、PMU固件、ATF和U-Boot.
执行下列命令,生成.
BIN格式的启动镜像.
petalinux-package--boot--formatBIN--fsblimages/linux/zynqmp_fsbl.
elf--u-bootimages/linux/u-boot.
elf--pmufwimages/linux/pmufw.
elf--fpgaimages/linux/*.
bit--forceINFO:FileinBOOTBIN:"/images/linux/zynqmp_fsbl.
elf"INFO:FileinBOOTBIN:"/images/linux/pmufw.
elf"INFO:FileinBOOTBIN:"/images/linux/system.
bit"INFO:FileinBOOTBIN:"/images/linux/bl31.
elf"INFO:FileinBOOTBIN:"/images/linux/u-boot.
elf"INFO:GeneratingzynqmpbinarypackageBOOT.
BIN.
.
.
对于详细的用途,请参见--help选项或《PetaLinux工具文档:PetaLinux命令行参考》(UG1157).
生成Zynq-7000器件的启动镜像本节仅用于Zynq-7000器件,描述如何生成BOOT.
BIN.
要求本节假定您已经构建了PetaLinux系统镜像.
如需了解更多信息,请参阅构建系统镜像.
生成启动镜像在执行此步骤之前,要确保您已构建了硬件比特流.
启动镜像可放入闪存或SD卡.
在您打开电路板的电源时,它可从启动镜像中启动.
启动镜像通常包含第一阶段启动加载器镜像、FPGA比特流(可选)和U-Boot.
第4章:设置和构建UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南24按照下面的步骤生成.
BIN格式的启动镜像.
$petalinux-package--boot--fsbl--fpga--u-boot有关详细用法,请参阅--help选项或《PetaLinux工具文档:PetaLinux命令行参考》(UG1157).
生成MicroBlaze处理器的启动镜像本节仅用于MicroBlaze处理器,描述如何生成MicroBlaze处理器的MCS文件.
要求本节假定您已经构建了PetaLinux系统镜像.
如需了解更多信息,请参阅构建系统镜像.
生成启动镜像执行下列命令,为MicroBlaze处理器生成MCS启动文件.
$petalinux-package--boot--fpga--u-boot--kernel它可在您的工作目录中生成boot.
mcs,然后被拷贝到/images/linux/目录中.
利用上述命令,MCS文件含有FPGA比特流、fs-boot、U-Boot和内核镜像image.
ub.
生成只具有fs-boot和FPGA比特流的MCS文件的命令:$petalinux-package--boot--fpga生成具有FPGA比特流、fs-boot和U-Boot的MCS文件的命令:$petalinux-package--boot--fpga--u-boot对于详细的用途,请参见--help选项或《PetaLinux工具文档:PetaLinux命令行参考》(UG1157).
生成MicroBlaze比特流文件要求本节假定您已经构建了PetaLinux系统镜像和FSBL.
如需了解更多信息,请参阅构建系统镜像.
第4章:设置和构建UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南25生成比特流执行下列命令,为MicroBlaze处理器生成比特流文件.
$petalinux-package--boot--fpga--fsbl--formatDOWNLOAD.
BIT这将在images/linux/目录中生成download.
bit.
利用以上命令,它将ELF数据映射到设计中的块RAM的内存映射信息(MMI),从而将fs-boot合并到FPGA比特流中.
对于详细的用途,请参见--help选项或参见《PetaLinux工具文档:PetaLinux命令行参考》(UG1157).
构建最优化本节描述PetaLinux工具的构建最优化技术.
禁用默认组件如果不需要,可以禁用默认组件.
禁用FSBL和PMU固件方式:取消选择"petalinux-config→LinuxComponentsSelection""FSBL→[]FirstStageBootLoader""PMUFW→[]PMUFirmware"取消选择这些组件将从默认构建流中删除这些组件.
注释:如果FSBL和PMU固件不是用PetaLinux构建的,则必须在赛灵思SDK中构建.
本地镜像服务器您可以在NFS或网络服务器上设置内部镜像,这样可以加快构建速度.
默认情况下,PetaLinux使用sstate-cache并从petalinux.
xilinx.
com下载镜像.
通过以下步骤处理PetaLinux中sstate的本地、NFS或内部网络服务器副本.
可以从下载区域下载sstate和PetaLinux.
表7:本地镜像服务器服务器描述downloads下载文件源位于http://petalinux.
xilinx.
com/sswreleases/rel-v${PETALINUX_VER}/downloadsaarch64ZynqUltraScale+MPSoCarmZynqUltraScale+MPSoCsstate镜像mb-fullMicroBlaze处理器sstate镜像mb-liteMicroBlaze设计sstate镜像注意!
如要用视频编解码器构建ZynqUltraScale+MPSoCPetaLinuxBSP,则必须通过petalinux.
xilinx.
com或本地访问该sstate.
第4章:设置和构建UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南26源镜像可以通过"petalinux-config→Yocto-settings→Addpre-mirrorURL"设置源镜像.
file:////downloads用于所有工程.
保存配置以使用下载镜像并验证build/conf/plnxtool.
conf中的变动.
例如:file:///proj/petalinux/released/Petalinux-v${PETALINUX_VER}/sstate-rel-v${PETALINUX_VER}/downloads.
减少构建时间如需通过禁用网络sstatefeeds来减少构建时间,请取消选择"petalinux-config→YoctoSettings→EnableNetworksstatefeeds".
SstateFeeds可以通过petalinux-config设置sstatefeeds.
NFS上的sstatefeeds:转到"petalinux-config→YoctoSettings→Localsstatefeedssettings"并输入sstate目录的完整路径.
启用此选项后,即可指向NFS/本地挂载点上可用的自有共享状态.
网络服务器上的sstatefeeds:转到"petalinux-config→YoctoSettings→EnableNetworksstatefeeds→NetworksstatefeedsURL"并输入sstatefeeds的URL.
注释:默认情况下,这设置到http://petalinux.
xilinx.
com/sswreleases/rel-v${PETALINUX_VER}/aarch64/sstate-cache.
构建忽略相依性默认镜像配置启用了initramfs.
这可产生多重相依性,比如:内核需要已为initramfs构建了RootFS构建RootFS的同时构建FSBL、PMU固件和ATF,因为它们都是完整镜像的一部分设备树需要内核报头U-Boot需要设备树,因为它使用Linux设备树编译您可以通过明确处理相依性来构建各个组件(petalinux-build-bcomponent).
应小心处理该选项,因为它可构建忽略其相依性的指定的配方/任务.
如果用户未明确解决相依性问题,该选项的使用可导致多重间歇式错误.
若要清理含有随机错误的工程,需使用petalinux-build-xmrproper.
initramfs模式PetaLinuxBSP的默认模式是initramfs模式.
该模式有多重相依性,比如:内核需要已为initramfs构建了RootFS构建RootFS的同时构建FSBL、PMU固件和ATF设备树需要内核报头U-Boot需要设备树,因为它使用Linux设备树编译因此,构建设备树即构建所有组件.
第4章:设置和构建UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南27例1:只构建设备树以下示例展示了从PetaLinx工程中生成设备树的步骤.
设备树配方依赖HDF、本机工具(dtc、python-yaml.
.
)以及内核报头.
建立命令为:1.
将HDF导入到工作空间:petalinux-config--get-hw-description=以上命令只能从外部地点将硬件设计拷贝到petalinuxproject/project-spec/hw-description/.
外部hdf是Yocto中的一个配方,可将HDF从该位置导入到Yocto工作空间.
所有HDF相依性配方都使用Yocto空间中的硬件设计.
默认情况下,该相依性在配方内部处理.
如果您在进行无相依性构建,则在硬件设计每次更新时,您都必须运行以下命令.
petalinux-build-cexternal-hdf2.
准备所有要求(本机实用程序).
该命令只需在首次时运行,只有在清理之后才需要重新运行petalinux-build-cdevice-tree-xdo_prepare_recipe_sysroot注释:在未来版本中,该功能被弃用.
利用petalinux-build-c-x来构建组件的单个任务,因为petalinux-build命令的一部分将被弃用.
3.
利用以下命令构建忽略相依性的设备树任务:petalinux-build-bdevice-tree该命令可构建可忽略所有相依性的设备树并将其部署在images/linux/目录中.
如果存在未满足的相依性,则会产生输出错误.
以上命令也可用于增量构建.
注释:以上各个命令需要利用-b选项运行.
您可以在一次运行中获得所有上述功能:petalinux-build-cdevice-tree.
它可自动取消所有相依性,从而导致构建更多相依性组件.
例2:只构建U-Boot以下示例展示了如何构建忽略相依性的U-Boot.
u-boot-xlnx配方依赖HDF、设备树和本机工具(mkimage、dtc.
)1.
由于其强制性,您无法跳过设备树相依性.
相反,您可以利用以上示例来构建设备树.
2.
为U-Boot配方建立本机工具.
若要这么做,使用下列命令:petalinux-build-cu-boot-xlnx-xdo_prepare_recipe_sysroot上述命令只需在首次运行或在每次清理后运行.
注释:在未来版本中,该功能被弃用.
利用petalinux-build-c-x来构建组件的单个任务,因为petalinux-build命令的一部分将被弃用.
3.
构建忽略相依性的U-Boot任务.
若要这么做,使用下列命令:petalinux-build-bu-boot-xlnx_2019.
1上述命令可构建images/linux中的U-Boot和封装.
-b选项需要配方的完整名称/路径;虚拟目标不起作用.
第4章:设置和构建UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南28表8:配方的路径配方路径kernel,virtual/kernellinux-xlnx_2019.
1u-boot,virtual/bootloaderu-boot-xlnx-2019.
1device-treedevice-tree利用以下命令查找配方的路径:petalinux-build-c"-evirtual/kernel"|grep"^FILE="用任何虚拟目标或配方名称替换虚拟/内核.
注释:petalinux-build-b需要用户明确满足所有要求.
petalinux-build-c自动处理所有相依性;不需要直接运行单个命令.
在未来版本要弃用的命令petalinux-build-crootfspetalinux-build-cpetalinux-build-xdistclean(forimage)petalinux-build-ccomponent-x,其中任务是获取、解包、编译等.
第4章:设置和构建UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南29第5章启动和封装封装预建镜像本节介绍了如何将新建镜像封装到预建目录中.
一般在您想要以BSP方式向其他用户分发您的工程时执行该步骤.
要求本节假定已满足了以下要求:对于Zynq-7000器件,已生成启动镜像.
如需了解更多信息,请参阅生成ZynqUltraScale+MPSoC的启动镜像.
对于MicroBlazeCPU,已生成系统镜像.
如需了解更多信息,请参阅构建系统镜像.
封装预构建镜像的步骤1.
切换到工程的根目录.
$cd2.
使用petalinux-package--prebuilt封装预构建镜像.
$petalinux-package--prebuilt--fpga有关详细用法,请参阅--help选项或《PetaLinux工具文档:PetaLinux命令行参考》(UG1157).
使用petalinux-boot命令处理预建镜像您可以使用petalinux-boot命令启动PetaLinux镜像.
在硬件电路板上使用--qemu选项和--jtag在软件仿真(QEMU)状态启动镜像.
本节介绍了预建选项的不同启动级别.
要求本节假设已封装预构建镜像.
如需了解更多信息,请参阅封装预建镜像.
第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南30预建选项的启动级别--prebuilt启动预建镜像(覆盖所有设置).
受支持的启动级别为1至3.
1级:下载预建FPGA比特流.
它启动ZynqUltraScale+MPSoC的FSBL和PMU固件.
它启动Zynq-7000器件的FSBL.
2级:下载预建FPGA比特流并启动预建U-Boot.
对于Zynq-7000器件:它在启动U-Boot之前启动FSBL.
对于ZynqUltraScale+MPSoC:它在启动U-Boot之前启动PMU固件、FSBL和ATF.
3级:对于MicroBlaze处理器:下载预建FPGA比特流并启动目标上的预建内核镜像.
对于Zynq-7000器件:下载预建FPGA比特流和FSBL、启动预建U-Boot并启动目标上的预建内核.
对于ZynqUltraScale+MPSoC:下载PMU固件、预建FSBL、预建内核、预建FPGA比特流、linux-boot.
elf、DTB以及目标上的预建ATF.
展示预建选项启动级别用途的示例:$petalinux-boot--jtag--prebuilt3启动QEMU上的PetaLinux镜像本节描述如何在软件仿真(QEMU)环境下启动PetaLinux镜像.
有关QEMU支持的赛灵思IP模型的详情,请参阅附录E:QEMU支持的赛灵思IP模型.
要求本节假定已满足了以下要求.
通过安装PetaLinuxBSP(请参阅PetaLinuxBSP安装)或自行构建PetaLinux工程(请参阅构建系统镜像)而拥有PetaLinux系统镜像.
如果打算使用--prebuilt选项进行QEMU启动,则需要将预先构建的镜像封装.
如需了解更多信息,请参阅封装预建镜像.
重要提示!
除非另有说明,PetaLinux工具命令必须在工程目录()中运行.
在QEMU上启动PetaLinux镜像的步骤PetaLinux提供QEMU支持,以便在不需要任何硬件的情况下在仿真环境中启用PetaLinux软件镜像的测试.
采用以下步骤利用QEMU测试PetaLinux参考设计:第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南311.
更改至您的工程目录并启动预建的Linux内核镜像:$petalinux-boot--qemu--prebuilt3如果您不希望使用预建能力进行QEMU启动,请参见用于QEMU上引导的其他选项.
--qemu选项可命令petalinux-boot启动QEMU,而不是通过JTAG启动真实的硬件.
--prebuilt3启动Linux内核,同时PMUFW在后台运行.
--prebuilt1执行1级(FPGA比特流)启动.
该选项对QEMU无效.
2级启动包括U-Boot.
3级启动包括预建Linux镜像.
如需了解更多有关预建选项的不同启动级别的信息,请参见使用petalinux-boot命令处理预建镜像.
在成功运行petalinux-kernel期间在控制台上显示的内核启动日志消息的示例如下所示:[10.
709243]Freeingunusedkernelmemory:5568K(ffffffc000c20000-ffffffc001190000)[13.
448003]udevd[1666]:startingversion3.
2[13.
458788]random:udevd:uninitializedurandomread(16bytesread)[13.
556064]udevd[1667]:startingeudev-3.
2[14.
045406]random:udevd:uninitializedurandomread(16bytesread)[37.
446360]random:dd:uninitializedurandomread(512bytesread)[40.
406936]IPv6:ADDRCONF(NETDEV_UP):eth0:linkisnotready[41.
460975]macbff0e0000.
etherneteth0:linkup(100/Full)[41.
474152]IPv6:ADDRCONF(NETDEV_CHANGE):eth0:linkbecomesready[44.
787172]random:dropbearkey:uninitializedurandomread(32bytesread)PetaLinux2019.
1xilinx-zcu102-2019_1/dev/ttyPS0xilinx-zcu102-2019_1login:rootPassword:root@xilinx-zcu102-2019_1:~#root@xilinx-zcu102-2019_1:~#2.
使用默认用户名root和密码root登录到PetaLinux.
提示:若要退出QEMU,同时按下"Ctrl+A",然后按下"X".
用于QEMU上引导的其他选项若要利用QEMU下载新构建的/images/linux/u-boot.
elf:$petalinux-boot--qemu--u-boot对于ZynqUltraScale+MPSoC,它加载/images/linux/u-boot.
elf并利用QEMU启动ATF镜像/images/linux/bl31.
elf.
然后ATF则启动已加载的U-Boot镜像.
利用petalinux-build构建系统镜像.
对于MicroBlazeCPU和Zynq-7000器件,它将利用QEMU启动/images/linux/u-boot.
elf.
若要利用QEMU下载新构建的内核:$petalinux-boot--qemu--kernel第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南32对于MicroBlaze处理器,它利用QEMU启动/images/linux/image.
elf.
对于Zynq-7000器件,它将利用QEMU启动/images/linux/zImage.
对于ZynqUltraScale+MPSoC,它利用QEMU加载内核镜像/images/linux/Image并启动ATF镜像/images/linux/bl31.
elf,然后ATF将启动已加载的内核镜像,同时PMU固件在后台运行.
注释:对于ZynqUltraScale+MPSoC内核引导,您需要建立pre-built/linux/images/文件夹并从任何ZynqUltraScale+MPSoCBSP工程中拷贝pmu_rom_qemu_sha3.
elf.
您还可以利用--pmu-qemu-args传递pmu_rom_qemu_sha3.
elf.
cdmkdir-ppre-built/linux/imagescp/pre-built/linux/images/pmu_rom_qemu_sha3.
elfpre-built/linux/images/或petalinux-boot--qemu--uboot--pmu-qemu-args"-kernelpmu_rom_qemu_sha3.
elf"在开机过程中,您会看到以登录提示结束的正常Linux启动进程,如下所示:[10.
709243]Freeingunusedkernelmemory:5568K(ffffffc000c20000-ffffffc001190000)[13.
448003]udevd[1666]:startingversion3.
2[13.
458788]random:udevd:uninitializedurandomread(16bytesread)[13.
556064]udevd[1667]:startingeudev-3.
2[14.
045406]random:udevd:uninitializedurandomread(16bytesread)[37.
446360]random:dd:uninitializedurandomread(512bytesread)[40.
406936]IPv6:ADDRCONF(NETDEV_UP):eth0:linkisnotready[41.
460975]macbff0e0000.
etherneteth0:linkup(100/Full)[41.
474152]IPv6:ADDRCONF(NETDEV_CHANGE):eth0:linkbecomesready[44.
787172]random:dropbearkey:uninitializedurandomread(32bytesread)PetaLinux2019.
1xilinx-zcu102-2019_1/dev/ttyPS0xilinx-zcu102-2019_1login:rootPassword:root@xilinx-zcu102-2019_1:~#root@xilinx-zcu102-2019_1:~#根据您测试的Linux镜像及其配置的不同,您看到的输出可能与上述所示略有不同.
当您看到仿真器控制台上出现登录提示时,请登录到虚拟系统中,登录名为root,密码为root.
尝试使用Linux命令,比如ls、ifconfig、cat/proc/cpuinfo,等等.
其反应与在真实硬件上相同.
在您完成后若要退出仿真器,请按下"Ctrl+A",松开后再按下"X"即可.
启动具体的Linux镜像:petalinux-boot工具利用镜像选项(-i或--image),也可启动具体的Linux镜像:$petalinux-boot--qemu--image例如:$petalinux-boot--qemu--image.
/images/linux/zImage第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南33利用具体DTB直接启动Linux镜像:设备树(DTB文件)用于描述Linux内核的硬件架构和地址映射.
PetaLinux系统仿真器还可利用DTB文件来动态配置仿真环境,以便与您的硬件平台匹配.
如果未提供DTB文件选项,petalinux-boot从给定的image.
elf中为MicroBlaze处理器、从/images/linux/system.
dtb中为Zynq-7000器件和ZynqUltraScale+MPSoC提取DTB文件.
此外,您还可以按如下方式使用--dtb选项:$petalinux-boot--qemu--image.
/images/linux/zImage--dtb.
/images/linux/system.
dtb注释:QEMU版本已升级到2.
6.
在新版本中旧选项已被弃用,但功能仍保持可用.
PetaLinux工具仍使用旧选项,因此会显示警告消息.
您可以忽略这些消息.
ZynqUltraScale+MPSoC:qemu-system-aarch64:-tftp/home/user/xilinx-zcu102-2019.
1/images/linux:The-tftpoptionisdeprecated.
Pleaseuse'-netdevuser,tftp=.
.
.
'instead.
g利用SD卡在硬件上启动PetaLinux镜像本节介绍了如何利用SD卡在硬件上启动PetaLinux镜像.
本节仅适用于ZynqUltraScale+MPSoC和Zynq-7000器件,因为它们可让您从SD卡启动.
要求本节假定已满足了以下要求:已在Linux工作站上安装PetaLinux工具.
如果尚未安装,请参阅安装步骤.
已在Linux工作站上安装PetaLinuxBSP.
如果尚未安装,请参阅PetaLinuxBSP安装.
已安装了minicom/kermit/gtkterm等串行通讯程序;串行通讯程序的波特率已被设置为115200bps.
使用SD卡启动硬件上PetaLinux镜像的步骤1.
将SD卡安装到主机上.
2.
将以下文件从/pre-built/linux/images/复制到SD卡中FAT32格式的第一分区根目录中:BOOT.
BINimage.
ub3.
将电路板上的串行端口连接到您的工作站.
4.
打开工作站上的控制台,并启动首选串行通信程序(例如:kermit、minicom、gtkterm),该控制台的波特率设置为115200.
5.
关闭电路板的电源.
6.
将电路板启动模式设定为SD启动.
请参阅电路板文件,了解详细信息.
第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南347.
将SD卡插入电路板.
8.
打开电路板的电源.
9.
查看串行控制台,将会看到如下启动信息:[5.
546354]clk:Notdisablingunusedclocks[5.
550616]ALSAdevicelist:[5.
553528]#0:DisplayPortmonitor[5.
576326]sd1:0:0:0:[sda]312581808512-bytelogicalblocks:(160GB/149GiB)[5.
583894]sd1:0:0:0:[sda]WriteProtectisoff[5.
588699]sd1:0:0:0:[sda]Writecache:enabled,readcache:enabled,doesn'tsupportDPOorFUA[5.
630942]sda:[5.
633210]sd1:0:0:0:[sda]AttachedSCSIdisk[5.
637897]Freeingunusedkernelmemory:512K(ffffffc000c20000-ffffffc000ca0000)INIT:version2.
88bootingStartingudev[5.
746538]udevd[1772]:startingversion3.
2[5.
754868]udevd[1773]:startingeudev-3.
2PopulatingdevcacheStartinginternetsuperserver:inetd.
Runningpostinst/etc/rpm-postinsts/100-sysvinit-inittab.
.
.
Runningpostinst/etc/rpm-postinsts/libglib-2.
0-0.
.
.
update-rc.
d:/etc/init.
d/run-postinstsexistsduringrc.
dpurge(continuing)INIT:Enteringrunlevel:5Configuringnetworkinterfaces.
.
.
[6.
607236]IPv6:ADDRCONF(NETDEV_UP):eth0:linkisnotreadyudhcpc(v1.
24.
1)startedSendingdiscover.
.
.
[7.
628323]macbff0e0000.
etherneteth0:linkup(1000/Full)[7.
633980]IPv6:ADDRCONF(NETDEV_CHANGE):eth0:linkbecomesreadySendingdiscover.
.
.
Sendingselectfor10.
10.
70.
1.
.
.
Leaseof10.
10.
70.
1obtained,leasetime600/etc/udhcpc.
d/50default:AddingDNS172.
19.
128.
1/etc/udhcpc.
d/50default:AddingDNS172.
19.
129.
1Done.
StartingDropbearSSHserver:Generatingkey,thismaytakeawhile.
.
.
Publickeyportionis:ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCxGtijKDWcJgnDxRCGiUPJJIMapFc0tcsCkMGyjJEDs9LRugWzgaa8XA+pGy4aTvZqHvGnFTvkMw4gZE/O+BBgO8mMK9dFei2BvENbljm8M4NotG5LXRCFDaw6bXBCtg4ekCKWNU6lUQU+PPdpmj9X+JgnTHnHnNB3jP6MrymCuS5wfFbyHfKdrwWXwfLmCycZr7DjRumee7T/3SrBU3oRJoLcCVj2lf5Z7673+rOT1GM3QFzO2HWCCzyz/3IUcEh9mhKpjzgs4iNEKmxwyi29rl37x7PD7zRsQbaW8uUtheCain3M1mjKfPnnygopdVh6IFsAT3FFMK4PYJ1GPL+hroot@xilinx-zcu102-zu9-es2-rev1_0-2019.
1Fingerprint:md5f2:ce:1d:f2:50:e6:e2:55:5a:96:6f:bc:98:8f:82:99dropbear.
Startingsyslogd/klogd:done第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南35Startingdomainwatchdogdaemon:xenwatchdogdstartupPetaLinux2019.
1xilinx-zcu102-zu9-es2-rev1_0-2019.
1/dev/ttyPS0xilinx-zcu102-zu9-es2-rev1_0-2019.
1login:rootPassword:root@xilinx-zcu102-zu9-es2-rev1_0-2019:~#提示:如果希望停止自动启动,在控制台显示类似于下面的消息时,请按任意键:Hitanykeytostopautoboot:10.
在串行控制台上输入用户名root和密码root登录到PetaLinux系统.
故障排除本节将描述使用SD卡启动硬件上的PetaLinux镜像时可能会遇到的一些常见问题.
表9:硬件上PetaLinux镜像故障排除描述/错误消息描述和解决方案WrongImageFormatforbootcommand.
ERROR:Can'tgetkernelimage!
问题描述此错误消息表明U-Boot引导加载程序无法找到内核镜像.
这很可能是因为bootcmd环境变量设置不正确.
解决方案:如要查看默认启动器件,请使用U-Boot控制台中的以下命令打印bootcmd环境变量.
U-Boot-PetaLinux>printbootcmd如果没有使用sdboot流运行,有以下几个选项:无需重建PetaLinux,设置bootcmd为从您期望的媒体启动,使用setenv命令.
至于SD卡启动,请按照如下方式设置环境变量.
U-Boot-PetaLinux>setenvbootcmd'runsdboot';saveenv运行petalinux-config设置从SD卡加载内核镜像.
如需了解更多信息,请参阅启动镜像存储配置.
重建PetaLinux并使用重建的U-Boot重新生成BOOT.
BIN,然后使用新的BOOT.
BIN启动电路板.
请参阅生成ZynqUltraScale+MPSoC的启动镜像了解如何生成BOOT.
BIN.
提示:如要更多了解U-Boot选项,请使用命令:$U-Boot-PetaLinux>printenv.
利用JTAG在硬件上启动PetaLinux镜像本节介绍了如何利用JTAG在硬件上启动PetaLinux镜像.
JTAG启动与XSDB通信,而XSDB与hw_server通信.
所用的TCP端口是3121;确保该端口的防火墙被禁用.
要求本节假定已满足了以下要求:通过安装PetaLinuxBSP(请参阅PetaLinuxBSP安装)或自行构建PetaLinux工程(请参阅构建系统镜像)而拥有PetaLinux系统镜像.
第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南36此为可选项,只有在希望使用JTAG启动的预构建功能时才需要.
拥有已封装预构建镜像(请参阅封装预建镜像).
已安装了minicom/kermit/gtkterm等串行通讯程序;串行通讯程序的波特率已被设置为115200bps.
已安装了适当的JTAG电缆驱动程序.
JTAG启动硬件上PetaLinux镜像的步骤1.
关闭电路板的电源.
2.
将带有JTAG电缆的电路板上的JTAG端口连接到工作站.
3.
将电路板上的串行端口连接到您的工作站.
4.
如果系统有以太网,也要将电路板上的以太网端口连接到本地网络.
5.
对于Zynq-7000器件电路板,请确保模式开关设置为JTAG模式.
请参阅电路板文件,了解详细信息.
6.
打开电路板的电源.
7.
打开工作站上的控制台,并启动首选串行通信程序(例如:kermit、minicom),该控制台的波特率设置为115200.
8.
在工作站上运行petalinux-boot命令,如下所示:$petalinux-boot--jtag--prebuilt3注释:如果不希望使用JTAG启动预构建功能,请参阅使用JTAG启动的其他选项.
--jtag选项告诉petalinux-boot通过JTAG在硬件上启动,而--prebuilt3选项则启动Linux内核.
等待命令控制台出现shell提示符,表明命令完成.
注释:如需了解更多有关预建选项的不同启动级别的信息,请参见使用petalinux-boot命令处理预建镜像.
工作站命令控制台上显示petalinux-boot成功的消息示例如下所示:INIT:Enteringrunlevel:5Configuringnetworkinterfaces.
.
.
[6.
607236]IPv6:ADDRCONF(NETDEV_UP):eth0:linkisnotreadyudhcpc(v1.
24.
1)startedSendingdiscover.
.
.
[7.
628323]macbff0e0000.
etherneteth0:linkup(1000/Full)[7.
633980]IPv6:ADDRCONF(NETDEV_CHANGE):eth0:linkbecomesreadySendingdiscover.
.
.
Sendingselectfor10.
10.
70.
1.
.
.
Leaseof10.
10.
70.
1obtained,leasetime600/etc/udhcpc.
d/50default:AddingDNS172.
19.
128.
1/etc/udhcpc.
d/50default:AddingDNS172.
19.
129.
1Done.
StartingDropbearSSHserver:Generatingkey,thismaytakeawhile.
.
.
Publickeyportionis:ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCxGtijKDWcJgnDxRCGiUPJJIMapFc0tcsCkMGyjJEDs9LRugWzgaa8XA+pGy4aTvZqHvGnFTvkMw4gZE/O+BBgO8mMK9dFei2BvENbljm8M4NotG5LXRCFDaw6bXBCtg4ekCKWNU6lUQU+PPdpmj9X+JgnTHnHnNB3jP6MrymCuS5wfFbyHfKdrwWXwfLmCycZr7DjRumee7T/3SrBU3oRJoLcCVj2lf5Z7673+rOT1GM3QFzO2HWCCzyz/3IUcEh9mhKpjzgs4iNEKmxwyi29rl37x7PD7zRsQbaW8uUtheCain3M1mjKfPnnygopdVh6IFsAT3FFMK4PYJ1GPL+hroot@xilinx-zcu102-zu9-es2-第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南37rev1_0-2019.
1Fingerprint:md5f2:ce:1d:f2:50:e6:e2:55:5a:96:6f:bc:98:8f:82:99dropbear.
Startingsyslogd/klogd:doneStartingdomainwatchdogdaemon:xenwatchdogdstartupPetaLinux2019.
1xilinx-zcu102-zu9-es2-rev1_0-2019.
1/dev/ttyPS0xilinx-zcu102-zu9-es2-rev1_0-2019.
1login:rootPassword:root@xilinx-zcu102-zu9-es2-rev1_0-2019:~默认情况下,使用DHCP设置PetaLinux参考设计的网络设置.
所看到的输出可能与上面的示例略有不同,这取决于所测试的PetaLinux参考设计.
9.
在串行控制台上输入用户名root和密码root登录到PetaLinux系统.
10.
在系统控制台上运行ifconfig来确定PetaLinux的IP地址.
使用JTAG启动的其他选项如要下载比特流到目标电路板:$petalinux-boot--jtag--fpga--bitstream如要下载新构建的/images/linux/u-boot.
elf到目标电路板:$petalinux-boot--jtag--u-boot如要下载新构建的内核到目标电路板:$petalinux-boot--jtag--kernel对于MicroBlaze处理器,这将启动目标电路板上的/images/linux/image.
elf.
对于ZynqUltraScale+MPSoC,这将启动目标电路板上的/images/linux/Image.
对于Zynq-7000器件,这将启动目标电路板上的/images/linux/zImage.
如要用--fpga--bitstream选项下载带比特流的镜像:$petalinux-boot--jtag--u-boot--fpga--bitstream以上命令下载比特流,然后下载U-Boot镜像.
如要用-v选项查阅JTAG启动的详细输出:$petalinux-boot--jtag--u-boot-v记录JTAG启动时的Tcl/XSDB使用以下命令记录JTAG启动期间使用的XSDB命令.
它将Tcl脚本(然后调用XSDB命令)数据转储到test.
txt.
$cd$petalinux-boot--jtag--prebuilt3--tcltest.
txt第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南38故障排除本节描述JTAG启动硬件上的PetaLinux镜像时可能会遇到的一些常见问题.
表10:JTAG启动硬件上PetaLinux镜像故障排除描述/错误消息描述和解决方案ERROR:Thistoolrequires'xsdb'anditismissing.
PleasesourceXilinxToolssettingsfirst.
问题描述此错误消息表明PetaLinux工具无法找到作为赛灵思Vivado或SDK工具一部分的xsdb工具.
解决方案:必须建立Vivado工具工作环境.
如需了解更多信息,请参阅PetaLinux工作环境建立.
在试图启动硬件上的U-Boot或内核时看不到任何控制台输出,但在QEMU上启动正确.
问题描述这个问题通常由以下一种或多种原因引起:串行通信终端应用的波特率设置错误.
硬件和软件平台之间不匹配.
解决方案:确保终端应用波特率正确,并与硬件配置相符.
确保使用正确的硬件平台构建PetaLinux工程.
正确导入硬件配置(请参阅导入硬件配置).
检查"SubsystemAUTOHardwareSettings→"子菜单,确保与硬件平台匹配.
检查"SubsystemAUTOHardwareSettings→"的"Serialsettings→"子菜单下,确保stdout,stdin设定了正确的UARTIP核.
重新构建系统镜像(请参阅构建系统镜像).
使用TFTP启动硬件上的PetaLinux镜像本节描述如何使用普通文件传输协议(TFTP)启动PetaLinux镜像.
TFTP启动可节省大量时间,因为比JTAG启动快很多,而且不必为内核源中的每次更改都刷新镜像.
要求本节假定已满足了以下要求:已建立TFTP服务器的主机环境,也构建了TFTP启动的PetaLinux镜像.
如需了解更多信息,请参阅设置TFTP启动.
您已封装了预建镜像.
如需了解更多信息,请参阅封装预建镜像.
已安装了minicom/kermit/gtkterm等串行通讯程序;串行通讯程序的波特率已被设置为115200bps.
在主机和Linux目标之间已正确建立了以太网连接.
已安装了适当的JTAG电缆驱动程序.
第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南39在具有TFTP的硬件上启动PetaLinux镜像1.
关闭电路板的电源.
2.
使用JTAG电缆将电路板上的JTAG端口连接到工作站.
3.
将电路板上的串行端口连接到您的工作站.
4.
通过网络开关将电路板上的以太网端口连接到局域网.
5.
对于Zynq-7000器件和ZynqUltraScale+MPSoC器件电路板,要确保模式开关被设置为JTAG模式.
请参阅电路板文件,了解详细信息.
6.
打开电路板的电源.
7.
打开您工作站上的控制台,启动首选串行通讯程序(例如,kermit、minicom),将该控制台上的波特率设定为115200.
8.
在您的工作站上按如下所示运行petalinux-boot命令$petalinux-boot--jtag--prebuilt2--jtag选项命令petalinux-boot通过JTAG在硬件上启动,同时--prebuilt2选项下载预建的比特流(以及Zynq-7000器件的FSBL)至目标电路板,然后在目标电路板上启动预建的U-Boot.
9.
当自动启动开始时,可按下任意键停止.
成功U-Boot下载的工作站控制台输出示例如下:U-Boot2019.
01-07106-gec1e403dd6(Apr292019-09:12:44+0000)Board:XilinxZynqMPI2C:readyDRAM:4GiBELLevel:EL2ChipID:xczuunknMMC:Carddidnotrespondtovoltageselect!
sdhci@ff170000-probefailed:-95Carddidnotrespondtovoltageselect!
zynqmp_qspi_ofdata_to_platdata:CLK104156250SF:Detectedn25q512awithpagesize512Bytes,erasesize128KiB,total128MiB***Warning-badCRC,usingdefaultenvironmentIn:serialOut:serialErr:serialBootmode:JTAG_MODENet:ZYNQGEM:ff0e0000,phyaddrc,interfacergmii-idWarning:ethernet@ff0e0000MACaddressesdon'tmatch:AddressinSROMisff:ff:ff:ff:ff:ffAddressinenvironmentis00:0a:35:00:22:01eth0:ethernet@ff0e0000U-BOOTforxilinx-zcu102-2019_1BOOTPbroadcast1DHCPclientboundtoaddress10.
0.
2.
15(2ms)Hitanykeytostopautoboot:0ZynqMP>第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南4010.
检查TFTP服务器IP地址是否设定为镜像所在的主机的IP地址.
这可使用以下命令完成:ZynqMP>printserverip11.
使用以下命令将服务器IP地址设定为主机的IP地址:ZynqMP>setserverip;saveenv12.
使用以下命令启动内核:ZynqMP>runnetboot故障排除表11:具有TFTP的硬件上的PetaLinux镜像描述/错误消息描述和解决方案Error:"serverip"notdefined.
问题描述该错误消息表示U-Boot环境变量serverip未设置.
您必须将其设置为镜像所在的主机的IP地址.
解决方案:使用以下命令设置serverip:ZynqMP>setserverip;saveenvBSP封装BSP对于团队和客户之间的分发非常有用.
自定义的PetaLinux工程可以通过BSP交付给下一个级别的团队或外部客户.
本节将举例说明如何何用PetaLinux工程封装BSP.
要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
步骤BSP封装有关如何封装工程以便向WTS提交进行调试的步骤如下:1.
您可以前往PetaLinux工程目录外部来运行petalinux-package命令.
2.
使用以下命令来封装BSP.
$petalinux-package--bsp-p--outputMY.
BSP这将生成MY.
BSP,包括来自指定工程的下列要素:/project-spec//config.
project/.
petalinux/第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南41/pre-built//.
gitignore/components附加BSP封装选项1.
BSP封装包含硬件资源.
$petalinux-package--bsp-p--hwsource--outputMY.
BSP它不会修改指定的PetaLinux工程.
它会将指定的硬件工程源放入MY.
BSP存档中的/hardware/中.
2.
BSP封装包含其他资源.
搜索路径支持已被废弃.
你需要将其他资源拷贝到components/ext_sources目录下.
如需了解更多信息,请参阅将外部内核和U-Boot用于PetaLinux.
必须对BSP进行封装.
第5章:启动和封装UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南42第6章升级工作空间PetaLinux工具系统软件组件(嵌入式SW、ATF、Linux、U-Boot、OpenAMP和Yocto框架)和主机工具组件(VivadoDesignSuite、赛灵思软件开发套件(SDK)、HSI以及更多组件).
若要升级至最新的系统软件组件,您必须安装相应的主机工具(Vivado).
例如,如果您拥有随2019.
1版本配套的4.
18内核,但您想要升级至随2019.
2版本配套的4.
19内核,您必须安装2019.
2PetaLinux工具和2019.
2Vivado硬件工程.
petalinux-upgrade命令可在无需更改主机工具组件的情况下升级系统软件组件,从而解决该问题.
升级系统软件组件共有两步:第一步,升级已安装PetaLinux工具,然后升级单个PetaLinux工程.
这可让您在不安装最新版Vivado硬件工程或XSDK的情况下升级.
注释:petalinux-upgrade是2019.
1版本中新采用的新命令.
重要提示!
该升级命令仅对微小升级有效.
这意味着,尽管您能够使用petalinux-upgrade从2019.
1升级至2019.
2,但您不能使用此命令从2019.
1升级至2020.
1.
petalinux-upgrade选项表12:petalinux-upgrade选项选项功能描述值范围默认范围-h--help显示使用信息.
无无-f--file目标系统软件组件的本地路径.
用户指定.
目录结构应为:无-u--url目标系统软件组件的URL.
用户指定.
URL应为:无-w,--wget-args将其他wget实参传递到命令.
其他wget选项无升级PetaLinux工具从本地文件升级从服务器URLhttp://petalinux.
xilinx.
com/sswreleases/rel-v2019/下载目标系统软件组件内容.
petalinux-upgrade命令将下载的路径作为输入.
UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南431.
如果您还未安装,请安装该工具.
注释:确保安装区域可写入.
2.
使用cd切换到已安装的PetaLinux工具的目录.
3.
输入:sourcesettings.
sh.
4.
输入命令:petalinux-upgrade-f.
实例:petalinux-upgrade-f"/scratch/ws/upgrade-workspace/eSDK"注释:此选项用于脱机升级.
从远程服务器中升级按照这些步骤从远程服务器中升级已安装的工具目标系统软件组件.
1.
如果您还未安装,请安装该工具.
注释:该工具应具有R/W权限.
2.
前往已安装的工具.
3.
键入:sourcesettings.
sh.
4.
输入命令:petalinux-upgrade-u.
实例:petalinux-upgrade-u"http://petalinux.
xilinx.
com/sswreleases/rel-v2019/sdkupdate/"重要提示!
当前版本仅支持小型版本升级.
升级PetaLinux工程利用升级工具升级现有工程利用以下步骤使用升级工具升级现有工程.
1.
升级工具.
从本地文件中升级,请参见从本地文件升级.
从远程服务器中升级,请参见从远程服务器中升级.
2.
前往您要升级的PetaLinux工程.
3.
输入命令:petalinux-build-xmrproper.
4.
输入命令:petalinux-build,利用所有新的系统组件升级工程.
使用升级后的工具创建新工程通过以下步骤使用升级后的工具创建新工程.
第6章:升级工作空间UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南44注意!
建议使用最新的VivadoDesignSuite和PetaLinux工具创建新工程.
仅当您需要最新的ssw组件,但却是较早版本的Vivado硬件工程时,才使用以下选项.
1.
升级工具.
从本地文件中升级,请参见从本地文件升级.
从远程服务器中升级,请参见从远程服务器中升级.
2.
创建PetaLinux工程.
3.
使用petalinux-build命令构建包含所有新系统组件的工程.
第6章:升级工作空间UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南45第7章自定义工程固件版本设置本节解释如何使用petalinux-config命令配置固件版本.
要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
固件版本配置步骤1.
更改至您的PetaLinux工程根目录中.
$cd2.
启动顶层系统配置菜单.
$petalinux-config3.
选择"FirmwareVersionConfiguration".
4.
按要求选择主机名称、产品名称、固件版本以进行编辑.
5.
在看到问题:"您是否希望保存您的新配置"时,退出菜单并选择.
6.
一旦目标被启动,请验证cat/etc/hostname中的主机名称、cat/etc/petalinux/product中的产品名称以及cat/etc/petalinux/version中的固件版本.
根文件系统类型配置本节详细介绍了使用petalinux-config命令进行RootFS类型配置的内容.
要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
第7章:自定义工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南46步骤根文件系统类型设置1.
更改至您的PetaLinux工程根目录中.
$cd2.
启动顶层系统配置菜单.
$petalinux-config3.
选择"ImagePackagingConfiguration→RootFileSystemType".
4.
按要求选择"INITRAMFS"/"INITRD"/"JFFS2"/"NFS"/"SDcard".
注释:SD启动功能预期将RootFS加载到ext4分区,所有其他启动镜像加载到FAT32分区.
5.
保存设置.
启动镜像存储配置本节提供有关启动器件配置的详细信息,例如闪存和SD/MMC使用petalinux-config命令.
要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
步骤启动镜像设置1.
更改至您的PetaLinux工程根目录中.
$cd2.
启动顶层系统配置菜单.
$petalinux-config3.
选择"SubsystemAUTOHardwareSettings→AdvancedBootableImagesStorageSettings".
4.
在高级可引导镜像存储设置子菜单中,您拥有如下选项:"bootimagesettings"(BOOT.
BIN-FSBL,PMU固件,ATF,U-Boot)按要求选择根器件若要将闪存设置为根器件,则选择"primaryflash".
若要将SD卡作为根器件,则选择"primarysd".
"u-bootenvpartitionsettings""kernelimagesettings"(image.
ub-Linux内核,DTB和RootFS)按要求选择存储器件.
若要将闪存设置为根器件,则选择"primaryflash".
第7章:自定义工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南47若要将SD卡作为根器件,则选择"primarysd".
"jffs2RootFSimagesettings""DTBsettings"故障排除本节描述配置启动器件时可能遇到的一些常见问题.
表13:启动镜像存储故障排除描述/错误消息描述和解决方案ERROR:Failedtoconfiglinux/kernel!
问题描述此错误消息表明无法使用menuconfig设置linux内核组件.
解决方案:检查所有必需的库/软件包是否安装正确.
如需了解更多信息,请参阅安装要求.
主闪存分区配置本节详细介绍如何使用PetaLinuxmenuconfig设置闪存分区.
1.
更改至您的PetaLinux工程根目录中.
$cd2.
启动顶层系统配置菜单.
$petalinux-config3.
选择"SubsystemAUTOHardwareSettings→FlashSettings".
4.
选择一个闪存器件作为主闪存.
5.
设置每个分区的名称和大小.
注释:PetaLinux工具使用'boot'、'bootenv'和'kernel'.
'boot'存储''BOOT.
BIN'.
'bootenv'存储u-bootenvvars.
'kernel'存储'image.
ub'.
PetaLinux工具使用并行闪存的起始地址或SPI闪存的起始偏移以及上述分区的大小来生成以下U-Boot命令:update_boot,如果启动镜像(MicroBlaze处理器的U-Boot镜像和Zynq-7000器件的BOOT.
BIN镜像)被选定存储在主闪存中.
update_kernel和load_kernel,如果内核镜像(FIT镜像image.
ub)被选定存储在闪存中.
管理镜像大小在嵌入式环境中,重要的是减小存储在闪存中的内核镜像大小以及RAM中内核镜像的静态大小.
本节介绍了config项目对内核大小和RAM使用的影响.
第7章:自定义工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南48FIT镜像是默认可引导镜像格式.
默认情况下,FIT镜像由内核镜像、DTB和RootFS镜像组成.
要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
管理镜像大小的步骤可以通过以下方法减小FIT镜像的大小:1.
使用以下命令启动RootFS配置菜单:$cd$petalinux-config-crootfs2.
选择"FileSystemPackages".
在此子菜单下,可以找到与RootFS包对应的选项列表.
如果不需要某些软件包,可以通过禁用来缩小RootFS镜像的大小.
3.
使用以下命令启动内核配置菜单:$cd$petalinux-config-ckernel4.
选择"GeneralSetup".
在此子菜单下,可以找到设置config项的选项.
可以禁用系统中不强制包含的任何项,以减小内核镜像的大小.
例如:CONFIG_SHMEM,CONFIG_AIO,CONFIG_SWAP,CONFIG_SYSVIPC.
如需了解更多详情,请参阅Linux内核文档.
注释:请注意,禁用某些config项可能会导致启动不成功.
在禁用之前,应该了解config项.
包含额外的config项和文件系统包分别会增加内核镜像大小和RootFS大小.
如果内核或RootFS的大小增加,并且大于128MB,则需要执行以下操作:a.
在/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.
h中提到Bootm长度.
#defineCONFIG_SYS_BOOTM_LENb.
取消CONFIG_SYS_BOOTMAPSZ在/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.
h中的定义.
配置INITRDBOOT初始RAM磁盘(INITRD)提供了在PetaLinux开机过程期间利用引导加载程序加载RAM磁盘的能力.
Linux内核将其作为RootFS载入,并启动初始化流程.
本节介绍了配置INITRD启动的程序.
第7章:自定义工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南49要求本节假设已创建新的PetaLinux工程(请参阅创建新的PetaLinux工程)并已导入硬件平台(请参阅导入硬件配置).
步骤设置INITRD启动1.
设置RootFS类型为INITRD.
如需了解更多信息,请参阅根文件系统类型配置.
2.
设置RAMDISKloadaddr.
确保loadaddr不与内核或DTB地址重叠,并且是有效的DDR地址.
3.
构建系统镜像.
如需了解更多信息,请参阅构建系统镜像.
4.
使用以下方法之一来启动系统镜像:a.
利用SD卡在硬件上启动PetaLinux镜像,请参见利用SD卡在硬件上启动PetaLinux镜像.
b.
利用JTAG在硬件上启动PetaLinux镜像,请参见利用JTAG在硬件上启动PetaLinux镜像.
确保您已在主机中配置TFTP服务器.
在U-Boot提示符下,使用以下命令设置服务器IP地址为主机IP地址:ZynqMP>setserverip;saveenv使用以下命令读取镜像:ZynqMP>tftpbsystem.
dtb;tftpbImage;tftpbrootfs.
cpio.
gz.
u-boot.
使用以下命令启动镜像:ZynqMP>booti重要提示!
PetaLinux的默认RootFS是INITRAMFS.
在INITRD模式下,内核镜像中不包含RootFS.
设置INITRAMFS启动初始RAM文件系统(INITRAMFS)是INITRD的继任者.
在PetaLinux开机过程中,加载到内存中的是初始文件系统的cpio存档.
Linux内核将其作为RootFS载入,并启动初始化流程.
本节介绍了配置INITRAMFS启动的程序.
要求本节假设已创建新的PetaLinux工程(请参阅创建新的PetaLinux工程)并已导入硬件平台(请参阅导入硬件配置).
步骤设置INITRAMFS启动1.
将RootFS类型设置为INITRAMFS.
如需了解更多信息,请参阅根文件系统类型配置.
第7章:自定义工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南502.
构建系统镜像.
如需了解更多信息,请参阅构建系统镜像.
3.
利用以下方法之一启动系统镜像.
a.
在QEMU上启动PetaLinux镜像,请参见启动QEMU上的PetaLinux镜像.
b.
利用SD卡在硬件上启动PetaLinux镜像,请参见利用SD卡在硬件上启动PetaLinux镜像.
c.
利用JTAG在硬件上启动PetaLinux镜像,请参见利用JTAG在硬件上启动PetaLinux镜像.
重要提示!
PetaLinux的默认RootFS是INITRAMFS.
在INITRAMFS模式中,RootFS被包含在内核镜像中.
镜像→镜像(内核)+rootfs.
cpio(用于ZynqUltraScale+MPSoC)zImage→zImage(内核)+rootfs.
cpio(用于Zynq-7000器件)image.
elf→simpleImage.
mb(内核)+rootfs.
cpio(用于MicroBlaze处理器)随着您选择RootFS组件,其大小按比例增加.
设置TFTP启动本节描述如何为TFTP启动设置主机和PetaLinux镜像.
TFTP启动可节省大量时间,因为比JTAG启动快很多,而且不必为内核源中的每次更改都刷新镜像.
要求本节假定已满足了以下要求:您已创建了一个新的PetaLinux工程(参见创建新的PetaLinux工程)并导入了硬件平台(参见导入硬件配置).
主机上有TFTP服务器在运行.
PetaLinux设置和构建系统镜像为TFTP启动配置PetaLinux并构建系统镜像的步骤如下:1.
更改至您的PetaLinux工程根目录中.
$cd2.
启动顶层系统配置菜单.
$petalinux-config3.
选择"ImagePackagingConfiguration".
4.
选择"Copyfinalimagestotftpboot"并设置tftpboot目录.
默认情况下,TFTP目录ID为/tftpboot.
确保它与您主机的TFTP服务器建立相匹配.
5.
按构建系统镜像中的说明保存配置设置和构建系统.
第7章:自定义工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南51设置NFS启动Linux系统最重要的组件之一是根文件系统.
正确开发的根文件系统可为您提供在PetaLinux工程上工作的有用工具.
因为根文件系统在规模上可变得很大,因此难以在闪存中存储.
最方便的方式是从网络中安装整个根文件系统,以便主机系统和目标共享相同的文件.
根文件系统可以被快速修改,而且在联机时也可被修改(意味着即使系统在运行时也可修改文件系统).
建立一个上述系统的最常见方法是通过NFS.
使用NFS的情况下,不需要手动刷新新文件.
要求本节假定已满足了以下要求:您已创建了一个新的PetaLinux工程(参见创建新的PetaLinux工程)并导入了硬件平台(参见导入硬件配置).
拥有Linux文件和目录权限.
主机上已安装NFS服务器.
假设在本例中设置为/home/NFSshare.
PetaLinux设置和构建系统镜像为NFS启动配置PetaLinux和构建系统镜像的步骤如下:1.
更改至您的PetaLinux工程根目录中.
$cd2.
启动顶层系统配置菜单.
$petalinux-config3.
选择"ImagePackagingConfiguration→RootFileSystemType".
4.
选择"NFS"作为RootFS类型.
5.
选择"LocationofNFSrootdirectory"并将其设置到/home/NFSshare.
6.
退出菜单配置并保存配置设置.
自动生成的DTSI中的启动实参将自动更新.
您可以检查/components/plnx_workspace/device-tree/device-tree/plnx_aarch64-system.
dts.
7.
启动内核配置菜单.
$petalinux-config-ckernel8.
选择"Networkingsupport→IP:kernellevelconfiguration".
"IP:DHCPsupport""IP:BOOTPsupport""IP:RARPsupport"9.
选择NFS上的"Filesystems→Networkfilesystems→Rootfilesystems"10.
构建系统镜像.
注释:如需了解更多信息,请参阅构建系统镜像.
第7章:自定义工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南5211.
您只能在构建之后才能查看更新后的启动实参.
NFS启动对于NFS启动,RootFS是通过NFS,而非启动加载程序(FSBL、比特流、U-Boot)挂载的,可以使用下面提到的各种方法下载内核.
1.
JTAG:在此情况下,启动加载程序和内核将通过JTAG下载到目标上.
如需了解更多信息,请参阅利用JTAG在硬件上启动PetaLinux镜像.
提示:如果希望使用预构建的功能进行JTAG启动,请将镜像封装到预构建的目录中.
如需了解更多信息,请参阅封装预建镜像.
1.
tftpboot:在此情况下,启动加载程序将通过JTAG下载,内核将通过tftpboot下载到到目标上.
如需了解更多信息,请参阅使用TFTP启动硬件上的PetaLinux镜像.
2.
SD卡:在此情况下,启动加载程序(BOOT.
BIN)和内核镜像(image.
ub)将复制到SD卡,并将从SD卡下载.
如需了解更多信息,请参阅利用SD卡在硬件上启动PetaLinux镜像.
设置JFFS2启动日志登载闪存文件版本2或JFFS2是一种供闪存器件使用的日志结构的文件系统.
本节介绍了配置JFFS2启动的程序.
要求本节假设已创建新的PetaLinux工程(请参阅创建新的PetaLinux工程)并已导入硬件平台(请参阅导入硬件配置).
步骤设置JFFS2启动1.
将RootFS类型设置为JFFS2.
如需了解更多信息,请参阅根文件系统类型配置.
2.
将主闪存设置为启动器件和启动镜像存储.
如需了解更多信息,请参阅启动镜像存储配置和主闪存分区配置.
3.
构建系统镜像.
如需了解更多信息,请参阅构建系统镜像.
4.
利用JTAG在硬件上启动PetaLinux镜像,请参见利用SD卡在硬件上启动PetaLinux镜像.
5.
确保您已在主机中配置TFTP服务器.
6.
在U-Boot提示出现时,使用以下命令将服务器IP地址设定为主机的IP地址.
ZynqMP>setserverip;saveenva.
检测闪存.
ZynqMP>sfprobe000b.
擦除闪存.
ZynqMP>sferase00x5000000第7章:自定义工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南53c.
将镜像读取到内存上并写入闪存.
读取BOOT.
BIN.
ZynqMP>tftpboot0x80000BOOT.
BIN写入BOOT.
BIN.
ZynqMP>sfwrite0x800000实例:sfwrite0x8000000x10EF48读取image.
ub.
ZynqMP>tftpboot0x80000image.
ub写入image.
ub.
ZynqMP>sfwrite0x80000实例:sfwrite0x800000x5800000x6cb0e4读取rootfs.
jffs2.
ZynqMP>tftpboot0x80000rootfs.
jffs2写入rootfs.
jffs2.
ZynqMP>sfwrite0x80000实例:sfwrite0x800000x19800000x7d4000注释:检查system.
dts内部的内核和RootFS加载地址.
7.
启用电路板上的QSPI闪存启动模式.
8.
复位电路板(启动将从闪存开始).
配置SD卡ext文件系统启动要求本节假定已满足了以下要求:您已创建了一个新的PetaLinux工程(参见创建新的PetaLinux工程)并导入了硬件平台(参见导入硬件配置).
一张至少有4GB存储空间的SD存储卡.
建议使用速度等级为6或以上的卡,以获得最佳的文件传输性能.
准备SD卡准备SD卡用于启动PetaLinuxSD卡ext文件系统的步骤:1.
使用分区编辑器(如gparted)将SD卡格式化为两个分区.
第7章:自定义工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南542.
第一个分区的大小应该至少为60MB,并格式化为FAT32文件系统.
确保分区之前有4MB的空闲空间.
第一个分区将包含引导加载程序、设备树和内核镜像.
将这个分区标记为BOOT.
3.
第二个分区应该格式化为ext4文件系统,可以占用SD卡上剩余的空间.
这个分区将存储系统根文件系统.
将这个分区标记为RootFS.
为获得最佳性能,请确保SD卡分区为4MB对齐.
PetaLinux设置和构建系统镜像为SD卡ext文件系统启动和构建系统镜像而配置PetaLinux的步骤如下:1.
更改至您的PetaLinux工程根目录中.
$cd2.
启动顶层系统配置菜单.
$petalinux-config3.
选择"ImagePackagingConfiguration→Rootfilesystemtype".
4.
选择"SDcard"作为RootFS类型.
5.
退出菜单配置并保存配置设置.
注释:启动实参将在/components/plnx_workspace/device-tree/device-tree/system-conf.
dtsi中自动更新.
这些更改只有在构建之后才予以反映.
6.
构建PetaLinux镜像.
如需了解更多信息,请参阅构建系统镜像.
7.
生成启动镜像.
如需了解更多信息,请参阅生成ZynqUltraScale+MPSoC的启动镜像.
8.
生成的rootfs.
tar.
gz文件将出现在images/linux目录中.
若要提取,请使用tarxvfrootfs.
tar.
gz.
拷贝镜像文件本节介绍了如何向SD卡分区拷贝图像文件.
假设有两个分区被安装到/media/BOOT和/media/rootfs.
1.
更改至您的PetaLinux工程根目录中.
$cd2.
将BOOT.
BIN和image.
ub拷贝至SD卡的BOOT分区.
image.
ub文件将具有设备树和内核镜像文件.
$cpimages/linux/BOOT.
BIN/media/BOOT/$cpimages/linux/image.
ub/media/BOOT/3.
将rootfs.
tar.
gz文件拷贝至SD卡的RootFS分区并提取文件系统.
$sudotarxvfrootfs.
tar.
gz-C/media/rootfs为了启动此SD卡ext镜像,请参见利用SD卡在硬件上启动PetaLinux镜像.
第7章:自定义工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南55故障排除表14:配置SD卡ext文件系统启动描述/错误消息描述和解决方案EXT4-fs(mmcblk0p2):mountedfilesystemwithordereddatamode.
Opts:(null)Kernelpanic-notsyncing:Noworkinginitfound.
问题描述该消息表示Linux内核无法加载EXT4文件系统,也无法查找工作初始化文件.
解决方案:提取SD卡的RootFS分区中的RootFS.
如需了解更多信息,请参阅拷贝镜像文件.
第7章:自定义工程UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南56第8章自定义Rootfs包含预构建库本节解释如何将预先编译完成的库包含到PetaLinux根文件系统中.
如果某个库是在PetaLinux之外开发的,您可能只想将这个库添加到PetaLinux根文件系统中.
在此情况下,创建一个应用模板,允许将现有内容复制到目标文件系统.
如果应用/库/模块名称有"_",请参阅含有"_"的配方名称.
要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
包含预构建应用的步骤如果预构建应用名称为mylib.
so,通过以下步骤可以将其包含到PetaLinux根文件系统中.
1.
确保已为PetaLinux目标架构编译了预编译代码,例如MicroBlaze处理器、Arm核等.
2.
使用以下命令创建应用.
$petalinux-create-tapps--templateinstall--namemylib--enable3.
更改为新创建的应用程序目录.
$cd/project-spec/meta-user/recipes-apps/mylib/files/4.
删除现有的mylib文件,并将制预构建的mylib.
so复制到mylib/files目录.
$rmmylib$cp.
/5.
编辑/project-spec/meta-user/recipes-apps/mylib/mylib.
bb.
该文件看起来应该像下面这样.
#Thisfileisthelibsrecipe.
#SUMMARY="Simplelibsapplication"SECTION="PETALINUX/apps"LICENSE="MIT"LIC_FILES_CHKSUM="file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南57SRC_URI="file://mylib.
so\"S="${WORKDIR}"TARGET_CC_ARCH+="${LDFLAGS}"do_install(){install-d${D}${libdir}install-m0655${S}/mylib.
so${D}${libdir}}FILES_${PN}+="${libdir}"FILES_SOLIBSDEV=""6.
运行petalinux-build-crootfs.
注释:在将来版本中,不推荐使用petalinux-build-crootfs构建RootFS.
使用petalinux-build代替.
重要提示!
需要确保由安装模板应用安装到目标文件系统中的二进制数据与系统的底层硬件实现兼容.
包含预构建应用如果某个应用是在PetaLinux之外开发的(例如通过赛灵思SDK),您可能只想在PetaLinux根文件系统中添加该应用的二进制文件.
在此情况下,创建一个应用模板,允许将现有内容复制到目标文件系统.
本节解释如何将预先编译完成的应用包含到PetaLinux根文件系统中.
要求本节假设PetaLinux工具软件平台已经准备好构建为硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
包含预构建应用的步骤如果预构建应用名称为myapp,通过以下步骤可以将其包含到PetaLinux根文件系统中.
1.
确保已为PetaLinux目标架构编译了预编译代码,例如MicroBlaze处理器、Arm核等.
2.
使用以下命令创建应用.
$petalinux-create-tapps--templateinstall--namemyapp--enable3.
更改为新创建的应用程序目录.
$cd/project-spec/meta-user/recipes-apps/myapp/files/4.
删除现有的myapp应用,并将制预构建myapp复制到myapp/files目录.
$rmmyapp$cp.
/第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南58重要提示!
需要确保由安装模板应用安装到目标文件系统中的二进制数据与系统的底层硬件实现兼容.
创建和添加定制库本节介绍了如何向PetaLinux根文件系统添加定制库.
要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
步骤添加定制库基本步骤如下:1.
从您工作站上的PetaLinux工程中运行petalinux-create-tapps,创建用户应用程序:$cd$petalinux-create-tapps--templatec--name--enable例如:$petalinux-create-tapps--templatec--namelibsample--enable注释:如果应用程序名称有"_",请参见含有"_"的配方名称.
新的应用程序源可在/project-spec/meta-user/recipes-apps/libsample目录中找到.
2.
更改为新创建的应用程序目录.
$cd/project-spec/meta-user/recipes-apps/libsample3.
编辑project-spec/meta-user/recipes-apps/libsample/libsample.
bb文件.
该文件看起来应该像下面这样.
##Thisfileisthelibsamplerecipe.
#SUMMARY="Simplelibsampleapplication"SECTION="libs"LICENSE="MIT"LIC_FILES_CHKSUM="file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"SRC_URI="file://libsample.
c\file://libsample.
h\file://Makefile\"S="${WORKDIR}"第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南59PACKAGE_ARCH="${MACHINE_ARCH}"PROVIDES="sample"TARGET_CC_ARCH+="${LDFLAGS}"do_install(){install-d${D}${libdir}install-d${D}${includedir}oe_libinstall-solibsample${D}${libdir}install-d-m0655${D}${includedir}/SAMPLEinstall-m0644${S}/*.
h${D}${includedir}/SAMPLE/}FILES_${PN}="${libdir}/*.
so.
*${includedir}/*"FILES_${PN}-dev="${libdir}/*.
so"4.
编辑project-spec/meta-user/recipes-apps/libsample/files/libsample.
c文件.
该文件看起来应该像下面这样:#include#include"libsample.
h"intmain(intargc,char**argv){printf("HelloWorld!
\n");return0;}voidsamplelib(){printf("Hello,WelcometoPetaLinux--samplelib!
\n");}5.
创建新文件project-spec/meta-user/recipes-apps/libsample/files/libsample.
h并添加以下行.
voidsamplelib();6.
编辑project-spec/meta-user/recipes-apps/libsample/files/Makefile文件.
该文件看起来应该像下面这样.
APP=sampleLIBSOURCES=*.
cOUTS=*.
oNAME:=sampleMAJOR=1.
0MINOR=1VERSION=$(MAJOR).
$(MINOR)all:lib$(NAME).
solib$(NAME).
so.
$(VERSION):$(OUTS)$(CC)$(LDFLAGS)$(OUTS)-shared-Wl,-soname,lib$(NAME).
so.
$(MAJOR)-olib$(NAME).
so.
$(VERSION)lib$(NAME).
so:lib$(NAME).
so.
$(VERSION)rm-flib$(NAME).
so.
$(MAJOR)lib$(NAME).
soln-slib$(NAME).
so.
$(VERSION)lib$(NAME).
so.
$(MAJOR)ln-slib$(NAME).
so.
$(MAJOR)lib$(NAME).
so第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南60%.
o:%.
c$(CC)$(CFLAGS)-c-fPIC$(LIBSOURCES)clean:rm-rf*.
o*.
so*.
so.
*7.
构建配方.
petalinux-build-clibsample测试用户库要求本节假定您已构建和安装了预先编译完成的/定制用户应用程序.
步骤测试用户库1.
使用以下命令创建应用.
petalinux-create-tapps--templatec-nsampleapp--enable2.
修改/project-spec/meta-user/recipes-apps/sampleapp/sampleapp.
bb文件如下:##Thisfileisthesampleapprecipe.
#SUMMARY="Simplesampleappapplication"SECTION="PETALINUX/apps"LICENSE="MIT"LIC_FILES_CHKSUM="file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"SRC_URI="file://sampleapp.
c\"S="${WORKDIR}"DEPENDS="sample"do_compile(){${CC}${CFLAGS}${LDFLAGS}-otestsamplelibtestsamplelib.
c-lsample}do_install(){install-d${D}${bindir}install-m0755sampleapp${D}${bindir}}FILES_${PN}+="sampleapp"第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南613.
编辑project-spec/meta-user/recipes-apps/sampleapp/files/sampleapp.
c文件.
#include#includeintmain(intargc,char**argv){printf("HelloWorld!
\n");samplelib();return0;}4.
应用petalinux-build-csampleapp.
5.
启动新创建的系统镜像.
6.
在目标系统控制台上运行用户应用.
例如,如要运行用户应用sampleapp:#sampleapp7.
确认应用结果符合预期.
创建和添加定制应用本节介绍了如何向PetaLinux根文件系统添加定制应用程序.
要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
步骤添加定制应用基本步骤如下:1.
从您工作站上的PetaLinux工程中运行petalinux-create-tapps,创建用户应用程序:$cd$petalinux-create-tapps[--templateTYPE]--name--enable例如,若要用C语言(默认)创建名为myapp的用户应用程序:$petalinux-create-tapps--namemyapp--enable或:$petalinux-create-tapps--templatec--namemyapp--enable若要创建C++应用程序模板,请传递--templatec++选项,如下所示:$petalinux-create-tapps--templatec++--namemyapp--enable第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南62若要创建autoconf应用程序模板,请传递--templateautoconf选项,如下所示:$petalinux-create-tapps--templateautoconf--namemyapp--enable新的应用程序源可在/project-spec/meta-user/recipes-apps/myapp目录中找到.
2.
更改为新创建的应用程序目录.
$cd/project-spec/meta-user/recipes-apps/myapp您可以看到以下PetaLinux模板生成的文件:表15:添加定制应用文件模板描述/project-spec/meta-user/recipes-core/images/petalinux-image-full.
bbappend配置文件模板-该文件控制您的应用程序向PetaLinuxRootFS菜单配置的集成.
它还可让您选择或取消选择应用程序及其dev、dbg软件包进入到目标根文件系统中.
Makefile编译文件模板-这是含有目标的基本Makefile文件,用于将您的应用程序构建和安装到根文件系统中.
在向您的工程添加附加源代码文件时,该文件需要修改.
README介绍构建用户应用程序方法的文件.
myapp.
c用于C语言;myapp.
cpp用于C++语言根据您的选择,采用C或C++语言构建的简单应用程序.
注释:如果您要使用构建伪像利用第三方实用程序进行调试,请在/project-spec/meta-user/conf/petalinuxbsp.
conf中添加以下行:RM_WORK_EXCLUDE+="myapp"注释:您可在${TMPDIR}/work/aarch64-xilinx-linux/myapp/1.
0-r0/中找到全部构建伪像.
提示:不建议在配方中使用do_clean映射Make文件清理.
这是因为Yocto拥有其自己的do_clean功能.
3.
可采用您应用程序的真正源代码编辑或替换myapp.
c/myapp.
cpp文件.
如果您要在以后修改您的定制用户应用程序,则应编辑此文件.
注意!
如果不再需要,您可以删除该应用程序目录.
除了删除应用程序目录之外,您还必须将代码行:IMAGE_INSTALL_append="myapp"从/project-spec/meta-user/recipes-core/images/petalinux-image-full.
bbappend中删除.
删除目录而保留上述代码行将抛出一个错误.
创建和添加定制模块本节解释如何将自定制内核模块添加到PetaLinux根文件系统.
要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南63步骤添加定制模块1.
从您工作站上的PetaLinux内部运行petalinux-create-tmodules,创建用户模块:$cd$petalinux-create-tmodules--name--enable例如,用C语言(默认)创建一个名为mymodule的用户模块:$petalinux-create-tmodules--namemymodule--enable您可以使用-h或--help来查看petalinux-create-tmodules的用途.
您创建的新模块配方可在/project-spec/meta-user/recipes-modules/mymodule中找到.
注释:如果模块名称有"_",请参见含有"_"的配方名称.
2.
更改至新创建的模块目录.
$cd/project-spec/meta-user/recipes-modules/mymodule您可以看到以下PetaLinux模板生成的文件:表16:添加定制模块文件模板描述Makefile编译文件模板-这是基本的Makefile文件,含有在根文件系统中构建和安装模块所需的目标.
在向您的工程添加附加源代码文件时,该文件需要修改.
单击这里自定义Makefile文件.
README介绍建立用户模块方法的文件.
mymodule.
c简单的C语言内核模块.
/project-spec/meta-user/recipes-core/images/petalinux-image-full.
bbappened配置文件模板-该文件控制您的application/modules/libs向PetaLinuxRooFS菜单配置系统的集成.
它还可让您将应用程序及其dev、dbg包选择或取消选择进入目标根文件系统.
3.
可用您模块的真实源代码编辑或替换mymodule.
c文件.
以后如果您想修改您的定制用户模块,您必须编辑此文件.
注释:如果您要使用构建伪像利用第三方实用程序进行调试,请在project-spec/meta-user/conf/petalinuxbsp.
conf中添加以下行:RM_WORK_EXCLUDE+="mymodule"注释:您可在${TMPDIR}/work/aarch64-xilinx-linux/mymodule/1.
0-r0/中找到全部构建伪像.
注意!
如果不再需要模块目录,您可以将其删除.
除了删除模块目录之外,您还必须从/project-spec/meta-user/recipes-core/images/petalinux-image.
bbappend中删除行:IMAGE_INSTALL_append="mymodule".
删除目录但保留petalinux-image-full.
bbappend中的上述程序行将抛出一个错误.
构建用户应用本节解释如何构建和安装预编译/定制用户应用到PetaLinux根文件系统.
第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南64要求本节假定您已经向PetaLinux根文件系统中纳入或添加了定制应用程序(参见创建和添加定制应用).
逐步构建用户应用运行petalinux-build(工程目录内)将重新构建系统镜像,包括选定的用户应用myapp.
(此构建进程的输出目录为/work/aarch64-xilinx-linux/myapp/1.
0-r0/.
)$petalinux-build将myapp构建到现有的系统镜像中:$cd$petalinux-build-crootfs$petalinux-build-xpackage注释:在将来版本中,不推荐使用petalinux-build-crootfs构建RootFS.
使用petalinux-build代替.
其他petalinux-build选项通过--help予以解释.
其中一些构建选项包括:如要清除选定的用户应用:$petalinux-build-cmyapp-xdo_clean如要重新构建选定的用户应用:$petalinux-build-cmyapp这将只是编译应用,编译后的可执行的文件将位于${TMPDIR}/work/aarch64-xilinx-linux/myapp/1.
0-r0/目录中.
如想使用构件与第三方工具进行调试,请将以下行:RM_WORK_EXCLUDE+="myapp"添加到/project-spec/meta-user/conf/petalinuxbsp.
conf中.
如果没有这一行,BitBake将在成功构建之后删除所有构件.
如要查看myapp的所有任务列表:petalinux-build-cmyapp-xlisttasks如要安装选定的用户应用:$petalinux-build-cmyapp-xdo_install注释:在将来版本中,不建议使用petalinux-build-c-x.
不建议将某个组件的单个任务作为petalinux-build命令的一部分.
这将把应用安装到目标RootFS主机副本:/work/-xilinx-linux/petalinux-user-image/1.
0-r0/rootfs/.
可以在"petalinux-config→Yocto-settings→TMPDIR"中找到TMPDIR.
如果工程位于本地存储上,则TMPDIR是/build/tmp/.
如想使用构件与第三方工具进行调试,请将以下行添加到project-spec/meta-user/conf/petalinuxbsp.
conf:RM_WORK_EXCLUDE+="myapp"第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南65测试用户应用要求本节假定您已构建和安装了预先编译完成的/定制用户应用程序.
如需了解更多信息,请参阅构建用户应用.
步骤测试用户应用1.
启动目标或QEMU上新创建的系统镜像.
2.
在目标系统登录控制台运行以下命令,确认用户应用在PetaLinux系统上:#ls/usr/bin除非已经通过其Makefile更改了用户应用位置,否则该用户应用将放在/usr/bin目录中.
3.
在目标系统控制台上运行用户应用.
例如,如要运行用户应用myapp:#myapp4.
确认应用结果符合预期.
如果目标文件系统中缺少新应用,请确保已完成前一节所述的petalinux-build-xpackage步骤.
这确保将应用二进制文件复制到根文件系统暂存区,并使用这个新文件系统更新目标系统镜像.
构建用户模块本节解释如何构建和安装定制用户内核模块到PetaLinux根文件系统.
要求本节假定您已经向PetaLinux根文件系统中纳入或添加了定制模块(参见创建和添加定制模块).
逐步构建用户模块运行petalinux-build(工程目录""内)将重新构建系统镜像,包括选定的用户模块mymodule.
(此构建进程的输出目录为/work/-xilinx-linux/mymodule/1.
0-r0/.
)$petalinux-build将mymodule构建到现有的系统镜像中:$cd$petalinux-build-crootfs$petalinux-build-xpackage注释:在将来版本中,不推荐使用petalinux-build-crootfs构建RootFS.
使用petalinux-build代替.
第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南66其他petalinux-build选项通过--help予以解释.
其中一些构建选项包括:如要清除选定的用户模块:$petalinux-build-cmymodule-xdo_cleansstate如要重新构建选定的用户模块:$petalinux-build-cmymodule这将只是编译模块,编译后的可执行的文件将在:/work/-xilinx-linux/mymodule/1.
0-r0/目录中.
如要查看该模块的所有任务列表:$petalinux-build-cmymodule-xlisttasks如要安装选定的用户模块:$petalinux-build-cmymodule-xdo_install注释:在将来版本中,不建议使用petalinux-build-c-x.
不建议将某个组件的单个任务作为petalinux-build命令的一部分.
这将把模块安装到目标RootFS主机副本:/work/-xilinx-linux/petalinux-user-image/1.
0-r0/rootfs/.
可以在"petalinux-config→Yocto-settings→TMPDIR"中找到TMPDIR.
如果工程位于本地存储上,则TMPDIR是/build/tmp/.
如想使用构件与第三方工具进行调试,请将以下行添加到project-spec/meta-user/conf/petalinuxbsp.
conf:RM_WORK_EXCLUDE+="mymodule"PetaLinux自动登录本节介绍了如何在不输入登录信息的情况下从启动中直接登录.
要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
PetaLinux自动登录步骤按照以下步骤进行PetaLinux自动登录:1.
切换到PetaLinux工程的根目录.
cd2.
运行petalinux-config.
第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南673.
选择"Yocto-settings→Enabledebug-tweaks".
4.
保存配置并退出.
5.
运行petalinux-build.
开机时应用程序自动运行本节介绍了如何添加在系统开机时自动运行的应用程序.
要求本节假定您已经添加并构建了PetaLinux应用程序.
如需了解更多信息,请参阅创建和添加定制应用和构建用户应用.
开机时应用程序自动运行的步骤如果您在PetaLinux工程中的/project-spec/meta-user/recipes-apps/中拥有一个预建或新创建的定制用户应用程序,您可能希望在系统开机时执行它.
启用程序的步骤如下:如果您拥有预建应用程序,而您未将其包含在PetaLinux根文件系统中,请参见包含预构建应用.
如果您要创建定制应用程序并将其安装到PetaLinux根文件系统中,请参见创建和添加定制应用.
如果您的自动运行应用程序是一种永远不会退出的阻塞应用程序,可作为后台程序启动该程序.
1.
创建并安装名为myapp-init的新建应用程序cd/petalinux-create-tapps--templateinstall-nmyapp-init--enable2.
编辑project-spec/meta-user/recipes-apps/myapp-init/myapp-init.
bb文件.
该文件看起来应该像下面这样:##Thisfileisthemyapp-initrecipe.
#SUMMARY="Simplemyapp-initapplication"SECTION="PETALINUX/apps"LICENSE="MIT"LIC_FILES_CHKSUM="file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"SRC_URI="file://myapp-init\"S="${WORKDIR}"FILESEXTRAPATHS_prepend:="${THISDIR}/files:"inheritupdate-rc.
dINITSCRIPT_NAME="myapp-init"INITSCRIPT_PARAMS="start99S.
"do_install(){第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南68install-d${D}${sysconfdir}/init.
dinstall-m0755${S}/myapp-init${D}${sysconfdir}/init.
d/myapp-init}FILES_${PN}+="${sysconfdir}/*"3.
若要作为后台程序运行myapp,请编辑文件project-spec/meta-user/recipes-apps/myapp-init/files/myapp-init.
该文件看起来应该像下面这样:#!
/bin/shDAEMON=/usr/bin/myappstart(){echo"Startingmyapp"start-stop-daemon-S-o--background-x$DAEMON}stop(){echo"Stopingmyapp"start-stop-daemon-K-x$DAEMON}restart(){stopstart}[-e$DAEMON]||exit1case"$1"instart)start;;;stop)stop;;;restart)restart;;;*)echo"Usage:$0{start|stop|restart}"exit1esacexit$4.
运行petalinux-build.
添加层级您可以将层级添加到PetaLinux工程中.
THUD版本的上游层级可在此处查找.
下列步骤展示了向PetaLinux工程添加meta-my层的方法.
1.
在/project-spec/meta-mylayer中拷贝或创建层级.
2.
运行"petalinux-config→YoctoSettings→UserLayers".
3.
输入下列命令:${proot}/project-spec/meta-mylayer第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南694.
保存并退出.
5.
查看/build/conf/bblayers.
conf中的文件以便验证.
注释:2019.
1PetaLinux位于THUD基线上.
层级/配方只应从THUD分支中选择.
有些层级/配方可能与我们的架构不兼容.
您对所有附加层级/配方负责.
注释:您还可以在您的工程之外添加层级,这些层级可以在各工程之间共享.
重要提示!
如果您想更改层级优先权,您可以在此文件BBFILE_PRIORITY_meta-mylayer=6(0至10,更高的值具有更高的优先权)中更新${proot}/project-spec/meta-mylayer/conf/local.
conf.
将现有配方添加到RootFS大部分RootFS菜单配置是静态的.
这些是赛灵思支持的实用程序.
您可以在工程中添加您自己的层级或从PetaLinux中的现有层级中添加现有的附加配方.
PetaLinux中的层级可在/opt/pkg/petalinux/components/yocto/source/aarch64/中查找(用于ZynqUltraScale+MPSoC).
默认情况下,iperf3不在RootFS菜单配置中.
以下示例展示了如何向RootFS菜单配置中添加iperf3.
1.
配方的位置为/opt/pkg/petalinux/components/yocto/source/aarch64/layers/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.
2.
bb.
2.
在/project-spec/meta-user/recipes-core/images/petalinux-image-full.
bbappend中添加以下行.
IMAGE_INSTALL_append="iperf3"重要提示!
在使用"_append"时,在="之后应该有一个空格.
3.
运行petalinux-config-crootfs.
4.
选择"userpackages→iperf3".
启用、保存并退出.
5.
运行petalinux-build.
注释:除了PetaLinux默认RootFS菜单配置之外,您还负责在PetaLinux工具中可用的层级中添加配方.
注释:上述程序仅适用于来自用户层级的配方.
重要提示!
在petalinux-image-full中的所有配方都已锁定sstate状态.
若要解锁,您必须将SIGGEN_UNLOCKED_RECIPES+="my-recipe"添加到project-spec/meta-user/conf/petalinuxbsp.
conf中.
例如,您要在mtd-utils封装中做出更改,以便无需在project-spec/meta-user/conf/petalinuxbsp.
conf中添加SIGGEN_UNLOCKED_RECIPES+="mtd-utils"即可为其创建一个.
bbappend.
在工程构建过程中,您会看到以下警告,而您对封装所做的更改不会包含在构建之中.
"Themtd-utils:do_fetchsigiscomputedtobe92c59aa3a7c524ea790282e817080d0a,butthesigislockedto9a10549c7af85144d164d9728e8fe23finSIGGEN_LOCKEDSIGS_t"第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南70添加封装组定制镜像的最好办法之一是创建一个用于构建镜像的定制封装组.
一些封装组配方随PetaLinux工具配备.
例如:$PETALINUX/components/yocto/source/aarch64/layers/meta-petalinux/recipes-core/packagegroups/packagegroup-petalinux-self-hosted.
bb封装组的名称应唯一,而且不得与现有配方名称冲突.
我们可以创建定制封装组,例如,ALSA封装组看起来像这样:DESCRIPTION="PetaLinuxALSAsupportedPackages"inheritpackagegroupALSA_PACKAGES="\alsa-lib\alsa-plugins\alsa-tools\alsa-utils\alsa-utils-scripts\pulseaudio\"RDEPENDS_${PN}_append+="\${ALSA_PACKAGES}\"这可以被添加到/meta-user/recipes-core/packagegroups/packagegroup-petalinux-alsa.
bb.
若要在RootFS菜单配置中添加该封装组,请将IMAGE_INSTALL_append="packagegroup-petalinux-alsa"添加到/project-spec/meta-user/recipes-core/petalinux-image.
bbappend中,以便在菜单配置中反映出来.
然后启动petalinux-config-crootfs,选择"userpackages→packagegroup-petalinux-alsa",保存并退出.
然后运行petalinux-build.
第8章:自定义RootfsUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南71第9章调试在QEMU中调试Linux内核本节介绍了如何利用GNU调试器(GDB)在QEMU内部调试Linux内核.
请注意,该功能仅采用Zynq-7000器件进行了测试.
要求本节假定您已经构建了PetaLinux系统镜像.
如需了解更多信息,请参阅构建系统镜像.
调试QEMU中Linux内核的步骤1.
运行以下命令,用当前构建的Linux启动QEMU:$petalinux-boot--qemu--kernel2.
查看QEMU控制台.
您应该看到QEMU命令的详细信息.
从-gdbtcp:获得GDBTCP端口.
3.
打开另一个命令控制台(确保已获得PetaLinux设置脚本),并切换到Linux目录:$cd"/images/linux"4.
在命令模式下,在vmlinux内核镜像上启动GDB:$petalinux-util--gdbvmlinux您应该会看到GDB提示符.
例如:GNUgdb(LinaroGDB2019.
1)7.
12.
1.
20170130-gitCopyright(C)2019FreeSoftwareFoundation,Inc.
LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware:youarefreetochangeandredistributeit.
ThereisNOWARRANTY,totheextentpermittedbylaw.
Type"showcopying"and"showwarranty"fordetails.
ThisGDBwasconfiguredas"--host=x86_64-unknown-linux-gnu--target=aarch64-linux-gnu".
Type"showconfiguration"forconfigurationdetails.
Forbugreportinginstructions,pleasesee:.
FindtheGDBmanualandotherdocumentationresourcesonlineat:.
Forhelp,type"help".
Type"aproposword"tosearchforcommandsrelatedto"word".
.
.
Readingsymbolsfromvmlinux.
.
.
done.
第9章:调试UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南725.
通过运行以下GDB命令,连接到GDB中的QEMU目标:(gdb)targetremote:90006.
如要让QEMU继续执行:(gdb)continue7.
可以用Ctrl+C中断内核并恢复GDB提示符.
8.
可以设置断点并运行其他GDB命令来调试内核.
注意!
如果另一个进程正在使用端口9000,petalinux-boot将尝试使用不同的端口.
请参阅petalinux-boot的输出,以确定使用了哪个端口.
下面示例使用的是端口9001:INFO:qemu-system-arm.
.
.
-gdbtcp::9001.
.
.
提示:在内核配置菜单中启用内核调试可能会有帮助("petalinux-config--kernel→Kernelhacking→Kerneldebugging"),这样镜像中就会出现内核调试符号.
故障排除本节介绍了在QEMU中调试Linux内核过程中您可能遇到的一些常见问题.
表17:在QEMU故障排除中调试Linux内核描述/错误消息描述和解决方案(gdb)targetremoteW.
X.
Y.
Z:9000:9000:Connectionrefused.
问题描述:GDB未能连接QEMU目标.
这最有可能是因为端口9000不是QEMU正在使用的端口解决方案:检查QEMU控制台,以确保QEMU正在运行.
观察Linux主机命令控制台.
它将显示完整QEMU命令,您应该能够看到QEMU在使用哪个端口.
使用TCF代理调试应用程序本节介绍了利用Eclipse目标通信框架(TCF)代理调试用户应用程序.
利用TCF代理调试应用程序的程序对于ZynqUltraScale+MPSoC和Zynq-7000器件是相同的.
本节介绍了Zynq平台用户应用程序myapp的基本调试程序.
要求本节假定已满足了以下要求:XSDK工具使用知识.
如需了解更多信息,请参阅赛灵思软件开发套件(SDK).
PetaLinux工作环境已正确设置.
如需了解更多信息,请参阅PetaLinux工作环境建立.
您已创建了一个用户应用程序并构建了包括选定的用户应用程序在内的系统镜像.
如需了解更多信息,请参阅构建用户应用.
第9章:调试UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南73为调试准备构建系统1.
更改至工程目录:$cd2.
在命令控制台上运行petalinux-config-crootfs:$petalinux-config-crootfs3.
向下滚动Linux/RootFS配置菜单至文件系统封装.
admin--->audio--->base--->baseutils--->benchmark--->bootloader--->console--->devel--->fonts--->kernel--->libs--->misc--->multimedia--->net--->network--->optional--->powermanagement--->utils--->x11--->4.
选择"misc"子菜单:admin--->audio--->base--->baseutils--->benchmark--->bootloader--->console--->devel--->fonts--->kernel--->libs--->misc--->multimedia--->net--->network--->optional--->powermanagement--->utils--->x11--->5.
封装按字母顺序排列.
导航至字母"t",如下所示:serf--->sysfsutils--->sysvinit-inittab--->tbb--->tcf-agent--->第9章:调试UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南74texi2html--->tiff--->trace-cmd--->util-macros--->v4l-utils--->6.
确保启用了tcf代理.
[*]tcf-agent[]tcf-agent-dev[]tcf-agent-dbg7.
选择"console/network"子菜单,然后单击进入"dropbear"子菜单.
确保启用"dropbear-openssh-sftp-server".
[*]dropbear8.
选择"console/network→submenu→openssh".
确保启用""openssh-sftp-server".
9.
退出菜单.
10.
重新构建包括myapp在内的目标系统镜像.
如需了解更多信息,请参阅构建系统镜像.
执行调试会话1.
使用新镜像启动电路板(或QEMU).
2.
启动日志应该表明tcf-agent已经启动.
应该看到以下消息:"Startingtcf-agent:OK"3.
启动赛灵思SDK并创建工作空间.
4.
通过选择"File→New→Project"添加"HardwarePlatformSpecification".
5.
在弹出窗口中,选择"Xilinx→HardwarePlatformSpecification".
6.
给硬件工程起名.
例如:ZC702.
7.
查找目标硬件的system.
hdf/system.
dsa.
这可以在/project-spec/hw-description中找到.
8.
选择"Run→DebugConfigurations",打开调试启动配置窗口.
9.
创建新的"XilinxC/C++application(SystemDebugger)"并启动配置:第9章:调试UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南7510.
"DebugType"应该设置为"LinuxApplicationDebug".
11.
选择"New"选项以输入连接详情.
12.
给目标连接起名,并指定主机(目标的IP地址).
13.
设置tcf-agent端口并选择"OK".
重要提示!
如果在QEMU上进行调试,在非根模式(默认)或根模式下进行测试时,请参阅附录D:QEMU虚拟网络模式获取关于IP和端口重定向的信息.
例如,如果在非根模式下测试,则需要在后续步骤中使用localhost作为目标IP.
14.
切换到"Application"标签.
第9章:调试UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南7615.
在工程目录中输入已编译应用的"LocalFilePath".
例如:/work/aarch64-xilinx-linux/myapp1/1.
0-r0/image/usr/bin/.
注释:创建应用时,需要将RM_WORK_EXCLUDE+="myapp"添加到project-spec/meta-user/conf/petalinuxbsp.
conf,否则镜像无法用于调试.
16.
目标文件系统上的"RemoteFilePath"应该是可以找到应用的位置.
例如:/usr/bin/myapp.
17.
选择"Debug"以应用配置并开始调试会话.
(如果被要求切换到"DebugPerspective",请接受).
18.
标准XSDK调试流程准备启动:第9章:调试UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南77提示:如要分析代码和调试,可以使用以下快捷键:StepInto(F5)StepOver(F6)StepReturn(F7)Resume(F8)使用GDB调试ZynqUltraScale+MPSoC应用PetaLinux支持用GDB调试ZynqUltraScale+MPSoC用户应用.
本节描述的是基本的调试步骤.
要求本节假定已满足了以下要求:PetaLinux工作环境已正确设置.
如需了解更多信息,请参阅PetaLinux工作环境建立.
您已创建了一个用户应用程序并构建了包括选定的用户应用程序在内的系统镜像.
如需了解更多信息,请参阅构建用户应用.
第9章:调试UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南78为调试准备构建系统1.
更改至工程目录:$cd2.
在/project-spec/meta-user/recipes-core/images/petalinux-image.
bbappend中添加以下行:IMAGE_INSTALL_append="myapp-dev"IMAGE_INSTALL_append="myapp-dbg"3.
在命令控制台上运行petalinux-config-crootfs:$petalinux-config-crootfs4.
向下滚动"userpackagesConfiguration"菜单至"Debugging":FilesystemPackages--->PetaLinuxPackageGroups--->apps--->userpackages--->PetaLinuxRootFSSettings--->5.
选择"userpackages".
[X]myapp-dbg[]myapp-dev6.
选择"myapp-dbg".
退出myapp子菜单.
7.
退出"userpackages"子菜单,并选择"FilesystemPackages→misc→gdb".
8.
选择"gdb",并确保启用GDB服务器:[]gdb[]gdb-dev[X]gdbserver[]gdb-dbg9.
退出菜单并选择"",以保存配置.
10.
重建目标系统镜像.
在/project-spec/meta-user/conf/petalinuxbsp.
conf中添加以下行.
RM_WORK_EXCLUDE+="myapp"如需了解更多信息,请参阅构建系统镜像.
执行调试会话1.
使用上面创建的新镜像启动电路板(或QEMU).
第9章:调试UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南792.
使用目标系统控制台上的用户应用,运行gdbserver(设置为监听端口1534):root@plnx_aarch64:~#gdbserverhost:1534/usr/bin/myappProcess/bin/myappcreated;pid=73Listeningonport15341534是gdbserver端口-可以是任何未使用的端口号3.
在工作站上,导航至已编译用户应用目录:$cd/work/aarch64-xilinx-linux/myapp1/1.
0-r0/image/usr/bin/myapp4.
运行GDB客户端.
$petalinux-util--gdbmyapp5.
GDB控制台将会启动:.
.
.
GNUgdb(crosstool-NG1.
18.
0)7.
6.
0.
20130721-cvs.
.
.
(gdb)6.
在GDB控制台中,使用以下命令连接到目标机器:使用目标系统的IP地址,例如:192.
168.
0.
10.
如果不确定IP地址,可以在目标控制台上运行ifconfig核实.
仕様端口1534.
如果在前面步骤中选择了不同的GDB服务器端口号,则使用该值.
重要提示!
如果在QEMU上调试,在非根模式(默认)或根模式下测试时,请参考"QEMU虚拟网络模式"以获得关于IP和端口重定向的信息.
例如,如果在非根模式下测试,则需要在后续步骤中使用localhost作为目标IP.
(gdb)targetremote192.
168.
0.
10:1534GDB控制台将连接到远程目标.
目标控制台的GDB服务器将显示以下确认信息,其中包括主机IP:RemoteDebuggingfromhost192.
168.
0.
97.
在开始执行程序之前,请创建一些断点.
使用GDB控制台时,可以使用功能名和行号在整个代码中创建断点.
例如为main功能创建断点:(gdb)breakmainBreakpoint1at0x10000444:filemyapp.
c,line10.
8.
通过在GDB控制台中执行continue命令运行程序.
GDB将开始执行程序.
(gdb)continueContinuing.
Breakpoint1,main(argc=1,argv=0xbffffe64)atmyapp.
c:1010printf("Hello,PetaLinuxWorld!
\n");9.
如要打印当前程序位置的代码列表,请使用list命令.
(gdb)list5*/6#include78intmain(intargc,char*argv[])9{第9章:调试UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南8010printf("Hello,PetaLinuxWorld!
\n");11printf("cmdlineargs:\n");12while(argc--)13printf("%s\n",*argv++);1410.
尝试用step、next和continue命令.
可以使用break命令设置和删除断点.
可以使用GDB控制台help命令获取关于这些命令的更多信息.
11.
程序完成时,目标系统上的GDB服务器应用将退出.
下面是控制台显示的消息示例:Hello,PetaLinuxWorld!
cmdlineargs:/usr/bin/myappChildexitedwithstatus0GDBserverexitingroot@plnx_aarch64:~#提示:将自动创建.
gdbinit文件来建立库路径.
您可以在这个文件的末尾添加自己的GDB初始化命令.
进一步了解GDB如需了解更多信息,请访问www.
gnu.
org.
有关GDB的一般用法,请参阅GDB工程文档.
故障排除本节介绍了在使用GDB调试应用程序过程中您可能遇到的一些常见问题.
表18:使用GDB故障排除调试ZynqUltraScale+MPSoC应用程序描述/错误消息描述和解决方案GDBerrormessage:::Connectionrefused.
GDBcannotconnecttothetargetboardusing:问题描述该错误消息表明GDB客户端未能连接到GDB服务器.
解决方案:检查gdbserver是否在目标系统上运行.
检查是否已有另一个GDB客户端已经连接到了GDB服务器上.
查看目标控制台即可完成此项检查.
如果您从主机中看到远程调试,则意味着有另一个GDB客户端连接到服务器上.
检查IP地址和端口是否正确设置.
调试单独的PetaLinux组件PMU固件https://xilinx-wiki.
atlassian.
net/wiki/spaces/A/pages/18841724/PMU+Firmware#PMUFirmware-DebuggingPMUFWusingSDK第9章:调试UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南81FSBLhttps://xilinx-wiki.
atlassian.
net/wiki/spaces/A/pages/18842019/FSBL#FSBL-WhatarevariouslevelsofdebugprintsinFSBLU-Boothttps://xilinx-wiki.
atlassian.
net/wiki/spaces/A/pages/18842557/Debug+U-bootLinuxhttps://xilinx-wiki.
atlassian.
net/wiki/spaces/A/pages/123011167/Linux+Debug+infrastructure+KProbe+UProbe+LTTnghttps://xilinx-wiki.
atlassian.
net/wiki/spaces/A/pages/123011146/Linux+Debug+infrastructure+Kernel+debugging+using+KGDB第9章:调试UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南82第10章高级设置Menuconfig使用方法如要选择以前未选择的菜单/子菜单,请按下箭头键向下滚动菜单或按上箭头键向上滚动菜单.
光标在菜单上后,按下"y".
如要取消选择菜单/子菜单,请遵循相同的过程并在最后按下"n".
PetaLinux的menuconfig系统在这个版本中,在子菜单中可用的Linux系统组件显示如下:第一阶段启动加载器(FSBL)PMU固件(仅限ZynqUltraScale+MPSoC)U-Boot内核ATF(仅限ZynqUltraScale+MPSoC)对于ATF、U-Boot和内核,共有3个选项可用:1.
默认默认组件随PetaLinux工具配备.
2.
外部源当您从任何指定位置下载组件时,您可以馈送您的组件,而不是通过本配置选项馈送默认组件.
注释:外部源文件夹对于某个工程或其用户必须唯一,但内容可以修改.
如果外部源是git存储库、其检出状态应适合构建本工程.
3.
远程如果您要构建在定制git存储库中的组件,则必须使用本配置选项.
设置当在系统级菜单配置中选定某个组件以启用自动配置(autoconfig)时,在petalinux-config运行时,其配置文件即被自动更新.
UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南83表19:组件及其配置文件菜单中的组件启用了自动配置时受影响的文件设备树以下文件位于/components/plnx_workspace/device-tree/device-tree/skeleton.
dtsi(仅限Zynq-7000器件)zynq-7000.
dtsi(仅限ZynqUltraScale+MPSoC)zynqmp-clk-ccf.
dtsi(仅限ZynqUltraScale+MPSoC)pcw.
dtsi(Zynq-7000器件和ZynqUltraScale+MPSoC)pl.
dtsisystem-conf.
dtsisystem-top.
dts.
dtsi内核以下文件位于/project-spec/meta-plnx-generated/recipes-kernel/linux/configs/plnx_kernel.
cfgbsp.
cfgU-Boot以下文件位于/project-spec/meta-plnx-generated/recipes-bsp/u-boot/configs/config.
cfgconfig.
mk(仅限MicroBlaze)platform-auto.
h"SubsystemAUTOHardwareSettings"菜单"SubsystemAUTOHardwareSettings"菜单允许自定义Linux系统如何与底层硬件平台交互.
"SystemProcessor""SystemProcessor"菜单指定系统运行的CPU处理器.
"MemorySettings""MemorySettings"菜单允许:选择哪个存储器IP是主系统存储器设置系统存储器基址设置系统存储器大小将U-Boot文本基址偏移设置为存储器高地址此菜单中的配置将影响设备树和U-Boot自动配置(autoconfig)文件中的存储器设置.
如果选择manual作为主存储器,则由您负责确保系统存储器的正确设置.
第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南84"SerialSettings""SerialSettings"子菜单允许选择哪个串行器件是系统的主STDIN/STDOUT接口.
如果选择manual作为主串行接口,则由您负责确保系统串行接口的正确设置.
"EthernetSettings""EthernetSettings"子菜单允许:选择哪个以太网是系统的主以太网选择随机化MAC地址设置主以太网的MAC地址如果MAC地址被编程到EEPROM中,这里保持空.
有关编程和设置EEPROM的命令,请参阅U-Boot文档.
设置在主以太网上使用DHCP或是静态IP如果选择manual作为主以太网,则由您负责确保系统以太网的正确设置.
"FlashSettings""FlashSettings"子菜单允许:选择哪个闪存是系统的主闪存设置闪存分区表如果选择manual作为主闪存,则由您负责系统闪存设置.
"SD/SDIOSettings""SD/SDIOSettings"子菜单仅用于Zynq-7000器件和ZynqUltraScale+MPSoC.
它允许选择哪个SD控制器是系统的主SD卡接口.
如果选择manual作为主闪存,则由您负责设置系统闪存.
"TimerSettings""TimerSettings"子菜单用于MicroBlaze器件和ZynqUltraScale+MPSoC.
它允许选择哪个定时器是系统的主定时器.
重要提示!
MicroBlaze系统要求设有主定时器.
"ResetGPIOSettings""ResetGPIOSettings"子菜单仅用于MicroBlaze处理器.
它允许选择哪个GPIO是系统复位GPIO.
提示:MicroBlaze系统使用GPIO作为复位输入.
如果选定复位GPIO,就可以从Linux启动系统.
"RTCSettings"选择一个用作Linux内核主定时器的RTC实例.
如果您首选的RTC不在列表中,请选择"manual",以便RTC启用适当的内核驱动.
第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南85"AdvancedBootableImagesStorageSettings""AdvancedBootableImagesStorageSettings"子菜单允许指定可启动镜像的位置.
PetaLinux使用此子菜单中的设置来设置U-Boot.
如果禁用此子菜单,PetaLinux将使用"FlashSettings"子菜单中指定的闪存分区表来定义可启动镜像的位置.
表20:闪存分区表可启动镜像/U-Boot环境分区默认分区名描述启动镜像bootBOOT.
BIN(Zynq-7000器件和ZynqUltraScale+MPSoC)可重定位U-BootBIN文件(u-boot-s.
bin)(MicroBlaze处理器)U-Boot环境分区bootenvU-Boot环境变量分区.
如果选择"primarysd",则U-Boot环境保存在第一个分区.
如果选择"primaryflash",则U-Boot环境保存在闪存分区名称选项中提到的分区.
内核镜像kernel内核镜像image.
ub(FIT格式)DTB镜像dtb如果禁用"AdvancedbootableimagesstorageSettings",并且在闪存分区表设置中找到DTB分区,则PetaLinux将设置U-Boot从分区表加载DTB.
否则,它假定DTB包含在内核镜像中.
"KernelBootargs""KernelBootargs"子菜单允许PetaLinux在DTS中自动生成内核启动命令行设置,或者传递PetaLinux用户定义的内核启动命令行设置.
以下是默认的bootargs.
Microblaze-full--console=ttyS0,115200earlyprintkMicroblaze-lite--console=ttyUL0,115200earlyprintkzynq--console=ttyPS0,115200earlyprintkzynqmp--earlyconclk_ignore_unusedroot=/dev/ramrw注释:在ZynqUltraScale+MPSoC中,如果希望在控制台上看到内核错误打印信息,请添加earlyconconsole=,clk_ignore_unusedroot=/dev/ramrw.
实例:earlyconconsole=/dev/ttyPS0,115200clk_ignore_unusedroot=/dev/ramrwinsystem_user.
dtsi.
如需了解更多信息,请参阅内核文档.
"ATFCompilationConfiguration"只有在ZynqUltraScale+MPSoC平台上才会出现"ATFCompilationConfiguration".
此子菜单允许设置:额外的ATF编译设置更改bl31二进制文件基址更改bl31二进制文件大小"PowerManagementKernelConfiguration""PowerManagementKernelConfiguration"选项允许PetaLinux添加与功耗相关的内核配置.
选择此选项可通过plnx-kernel.
cfg启用/禁用与功耗管理相关的内核设置.
这些设置稍后将应用于内核defconfig(xilinx_zynqmp_defconfig).
如果没有选择这个选项,PetaLinux将不会明确启用/禁用内核设置.
来自Linuxdefconfig的默认配置保留在PetaLinux工程中.
第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南86"u-BootConfiguration""U-BootConfiguration"子菜单允许选择由PetaLinux进行U-Boot自动配置(autoconfig)或U-Boot电路板配置目标.
"ImagePackagingConfiguration""ImagePackagingConfiguration"子菜单允许设置以下镜像封装配置:根文件系统类型生成的可启动内核镜像文件名Linux内核镜像散列函数DTB填充大小是否将可启动镜像复制到主机TFTP服务器目录.
提示:petalinux-build工具总是生成FIT镜像作为内核镜像.
"FirmwareVersionConfiguration""FirmwareVersionConfiguration"子菜单允许设置固件版本信息:表21:固件版本选项固件版本选项目标RootFS中的文件主机名/etc/hostname产品名称/etc/petalinux/product固件版本/etc/petalinux/version提示:主机名不会更新.
如需了解更多详情,请参见赛灵思答复记录69122.
Zynq-7000器件和ZynqUltraScale+MPSoC的FPGA管理器配置和使用FPGA管理器为Linux提供可编程逻辑(PL)设置接口.
它将比特流和dtbos打包到RootFS中的/lib/firmware目录.
为ZynqUltraScale+MPSoC创建PetaLinux工程后,按照以下步骤构建FPGA管理器支持:1.
转到cd.
2.
在petalinux-config命令中,选择"FPGAManager→[*]FpgaManager"注释:PetaLinuxFPGA管理器配置,如被选定:1.
将生成pl.
dtsi节点作为设备数叠加(dtbo).
2.
将.
bin格式的比特流和dtbos打包到RootFS中的/lib/firmware/base目录.
3.
BOOT.
BIN(使用petalinux-package命令生成的)不会有比特流.
3.
在"FPGAManager"Specifyhwdirectorypath"中指定其他hw文件.
第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南87注释:这一步是可选的.
只有当需要将相同的PS和相应的dtbos的多个比特流打包到RootFS中时,才是必要的.
它将在/lib/firmware/的RootFS中生成并打包.
bin格式的比特流及其dtbo.
确保DSA/HDF在hw目录路径和/project-spec/hw-description/system上的PS设计是相同的.
4.
运行petalinux-build.
在目标上加载全比特流的例子:root@xilinx-zcu102-2019_1:~#fpgautil-o/lib/firmware/base/pl.
dtbo-b/lib/firmware/base/design_1_wrapper.
bit.
binTimetakentoloadDTBOis239.
000000milliseconds.
DTBOloadedthroughZynqMPFPGAmanagersuccessfully.
有关BOOT.
BIN生成信息,请参阅petalinux-package命令.
通过sysfs加载完整的比特流—仅加载比特流:root@xilinx-zcu102-2019_1:~#fpgautil-b/mnt/design_1_wrapper.
bit.
binTimetakentoloadBINis213.
000000milliseconds.
BINFILEloadedthroughzynqMPFPGAmanagersuccessfully.
有关更多选项,请参阅帮助部分:root@xilinx-zcu102-2019_1:~#fpgautil-h如需了解更多信息,请参阅http://www.
wiki.
xilinx.
com/Solution+ZynqMP+PL+Programming.
Zynq-7000器件和ZynqUltraScale+MPSoC设备树叠加配置选择此选项将pl与基础DTB分离,并构建pl.
dtsi来生成pl.
dtbo.
创建PetaLinux工程后,按照以下步骤添加叠加支持:1.
转到cd.
2.
在petalinux-config命令中,选择"DTGSettings→Devicetreeoverlay"3.
运行petalinux-build4.
这将生成pl.
dtbo(在images/linux目录内).
FPGA管理器覆盖所有选项.
只有在FPGA管理器未被选中时它才起作用.
从.
bit向.
bin转换比特流1.
利用以下内容创建bif文件:all:{[destination_device=pl](Ex:systemdesign_1_wrapper.
bit)}2.
运行下列命令:bootgen-imagebitstream.
bif-archzynqmp-process_bitstreambin第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南88注释:Bit/bin文件名应与pl.
dtsi(design_1_wrapper.
bit.
bin)中规定的固件名称相同.
配置删除PL设备树如果用户不依赖PL的IP地址,选择该配置选项,以跳过PL节点.
此外,如果任何DTG的PLIP生成错误,则您只需启用此标识,而DTG不会生成任何PL节点.
1.
转到cd.
2.
在petalinux-config命令中,从设备树中选择"DTGSettings→RemovePL".
3.
运行petalinux-build.
注释:FPGA管理器覆盖所有这些选项.
只有在FPGA管理器未被选中时它才起作用.
注释:如果您同时选择设备树覆盖和从设备树中删除Pl,则基础DTB会有覆盖支持的入口,但不会生成任何PLDTBO.
Yocto设置Yocto设置可让您配置工程中可用的各种Yocto功能.
表22:YoctoSettings参数描述TMPDIRLocation该目录被BitBake用于存储日志和构建伪像YOCTO_MACHINE_NAME指定工程的Yocto机器名称Parallelthreadexecution限制BitBake实例的线程数量Addpre-mirrorurl为下载组件的源代码添加镜像站点Localsstatefeedssettings在具体位置使用本地sstate高速缓存EnableDebugTweaks无需密码登录进入目标EnableNetworksstatefeeds启用的NWsstate馈送Userlayers将用户层添加到工程中BB_NO_NETWORK在启用时,互联网的访问权在构建机器上被禁用配置树外构建PetaLinux能够从git库中自动下载最新的内核/U-Boot源代码.
本节介绍了该功能的工作方式及其在系统级菜单配置中的使用方法.
它介绍了进行树外构建的两种方式.
要求本节假定已满足了以下要求:PetaLinux工具软件平台已经准备好构建为硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
git访问的互联网连接可用.
第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南89设置Out-of-tree构建的步骤请通过以下步骤设置UBOOT/Kernel的out-of-tree构建.
1.
更改至您的PetaLinux工程根目录中.
$cd2.
启动顶层系统配置菜单.
$petalinux-config3.
选择"LinuxComponentsSelection"子菜单.
对于内核,请选择"linux-kernel()→remote".
()linux-xlnx(X)remote()ext-local-src对于U-Boot,请选择"u-boot()→remote".
()u-boot-xlnx(X)remote()ext-local-src4.
对于内核,请选择"Remotelinux-kernelsettings→Remotelinux-kernelgitURL",并输入Linux内核的gitURL.
例如,如要使用https://github.
com/Xilinx/linux-xlnx,请输入:git://github.
com/Xilinx/linux-xlnx.
git;protocol=https对于U-Boot,请选择"RemoteU-Bootsettings→Remoteu-bootgitURL",并输入Linux内核的gitURL.
例如:git://github.
com/Xilinx/u-boot-xlnx.
git;protocol=https提供远程git链接后,必须为"gitTAG/CommitID"选择提供以下任何值,否则将会出现错误消息.
必须为此设置设定以下任何值,否则将出现错误消息.
如要指向当前已签出分支的库HEAD:s${AUTOREV}如要指向任何标签:tag/mytag如要指向任何commitid:commitidshakey选择"gitTAG/CommitID"后,可以看到输入字符串值的提示,如下图所示.
输入上述任何一个设定值.
第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南905.
退出菜单,保存设置.
将外部内核和U-Boot用于PetaLinuxPetaLinux包括内核源和U-Boot源.
但是,可以使用PetaLinux构建自己的内核和U-Boot.
PetaLinux支持内核、U-Boot和ATF的本地源.
为外部源创建目录/components/ext_sources/.
1.
复制内核源目录:/components/ext_sources/2.
复制U-Boot源目录:/components/ext_sources/3.
运行petalinux-config,并进入"LinuxComponentsSelection"子菜单.
对于内核,请选择"linux-kernel然后选择"ext-local-src".
()linux-xlnx()remote(X)ext-local-src对于U-Boot,请选择"u-boot然后选择"ext-local-src".
()u-boot-xlnx()remote(X)ext-local-src4.
添加外部源路径.
对于内核,选择"Externallinux-kernellocalsourcesettings--->".
输入路径:${TOPDIR}/.
.
/components/ext_sources/对于U-Boot,选择"Externalu-bootlocalsourcesettings--->".
输入路径:${TOPDIR}/.
.
/components/ext_sources/第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南91${TOPDIR}是指向/build目录的一个Yocto变量.
还可以指定源绝对路径.
源也可以放在工程之外.
注释:在工程中创建带有外部源的BSP时,您有责任将源复制到工程中并进行打包.
如需了解更多信息,请参阅BSP封装.
重要提示!
在components/下不一定要有外部源.
还可以指定工程之外的任何位置.
但是,在封装BSP时,您要负责将外部源复制到components/并设置相对路径.
注释:如果外部源是git库,那么其签出状态必须适合正在构建的工程.
故障排除本节描述在设置out-of-tree构建时可能遇到的一些常见问题.
表23:设置out-of-tree构建故障排除描述/错误消息fatal:TheremoteendhungupunexpectedlyERROR:Failedtogetlinux-kernel问题描述此错误消息表明,系统无法使用远程gitURL下载源代码(Kernel/UBOOT),因此无法继续petalinux-build.
解决方案:检查输入的远程gitURL是否正确.
如果上述解决方案不能解决问题,请使用以下命令清除构建:$petalinux-build-xmrproper上述命令将删除以下目录.
/images//build/重新构建系统镜像.
如需了解更多信息,请参阅构建系统镜像.
设置工程组件如果希望执行高级PetaLinux工程配置,例如启用Linux内核选项或修改闪存分区,请使用petalinux-config工具和适当的-cCOMPONENT选项.
重要提示!
赛灵思技术支持仅支持Linux内核配置中的赛灵思驱动或最优化.
如需了解更多有关Linux的赛灵思驱动的信息,请参阅https://xilinx-wiki.
atlassian.
net/wiki/spaces/A/pages/18841873/Linux+Drivers.
下例显示如何使用petalinux-config来检查或修改PetaLinux工程配置.
1.
更改至您的PetaLinux工程根目录中.
$cd2.
启动顶层系统配置菜单,并按照自己的要求进行配置:$petalinux-config3.
启动Linux内核配置菜单,并按照自己的要求进行配置:$petalinux-config-ckernel第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南924.
启动根文件系统配置菜单,并按照自己的要求进行配置:$petalinux-config-crootfs提示:根据需要在petalinux-config菜单配置中为定制电路板设置U-Boot目标.
根据需要设置$petalinux-configSetMACHINE_NAME.
可能的値是ac701-full、ac701-lite、kc705-full、kc705-lite、kcu105、zc1254-reva、zc1275-reva、zc1275-revb、zc1751-dc1、zc1751-dc2、zc702、zc706、avnet-ultra96-rev1、zcu100-reva、zcu100-revb、zcu100-revc、zcu102-rev1.
0、zcu102-reva、zcu102-revb、zcu104-reva、zcu104-revc、zcu106-reva、zcu111-reva、zedboard、sp701-rev1.
0、vcu118-rev2.
0和zcu1285-reva.
注释:请确保已将特定电路板和用户的dtsi条目添加到project-spec/meta-user/recipes-bsp/device-tree/files/system-user.
dtsi.
对于zcu102和zcu106电路板,使用模板流将以下行添加到/project-spec/meta-user/recipes-bsp/fsbl/fsbl_%.
bbappend以进行FSBL初始化.
YAML_COMPILER_FLAGS_append="-DXPS_BOARD_ZCU102"#forzcu102YAML_COMPILER_FLAGS_append="-DXPS_BOARD_ZCU106"#forzcu106PetaLinux目前使系统自动操作,没有添加这些宏.
设备树设置本节描述为设置设备树,修改哪些文件是安全的,以及如何将新信息添加到设备树中.
要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
必须掌握DTS语法知识才能自定义默认的DTS.
设置设备树用户可修改的PetaLinux设备树配置与以下config文件相关联,这些文件位于/project-spec/meta-user/recipes-bsp/device-tree/files/:multi-arch/system-user.
dtsixen.
dtsizynqmp-qemu-arm.
dtsopenamp.
dtsixen-qemu.
dtsi生成的文件将在/components/plnx_workspace/device-tree/device-tree/目录中.
注意!
上面提到的所有dtsi文件都是由该工具生成的.
不建议编辑任何这些文件.
有关设备树文件的详细信息,请参阅附录B:PetaLinux工程结构.
注意!
上列DTSI文件*.
dtsi是自动生成的,不应该编辑.
第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南93如果希望添加信息,如以太网PHY信息,则应将其包含在system-user.
dtsi文件中.
在此情况下,设备树应该包含与特定平台相关的信息,因为信息(这里是以太网PHY信息)是电路板层面的,因电路板而异.
注释:有必要进行这种手工交互是因为一些信息是"电路板层面的",工具没有办法预测这里应该是什么.
有关各个器件绑定的详细信息,请参考Linux内核设备树绑定文档(来自内核源根的Documentation/devicetree/bindings).
为system-user.
dtsi提供的格式良好的设备树节点示例如下图所示:/dts-v1/;/include/"system-conf.
dtsi"/{};&gem0{phy-handle=;ps7_ethernet_0_mdio:mdio{phy0:phy@7{compatible="marvell,88e1116r";device_type="ethernet-phy";reg=;};};};重要提示!
确保设备树节点名、MDIO地址和兼容字符串与特定系统中使用的命名约定相对应.
下面的示例演示如何添加sample-user-1.
dtsi文件:1.
添加/include/"system-user-1.
dtsi到project-spec/meta-user/recipes-bsp/device-tree/files/system-user.
dtsi.
该文件看起来应该像下面这样:/include/"system-conf.
dtsi"/include/"system-user-1.
dtsi"/{};2.
添加file://system-user-1.
dtsi到project-spec/meta-user/recipes-bsp/device-tree/device-tree.
bbappend.
该文件看起来应该像下面这样:FILESEXTRAPATHS_prepend:="${THISDIR}/files:"SRC_URI+="file://system-user.
dtsi"SRC_URI+="file://system-user-1.
dtsi"不建议更改/components/plnx_workspace/device-tree/device-tree/中的任何内容.
建议使用系统用户DTSI添加、修改和删除节点或值.
最后添加系统用户DTSI,使其中的值具有更高的优先级.
通过在系统用户DTSI中定义,可以覆盖其他DTSI中的任何现有值.
U-Boot配置本节介绍了哪些文件对于U-Boot配置可进行安全修改并讨论有关U-BootCONFIG_选项/设置的有关内容.
第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南94要求本节假定您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置章节.
设置U-Boot通用引导加载程序(U-Boot)的配置通常使用C预处理器定义:配置_OPTIONS_:可以选择配置选项.
选项名称开头是"CONFIG_".
配置_SETTINGS_:这取决于硬件等.
名称开头是"CONFIG_SYS_".
提示:有关CONFIG_选项/设置文档的详细说明和U-Boot的README,请参阅DenxU-Boot指南.
PetaLinuxU-Boot配置与config.
cfg和platform-auto.
h配置文件相关联,这些文件位于/project-spec/meta-plnx-generated/recipes-bsp/u-boot/configs和platform-top.
h,而后者则位于/project-spec/meta-user/recipes-bsp/u-boot/files/.
如要设置U-Boot环境变量,请在platform-auto.
h.
中编辑CONFIG_EXTRA_ENV_SETTINGS变量.
请注意,platform-auto.
h会在每次运行petalinux-config时再生成.
注意!
config.
cfg和platform-auto.
h文件自动生成,请谨慎编辑.
PetaLinux目前还没有自动执行U-Boot配置的CONFIG_选项/设置.
可以将这些CONFIG_选项/设置添加到platform-top.
h文件.
将CONFIG_选项(如NFIG_CMD_MEMTEST)添加到platform-top.
h的步骤:更改至您的PetaLinux工程根目录中.
$cd打开文件platform-top.
h$viproject-spec/meta-user/recipes-bsp/u-boot/files/platform-top.
h如果想添加CONFIG_CMD_MEMTEST选项,请将以下行添加到文件中.
保存更改.
#defineCONFIG_CMD_MEMTEST提示:定义CONFIG_CMD_MEMTEST启用监控命令"mtest",该命令用于简单的RAM测试.
构建U-Boot镜像.
$petalinux-build-cu-boot使用下列命令生成BOOT.
BIN:$petalinux-package--boot--fsbl--fpga--u-boot第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南95启动硬件或QEMU上的镜像,并在U-Boot阶段停止.
在U-Boot控制台中输入mtest命令如下:ZynqMPmtestU-Boot控制台上的输出应该类似如下:Testing00000000.
.
.
00001000:Pattern00000000Writing.
.
.
Reading.
.
.
Iteration:20369重要提示!
如果CONFIG_CMD_MEMTEST未定义,则U-Boot控制台上的输出将如下:U-Boot-PetaLinux>mtestUnknowncommand'mtest'-try'help'如需了解更多有关U-Boot的信息,请参阅https://xilinx-wiki.
atlassian.
net/wiki/spaces/A/pages/18842223/U-boot.
第10章:高级设置UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南96第11章Yocto功能SDK生成(目标系统引导生成)OpenEmbedded构建系统使用BitBake来生成软件开发套件(SDK)安装程序脚本标准SDK.
PetaLinux构建和安装SDK.
安装的SDK可作为应用程序开发的sysroot(系统引导)使用.
这并非指赛灵思SDK.
构建SDK以下命令构建SDK并将其复制到/images/linux/sdk.
sh.
petalinux-build--sdk下面是等效的BitBake命令.
bitbakepetalinux-user-image-cdo_populate_sdk安装SDK生成的SDK必须安装/提取到一个目录中.
以下命令将SDK提取到指定的目录中.
默认SDK是/images/linux/sdk.
sh,默认的安装目录是/images/linux/sdk/.
petalinux-package--sysroot-s|--sdk-d|--dir示例1.
添加交叉编译qt工具链若要利用qt工具链构建SDK:a.
创建/project-spec/meta-user/recipes-core/images/petalinux-user-image.
bbappend文件.
b.
在新建文件中添加inheritpopulate_sdk_qt5.
c.
运行petalinux-config-crootfs并选择"packagegroup-petalinux-qt".
d.
运行petalinux-build-s.
e.
运行petalinux-package--sysroot.
UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南97若要验证:a.
打开新的终端.
b.
转到/image/linux/sdk.
c.
运行sourceenvironment-setup-aarch64-xilinx-linux.
d.
运行whichqmake.
这即确认qmake是否来自SDK.
2.
构建OpenCV应用a.
创建PetaLinux工程.
b.
在RootFS菜单配置中添加packagegroup-petalinux-opencv.
c.
构建SDKpetalinux-build--sdk该命令可构建SDK并将其部署在/images/linux/sdk.
sh.
d.
安装SDKpetalinux-package--sysroot该命令可将SDK安装在/images/linux/sdk.
e.
使用images/linux/sdk目录作为系统根,用于构建OpenCV应用程序.
访问工程中的BitBakeBitBake只在bashshell中可用.
为ZynqUltraScale+MPSoC获取BitBake实用程序的步骤1.
在创建工程之后至少运行一次petalinux-config或petalinux-config--oldconfig或petalinux-config--silentconfig,以便建立所需的环境.
2.
确定PetaLinux工具脚本的源:source/opt/pkg/petalinux/settings.
sh3.
确定Yoctoe-SDK源:source/opt/pkg/petalinux/components/yocto/source/aarch64/environment-setup-aarch64-xilinx-linux4.
确定环境建立脚本的源:source/opt/pkg/petalinux/components/yocto/source/aarch64/layers/core/oe-init-build-env在上述步骤之后,您将被引导至构建目录.
保持在构建目录中,以便运行BitBake.
5.
导出XSCT:exportPATH=/opt/pkg/petalinux/tools/hsm/bin:$PATH第11章:Yocto功能UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南986.
解析配方的PetaLinux变量:exportBB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITEPETALINUX"7.
若要测试BitBake是否可用,运行:bitbakestrace生成的镜像将被放在部署目录中.
您必须将生成的镜像拷贝到/images/linux目录中,以便与其他命令一起操作.
共享sstate-cacheYoctoe-SDK含有最小的共享sstate高速缓存.
赛灵思托管完整的petalinux-imagesstate高速缓存,位置为http://petalinux.
xilinx.
com/sswreleases/rel-v2019.
1/.
在petalinux-build过程中,BitBake将在PetaLinux工具中搜索sstate高速缓存,这是最低设置.
如果在该位置找不到sstate高速缓存,BitBake则在http://petalinux.
xilinx.
com/sswreleases/rel-v2019.
1/中搜索该高速缓存.
如果仍未找到sstate高速缓存,BitBake将重新构建,sstate被签字锁定.
对于您为任何RootFS组件创建的.
bbappend文件,您必须在/project-spec/meta_user/conf/petalinuxbsp.
conf中添加SIGGEN_UNLOCKED_RECIPES+="".
下载镜像赛灵思在https://www.
xilinx.
com/support/download/index.
html/content/xilinx/en/downloadNav/embedded-design-tools.
htmlctar文件.
默认情况下,这个URL被添加到petalinux-config中的Yocto源镜像.
如果从头开始重建任何组件,BitBake首先在预镜像(pre-mirror,即工具下载页面)中搜索组件源,然后在petalinux.
xilinx.
com下载镜像URL中搜索.
随后,在SRC_URI中搜索下载该组件源的配方.
可以通过将SOURCE_MIRROR_URL+=file:///home/you/your-download-dir/添加到/project-spec/meta-user/conf/petalinuxbsp.
conf来添加更多镜像.
机器支持Yocto机器指定为其构建镜像的目标器件.
该变量对应于同名的机器配置文件,通过该文件设定机器特定的设置.
目前,PetaLinux支持用户机器配置文件.
可以在/project-spec/meta-user/conf/machine/下添加自己的机器配置文件,也可以在任何附加层中添加机器配置文件,并通过petalinux-config将其添加到工程中.
通过以下步骤指定PetaLinux工程中的用户机器配置文件名:1.
进入PetaLinux工程.
2.
选择"petalinux-config→Yoctosettings→()MACHINENAME".
第11章:Yocto功能UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南993.
指定机器配置文件名.
现在使用meta-xilinx机器更新BSP.
表24:模板的机器名称更改模板机器zynqplnx-zynq7zynqmpplnx-zynqmpmicroblazeplnx-microblazeel表25:BSP的机器名称更改BSP机器zc702zc702-zynq7zc706zc706-zynq7zcu102(所有变体)zcu102-zynqmpzcu106zcu106-zynqmpzcu104zcu104-zynqmpkc705plnx-microblazeelac701plnx-microblazeelkcu105plnx-microblazeelzcu111zcu111-zynqmpzcu1285zcu1285-revazc1275zc1275-revbsp701sp701-rev1.
0vcu118vcu118-rev2.
0SoC变体支持赛灵思为每个SoC产品提供多个器件.
ZynqUltraScale+MPSoC提供三种器件变体.
如需了解更多信息请参阅此处.
Zynq-7000器件提供两个变体.
如需了解更多信息请参阅此处.
SOC_VARIANT可以扩展${SOC_FAMILY}${SOC_VARIANT}覆盖.
它进一步扩展SoC上的组件覆盖.
(例如mali、vcu).
这使得重用组件覆盖取决于SoC.
该功能主要用于当硬件设计具有相应的IP(VCU或USP)时自动切换到硬件加速.
赛灵思分销SoC的多个变体,如下所示.
1.
Zynq-7000器件提供Zynq7000zs和Zynq7000z变体.
可用的SOC_VARIANT包括:"7zs"-Zynq-7000单个A9核"7z"-Zynq-7000双A9核Zynq-7000器件的默认SOC_VARIANT为"7z".
对于7000zs器件,将SOC_VARIANT="7zs"添加到petalinuxbsp.
confZynq-7000器件没有其他覆盖.
对于EG和EV器件,添加mali440覆盖.
是否添加VCU覆盖取决于硬件设计中的VCUIP.
第11章:Yocto功能UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南1002.
ZynqUltraScale+MPSoC提供三种器件变体.
可用的SOC_VARIANT包括:"cg"-ZynqUltraScale+MPSoCCG器件"eg"-ZynqUltraScale+MPSoCEG器件"ev"-ZynqUltraScale+MPSoCEV器件"dr"-RFSoC器件默认值为"eg".
PetaLinux根据HDF中IP的存在自动分配"ev"和"dr".
注释:必须在petalinuxbsp.
conf中为"cg"器件明确设置SOC_VARIANT="cg".
镜像功能由OpenEmbedded构建系统生成的镜像内容可利用您一般在镜像配方中配置的IMAGE_FEATURES和EXTRA_IMAGE_FEATURES变量予以控制.
通过这些变量,您可以添加若干不同预定义的封装,比如开发实用程序或带有调查应用程序问题或剖析应用程序所需的调试信息的封装.
若要移除任何默认功能,在petalinuxbsp.
conf中添加下列代码:IMAGE_FEATURES_remove="ssh-server-dropbear"若要添加任何新的功能,在petalinuxbsp.
conf中添加下列命令:IMAGE_FEATURES_append="myfeature"第11章:Yocto功能UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南101第12章技术FAQ故障排除本节详细介绍使用PetaLinux命令时出现的常见错误,并详细列出恢复步骤.
有关补丁和Yocto的信息,请参阅https://xilinx-wiki.
atlassian.
net/wiki/spaces/A/pages/18842475/PetaLinux+Yocto+Tips.
NFS上的TMPDIR显示的错误是:"ERROR:OE-core'sconfigsanitycheckerdetectedapotentialmisconfiguration".
Eitherfixthecauseofthiserrorordisablethecheckeratyourownrisk(seesanity.
conf).
Forthelistofpotentialproblemsoradvisories.
TMPDIR:/home/user/xilinx-kc705-axi-full-2019.
1/build/tmp不能位于NFS上.
当TMPDIR在NFS上时,BitBake在解析时将出现错误.
您必须从petalinux-config中更改,然后提供任何本地存储.
若要这么做,请选择"Yocto-settings→TMPDIR".
切勿为两个不同的PetaLinux工程配置相同的TMPDIR.
这可造成构建错误.
含有"_"的配方名称如果应用程序名称是plnx_myapp,BitBake则发生错误.
必须在"_"之后输入版本号.
例如,myapp_1是一个准确的应用程序/模块名称.
若要恢复,您必须sstateclean清理创建的应用程序,然后将其删除.
此外,删除/project-spec/meta-user/recipes-core/images/petalinux-image.
bbappend中的程序行.
IMAGE_INSTALL_append="plnx_myapp"第12章:技术FAQUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南102从崩溃的终端中恢复当按下两次Ctrl+C键,使PetaLinux强制退出时,会出现以下错误:NOTE:SendingSIGTERMtoremaining1tasksErrorinatexit.
_run_exitfuncs:Traceback(mostrecentcalllast):File"/opt/pkg/petalinux/components/yocto/source/aarch64/layers/core/bitbake/lib/bb/ui/knotty.
py",line313,infinishself.
termios.
tcsetattr(fd,self.
termios.
TCSADRAIN,self.
stdinbackup)termios.
error:(5,'Input/outputerror')在该错误之后,控制台即崩溃,您无法看到刚键入的文本.
若要恢复控制台,请输入sttysane,然后按下两次Ctrl+J键.
Python语言设置语言设置缺失时会出现以下错误:错误消息"Couldnotfindthe/log/cooker/plnx_microblazeinthe/tmpdirectory"会出现在petalinux-config期间.
请使用支持UTF-8的区域设置(如LANG=en_US.
UTF-8).
Python无法在加载后更改文件系统区域设置,因此,在Python启动时需要UTF-8,否则将无法工作.
ERROR:Failedtobuildproject.
如要解决上述错误,请设置如下:exportLC_ALL=en_US.
UTF-8exportLANG=en_US.
UTF-8exportLANGUAGE=en_US.
UTF-8内核和U-Boot的Menuconfig挂起对于petalinux-config-c,当内核和U-BootBitBake试图在里面打开一个新终端时,有时会失败.
下面是可能的错误消息.
1.
ERROR:Unabletospawnnewterminal2.
ERROR:Continuingtheexecutionwithoutopeningtheterminal解决方案可以是:1.
使用ssh-X.
2.
在/project-spec/meta-user/conf/petalinuxbsp.
conf中取消OE_TERMINAL行的批注.
可以设置任何适合的终端.
有关更多详细信息,请参见第11章:Yocto功能.
您必须更改OE_TERMINAL,因为它无法通过缺省值.
在/project-spec/meta-user/conf/petalinuxbsp.
conf中取消OE_TERMINAL的批注,并将其设置为xterm或screen.
为此,需要在PC中安装相应的实用程序.
第12章:技术FAQUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南103外部源设置cfg或scc文件不会与Yocto流程中的外部源一起应用(上游行为).
PetaLinux需要应用配置方可处理外部源;它只有处理cfg文件的能力.
因此,总是建议使用cfg文件,而非scc文件.
Xen和openamp通过分布功能来处理.
添加分布功能不能像在scc文件中处理的方式那样在内核中启用相应的配置.
解决方案就是编辑/project-spec/meta-user/recipes-kernel/linux/linux-xlnx_%.
bbappend.
添加以下行:SRC_URI+="file://xilinx-kmeta/bsp/xilinx/xen.
cfg"在使用外部源方法时,必须使用相应的cfg文件替换所有scc文件.
错误消息"do_image_cpio:FunctionFailed"CPIO格式不支持2GB以上的大小.
因此,不能将INITRAMFS用于更大的尺寸.
下面步骤描述较大镜像尺寸(2GB以上)的处理过程.
1.
将RootFS类型更改为SD卡.
$petalinux-config选择"ImagePackagingConfiguration→Rootfilesystemtype→SDcard"2.
在/project-spec/meta-user/conf/petalinuxbsp.
conf中添加以下行.
IMAGE_FSTYPES_remove="cpiocpio.
gzcpio.
bz2cpio.
xzcpio.
lzmacpio.
lz4cpio.
gz.
u-boot"IMAGE_FSTYPES_DEBUGFS_remove="cpiocpio.
gzcpio.
bz2cpio.
xzcpio.
lzmacpio.
lz4cpio.
gz.
u-boot"3.
构建工程.
$petalinux-build注释:与之前不同,目前PetaLinux不生成全局DTS文件.
请使用以下命令生成全局DTS文件:dtc-Idtb-Odts-osystem.
dtssystem.
dtb注意!
对于任何构建操作,不要使用指向工程目录的符号链接路径,包括简单地"cd"到目录中.
封装管理PetaLinux支持Zynq-7000器件的DNF封装管理系统.
利用以下步骤配置和使用封装管理系统:1.
通过petalinux-config-crootfs启用DNF.
在镜像功能项下启用"packagemanagement",在文件系统封装/基础项下启用"dnf".
2.
构建SDK工程.
#petalinux-build3.
在SD或JTAG启动模式中启动Linux.
第12章:技术FAQUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南1044.
在/etc/yum.
repos.
d/目录中创建oe-remote-repo-sswreleases-rel-v2019.
1-feeds-ultra96-zynqmp.
repo,从而在赛思灵平台上的目标上建立.
repo文件.
[oe-remote-repo-sswreleases-rel-v2019.
1-feeds-ultra96-zynqmp]name=OERemoteRepo:sswreleasesrel-v2019.
1feedsultra96-zynqmpbaseurl=http://petalinux.
xilinx.
com/sswreleases/rel-v2019.
1/feeds/ultra96-zynqmpgpgcheck=05.
列出所有可用封装.
#dnfrepoquery6.
安装某个具体封装.
#dnfinstall示例:#dnfinstallpackagegroup-petalinux-matchbox一旦安装了matchbox封装,重启目标,然后您就能获得桌面环境.
在Zynq-7000器件和ZynqUltraScale+MPSoC中有大型INITRAMFS镜像时Linux启动挂机当发出petalinux-boot命令时,会显示以下警告消息:"Linuximagesizeislarge(${imgsize}).
Itcancausebootissues.
PleaserefertoTechnicalFAQs.
StoragebasedRootFilesystemisrecommendedforlargeimages.
"如果您的INITRAMFS镜像尺寸很大,请使用基于存储的启动.
第12章:技术FAQUG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南105附录A移植本节描述当前版本与前一版本的移植详情.
工具目录结构工具目录结构如下:/tools/linux-i386/petalinux已迁往/tools/xsct/petalinux.
因为PetaLinux工具没有使用可用的工具链,/tools/linux-i386,它已经被删除.
/tools/xsct/SDK/2018.
3已迁往/tools/xsct.
DT覆盖支持/images/linux/中的比特流文件名是system.
bit,但是,如果您启用了DT覆盖支持,它将使用设计名称.
已为Zynq-7000器件添加了DT覆盖支持.
更改构建petalinux-build将为Zynq-7000器件和MicroBlaze处理器生成内核镜像.
已移除了ZynqUltraScale+MPSoC内核镜像支持.
附录A:移植UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南106附录BPetaLinux工程结构本节将简要介绍PetaLinux工程的文件和目录结构.
PetaLinux工程一次支持一个Linux系统的开发.
构建的Linux系统由以下组件组成:设备树第一阶段启动加载器(可选)U-BootLinux内核RootFS由以下组件组成:预构建软件包Linux用户应用(可选)用户模块(可选)PetaLinux工程目录包含工程的配置文件、Linux子系统和子系统的组件.
petalinux-build命令用那些配置文件来构建工程.
可以运行petalinux-config来修改这些文件.
以下是PetaLinux工程示例:project-specmeta-plnx-generatedhw-descriptionconfigsmeta-userpre-builtlinuximplementationimageshardwarexilinx-zcu104-2019.
1componentsplnx_workspacedevice-treeconfig.
projectREADMEREADME.
hw表26:PetaLinux工程描述PetaLinux工程中的文件/目录描述/.
petalinux/保存工具使用情况和WebTalk数据的目录.
/config.
project/工程配置文件.
/project-spec工程规格.
/project-spec/hw-description从Vivado设计工具导入的硬件描述.
/project-spec/configs顶层config和RootFSconfig的配置文件UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南107表26:PetaLinux工程描述(续)PetaLinux工程中的文件/目录描述/project-spec/configs/config用于保存用户设置的配置文件/project-spec/configs/rootfs_config用于根文件系统的配置文件.
/components/plnx_workspace/device-tree/device-tree/用于构建设备树的设备树文件.
以下文件由petalinux-config自动生成:skeleton.
dtsi(仅限Zynq-7000器件)zynq-7000.
dtsi(仅限Zynq-7000器件)zynqmp.
dtsi(仅限ZynqUltraScale+MPSoC)pcw.
dtsi(仅限Zynq-7000器件和ZynqUltraScale+MPSoC)pl.
dtsisystem-conf.
dtsisystem-top.
dts.
dtsi不建议编辑这些文件,因为这些文件是由工具重新生成的.
/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.
dtsi没有被任何PetaLinux工具所修改.
此文件可以与版本控制系统一起安全使用.
此外,可以将自己的DTSI文件添加到此目录.
必须通过添加自己的DTSI文件来编辑/project-spec/meta-user/recipes-bsp/device-tree/device-tree.
bbappend.
/project-spec/meta-plnx-generated/recipes-bsp/u-boot/configsU-BootPetaLinux配置文件.
以下文件由petalinux-config自动生成:config.
mk仅用于MicroBlaze处理器platform-auto.
hconfig.
cfgplatform-top.
h不会被任何PetaLinux工具所修改.
U-Boot构建时,这些文件将复制到U-Boot构建目录build/linux/u-boot/src//,如下所示:config是U-Bootkconfig文件.
config.
mk被复制到board/xilinx/microblaze-generic/,用于MicroBlaze.
/project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.
hplatform-auto.
handplatform-top.
h被复制到include/configs/目录.
/components/嵌入式软件工作空间的目录,和封装BSP时存放外部源的位置.
还可以手动将组件复制到此目录中.
下面是放置外部组件的规则:/components/ext_source//project-spec/meta-user/conf/petalinuxbsp.
conf此配置文件包含构建环境的所有本地用户配置.
这用来替代Yocto元层中的"local.
conf".
注释:1.
所有路径都相对于.
工程构建后,将自动生成三个目录:/build用于构建生成的文件.
/images用于可启动镜像.
附录B:PetaLinux工程结构UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南108/build/tmp用于Yocto生成的文件.
此目录可通过petalinux-config设置.
下面给出一个实例:-build-bitbake.
lock-build.
log-config.
log-cache/-conf/-downloads/-misc/-config/-plnx-generated/-rootfs_config/-sstate-cache/-tmp/-components-plnx_workspace/-config.
project-hardware-images-linux/-pre-built-linux/-project-spec-attributes-configs/-config-rootfs_config-hw-description/-meta-plnx-generated/-meta-user/注释:/build/自动生成.
不要手动编辑此目录中的文件.
运行petalinux-config或petalinux-build时此目录中的内容将更新.
/images/也将自动生成.
运行petalinux-build时此目录中的文件将更新.
下表是ZynqUltraScale+MPSoC示例.
默认情况下,petalinux-build后,构件将被删除,以节省空间.
如要保留构件,则必须将INHERIT+="rm_work"从build/conf/local.
conf中删除,但是这会增加工程空间.
表27:PetaLinux工程中的构建目录PetaLinux工程中的构建目录描述/build/build.
log构建日志文件/build/misc/config/存放与Linux子系统构建相关文件的目录/build/misc/rootfs_config/存放与RootFS构建相关文件的目录${TMPDIR}/work/plnx_aarch64-xilinx-linux/petalinux-ser-image/1.
0-r0/rootfs目标的RootFS副本.
这是个暂存目录.
${TMPDIR}/plnx_aarch64存放构建用户应用/库所需的库和报头文件的暂存目录${TMPDIR}/work/plnx_aarch64-xilinx-linux/linux-xlnx存放与内核构建相关文件的目录${TMPDIR}/work/plnx_aarch64-xilinx-linux/u-boot-xlnx存放与U-Boot构建相关文件的目录附录B:PetaLinux工程结构UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南109表27:PetaLinux工程中的构建目录(续)PetaLinux工程中的构建目录描述/components/plnx_workspace/device-tree/device-tree"存放与设备树构建相关文件的目录表28:PetaLinux工程中的镜像目录PetaLinux工程中的镜像目录描述/images/linux/存放Linux子系统可启动镜像的目录工程层级PetaLinux工程在/project-spec下有以下两个层级1.
meta-plnx-generated该层级保持了所有组件的所有bbappends和配置片段(cfg).
该层级中的所有文件都是由工具根据HDF/DSA和用户配置创建的.
在该层级中的文件不得予以手动更新,因为它是为petalinux-config和petalinux-build命令重新生成的.
2.
meta-user该层是所有针对具体用户更改的占位符.
您可以在该层中添加您自己的bbappend和配置.
附录B:PetaLinux工程结构UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南110附录C生成启动组件第一阶段启动加载器(FSBL)默认情况下,顶层系统设置被设定为生成第一阶段启动加载器(FSBL).
这是可选项.
注释:如果不希望PetaLinux构建FSBL/FS-BOOT,则需要自己手动构建.
否则,系统将无法正常启动.
如果之前从menuconfig禁用了第一阶段启动加载器,则可以将工程设置为构建第一阶段启动加载器,如下所示:1.
启动顶层系统设置配置菜单并配置:$petalinux-configa.
选择"LinuxComponentsSelection--->"子菜单.
b.
选择"FirstStageBootLoader"选项.
[*]FirstStageBootloaderc.
退出菜单并保存更改.
2.
启动petalinux-build构建FSBL:构建工程时构建FSBL:$petalinux-build仅构建FSBL:$petalinux-build-cfsbl(forMicroBlaze,itisfs-boot)引导加载程序ELF文件将作为zynqmp_fsbl.
elf(ZynqUltraScale+MPSoC)、zynq_fsbl.
elf(Zynq-7000器件)和fs-boot.
elf(MicroBlaze处理器)安装在工程根目录内的images/linux中.
如需了解更多有关FSBL的信息,请参阅https://xilinx-wiki.
atlassian.
net/wiki/spaces/A/pages/18842019/FSBL.
Arm可信固件(ATF)此项用于ZynqUltraScale+MPSoC.
这是强制要求.
默认情况下,顶层系统设置被设置为生成ATF.
您可以按如下方式设置ATF可配置选项:UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南1111.
启动顶层系统设置配置菜单并配置:$petalinux-configa.
选择"ArmTrustedFirmwareCompilationConfiguration--->"子菜单.
b.
输入您的设置.
c.
退出菜单并保存更改.
2.
在构建工程时构建ATF:$petalinux-build只构建ATF:$petalinux-build-carm-trusted-firmwareATFELF文件将作为ZynqUltraScale+MPSoC的bl31.
elf安装在工程根目录内的images/linux中.
如需了解更多有关ATF的信息,请参见https://xilinx-wiki.
atlassian.
net/wiki/spaces/A/pages/18842107/Arm+Trusted+Firmware.
PMU固件这仅用于ZynqUltraScale+MPSoC.
这是可选项.
默认情况下,顶层系统设置被设定为生成PMU固件.
注意!
如果用户不希望PetaLinux构建PMU固件,则需要自己手动构建.
否则,系统将无法正常启动.
您可以设置工程构建PMU固件如下:1.
启动顶层系统设置配置菜单并配置:$petalinux-configa.
选择"LinuxComponentsSelection".
b.
选择"PMUFirmware"选项.
[*]PMUFirmwarec.
退出菜单并保存更改.
2.
构建工程时构建PMU固件:$petalinux-build仅构建PMU固件:$petalinux-build-cpmufwPMU固件ELF文件将作为ZynqUltraScale+MPSoC的pmufw.
elf安装于工程根目录内的images/linux中.
如需了解更多有关PMU固件的信息,请参阅http://www.
wiki.
xilinx.
com%5CPMU+Firmware.
附录C:生成启动组件UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南112仅用于MicroBlaze平台的FS-BootPetaLinux中的FS-Boot是仅用于MicroBlaze平台的第一阶段引导加载程序演示.
其目的是演示如何从闪存向内存加载镜像并跳转到其中.
如果要试用FS-Boot,至少需要8KB区块RAM.
FS-Boot仅支持标准SPI模式和QuadSPI模式的并列式闪存和SPI闪存.
为了让FS-Boot知道在闪存中的什么位置获取镜像,需要定义宏CONFIG_FS_BOOT_START.
这将由PetaLinux工具完成.
PetaLinux工具在菜单配置主闪存分区表设置中的boot分区设置中自动设置该宏.
对于并列式闪存,这是引导分区的开始地址.
对于SPI闪存,这是boot分区的开始偏移地址.
闪存中的镜像要求BIN文件之前要有封装报头.
FS-Boot从封装中获取目标内存位置.
封装需要包含以下信息:表29:封装信息偏移描述值0*0FS-Boot可启动镜像幻码0*b8b400080*4BIN镜像大小用户定义0*100FS-Boot可启动镜像目标内存地址用户定义.
PetaLinux工具根据菜单配置中的内存设置中的U-Boot文本基地址偏移自动计算此地址.
0*10cBIN文件的起点无FS-Boot忽略封装报头中的其他字段.
PetaLinux工具生成封装报头来封装U-BootBIN文件.
附录C:生成启动组件UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南113附录DQEMU虚拟网络模式QEMU中有两种执行模式:非根(默认)和根模式(需要sudo或根权限).
模式之间的差异与虚拟网络配置有关.
在非根模式下,QEMU设置一个内部虚拟网络,限制来自主机和客户机的网络流量.
其工作原理类似于NAT路由器.
除非重定向tcp端口,否则无法访问此网络.
在根模式下,QEMU在虚拟以太网适配器上创建子网,并依赖于主机系统上的DHCP服务器.
以下几节将详细介绍如何使用这些模式,包括重定向非根模式,以便从本地主机访问.
非根模式下重定向端口如果以默认的非根模式运行QEMU,并且希望从主机访问内部(虚拟)网络(例如,使用GDB或TCF代理进行调试),则需要将仿真的系统端口从QEMU虚拟机内部转发到本地机器.
petalinux-boot--qemu命令使用--qemu-args选项执行此重定向.
下表列出一些重定向实参示例.
这是标准的QEMU功能,请参阅QEMU文档了解更多详情.
表30:重定向实参QEMU选项开关目的从主机访问客户机-tftp在指定目录下设置一个TFTP服务器,该服务器在QEMU内部IP地址10.
0.
2.
2上可用.
-redirtcp:10021:10.
0.
2.
15:21将主机上的端口10021重定向到客户机上的端口21ftp)host>ftplocalhost10021-redirtcp:10023:10.
0.
2.
15:23将主机上的端口10023重定向到客户机上的端口23telnet)host>telnetlocalhost10023-redirtcp:10080:10.
0.
2.
15:80将主机上的端口10080重定向到客户机上的端口80http)在网络浏览器中输入http://localhost:10080-redirtcp:10022:10.
0.
2.
15:22将主机上的端口10022重定向到客户机上的端口22ssh)在主机上运行ssh-P10022localhost以打开到目标的SSH会话下面的例子显示了用于重定向端口的命令行:$petalinux-boot--qemu--kernel--qemu-args"-redirtcp:1534::1534"本文档假设gdbserver和tcp-agent使用端口1534,但是可以重定向到任何未使用的端口.
内部仿真端口也可以不同于本地机器上的端口:$petalinux-boot--qemu--kernel--qemu-args"-redirtcp:1444::1534"附录D:QEMU虚拟网络模式UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南114指定QEMU虚拟子网络默认情况下,PetaLinux使用192.
168.
10.
*作为--root模式中的QEMU虚拟子网络.
如果它被您的局域网或其他虚拟子网络占用,您可以使用另一个子网络.
您可以在命令控制台上按如下方式运行petalinux-boot,从而配置PetaLinux来使用其他子网络设置:注释:该功能需要具有在本地机器上的sudo访问权,而且必须与--root选项配合使用.
$petalinux-boot--qemu--root--u-boot--subnet/例如,要使用子网络192.
168.
20.
*:$petalinux-boot--qemu--root--u-boot--subnet192.
168.
20.
0/24附录D:QEMU虚拟网络模式UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南115附录EQEMU支持的赛灵思IP模型随PetaLinux工具配备的QEMU仿真器支持以下赛灵思IP型号:ZynqUltraScale+MPSoCArmCortex-A53MPCoreZynqUltraScale+MPSoCCortex-R5FZynq-7000ArmCortex-A9CPUMicroBlazeCPU(小尾数AXI)赛灵思Zynq-7000/ZynqUltraScale+MPSoCDDRMemoryController赛灵思ZynqUltraScale+MPSoCDMAController赛灵思ZynqUltraScale+MPSoCSD/SDIOPeripheralController赛灵思ZynqUltraScale+MPSoCGigabitEthernetController赛灵思ZynqUltraScale+MPSoCNANDController赛灵思ZynqUltraScale+MPSoCUARTController赛灵思ZynqUltraScale+MPSoCQSPIController赛灵思ZynqUltraScale+MPSoCI2CController赛灵思ZynqUltraScale+MPSoCUSBController(仅限主机支持)赛灵思Zynq-7000TripleTimerCounter赛灵思Zynq-7000DMAController赛灵思Zynq-7000SD/SDIOPeripheralController赛灵思Zynq-7000GigabitEthernetController赛灵思Zynq-7000USBController(仅限主机支持)赛灵思Zynq-7000UARTController赛灵思Zynq-7000SPIController赛灵思Zynq-7000QSPIController赛灵思Zynq-7000I2CController赛灵思AXITimer和InterruptController外设赛灵思AXIExternalMemoryController(连接到并行闪存)赛灵思AXIDMAController赛灵思AXIEthernet赛灵思AXIEthernetLite赛灵思AXIUART16650和Lite附录E:QEMU支持的赛灵思IP模型UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南116注释:默认情况下,QEMU将禁用无型号信息的任何器件.
出于此原因,可以使用QEMU来测试您自己自定义的IP核(除非您按照QEMU标准为其开发C/C++型号).
如需了解更多信息,请参阅《赛灵思快速仿真器用户指南:QEMU》(UG1169).
附录E:QEMU支持的赛灵思IP模型UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南117附录FXenZynqUltraScale+MPSoC示例本节详细介绍了XenZynqUltraScale+MPSoC示例.
它介绍了如何获取Linux,以便在ZynqUltraScale+MPSoC上的Xen之上作为dom0启动.
要求本节假定已满足了以下要求:您已使PetaLinux工具软件平台做好准备,以构建一个按照您的硬件平台自定义的Linux系统.
如需了解更多信息,请参阅导入硬件配置.
您已从ZCU102参考BSP中创建了一个PetaLinux工程.
在pre-built/linux/images目录中有与Xen相关的预建项,它们是xen.
dtb、xen.
ub、xen-Image和xen-rootfs.
cpio.
gz.
u-boot.
作为dom0启动预建Linux1.
将预建Xen镜像拷贝到您的TFTP目录,以便您可以利用TFTP从U-Boot中将其加载.
$cd$cppre-built/linux/images/xen.
dtb/$cppre-built/linux/images/xen.
ub/$cppre-built/linux/images/xen-Image/$cppre-built/linux/images/xen-rootfs.
cpio.
gz.
u-boot/2.
利用JTAG启动在电路板上启动预建U-Boot镜像或从SD卡启动.
注释:对于SD卡启动,请参见利用SD卡在硬件上启动PetaLinux镜像,对于JTAG启动,请参见利用JTAG在硬件上启动PetaLinux镜像.
3.
从U-Boot中建立TFTP服务器IP:ZynqMP>setenvserverip4.
加载Xen并从U-Boot中:ZynqMP>tftpboot1000000xen.
dtbZynqMP>tftpboot80000xen-ImageZynqMP>tftpboot1030000xen.
ubZynqMP>tftpboot2000000xen-rootfs.
cpio.
gz.
u-bootZynqMP>bootm103000020000001000000提示:对于RootFS镜像大小不同的预建镜像,必须调整上述地址,以便在将这些镜像拷贝到RAM时无覆盖.
附录F:XenZynqUltraScale+MPSoC示例UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南118重新构建Xen在为ZynqUltraScale+MPSoC创建PetaLinux工程之后,按照以下步骤来构建Xen镜像:1.
转到cd.
2.
在petalinux-config命令中,选择"ImagePackagingConfiguration→Rootfilesystemtype(INITRD)".
3.
在petalinux-config-crootfs中,选择"PetaLinuxPackageGroups→Packagegroup-petalinux-xen→[*]packagegroup-petalinux-xen".
4.
编辑设备树,以便在额外Xen相关配置中进行构建.
编辑此文件:project-spec/meta-user/recipes-bsp/device-tree/files/system-user.
dtsi,并添加此行:/include/"xen.
dtsi"它看起来应该像下面这样:/include/"system-conf.
dtsi"/include/"xen.
dtsi"/{};5.
编辑此文件:project-spec/meta-user/recipes-bsp/device-tree/device-tree.
bbappend,并在其中添加此行:SRC_URI+="file://xen.
dtsi"该文件看起来应该像下面这样:FILESEXTRAPATHS_prepend:="${THISDIR}/files:"SRC_URI+="file://system-user.
dtsi"SRC_URI+="file://xen.
dtsi"6.
运行petalinux-build:$petalinux-build.
7.
构建伪像将位于工程目录中的images/linux中.
注释:默认情况下,petalinux-build命令不构建Xen.
默认的根文件系统不含Xen工具.
您必须使用XenRootFS.
重要提示!
您必须根据镜像/RootFS大小来更新xen.
dtsi文件中的dom0内存.
此外,根据不重叠情况下的镜像/RootFS大小调整上述加载地址.
作为dom0启动构建的Linux1.
将构建的Xen镜像拷贝到您的TFTP目录,以便您可以利用TFTP从U-Boot中将其加载.
$cd$cpimages/linux/system.
dtb/$cpimages/linux/xen.
ub/$cpimages/linux/Image/$cpimages/linux/rootfs.
cpio.
gz.
u-boot/2.
利用JTAG启动或从SD卡启动在电路板上启动构建U-Boot镜像.
注释:对于SD卡启动,请参见利用SD卡在硬件上启动PetaLinux镜像,对于JTAG启动,请参见利用JTAG在硬件上启动PetaLinux镜像.
3.
从U-Boot中建立TFTP服务器IP:ZynqMP>setenvserverip附录F:XenZynqUltraScale+MPSoC示例UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南1194.
从U-Boot中加载Xen镜像:ZynqMP>tftpboot1000000xen.
dtbZynqMP>tftpboot80000xen-ImageZynqMP>tftpboot1030000xen.
ubZynqMP>tftpboot2000000xen-rootfs.
cpio.
gz.
u-bootZynqMP>bootm103000020000001000000注释:Xen的加载地址仅是几个代表,有关具体步骤和加载地址,请参见http://www.
wiki.
xilinx.
com/XEN+Hypervisor.
执行OpenAMP通过以下步骤执行OpenAMP:1.
启动内核:$cd$cppre-built/linux/images/openamp.
dtbpre-built/linux/images/system.
dtb$petalinux-boot--jtag--prebuilt3--hw_server-url2.
如要加载任何固件并运行任何测试应用:$echo>/sys/class/remoteproc/remoteproc0/firmware例如,如要加载image_echo_test:$echoimage_echo_test>/sys/class/remoteproc/remoteproc0/firmware$echostart>/sys/class/remoteproc/remoteproc0/state$modproberpmsg_user_dev_driver$echo_test3.
如要卸载应用:modprobe-rrpmsg_user_dev_driverechostop>/sys/class/remoteproc/remoteproc0/state如需了解更多有关OpenAMP的信息,请参阅《Zynq器件的Libmetal和OpenAMP用户指南》(UG1186).
附录F:XenZynqUltraScale+MPSoC示例UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南120附录G附加资源与法律提示赛灵思资源如需了解答复记录、技术文档、下载以及论坛等支持性资源,请参阅赛灵思技术支持.
参考资料以下技术文档是本指南非常实用的补充材料:1.
PetaLinux文档(china.
xilinx.
com/petalinux)2.
赛灵思答复记录(55776)3.
《ZynqUltraScale+MPSoC:软件开发指南》(UG1137)4.
《PetaLinux工具文档:PetaLinux命令行参考》(UG1157)5.
赛灵思快速仿真器用户指南(QEMU)(UG1169)6.
《Zynq器件的Libmetal和OpenAMP用户指南》(UG1186)7.
www.
wiki.
xilinx.
com/Linux8.
PetaLinuxYocto提示9.
YoctoProject技术FAQDocumentationNavigator与设计中心赛灵思DocumentationNavigator(DocNav)提供了访问赛灵思文档、视频和支持资源的渠道,您可以在其中筛选搜索信息.
打开DocNav的方法:在VivadoIDE中,单击"Help→DocumentationandTutorials".
在Windows中,单击"Start→AllPrograms→XilinxDesignTools→DocNav".
在Linux命令提示中输入"docnav".
赛灵思设计中心提供了根据设计任务和其他话题整理的文档链接,您可以使用链接了解关键概念以及常见问题解答.
访问设计中心:UG1144(v2019.
1)2019年5月22日china.
xilinx.
comPetaLinux工具文档参考指南121在DocNav中,单击"DesignHubView"标签.
在赛灵思网站上,查看设计中心页面.
注释:如需了解更多有关DocNav的信息,请参阅赛灵思网站上的DocumentationNavigotor.
请阅读:重要法律提示本文向贵司/您所提供的信息(下称"资料")仅在对赛灵思产品进行选择和使用时参考.
在适用法律允许的最大范围内:(1)资料均按"现状"提供,且不保证不存在任何瑕疵,赛灵思在此声明对资料及其状况不作任何保证或担保,无论是明示、暗示还是法定的保证,包括但不限于对适销性、非侵权性或任何特定用途的适用性的保证;且(2)赛灵思对任何因资料发生的或与资料有关的(含对资料的使用)任何损失或赔偿(包括任何直接、间接、特殊、附带或连带损失或赔偿,如数据、利润、商誉的损失或任何因第三方行为造成的任何类型的损失或赔偿),均不承担责任,不论该等损失或者赔偿是何种类或性质,也不论是基于合同、侵权、过失或是其他责任认定原理,即便该损失或赔偿可以合理预见或赛灵思事前被告知有发生该损失或赔偿的可能.
赛灵思无义务纠正资料中包含的任何错误,也无义务对资料或产品说明书发生的更新进行通知.
未经赛灵思公司的事先书面许可,贵司/您不得复制、修改、分发或公开展示本资料.
部分产品受赛灵思有限保证条款的约束,请参阅赛灵思销售条款:https://china.
xilinx.
com/legal.
htm#tos;IP核可能受赛灵思向贵司/您签发的许可证中所包含的保证与支持条款的约束.
赛灵思产品并非为故障安全保护目的而设计,也不具备此故障安全保护功能,不能用于任何需要专门故障安全保护性能的用途.
如果把赛灵思产品应用于此类特殊用途,贵司/您将自行承担风险和责任.
请参阅赛灵思销售条款:https://china.
xilinx.
com/legal.
htm#tos.
关于与汽车相关用途的免责声明如将汽车产品(部件编号中含"XA"字样)用于部署安全气囊或用于影响车辆控制的应用("安全应用"),除非有符合ISO26262汽车安全标准的安全概念或冗余特性("安全设计"),否则不在质保范围内.
客户应在使用或分销任何包含产品的系统之前为了安全的目的全面地测试此类系统.
在未采用安全设计的条件下将产品用于安全应用的所有风险,由客户自行承担,并且仅在适用的法律法规对产品责任另有规定的情况下,适用该等法律法规的规定.
近日华纳云发布了最新的618返场优惠活动,主要针对旗下的免备案香港云服务器、香港独立服务器、香港高防御服务器等产品,月付6折优惠起,高防御服务器可提供20G DDOS防御,采用E5处理器V4CPU性能,10Mbps独享CN2 GIA高速优质带宽,有需要免备案香港服务器、香港云服务器、香港独立服务器、香港高防御服务器、香港物理服务器的朋友可以尝试一下。华纳云好不好?华纳云怎么样?华纳云服务器怎么样?...
今天遇到一个网友,他之前一直在用阿里云虚拟主机,我们知道虚拟主机绑定域名是直接在面板上绑定的。这里由于他的网站项目流量比较大,虚拟主机是不够的,而且我看他虚拟主机已经有升级过。这里要说的是,用过阿里云虚拟主机的朋友可能会比较一下价格,实际上虚拟主机价格比云服务器还贵。所以,基于成本和性能的考虑,建议他选择云服务器。毕竟他的备案都接入在阿里云。这里在选择阿里云服务器后,他就蒙圈不知道如何绑定域名。这...
对于一般的用户来说,我们使用宝塔面板免费版本功能还是足够的,如果我们有需要付费插件和专业版的功能,且需要的插件比较多,实际上且长期使用的话,还是购买付费专业版或者企业版本划算一些。昨天也有在文章中分享年中促销活动。如今我们是否会发现,我们在安装宝塔面板后是必须强制我们登录账户的,否则一直有弹出登录界面,我们还是注册一个账户比较好。反正免费注册宝塔账户还有代金券赠送。 新注册宝塔账户送代金券我们注册...