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

    文章

    6658

    浏览量

    123111
  • 硬件
    +关注

    关注

    11

    文章

    3195

    浏览量

    66044
  • 移植
    +关注

    关注

    1

    文章

    376

    浏览量

    28091
  • 编译
    +关注

    关注

    0

    文章

    648

    浏览量

    32764

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    如何把PetaLinux移植到Xilinx FPGA上

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

    第4章 利用Petalinux工程工作

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

    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>内核调试模式

    赛灵思首款Versal AI Core系列评估套件上市

    VMK180 评估套件支持 Versal Prime 系列 VM1802 器件,该器件集软件可编程芯片基础架构与世界级计算引擎以及一系列连接选项为一体,可在广泛的市场应用中加速各种工作负载。
    的头像 发表于 01-14 09:36 2325次阅读

    Petalinux工程中设备树的介绍

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

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

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

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

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

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

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

    AMD Xilinx SoC:定制PetaLinux中的FSBL

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

    VMK180评估板用户指南

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