All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Neal Frager <neal.frager@amd.com>
Cc: ibai.erkiaga-elorza@amd.com, luca.ceresoli@bootlin.com,
	brandon.maier@collins.com, thomas.petazzoni@bootlin.com,
	buildroot@buildroot.org, michal.simek@amd.com
Subject: Re: [Buildroot] [PATCH v12 1/3] boot/zynqmp-firmware: new boot firmware
Date: Fri, 7 Jun 2024 13:22:58 +0200	[thread overview]
Message-ID: <ZmLtkiOdA4tRJrLb@landeda> (raw)
In-Reply-To: <20240607094705.1962913-1-neal.frager@amd.com>

Neal, All,

On 2024-06-07 10:47 +0100, Neal Frager via buildroot spake thusly:
> This patch adds a new boot firmware to buildroot for building the zynqmp pmufw.
> It requires the toolchain-bare-metal package that includes a bare-metal
> binutils, gcc and newlib which can be built for the microblaze architecture.
> 
> Signed-off-by: Neal Frager <neal.frager@amd.com>
> ---
[--SNIP--]
> diff --git a/boot/zynqmp-firmware/Config.in b/boot/zynqmp-firmware/Config.in
> new file mode 100644
> index 0000000000..478d58d552
> --- /dev/null
> +++ b/boot/zynqmp-firmware/Config.in
> @@ -0,0 +1,25 @@
> +config BR2_TARGET_ZYNQMP_FIRMWARE
> +	bool "zynqmp-firmware"
> +	depends on BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH = "microblazeel-xilinx-elf"
> +	help
> +	  This package builds the PMU Firmware application required
> +	  to run U-Boot and Linux in the Zynq MPSoC devices.
> +
> +if BR2_TARGET_ZYNQMP_FIRMWARE
> +
> +comment "zynqmp-firmware needs a bare metal toolchain for tuple microblazeel-xilinx-elf"
> +	depends on BR2_TOOLCHAIN_BARE_METAL_BUILDROOT_ARCH != "microblazeel-xilinx-elf"

The comment is in the if-endif block, so it will only show when
BR2_TARGET_ZYNQMP_FIRMWARE, but the conditions to show the comment are
the opposite of those to show BR2_TARGET_ZYNQMP_FIRMWARE in the first
place, so the comment will not be visible when BR2_TARGET_ZYNQMP_FIRMWARE
is not already available.

So the comment will never be visible.

So, either place it before the main symnbol, or after the if-endif block
(but not in-between the two).

No need to respin just for that, it can be fixed when applying.

> +config BR2_TARGET_ZYNQMP_FIRMWARE_CUSTOM_CFLAGS
> +	string "custom cflags"
> +	help
> +	  Adds additional CFLAGS for building zynqmp firmware.

What kind of specific CFLAGS would one have to pass?

I see in patch 3 that you are passing -DK26_SOM, so presumably that's
about the CPU or board variant. Shouldn't we have a choice for that:

In the Config.in:

    choice
        bool "Board/CPU variant"

    config BR2_TARGET_ZYNQMP_FIRMWARE_DEFAULT
        bool "default"

    config BR2_TARGET_ZYNQMP_FIRMWARE_K26_SOM
        bool "K26 SOM"

    endchoice

    config BR2_TARGET_ZYNQMP_FIRMWARE_VARIANT
        string
        default "K26_SOM"   if BR2_TARGET_ZYNQMP_FIRMWARE_K26_SOM

In the .mk:

    ZYNQMP_FIRMWARE_VARIANT = $(call qstrip,$(BR2_TARGET_ZYNQMP_FIRMWARE_VARIANT))
    ifneq ($(ZYNQMP_FIRMWARE_VARIANT),)
    ZYNQMP_FIRMWARE_CFLAGS += -D$(ZYNQMP_FIRMWARE_VARIANT)
    endif

> +endif # BR2_TARGET_ZYNQMP_FIRMWARE
> diff --git a/boot/zynqmp-firmware/zynqmp-firmware.mk b/boot/zynqmp-firmware/zynqmp-firmware.mk
> new file mode 100644
> index 0000000000..dafb2dbe55
> --- /dev/null
> +++ b/boot/zynqmp-firmware/zynqmp-firmware.mk
> @@ -0,0 +1,33 @@
> +################################################################################
> +#
> +# zynqmp-firmware
> +#
> +################################################################################
> +
> +ZYNQMP_FIRMWARE_VERSION = $(call qstrip,$(BR2_TARGET_ZYNQMP_FIRMWARE_VERSION))
> +ZYNQMP_FIRMWARE_SITE = \
> +	$(call github,Xilinx,embeddedsw,$(ZYNQMP_FIRMWARE_VERSION))
> +ZYNQMP_FIRMWARE_LICENSE = MIT
> +ZYNQMP_FIRMWARE_LICENSE_FILES = license.txt
> +ZYNQMP_FIRMWARE_INSTALL_IMAGES = YES
> +ZYNQMP_FIRMWARE_INSTALL_TARGET = NO
> +ZYNQMP_FIRMWARE_DEPENDENCIES = toolchain-bare-metal-buildroot
> +
> +CUSTOM_CFLAGS = $(call qstrip,$(BR2_TARGET_ZYNQMP_FIRMWARE_CUSTOM_CFLAGS))

All variables must be scopped in the current package "namespace" [0]:

    ZYNQMP_FIRMWARE_CUSTOM_CFLAGS = ...

No need to respin just for that, it can be fixed when applying...

> +ZYNQMP_FIRMWARE_CFLAGS = "-Os -flto -ffat-lto-objects $(CUSTOM_CFLAGS)"
> +
> +define ZYNQMP_FIRMWARE_BUILD_CMDS
> +	$(MAKE) -C $(@D)/lib/sw_apps/zynqmp_pmufw/src \
> +		COMPILER=$(HOST_DIR)/bin/microblazeel-xilinx-elf-gcc \
> +		ARCHIVER=$(HOST_DIR)/bin/microblazeel-xilinx-elf-gcc-ar \
> +		CC=$(HOST_DIR)/bin/microblazeel-xilinx-elf-gcc \
> +		CFLAGS=$(ZYNQMP_FIRMWARE_CFLAGS)
> +endef
> +
> +ZYNQMP_FIRMWARE = $(@D)/lib/sw_apps/zynqmp_pmufw/src/executable.elf

Ah, I see that the check-package hint is not very explicit. All it says
is that the variable is not properly scopped, and what it reports is
the prefix all variables should have:

    ZYNQMP_FIRMWARE_PMUFW = ...

ZYNQMP_FIRMWARE is the stem all variables should have. Sorry, it was not
clear enough in my previous reply, and the check-package hint is a bit
misleading... I'll send a patch to make it clearer.

[0] https://buildroot.org/downloads/manual/manual.html#_tips_and_tricks

Since ZYNQMP_FIRMWARE_PMUFW is used only once, is there really a need
for an intermediate variable to begin with?

No need to respin just for that, it can be fixed when applying...

Regards,
Yann E. MORIN.

> +define ZYNQMP_FIRMWARE_INSTALL_IMAGES_CMDS
> +	$(INSTALL) -D -m 0755 $(ZYNQMP_FIRMWARE) $(BINARIES_DIR)/pmufw.elf
> +endef
> +
> +$(eval $(generic-package))
> -- 
> 2.25.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  parent reply	other threads:[~2024-06-07 11:23 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-07  9:47 [Buildroot] [PATCH v12 1/3] boot/zynqmp-firmware: new boot firmware Neal Frager via buildroot
2024-06-07  9:47 ` [Buildroot] [PATCH v12 2/3] boot/uboot.mk: new zynqmp pmufw build option Neal Frager via buildroot
2024-06-10 14:42   ` Brandon Maier via buildroot
2024-06-07  9:47 ` [Buildroot] [PATCH v12 3/3] configs/zynqmp*: build pmufw source Neal Frager via buildroot
2024-06-10 14:44   ` Brandon Maier via buildroot
2024-06-07 10:04 ` [Buildroot] [PATCH v12 1/3] boot/zynqmp-firmware: new boot firmware Frager, Neal via buildroot
2024-06-07 11:22 ` Yann E. MORIN [this message]
2024-06-07 11:41   ` Frager, Neal via buildroot
2024-06-10 13:12 ` Brandon Maier via buildroot
2024-06-11  4:25   ` Frager, Neal via buildroot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZmLtkiOdA4tRJrLb@landeda \
    --to=yann.morin.1998@free.fr \
    --cc=brandon.maier@collins.com \
    --cc=buildroot@buildroot.org \
    --cc=ibai.erkiaga-elorza@amd.com \
    --cc=luca.ceresoli@bootlin.com \
    --cc=michal.simek@amd.com \
    --cc=neal.frager@amd.com \
    --cc=thomas.petazzoni@bootlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.