[meta-xilinx] [PATCH 3/5] pmu-firmware: Create a recipe for the PMU firmware for PMU on ZynqMP
Manjukumar Harthikote Matha
manjukumar.harthikote-matha at xilinx.com
Thu May 25 18:00:14 PDT 2017
Hi Nathan,
On 05/18/2017 09:02 AM, Nathan Rossi wrote:
> Create a recipe for the PMU firmware for the ZynqMP PMU. This firmware
> is provided by the embeddedsw repo, and specifically uses the
> 'zynqmp_pmufw' application of the repo.
>
> This build requires a MicroBlaze compiler with newlib, libgloss and
> libgcc.
>
> Signed-off-by: Nathan Rossi <nathan at nathanrossi.com>
> ---
> recipes-bsp/pmu-firmware/pmu-firmware_2017.1.bb | 80 +++++++++++++++++++++++++
> 1 file changed, 80 insertions(+)
> create mode 100644 recipes-bsp/pmu-firmware/pmu-firmware_2017.1.bb
>
> diff --git a/recipes-bsp/pmu-firmware/pmu-firmware_2017.1.bb b/recipes-bsp/pmu-firmware/pmu-firmware_2017.1.bb
> new file mode 100644
> index 0000000000..be4666f6a1
> --- /dev/null
> +++ b/recipes-bsp/pmu-firmware/pmu-firmware_2017.1.bb
> @@ -0,0 +1,80 @@
> +SUMMARY = "Firmware for the PMU on the ZynqMP Programmable Silicon"
> +HOMEPAGE = "https://github.com/Xilinx/embeddedsw"
> +SECTION = "bsp"
> +
> +INHIBIT_DEFAULT_DEPS = "1"
> +DEPENDS = "virtual/${TARGET_PREFIX}gcc newlib libgloss libgcc"
> +
> +# This source links in a number of components with differing licenses, and some
> +# licenses are not Open Source compatible. Additionally the pmu-firmware source
> +# itself is licensed under a modified MIT license which restricts use to Xilinx
> +# devices only.
> +LICENSE = "Proprietary"
> +LIC_FILES_CHKSUM = "file://../../../../license.txt;md5=8c0025a6b0e91b4ab8e4ba9f6d2fb65c"
> +
> +inherit deploy
> +
> +XILINX_RELEASE_VERSION = "v2017.1"
> +SRCREV = "3813f14966bd69e7e1d59943d2a58c64efafa17b"
> +PV = "${XILINX_RELEASE_VERSION}+git${SRCPV}"
> +
> +SRC_URI = "git://github.com/Xilinx/embeddedsw.git;protocol=https;nobranch=1"
> +
> +COMPATIBLE_HOST = "microblaze.*-elf"
> +COMPATIBLE_MACHINE = "^$"
> +COMPATIBLE_MACHINE_zynqmp = "zynqmp"
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +
> +S = "${WORKDIR}/git/lib/sw_apps/zynqmp_pmufw/src"
> +
> +# The makefile does not handle parallelization
> +PARALLEL_MAKE = ""
> +
> +do_configure() {
> + # manually do the copy_bsp step first, so as to be able to fix up use of
> + # mb-* commands
> + ${S}/../misc/copy_bsp.sh
> +}
> +
> +COMPILER = "${CC}"
> +COMPILER_FLAGS = "-O2 -c"
> +EXTRA_COMPILER_FLAGS = "-g -Wall -Wextra -Os -flto -ffat-lto-objects"
> +ARCHIVER = "${AR}"
> +
> +# HACK: fix the dirty bug where xilsecure wants to call this PSVersion
> +# function, which is not implemented for microblaze. The symbols never make it
> +# into the final elf as the xilsecure function that uses it is not called in
> +# pmufw.
> +EXTRA_COMPILER_FLAGS_append = " -DXGetPSVersion_Info=atexit"
> +
> +BSP_DIR ?= "${S}/../misc/zynqmp_pmufw_bsp"
> +BSP_TARGETS_DIR ?= "${BSP_DIR}/psu_pmu_0/libsrc"
> +
Can we add the following? Basically deploying versioned images
PMU_FIRMWARE_BASE_NAME ?="
${PN}${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
PMU_FIRMWARE_BASE_NAME[vardepsexclude] = "DATETIME"
> +def bsp_make_vars(d):
> + s = ["COMPILER", "CC", "COMPILER_FLAGS", "EXTRA_COMPILER_FLAGS", "ARCHIVER", "AR", "AS"]
> + return " ".join(["\"%s=%s\"" % (v, d.getVar(v)) for v in s])
> +
> +do_compile() {
> + # the Makefile in ${S}/../misc/Makefile, does not handle CC, AR, AS, etc
> + # properly. So do its job manually. Preparing the includes first, then libs.
> + for i in $(ls ${BSP_TARGETS_DIR}/*/src/Makefile); do
> + oe_runmake -C $(dirname $i) -s include ${@bsp_make_vars(d)}
> + done
> + for i in $(ls ${BSP_TARGETS_DIR}/*/src/Makefile); do
> + oe_runmake -C $(dirname $i) -s libs ${@bsp_make_vars(d)}
> + done
> +
> + # --build-id=none is required due to linker script not defining a location for it.
> + oe_runmake CC="${CC}" CC_FLAGS="-MMD -MP -Wl,--build-id=none"
> +}
> +
> +do_install() {
> + :
> +}
> +
> +do_deploy() {
> + install -Dm 0644 ${B}/executable.elf ${DEPLOYDIR}/pmu-${MACHINE}.elf
install -Dm 0644 ${B}/executable.elf
${DEPLOYDIR}/${PMU_FIRMWARE_BASE_NAME}.elf
ln -sf ${PMU_FIRMWARE_BASE_NAME}.elf ${DEPLOYDIR}/${PN}-${MACHINE}.elf
ln -sf ${PN}-${MACHINE}.elf ${DEPLOYDIR}/pmu-${MACHINE}.elf
Thanks
Manju
> +}
> +addtask deploy before do_build after do_install
> +
>
More information about the meta-xilinx
mailing list