$mkdir develop
$cp vcu_qt.zip develop
$cd develop
$unzip vcu_qt.zip
$vi src/main.cpp #在main()中增加一行qDebug("vcu-qt starting\n")保存退出
$rm vcu_qt.zip &&zip -r vcu_qt.zip * #重新打包
$cp vcu_qt.zip ../
$petalinux-build -c vcu-qt #回工程主目录进行编译
$cp build/tmp/deploy/rpm/aarch64/vcu-qt-1.0-r0.aarch64.rpm /tmp/ #拷贝到临时目录
$unpack.sh /tmp/vcu-qt-1.0-r0.aarch64.rpm #解rpm包
$cat unpack.sh
#!/bin/bash
# unrpm.sh :解包一个rpm归档文件
# Usage: `basename $0` target-file
TEMPFILE=$$.cpio ##TEMPFILE必须是一个唯一的名字,$$是这个脚本的进程ID
file=$1
E_NOFILE=71
E_NORPM=72
if [ ! -f "$file" ]then
echo "Should use a existing file"
exit $E_NOFILE
fi
res=`file "$file" | grep -o "rpm"`
if [ -z "$res" ]then
echo "Should use a rpm file"
exit $E_NORPM
fi
rpm2cpio <$file >$TEMPFILE
cpio --make-directories -F $TEMPFILE -i
rm -f $TEMPFILE
exit 0
用户可轻松将这款高稳健 *** 作系统安装到目标FPGA平台上,以供嵌入式设计项目使用。从最初不起眼的胶合逻辑开始,FPGA已经历了漫长的发展道路。当前FPGA的逻辑容量和灵活性已将其带入了嵌入式设计的中心位置。目前,在单个可编程芯片上可实现一个完整系统,这种架构有助于软硬件的协同设计,并能将软硬件应用进行集成。
这些基于FPGA的嵌入式设计种类需要稳健的 *** 作系统。PetaLinux应运而生,已成为众多嵌入式设计人员青睐的对象。它以开源免费的方式提供,支持包括赛灵思MicroBlaze®
CPU和ARM®处理器在内的多种处理器架构。要将PetaLinux移植到特定的FPGA上,必须针对目标平台定制、配置和构建内核源代码、引导载入程序、器件树和根文件系统。
对于PES大学和C-DOT的一个设计项目而言,我们的研发团队准备移植PetaLinux并在采用Kintex®-7 XC7K325T FPGA的赛灵思KC705评估板上运行多个PetaLinux用户应用。结果证明整个过程相当便捷。
选择PetaLinux的原因
在详细介绍具体做法之前,有必要花点时间来探讨针对基于FPGA的嵌入式系统提供的 *** 作系统选项。PetaLinux是FPGA上最常用的 *** 作系统,另外还有μClinux
和Xilkernel。μClinux为Linux发行版,是一款包含小型Linux内核的移植型Linux *** 作系统,适用于无存储器管理单元(MMU)的处理器[1]。μClinux配备有各种库、应用和工具链。Xilkernel就其本身而言,是一款小型、高稳健性、模块化内核,能够提供高于μClinux
的定制性能,有助于用户通过定制内核来优化其设计尺寸与功能[2]。
同时,PetaLinux也是一款完整的Linux发行版及开发环境,适用于基于FPGA的片上系统(SoC)设计。PetaLinux包含预配置二进制可引导映像、面向赛灵思器件的完全可定制Linux
以及配套提供的PetaLinux软件开发套件(SDK)[3]。其中SDK包括用于自动完成配置、构建和部署过程中各种复杂工作的工具和实用程序。赛灵思提供可免费下载的PetaLinux开发包,其中包括针对各种赛灵思FGPA开发套件而设计的硬件参考项目。同时包含在内的还有适用于赛灵思FPGA的内核配置实用程序、交叉编译器等软件工具、硬件设计创建工具以及大量其它设计辅助功能。
据报道,Xilkernel 的性能优于μClinux[4],而PetaLinux的性能又优于Xilkernel
[5]。由于这个原因,特别是由于已针对我们赛灵思目标板提供的软件包原因,我们为我们的项目选择了PetaLinux。移植PetaLinux的另一大优势是用户可以轻松实现远程编程。这就意味着用户可使用远程接入方式,通过远程登录,采用新的配置文件(或比特流文件)加载FPGA目标板。
有两种方法可以创建用于构建PetaLinux系统的软件平台:在Linux终端上使用PetaLinux命令或通过下拉菜单使用GUI。
开始安装
下面详细介绍我们项目团队安装PetaLinux的方法。第一步,我们下载了PetaLinux软件包12.12版以及用于Kintex-7目标板的电路板支持包(BSP)。然后运行了PetaLinux
SDK安装程序,并在控制台上使用下列命令把SDK安装到了/opt/Petalinux-v12.12-final目录下:
@ cd /opt
@ cd /opt/PetaLinux -v12.12-final-full.tar.gz
@ tar zxf PetaLinux-v12.12-final-full.tar.gz
随后,我们把从赛灵思网站获得的PetaLinux SDK许可证复制并拷贝到.xilinx和.Petalogix文件夹中。接下来,我们使用下列命令获取适当设置,设置了SDK的工作环境:
@ cd /opt/PetaLinux-v12.12-final
@ source settings.sh
为验证工作环境是否设置正确,我们使用了以下命令:
@ echo $PETALINUX
如果环境设置正确,将显示PetaLinux的安装路径。在本案例中,PetaLinux的安装路径是 /opt/PetaLinux-v12.12-final。
如果想在FSBL里面加载bitstream的话,必须关闭FPGA Manager!
GPIO *** 作,MIO从0-53,EMIO从54开始
petalinux-build -c fsbl
petalinux-build -c u-boot
petalinux-package --boot --u-boot --format BIN
然后把BOOT.BIN写入到SD卡中即可启动U-Boot
这里就使用网线直连的方式来启动,也可以使用dhcp命令来自动获取ip
记得saveenv,然后ping一下之前的NFS服务器ip,就可以使用了
bdinfo查看到DRAM bank
petalinux-build -c device-tree
petalinux-build -c kernel
nfs 800000 192.168.123.196:/home/imcort/Documents/nfs/zImage
nfs 0 192.168.123.196:/home/imcort/Documents/nfs/system.dtb
bootz 800000 - 0
u-boot只需要保留最基本的设备驱动即可
setenv bootcmd 'dhcpnfs 800000 192.168.123.196:/home/imcort/Documents/nfs/zImagenfs 0 192.168.123.196:/home/imcort/Documents/nfs/system.dtbbootz 800000 - 0'
saveenv
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)