On 7/28/25 8:08 PM, Frank Wunderlich wrote:
Am 28. Juli 2025 18:34:01 MESZ schrieb "Lucien.Jheng" <lucienzx...@gmail.com>:

Marek Vasut 於 2025/7/27 下午 10:46 寫道:
On 7/27/25 4:16 PM, Lucien.Jheng wrote:
This commit introduces a new API, request_firmware_into_buf_via_script(),
to the fs_loader framework.
This function allows firmware to be loaded into memory
using a user-defined U-Boot script,
providing greater flexibility for firmware loading scenarios that cannot be 
handled
by static file paths or device/partition selection alone.

Please run some 'fmt -w 72' on the paragraph above.
Got it. Will modify for the next version.
[...]

I've validated this API on the Banana Pi R3 Mini. Here are my test commands and 
logs:
1.  `env set en8811h_load_firmware 'env set fw_addr 0x46000000 && env set fw_size 0x24000 
&& load mmc 0:3 0x46000000 /boot/EthMD32.dm.bin && load mmc 0:3 0x46004000 
/boot/EthMD32.DSP.bin

The 'load' command sets $filesize variable AFTER the load completed. The 
$filesize variable contains the actual size of the loaded data. You will likely 
need to expand the script a bit:

env set fw_addr 0x46000000 && env set fw_size 0x24000 && \
mw.b ${fw_addr} 0 ${fw_size} && # Make sure the memory backing the
                                 # firmware is initialized to some valid
                                 # content.
load mmc 0:3 0x46000000 /boot/EthMD32.dm.bin && \
if test ${filesize} -lt 0x4000 ; then # Validate that the size of loaded
                                       # data is correct
   load mmc 0:3 0x46004000 /boot/EthMD32.DSP.bin
   # Validate loaded data size here again
else
   env set fw_size 0                   # Indicate failure
   exit 1
fi
OK. I will expand the script you mention.

[...]

Looks pretty good otherwise I think , thanks !
Thank you for your great advice.

Hi,

Is it possible to trigger it from uboot console?

E.g. setting these vars from there and then call the firmware load function and 
maybe network init?
For some devices (like PCIe and USB) it might be possible, since those are initialized after 'pci enum' and 'usb start' . For devices which are started early, set the script, saveenv , and reset. For some devices it might be possible to experiment with this using CMD_BIND too.

Reply via email to