2025. 02. 03. 9:01 keltezéssel, Michal Simek írta:
Hi,
On 2/1/25 15:06, [email protected] wrote:
From: Benjamin Szőke <[email protected]>
Dynamic setting mmcdev and mmcroot.
Then when boot linux, we can have correct "root=/dev/mmcblk[x]p2"
This is source of the problem. That root partition is second is only your choice
and doesn't need to be choice for others.
There is no reason to write this logic to C code.
We are exporting variable bootseq which you can use to determine which
controller was used by boot device and can be used for rootfs.
Here is how you can compose your bootargs.
ZynqMP> setenv bootseq 50
ZynqMP> setenv bootargs root=/dev/mmcblk${bootseq}p2
ZynqMP> pri bootargs
bootargs=root=/dev/mmcblk50p2
Or you should look at devnum which is setup when mmc boot is called.
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_mmc1=devnum=1; run mmc_boot
Thanks,
Michal
Thanks the details. Usually i use extlinux.conf to provide kernel arguments for
root mounting.
Does it mean "bootseq" contains the real mmc blk index number what is really
need in this situation when we like to get it work dynamically?
As i understand, in extlinux.conf, there are two possbile easy solution which
will provide the same what i thought.
"APPEND root=/dev/mmcblk${bootseq}p2 rw rootwait"
or
"APPEND root=/dev/mmcblk${devnum}p2 rw rootwait"
But i have a little confusion about "bootseq" env variable. Why is it good to
save it as a hex env variable?
https://elixir.bootlin.com/u-boot/v2025.01/source/board/xilinx/zynqmp/zynqmp.c#L491
To use it as a varibale for mmc blk it would be more safe/fit to save it in a
normal decimal number.
Wont be it better to save it also as a more verbosable name ("mmcblk") in a
ulong decimal format? It would be more clear for all people that it is usable to
use for mmc blk number also.
env_set_ulong("mmcblk", (unsigned long)bootseq);