Hi Alejandro,

On 06/12/18 22:56, Alejandro Enedino Hernandez Samaniego wrote:
> This patch ports the pmu-firmware recipe from meta-xilinx-bsp to be used
> with the standalone/baremetal toolchain and also upgrades it to the
> latest release at this point.
> 
> The recipe was trimmed down, and a few changes had to be made to make it
> compatible with the baremetal layer, DEPENDS, pass include dir, license
> and such.
> 
> Signed-off-by: Alejandro Enedino Hernandez Samaniego <aleja...@xilinx.com>
> Signed-off-by: Manjukumar Matha <manjukumar.harthikote-ma...@xilinx.com>

I tried to test your entire patch series but with bad luck. Well, indeed
I tested the patches from the github meta-xilinx repo up to [0], not
sure whether the repo is more up to date than the patches here.

The first issue is that xilinx-standalone is compatible with thud, but
on the mentioned commit (as well as on master) the mete-xilinx-bsp layer
is compatible with sumo only. I solved by cherry-picking [1].

Then I followed the instructions in README.md and 'bitbake newlib' ran
successfully. But 'bitbake pmu-firmware' gives:

microblazeel-xilinx-elf-gcc  -mlittle-endian -mxl-barrel-shift
-mxl-pattern-compare  -mno-xl-reorder -mcpu=v9.2 -mxl-soft-mul
-mxl-soft-div
--sysroot=/home/ceresoli/temp/prova-thud-xilinx/poky/build/tmp/work/microblazeel-v9.2-bs-cmp-xilinx-elf/pmu-firmware/v2018.2+gitAUTOINC+0c6cd096c8-r0/recipe-sysroot
-o executable.elf  pm_master.o  pm_api.o  xpfw_error_manager.o
xpfw_restart.o  pm_config.o  xpfw_mod_legacy.o  pm_requirement.o
pm_node_reset.o  pm_core.o  pm_system.o  pm_common.o  xpfw_xpu.o
pm_gic_proxy.o  xpfw_aib.o  xpfw_events.o  pm_binding.o
pm_mmio_access.o  xpfw_scheduler.o  pm_slave.o  xpfw_mod_pm.o  pm_ddr.o
pm_qspi.o  pm_sram.o  xpfw_mod_sched.o  xpfw_mod_rtc.o  pm_usb.o
pm_extern.o  xpfw_user_startup.o  xpfw_rom_interface.o  xpfw_mod_wdt.o
pm_proc.o  pm_reset.o  pm_callbacks.o  xpfw_mod_stl.o  idle_hooks.o
xpfw_crc.o  xpfw_ipi_manager.o  xpfw_interrupts.o  xpfw_mod_dap.o
xpfw_platform.o  pm_node.o  xpfw_core.o  xpfw_resets.o  xpfw_module.o
pm_periph.o  xpfw_util.o  xpfw_main.o  pm_hooks.o  pm_gpp.o  pm_power.o
xpfw_mod_em.o  pm_pll.o  pm_clock.o  pm_notifier.o  xpfw_start.o  -MMD
-MP -Wl,--build-id=none
-I/home/ceresoli/temp/prova-thud-xilinx/poky/build/tmp/work/microblazeel-v9.2-bs-cmp-xilinx-elf/pmu-firmware/v2018.2+gitAUTOINC+0c6cd096c8-r0/recipe-sysroot/usr/include
-Os -Wl,--start-group,-lxil,-lgcc,-lc,--end-group
-Wl,--start-group,-lxilfpga,-lxilsecure,-lxil,-lgcc,-lc,--end-group
-nostartfiles -Wl,--gc-sections -L../misc/zynqmp_pmufw_bsp/psu_pmu_0/lib
-Tlscript.ld
lto1: fatal error: multiple prevailing defs for 'XUsbPsu_DisableIntr'
compilation terminated.
lto-wrapper: fatal error: microblazeel-xilinx-elf-gcc returned 1 exit status
compilation terminated.
/home/ceresoli/temp/prova-thud-xilinx/poky/build/tmp/work/microblazeel-v9.2-bs-cmp-xilinx-elf/pmu-firmware/v2018.2+gitAUTOINC+0c6cd096c8-r0/recipe-sysroot-native/usr/bin/microblazeel-xilinx-elf/../../libexec/microblazeel-xilinx-elf/gcc/microblazeel-xilinx-elf/8.2.0/ld:
error: lto-wrapper failed
collect2: error: ld returned 1 exit status
Makefile:28: recipe for target 'executable.elf' failed
make: *** [executable.elf] Error 1

I then tried with current master-next [2] and got:

microblazeel-xilinx-elf-gcc  -mlittle-endian -mxl-barrel-shift
-mxl-pattern-compare  -mno-xl-reorder -mcpu=v9.2 -mxl-soft-mul
-mxl-soft-div
--sysroot=/home/ceresoli/temp/prova-thud-xilinx/poky/build/tmp/work/microblazeel-v9.2-bs-cmp-xilinx-elf/pmu-firmware/v2018.3+gitAUTOINC+56f3da2afb-r0/recipe-sysroot
-o executable.elf  pm_master.o  xpfw_error_manager.o  xpfw_restart.o
pm_notifier.o  xpfw_mod_legacy.o  pm_requirement.o  pm_node_reset.o
pm_core.o  pm_system.o  pm_config.o  xpfw_xpu.o  pm_gic_proxy.o
xpfw_aib.o  xpfw_events.o  pm_binding.o  pm_mmio_access.o
xpfw_scheduler.o  pm_slave.o  pm_pinctrl.o  xpfw_mod_pm.o  pm_ddr.o
pm_qspi.o  pm_sram.o  xpfw_mod_sched.o  xpfw_mod_rtc.o  pm_usb.o
pm_extern.o  xpfw_user_startup.o  xpfw_rom_interface.o  xpfw_mod_wdt.o
pm_proc.o  pm_reset.o  pm_callbacks.o  xpfw_mod_stl.o  idle_hooks.o
xpfw_crc.o  xpfw_ipi_manager.o  xpfw_interrupts.o  xpfw_mod_dap.o
xpfw_platform.o  pm_node.o  xpfw_core.o  xpfw_resets.o  xpfw_module.o
pm_periph.o  xpfw_util.o  xpfw_main.o  pm_hooks.o  pm_gpp.o  pm_power.o
xpfw_mod_em.o  pm_pll.o  pm_clock.o  xpfw_start.o  -MMD -MP
-Wl,--build-id=none
-I/home/ceresoli/temp/prova-thud-xilinx/poky/build/tmp/work/microblazeel-v9.2-bs-cmp-xilinx-elf/pmu-firmware/v2018.3+gitAUTOINC+56f3da2afb-r0/recipe-sysroot/usr/include
-Os -Wl,--start-group,-lxil,-lgcc,-lc,--end-group
-Wl,--start-group,-lxilfpga,-lxilsecure,-lxilskey,-lxil,-lgcc,-lc,--end-group
-nostartfiles -Wl,--gc-sections -L../misc/zynqmp_pmufw_bsp/psu_pmu_0/lib
-Tlscript.ld
/home/ceresoli/temp/prova-thud-xilinx/poky/build/tmp/work/microblazeel-v9.2-bs-cmp-xilinx-elf/pmu-firmware/v2018.3+gitAUTOINC+56f3da2afb-r0/recipe-sysroot-native/usr/bin/microblazeel-xilinx-elf/../../lib/microblazeel-xilinx-elf/gcc/../../../libexec/microblazeel-xilinx-elf/gcc/microblazeel-xilinx-elf/8.2.0/ld:
cannot open linker script file xilinx.ld: No such file or directory
collect2: error: ld returned 1 exit status
lto-wrapper: fatal error: microblazeel-xilinx-elf-gcc returned 1 exit status
compilation terminated.
/home/ceresoli/temp/prova-thud-xilinx/poky/build/tmp/work/microblazeel-v9.2-bs-cmp-xilinx-elf/pmu-firmware/v2018.3+gitAUTOINC+56f3da2afb-r0/recipe-sysroot-native/usr/bin/microblazeel-xilinx-elf/../../libexec/microblazeel-xilinx-elf/gcc/microblazeel-xilinx-elf/8.2.0/ld:
error: lto-wrapper failed
collect2: error: ld returned 1 exit status
Makefile:28: recipe for target 'executable.elf' failed

Am I doing something wrong?

> diff --git 
> a/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2018.2.bb
>  
> b/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2018.2.bb
> new file mode 100644
> index 0000000..1a447e2
> --- /dev/null
> +++ 
> b/meta-xilinx-standalone/recipes-standalone/pmu-firmware/pmu-firmware_2018.2.bb
> @@ -0,0 +1,80 @@
> +inherit deploy
> +
> +LICENSE = "Proprietary"
> +LIC_FILES_CHKSUM = 
> "file://../../../../license.txt;md5=2a8d7a7f870f65ce77e8ccd8150cce10"
> +
> +XILINX_RELEASE_VERSION = "v2018.2"
> +SRCREV = "0c6cd096c8f81978854c782c7aa175241fc3af20"
> +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-pmu = "zynqmp-pmu"
> +
> +
> +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.
> +
> +# Also add recipe-sysroot include
> +EXTRA_COMPILER_FLAGS_append = " -DXGetPSVersion_Info=atexit 
> -I${STAGING_DIR_TARGET}/usr/include"

There's a later commit on master-next that bumps to 2018.3 and removes
this hack. Why not just adding 2018.3 directly, without any hacks?


[0]
https://github.com/Xilinx/meta-xilinx/commit/b3804c22387d0a088938c2b1ae1fc40e709fbbf4

[1]
https://github.com/Xilinx/meta-xilinx/commit/17a5f3321f832e5f910ef64595a9e11baf1010b3

[2]
https://github.com/Xilinx/meta-xilinx/commit/b3ad494e69ad63e037d599fffc34b976a915b542

Thanks,
-- 
Luca
-- 
_______________________________________________
meta-xilinx mailing list
meta-xilinx@yoctoproject.org
https://lists.yoctoproject.org/listinfo/meta-xilinx

Reply via email to