0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

移植VMK180 TRD的PetaLinux工程

XILINX開發(fā)者社區(qū) ? 來源:賽靈思產(chǎn)工程師 ? 作者:付漢杰 ? 2022-03-18 13:43 ? 次閱讀

1

概述

所有工具和參考設(shè)計(jì)使用2021.2。X86編譯主機(jī)的操作系統(tǒng)是Ubuntu 18.04.6 LTS。編譯記錄里的井號(hào),由于和Markdown語法有沖突,把超過3個(gè)以上的連續(xù)井號(hào)全部替換成了星號(hào)。有些軟件打印的記錄非常長,于是把其中部分內(nèi)容替換成了“……”。

硬件移植和axi interrupt controller的設(shè)備樹工作由賽靈思工程師季茂林完成。

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)

創(chuàng)建PetaLinux工程,直接編譯,會(huì)出錯(cuò),部分錯(cuò)誤信息如下:

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,再根據(jù)導(dǎo)出的XSA創(chuàng)建PetaLinux工程,也需要做上述更改,才能成功編譯PetaLinux工程。

2.4. 移植VMK180 TRD的PetaLinux工程

直接在VMK180 TRD的PetaLinux工程,導(dǎo)入上述VCK190的XSA(移植到VCK190的VMK180 TRD的XSA),能成功編譯PetaLinux工程。

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

把VMK180 TRD的PetaLinux工程打包成BSP,再創(chuàng)建PetaLinux工程,并導(dǎo)入上述VCK190的XSA(移植到VCK190的VMK180 TRD的XSA),能成功編譯。

3

X86-HOST軟件編譯

3.1. libaio.h

編譯vmk180-trd/pcie_host_package/qdma/apps/dma-util時(shí),得到錯(cuò)誤“l(fā)ibaio.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驅(qū)動(dòng)時(shí),得到錯(cuò)誤“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

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

把所有文件的所有者改為當(dāng)前用戶,編譯也有錯(cuò)誤。

/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權(quán)限編譯,能編譯成功。

/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

編譯應(yīng)用程序pcie_app,得到錯(cuò)誤“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相關(guān)庫的編譯選項(xiàng),并加入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


原文標(biāo)題:開發(fā)者分享|移植VMK180 TRD到VCK190的軟件編譯問題

文章出處:【微信公眾號(hào):XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6859

    瀏覽量

    123499
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3354

    瀏覽量

    66335
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    380

    瀏覽量

    28154
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    660

    瀏覽量

    32926

原文標(biāo)題:開發(fā)者分享|移植VMK180 TRD到VCK190的軟件編譯問題

文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux移植和Xilinx的Petalinux的快速移植開發(fā)案例

    作者:殷建飛 本文是昨天發(fā)的文章《龍芯杯CPU設(shè)計(jì)競賽與ZYNQ設(shè)計(jì)流程介紹》接續(xù)部分。重點(diǎn)介紹傳統(tǒng)方式的Linux移植和Xilinx的Petalinux的快速移植開發(fā)兩種。 部分硬件設(shè)計(jì)中需要
    的頭像 發(fā)表于 11-27 10:36 ?8155次閱讀
    Linux<b class='flag-5'>移植</b>和Xilinx的<b class='flag-5'>Petalinux</b>的快速<b class='flag-5'>移植</b>開發(fā)案例

    MicroBlaze處理器的PetaLinux操作系統(tǒng)怎么移植?

    微處理器核,而如何針對(duì)特定的微處理器選擇合適的嵌入式操作系統(tǒng)是SOPC開發(fā)的難點(diǎn)之一。本文針對(duì)Xilinx公司的MicroBlaze軟核,介紹了PetaLinux嵌入式操作系統(tǒng)及其移植方法,研究了PetaLinux的相關(guān)配置和啟
    發(fā)表于 03-16 06:37

    【創(chuàng)龍TLZ7x-EasyEVM評(píng)估板試用連載】+基于petalinux的Ubuntu移植

    petalinux工程、配置Linux內(nèi)核、配置 Linux 根文件系統(tǒng)等過程,最終得到移植Linux的boot。再將sd卡格式化,將移植的鏡像拷入。再將sd卡插入開發(fā)板上電,可以看到
    發(fā)表于 07-13 11:20

    MicroBlaze處理器的PetaLinux操作系統(tǒng)移植

    本文介紹了一種可用于MicroBlaze處理器的嵌入式Linux操作系統(tǒng)——PetaLinux,并詳細(xì)討論了其內(nèi)核配置和啟動(dòng)方案。通過移植Peta-Linux,本文開發(fā)的SOPC可以直接用于實(shí)際工程
    發(fā)表于 05-18 11:53 ?5708次閱讀
    MicroBlaze處理器的<b class='flag-5'>PetaLinux</b>操作系統(tǒng)<b class='flag-5'>移植</b>

    如何把PetaLinux移植到Xilinx FPGA上

    訊雜志的最新一期(55期)摘錄和改編) PetaLinux已經(jīng)成為嵌入式設(shè)計(jì)師的最愛。它是開源免費(fèi)的,并且支持各種處理器架構(gòu),例如賽靈思MicroBlaze CPU和ARM處理器。 為了移植
    發(fā)表于 02-08 02:17 ?417次閱讀
    如何把<b class='flag-5'>PetaLinux</b><b class='flag-5'>移植</b>到Xilinx FPGA上

    第4章 利用Petalinux工程工作

    建立一個(gè)新的工程在從vivado中導(dǎo)出硬件描述文件后,下一步就是建立并初始化新的Petalinux工程。petalinux-create工具用于穿件基本
    發(fā)表于 11-16 01:27 ?1733次閱讀

    PetaLinux操作系統(tǒng)特點(diǎn)和結(jié)構(gòu)及其移植方法

    本文介紹了PetaLinux操作系統(tǒng)的特點(diǎn)和目錄結(jié)構(gòu),并分析了基于MLD的BSP自動(dòng)生成技術(shù),最后總結(jié)了PetaLinux操作系統(tǒng)移植的具體方法。這對(duì)設(shè)計(jì)基于MicroBlaze處理器的嵌入式系統(tǒng)具有重要指導(dǎo)意義。
    發(fā)表于 11-18 02:40 ?1.9w次閱讀
    <b class='flag-5'>PetaLinux</b>操作系統(tǒng)特點(diǎn)和結(jié)構(gòu)及其<b class='flag-5'>移植</b>方法

    petalinux(二)開啟petalinux內(nèi)核調(diào)試模式

    要調(diào)試基于Xilinx SDK的Linux內(nèi)核模塊,必須使能 KERNEL_DEBUG_INFO和KERNEL_DEBUGGING。這篇博文全面記錄了在Petalinux中是如何處理的。解決方案
    發(fā)表于 11-18 13:46 ?1.1w次閱讀
    <b class='flag-5'>petalinux</b>(二)開啟<b class='flag-5'>petalinux</b>內(nèi)核調(diào)試模式

    賽靈思首款Versal AI Core系列評(píng)估套件上市

    VMK180 評(píng)估套件支持 Versal Prime 系列 VM1802 器件,該器件集軟件可編程芯片基礎(chǔ)架構(gòu)與世界級(jí)計(jì)算引擎以及一系列連接選項(xiàng)為一體,可在廣泛的市場應(yīng)用中加速各種工作負(fù)載。
    的頭像 發(fā)表于 01-14 09:36 ?2389次閱讀

    Petalinux工程中設(shè)備樹的介紹

    設(shè)備樹是 Petalinux kernel 的關(guān)鍵組件,接下來以 2020.1 版本為例,為大家介紹一下在Xilinx Petalinux 工程中的設(shè)備樹是如何產(chǎn)生,配置以及修改
    的頭像 發(fā)表于 02-20 16:32 ?7000次閱讀
    <b class='flag-5'>Petalinux</b><b class='flag-5'>工程</b>中設(shè)備樹的介紹

    如何在Petalinux創(chuàng)建Linux內(nèi)核模塊?

    創(chuàng)建內(nèi)核模塊 Petalinux可以幫助工程師簡化內(nèi)核模塊的創(chuàng)建工作。在petalinux工程目錄下,使用命令“ petalinux-cre
    的頭像 發(fā)表于 03-02 11:10 ?4402次閱讀

    賽靈思宣布兩款Versal ACAP評(píng)估套件現(xiàn)已上市

    日前,賽靈思宣布兩款 Versal ACAP 評(píng)估套件現(xiàn)已上市,分別為?Versal AI Core 系列 VCK190 評(píng)估套件和?Versal Prime系列 VMK180 評(píng)估套件
    的頭像 發(fā)表于 03-12 15:14 ?3229次閱讀

    如何配置Petalinux工程來從Flash啟動(dòng)Linux Kernel

    新版petalinux生成的u-boot是通過boot.scr來加載linux kernel的。如果我們用petalinux工程默認(rèn)配置和下面命令生成boot image并從flash啟動(dòng),會(huì)出現(xiàn)下面的錯(cuò)誤。
    的頭像 發(fā)表于 08-10 09:03 ?2252次閱讀

    AMD Xilinx SoC:定制PetaLinux中的FSBL

    客戶為AMD Xilinx SoC創(chuàng)建了PetaLinux工程。需要定制PetaLinux中的FSBL
    的頭像 發(fā)表于 07-10 17:05 ?962次閱讀

    VMK180評(píng)估板用戶指南

    電子發(fā)燒友網(wǎng)站提供《VMK180評(píng)估板用戶指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 14:48 ?1次下載
    <b class='flag-5'>VMK180</b>評(píng)估板用戶指南