On 8/13/21 1:27 PM, Adrian Fiergolski wrote:
Hi Mark,
I use U-Boot SPL, so the u-boot binary includes pmu-firmware. In my
case, the U-Boot SPL injects also the PM configuration object. So far
(gatesgarth), u-boot had multiconfig dependency:
do_compile[mcdepends] = "multiconfig::pmu:pmu-firmware:do_deploy"
This is the standalone version of pmu-firmware. If you have the board
configuration data, xsa or similar. It's recommended you use the
meta-xilinx-tools version instead. This generated a pmu-firmware that
is specific to your board. (May be smaller or more feature rich then
the generic one.)
BTW the format above is 'old' style. It might still work, but the
current recommended format is:
mc::<config>:<recipe>:<task>
(be sure to read to the end, as you may be able to skip all of this
complexity, but using pmufw instead.)
Note, if you are using zynqmp-generic, or including soc-zynqmp.inc in
your custom BSP, there is an easier way to do this:
do_compile[depends] += "${PMU_DEPENDS}"
do_compile[mcdepends] += "${PMU_MCDEPENDS}"
Note, doing it like the above will ensure your code works for
pmu-firmware from BOTH meta-xilinx-tools, and the standalone version.
The build environments are different, thus the different dependency
models.
and thinks worked smoothly.
I aligned the names and the local.conf with your new naming (according
to meta-xilinx-standalone). So, the new dependency is:
do_compile[mcdepends] =
"multiconfig:microblaze-zynqmp-pmu:zynqmp-pmufw:pmu-firmware:do_deploy"
You need to add the multiconfig to your system, should be a basic
example:
https://github.com/Xilinx/meta-xilinx/blob/master/meta-xilinx-standalone/README.md
Two pre-configured multiconfigs exist. zynqmp-pmufw and versal-fw.
You will need to activate the one that matches your confiuration:
local.conf:
BBMULTICONFIG += "zynqmp-pmufw"
However, after your work, I get an error when I try to build an image
for zynqmp:
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing PROVIDES 'pmu-firmware'
pmu-firmware was skipped: incompatible with host aarch64-poky-linux (not
in COMPATIBLE_HOST)
pmu-firmware was skipped: incompatible with host aarch64-xilinx-elf (not
in COMPATIBLE_HOST)
pmu-firmware was skipped: incompatible with host aarch64-xilinx-elf (not
in COMPATIBLE_HOST
You don't have something configured properly. The zynqmp-pmufw
multiconfig:
https://github.com/Xilinx/meta-xilinx/blob/gatesgarth/meta-xilinx-standalone/conf/multiconfig/zynqmp-pmufw.conf
It sets your 'DISTRO' to xilinx-standalone, as well as the DEFAULTTUNE
to 'microblaze' (with some specific tuning options).
The message above looks like both DISTRO was not set, as well as the
architecture was set to aarch64 instead. So it didn't load the
multiconfig.
You should be able to verify using:
bitbake mc:zynqmp-pmufw:pmu-firmware
(yes this format is slightly different then the mcdepends format above.)
How should I address that?
U-Boot is properly looking for
..tmp-microblaze-zynqmp-pmufw/deploy/images/falcon-zynqmp/pmu-firmware-zynqmp-pmu.bin
which hasn't been built yet.
The file that u-boot should look for is captured by
"PMU_FIRMWARE_IMAGE_NAME", and the file exists in
PMU_FIRMWARE_DEPLOY_DIR -- if you are going to directly incorporate
the files from the multiconfig. OTHERWISE, if you instead depend on
the recipe 'pmufw' (in the regular non-multiconfig context). It will
handle everything I said above for you, and the output will end up the
regular deploy dir, under the PMU_FIRMWARE_IMAGE_NAME filename. This
is the recommended way to do it.
So, my recommendation is:
u-boot:
DEPENDS += "pmufw"
do_compile[depends] += "pmufw:do_deploy"
local.conf:
BBMULTICONFIG += "zynqmp-pmufw"
Doing the above, both meta-xilinx-standalone and meta-xilinx-tools
implementations will work, and be completely transparent to the rest
of the system.
--Mark
Regards,
Adrian