0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

移植VMK180 TRD的PetaLinux工程

XILINX开发者社区 来源:赛灵思产工程师 作者:付汉杰 2022-03-18 13:43 次阅读

1

概述

所有工具和参考设计使用2021.2。X86编译主机的操作系统是Ubuntu 18.04.6 LTS。编译记录里的井号,由于和Markdown语法有冲突,把超过3个以上的连续井号全部替换成了星号。有些软件打印的记录非常长,于是把其中部分内容替换成了“……”。

硬件移植和axi interrupt controller的设备树工作由赛灵思工程师季茂林完成。

2

PETALINUX工程

2.1. VMK180 TRD的PetaLinux工程

直接编译vmk180-trd/petalinux/xilinx-vmk180-trd中的VMK180 TRD的PetaLinux工程,能成功编译。

2.2. VMK180 TRD XSA的PetaLinux工程

从VMK180 TRD带的XSA文件:

(vmk180-trd/platforms/vivado/vmk180_trd/project/vmk180_trd.xsa)

创建PetaLinux工程,直接编译,会出错,部分错误信息如下:

ERROR: Error executing a python function in exec_python_func() autogenerated:

The stack trace of python calls that resulted in this exception/failure was:

File: 'exec_python_func() autogenerated', lineno: 2, function:

0001:

*** 0002:devicetree_do_compile(d)

0003:

File: '/proj/hankf/v212/vmk180-trd/vmk180-trd-xsa-peta/components/yocto/layers/core/meta/classes/devicetree.bbclass', lineno: 131, function: devicetree_do_compile

0127: if not(os.path.isfile(dtspath)) or not(dts.endswith(".dts") or devicetree_source_is_overlay(dtspath)):

0128: continue # skip non-.dts files and non-overlay files

0129: except:

0130: continue # skip if can't determine if overlay

*** 0131: devicetree_compile(dtspath, includes, d)

0132:}

0133:

0134:devicetree_do_install() {

0135: for DTB_FILE in `ls *.dtb *.dtbo`; do

.....................

'/proj/hankf/v212/vmk180-trd/vmk180-trd-xsa-peta/build/tmp/work/versal_generic-xilinx-linux/device-tree/xilinx-v2021.2+gitAUTOINC+c0acd8f064-r0', '-o', 'system-top.dtb', '-I', 'dts', '-O', 'dtb', 'system-top.dts.pp']' returned non-zero exit status 2.

Subprocess output:

/proj/hankf/v212/vmk180-trd/vmk180-trd-xsa-peta/project-spec/configs/../../components/plnx_workspace/device-tree/device-tree/pl.dtsi ERROR (phandle_references): /amba_pl@0/mipi_csi2_rx_subsystem@a4060000/ports/port@1/endpoint: Reference to non-existent node or label "mipi_capture_pipe_cap_pipe_ISPPipeline_accel_0mipi_capture_pipe_mipi_csi_rx_ss_mipi_csi2_rx_subsyst_0"

ERROR: Input tree has errors, aborting (use -f to force output)

DEBUG: Python function devicetree_do_compile finished

把文件system-user.dtsi做下列更改后,才能编译通过。

/include/ "system-conf.dtsi"

/// {

//};

/delete-node/ &axi_intc_0;

/delete-node/ &mipi_csirx_outmipi_capture_pipe_mipi_csi_rx_ss_mipi_csi2_rx_subsyst_0;

/ {

amba_pl: amba_pl@0 {

axi_intc_0: interrupt-controller@a42e0000 {

interrupt-names = "irq";

interrupt-parent = <&gic>;

interrupts = <0 99 4>;

};

};

};

2.3. VCK190 XSA的PetaLinux工程

把VMK180 TRD的工程,移植到VCK190,再根据导出的XSA创建PetaLinux工程,也需要做上述更改,才能成功编译PetaLinux工程。

2.4. 移植VMK180 TRD的PetaLinux工程

直接在VMK180 TRD的PetaLinux工程,导入上述VCK190的XSA(移植到VCK190的VMK180 TRD的XSA),能成功编译PetaLinux工程。

2.5. 基于VMK180 TRD的BSP的PetaLinux工程

把VMK180 TRD的PetaLinux工程打包成BSP,再创建PetaLinux工程,并导入上述VCK190的XSA(移植到VCK190的VMK180 TRD的XSA),能成功编译。

3

X86-HOST软件编译

3.1. libaio.h

编译vmk180-trd/pcie_host_package/qdma/apps/dma-util时,得到错误“libaio.h: No such file or directory”。

cc -g -I. -I../include -I../dma-utils -c -std=c99 -o ../dma-utils/dmaxfer.o ../dma-utils/dmaxfer.c -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE -D_AIO_AIX_SOURCE

../dma-utils/dmaxfer.c10: fatal error: libaio.h: No such file or directory

#include

^~~~~~~~~~

compilation terminated.

Makefile recipe for target '../dma-utils/dmaxfer.o' failed

安装libaio1和libaio-dev,再编译就能能成功。

/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app$ sudo apt install libaio1 libaio-dev

Reading package lists... Done

Building dependency tree

Reading state information... Done

The following packages were automatically installed and are no longer required:

linux-hwe-5.4-headers-5.4.0-90 linux-hwe-5.4-headers-5.4.0-91 linux-hwe-5.4-headers-5.4.0-92 linux-hwe-5.4-headers-5.4.0-94

Use 'sudo apt autoremove' to remove them.

The following NEW packages will be installed:

libaio-dev libaio1

0 upgraded, 2 newly installed, 0 to remove and 18 not upgraded.

Need to get 19.3 kB of archives.

After this operation, 87.0 kB of additional disk space will be used.

Get:1 http://mirrors.aliyun.com/ubuntu bionic-updates/main amd64 libaio1 amd64 0.3.110-5ubuntu0.1 [6,476 B]

Get:2 http://mirrors.aliyun.com/ubuntu bionic-updates/main amd64 libaio-dev amd64 0.3.110-5ubuntu0.1 [12.8 kB]

Fetched 19.3 kB in 1s (13.1 kB/s)

Selecting previously unselected package libaio1:amd64.

(Reading database ... 383659 files and directories currently installed.)

Preparing to unpack .../libaio1_0.3.110-5ubuntu0.1_amd64.deb ...

Unpacking libaio1:amd64 (0.3.110-5ubuntu0.1) ...

Selecting previously unselected package libaio-dev:amd64.

Preparing to unpack .../libaio-dev_0.3.110-5ubuntu0.1_amd64.deb ...

Unpacking libaio-dev:amd64 (0.3.110-5ubuntu0.1) ...

Setting up libaio1:amd64 (0.3.110-5ubuntu0.1) ...

Setting up libaio-dev:amd64 (0.3.110-5ubuntu0.1) ...

Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

Processing triggers for libc-bin (2.27-3ubuntu1.4) ...

3.2. PF src ‘.tmp_30090’: Permission denied

编译QDMA驱动时,得到错误“mkdir: cannot create directory ‘.tmp_30090’: Permission denied”。

make -C driver

make[1]: Entering directory '/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/driver'

"distro=, dmajor= dminor= "

5.4.1575.4.0-96-generic: GIT,,, -DGITSP -DGIT

CROSS_COMPILE_FLAG = aarch64-linux-gnu-.

ARCH = x86_64.

rm: cannot remove '/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/driver/src/libqdma': Is a directory

ln: /proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/driver/src/libqdma: cannot overwrite directory

***********************

**** PF src ****

***********************

make[2]: Entering directory '/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/driver/src'

srcdir = /proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/driver/src.

KSRC = /lib/modules/5.4.0-96-generic/build.

VF = 0.

CROSS_COMPILE_FLAG = aarch64-linux-gnu-.

ARCH = x86_64.

EXTRA_FLAGS = .

ccflags-y = -D__READ_ONCE_DEFINED__.

make[3]: Entering directory '/usr/src/linux-headers-5.4.0-96-generic'

mkdir: cannot create directory ‘.tmp_30090’: Permission denied

mkdir: cannot create directory ‘.tmp_30092’: Permission denied

............

把所有文件的所有者改为当前用户,编译也有错误。

/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app$ whoami

hankf

/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app$ sudo chown -R hankf *

/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app$ make clean

***********************

**** apps ****

***********************

make -C apps clean;

............

/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app$ make

***********************

**** apps ****

***********************

make -C apps

make[1]: Entering directory '/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/apps'

*****************************

**** dma-from-device ****

*****************************

make -C dma-from-device clean;

make[2]: Entering directory '/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/apps/dma-from-device'

rm -rf *.o *.bin dma-from-device

make[2]: Leaving directory '/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/apps/dma-from-device'

............

make[3]: Entering directory '/usr/src/linux-headers-5.4.0-96-generic'

mkdir: cannot create directory ‘.tmp_34383’: Permission denied

mkdir: cannot create directory ‘.tmp_34385’: Permission denied

..........

使用sudo命令,以root权限编译,能编译成功。

/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app$ sudo make

***********************

**** apps ****

***********************

make -C apps

make[1]: Entering directory '/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/apps'

*****************************

**** dma-from-device ****

*****************************

make -C dma-from-device clean;

make[2]: Entering directory '/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/apps/dma-from-device'

rm -rf *.o *.bin dma-from-device

make[2]: Leaving directory '/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/apps/dma-from-device'

...................

srcdir = /proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/driver/src.

KSRC = /lib/modules/5.4.0-96-generic/build.

VF = 1.

CROSS_COMPILE_FLAG = .

ARCH = x86_64.

EXTRA_FLAGS = -D__QDMA_VF__.

ccflags-y = -D__READ_ONCE_DEFINED__.

Building modules, stage 2.

MODPOST 1 modules

CC [M] /proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/driver/src/qdma-vf.mod.o

LD [M] /proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/driver/src/qdma-vf.ko

make[3]: Leaving directory '/usr/src/linux-headers-5.4.0-96-generic'

make[2]: Leaving directory '/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/driver/src'

make[1]: Leaving directory '/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/driver'

3.3. Build host application pcie_app

编译应用程序pcie_app,得到错误“undefined reference to cv::namedWindow”。

/proj/hankf/vck190/v212/vck190-from-vmk180-trd-bsp-peta/project-spec/qdma-x86-host-app/pcie_app$ ./do_compile.sh

g++ -Wl,-O1 -o app1 main.o mainwindow.o videofrm.o pcie_host.o moc_mainwindow.o moc_videofrm.o -L/usr/lib -L/usr/lib/x86_64-linux-gnu/glib-2.0 -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_imgcodecs -lrt -lglib-2.0 -lQt5Widgets -lQt5Gui -lQt5Concurrent -lQt5Core -lGL -lpthread

videofrm.o: In function `videofrm::config_frame()':

videofrm.cpp undefined reference to `cv::basic_stringchar_traits,std::allocator> const&, int)'

videofrm.o: In function `videofrm::convert_yuv_to_rgb_buffer(unsigned char*, unsigned char*, unsigned int, unsigned int)':

videofrm.cpp undefined reference to `cv::basic_stringchar_traits,std::allocator> const&,cv::_InputArray const&)'

collect2: error: ld returned 1 exit status

Makefile recipe for target 'app1' failed

make: *** [app1] Error 1

mv: cannot stat 'app1': No such file or directory

使用命令pkg-config opencv –cflags –libs,查看opencv相关库的编译选项,并加入Makefile,能编译成功。

/proj/hankf/vmk180/v212/vmk180-trd$ pkg-config opencv --cflags --libs | grep -i gui

-I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_dnn -lopencv_highgui -lopencv_ml -lopencv_objdetect -1


原文标题:开发者分享|移植VMK180 TRD到VCK190的软件编译问题

文章出处:【微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6556

    浏览量

    122806
  • 硬件
    +关注

    关注

    11

    文章

    3127

    浏览量

    65878
  • 移植
    +关注

    关注

    1

    文章

    375

    浏览量

    28030
  • 编译
    +关注

    关注

    0

    文章

    646

    浏览量

    32681

原文标题:开发者分享|移植VMK180 TRD到VCK190的软件编译问题

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux移植和Xilinx的Petalinux的快速移植开发案例

    作者:殷建飞 本文是昨天发的文章《龙芯杯CPU设计竞赛与ZYNQ设计流程介绍》接续部分。重点介绍传统方式的Linux移植和Xilinx的Petalinux的快速移植开发两种。 部分硬件设计中需要
    的头像 发表于 11-27 10:36 7358次阅读
    Linux<b class='flag-5'>移植</b>和Xilinx的<b class='flag-5'>Petalinux</b>的快速<b class='flag-5'>移植</b>开发案例

    MicroBlaze处理器的PetaLinux操作系统怎么移植

    微处理器核,而如何针对特定的微处理器选择合适的嵌入式操作系统是SOPC开发的难点之一。本文针对Xilinx公司的MicroBlaze软核,介绍了PetaLinux嵌入式操作系统及其移植方法,研究了PetaLinux的相关配置和启
    发表于 03-16 06:37

    【创龙TLZ7x-EasyEVM评估板试用连载】+基于petalinux的Ubuntu移植

    petalinux工程、配置Linux内核、配置 Linux 根文件系统等过程,最终得到移植Linux的boot。再将sd卡格式化,将移植的镜像拷入。再将sd卡插入开发板上电,可以看到
    发表于 07-13 11:20

    MicroBlaze处理器的PetaLinux操作系统移植

    本文介绍了一种可用于MicroBlaze处理器的嵌入式Linux操作系统——PetaLinux,并详细讨论了其内核配置和启动方案。通过移植Peta-Linux,本文开发的SOPC可以直接用于实际工程
    发表于 05-18 11:53 5485次阅读
    MicroBlaze处理器的<b class='flag-5'>PetaLinux</b>操作系统<b class='flag-5'>移植</b>

    如何把PetaLinux移植到Xilinx FPGA上

    讯杂志的最新一期(55期)摘录和改编) PetaLinux已经成为嵌入式设计师的最爱。它是开源免费的,并且支持各种处理器架构,例如赛灵思MicroBlaze CPU和ARM处理器。 为了移植
    发表于 02-08 02:17 381次阅读
    如何把<b class='flag-5'>PetaLinux</b><b class='flag-5'>移植</b>到Xilinx FPGA上

    Petalinux BSP安装与构建过程

    ,或者是qemu系统仿真环境。 下面是一个BSP的安装步骤: 将目录切换到你将创建的petalinux工程的目录下。例:如果你想要在/home/user: cd /home/user 运行
    发表于 11-15 11:50 7826次阅读

    第4章 利用Petalinux工程工作

    建立一个新的工程在从vivado中导出硬件描述文件后,下一步就是建立并初始化新的Petalinux工程petalinux-create工具用于穿件基本
    发表于 11-16 01:27 1694次阅读

    PetaLinux操作系统特点和结构及其移植方法

    本文介绍了PetaLinux操作系统的特点和目录结构,并分析了基于MLD的BSP自动生成技术,最后总结了PetaLinux操作系统移植的具体方法。这对设计基于MicroBlaze处理器的嵌入式系统具有重要指导意义。
    发表于 11-18 02:40 1.9w次阅读
    <b class='flag-5'>PetaLinux</b>操作系统特点和结构及其<b class='flag-5'>移植</b>方法

    petalinux(二)开启petalinux内核调试模式

    要调试基于Xilinx SDK的Linux内核模块,必须使能 KERNEL_DEBUG_INFO和KERNEL_DEBUGGING。这篇博文全面记录了在Petalinux中是如何处理的。解决方案
    发表于 11-18 13:46 1.1w次阅读
    <b class='flag-5'>petalinux</b>(二)开启<b class='flag-5'>petalinux</b>内核调试模式

    Petalinux工程中设备树的介绍

    设备树是 Petalinux kernel 的关键组件,接下来以 2020.1 版本为例,为大家介绍一下在Xilinx Petalinux 工程中的设备树是如何产生,配置以及修改
    的头像 发表于 02-20 16:32 6703次阅读
    <b class='flag-5'>Petalinux</b><b class='flag-5'>工程</b>中设备树的介绍

    如何在Petalinux创建Linux内核模块?

    创建内核模块 Petalinux可以帮助工程师简化内核模块的创建工作。在petalinux工程目录下,使用命令“ petalinux-cre
    的头像 发表于 03-02 11:10 4204次阅读

    赛灵思宣布两款Versal ACAP评估套件现已上市

    日前,赛灵思宣布两款 Versal ACAP 评估套件现已上市,分别为 Versal AI Core 系列 VCK190 评估套件和 Versal Prime系列 VMK180 评估套件
    的头像 发表于 03-12 15:14 3090次阅读

    如何配置Petalinux工程来从Flash启动Linux Kernel

    新版petalinux生成的u-boot是通过boot.scr来加载linux kernel的。如果我们用petalinux工程默认配置和下面命令生成boot image并从flash启动,会出现下面的错误。
    的头像 发表于 08-10 09:03 2113次阅读

    AMD Xilinx SoC:定制PetaLinux中的FSBL

    客户为AMD Xilinx SoC创建了PetaLinux工程。需要定制PetaLinux中的FSBL
    的头像 发表于 07-10 17:05 828次阅读

    VMK180评估板用户指南

    电子发烧友网站提供《VMK180评估板用户指南.pdf》资料免费下载
    发表于 09-13 14:48 0次下载
    <b class='flag-5'>VMK180</b>评估板用户指南