Hi! We recently started using U-Boot on various Raspberry Pi 5 boards with different hardware configurations.
While testing, Simon noticed unusual boot failures, such as the kernel failing to boot with no output or U-Boot reporting: "ERROR: Did not find a cmdline Flattened Device Tree." Today, I spent time investigating these issues. It appears that U-Boot retrieves several variables from the Raspberry Pi firmware, with fdt_addr being particularly important. If the environment is saved, fdt_addr gets stored and takes precedence over what the firmware provides to U-Boot. Interestingly, the RPi firmware seems to modify fdt_addr based on connected hardware. Our experiments showed that even attaching an RPi camera module changes the computed fdt_addr and U-Boot reads from the wrong memory location. As a result, saving the environment, whether via the saveenv command in U-Boot or fw_setenv in Linux, can lead to boot failures if the hardware configuration changes. Do you have any suggestions for mitigating this issue? In my opinion, U-Boot should not override such critical variables. Thanks, //richard -- sigma star gmbh | Eduard-Bodem-Gasse 6, 6020 Innsbruck, AUT UID/VAT Nr: ATU 66964118 | FN: 374287y