11-26-2020 09:25 AM
Hi all,
user-packages stand for packages that can be added to the project via:
petalinux-config -c rootfs
user packages --->
My actual case is the user-package linuxptp but my question is not link to this particular package. I followed this forum solution:
https://forums.xilinx.com/t5/Embedded-Linux/How-to-compile-ptp4l-for-microblaze/td-p/977354
This works fine, but the phc_ctl tool from linuxptp is missing.
From the logs, phc_ctl is compilled but is not installed (in the sens of make).
So off course it is not packaged and included into the image.
It seems that the build/install/package process is managed by some scripts:
Where are those scripts from?
How to modify them?
At the end it could be a Yocto related question. But petalinux-config is definitlly part of petalinux and I miss the documentation in between.
11-28-2020 05:38 AM - edited 11-28-2020 05:41 AM
Hi again,
I managed to go ahead on this one:
The documentation between petalinux -c rootfs -> user packages and Yocto is in PetaLinux Tools Documentation Reference Guide (UG1144) p.83
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2020_1/ug1144-petalinux-tools-reference-guide.pdf
This is for petalinux 2020.1 and my previous post was assuming 2019.1
So now we have the location of the starting script for the iperf3 example:
<petalinux install dir>/components/yocto/source/aarch64/layers/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.2.bb
The one I'm interested in is there:
<petalinux install dir>/components/yocto/source/aarch64/layers/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_1.8.bb
DESCRIPTION = "Precision Time Protocol (PTP) according to IEEE standard 1588 for Linux"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
SRC_URI = "http://sourceforge.net/projects/linuxptp/files/v${PV}/linuxptp-${PV}.tgz \
file://build-Allow-CC-and-prefix-to-be-overriden.patch \
file://no-incdefs-using-host-headers.patch \
file://0003-include-missing-time.h-for-time_t.patch \
file://0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch \
"
SRC_URI[md5sum] = "5688cdfe57932273e1dbf35b3b97b9a0"
SRC_URI[sha256sum] = "fa8e00f6ec73cefa7bb313dce7f60dfe5eb9e2bde3353594e9ac18edc93e5165"
EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} \
EXTRA_CFLAGS='-D_GNU_SOURCE -DHAVE_CLOCK_ADJTIME -DHAVE_POSIX_SPAWN -DHAVE_ONESTEP_SYNC ${CFLAGS}'"
do_install () {
install -d ${D}/${bindir}
install -p ${S}/ptp4l ${D}/${bindir}
install -p ${S}/pmc ${D}/${bindir}
install -p ${S}/phc2sys ${D}/${bindir}
install -p ${S}/hwstamp_ctl ${D}/${bindir}
}
And clearly, phc_ctl is missing in the do_install function.
Next is more Yocto related.
Based on what is done for busybox, I added the file:
<petalinux project dir>/project-spec/meta-plnx-generated/recipes-core/linuxptp/linuxptp_%.bbappend
It was not difficult to find some help to now what to put inside this file:
do_install_append () {
install -p ${S}/phc_ctl ${D}/${bindir}
}
Now I have phc_ctl packaged into my image.
I hope it will help someone.
11-28-2020 05:38 AM - edited 11-28-2020 05:41 AM
Hi again,
I managed to go ahead on this one:
The documentation between petalinux -c rootfs -> user packages and Yocto is in PetaLinux Tools Documentation Reference Guide (UG1144) p.83
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2020_1/ug1144-petalinux-tools-reference-guide.pdf
This is for petalinux 2020.1 and my previous post was assuming 2019.1
So now we have the location of the starting script for the iperf3 example:
<petalinux install dir>/components/yocto/source/aarch64/layers/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.2.bb
The one I'm interested in is there:
<petalinux install dir>/components/yocto/source/aarch64/layers/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_1.8.bb
DESCRIPTION = "Precision Time Protocol (PTP) according to IEEE standard 1588 for Linux"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
SRC_URI = "http://sourceforge.net/projects/linuxptp/files/v${PV}/linuxptp-${PV}.tgz \
file://build-Allow-CC-and-prefix-to-be-overriden.patch \
file://no-incdefs-using-host-headers.patch \
file://0003-include-missing-time.h-for-time_t.patch \
file://0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch \
"
SRC_URI[md5sum] = "5688cdfe57932273e1dbf35b3b97b9a0"
SRC_URI[sha256sum] = "fa8e00f6ec73cefa7bb313dce7f60dfe5eb9e2bde3353594e9ac18edc93e5165"
EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} \
EXTRA_CFLAGS='-D_GNU_SOURCE -DHAVE_CLOCK_ADJTIME -DHAVE_POSIX_SPAWN -DHAVE_ONESTEP_SYNC ${CFLAGS}'"
do_install () {
install -d ${D}/${bindir}
install -p ${S}/ptp4l ${D}/${bindir}
install -p ${S}/pmc ${D}/${bindir}
install -p ${S}/phc2sys ${D}/${bindir}
install -p ${S}/hwstamp_ctl ${D}/${bindir}
}
And clearly, phc_ctl is missing in the do_install function.
Next is more Yocto related.
Based on what is done for busybox, I added the file:
<petalinux project dir>/project-spec/meta-plnx-generated/recipes-core/linuxptp/linuxptp_%.bbappend
It was not difficult to find some help to now what to put inside this file:
do_install_append () {
install -p ${S}/phc_ctl ${D}/${bindir}
}
Now I have phc_ctl packaged into my image.
I hope it will help someone.