Hi,

On 09/30/2015 10:06 AM, Zatkovský Dušan wrote:
Really nobody?

--
Dusan

Dňa 22. 9. 2015 o 14:20 Zatkovský Dušan napísal(a):
Hi all,

Excuse my question if it was solved somewhere in forum, but I didn't
found an answer yet (maybe I can't find the right keywords).

I am building the uboot with yocto for imx6 board. I have started with
some freescale defaults,
edited environment for my needs, saved environment etc ... Now I want
to create a custom
"default" boot script, that will do some "heurestics", such as "look
if usb stick is present, then boot from it, else boot from emmc, etc...".
Currently I am storing that script on first partition on emmc and
loading it with ext2load.

But it has drawbacks:
- user should delete that file -> brick
- user should broke entire filesystem -> brick

I want this script to be "embedded" somehow with uboot image (which is
placed outside partition table on device), but I didn't found any doc
how to do that.
Currently I use CONFIG_EXTRA_ENV_SETTINGS for some basic stuffbut it
is unmaintainable for bigger scripts.

Any suggestions?

Thank you.
--
Dusan


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

The ELCE is coming, so probably people are busy.

Please check those few suggestions, which can help you:
- you can "cat" the binaries of U-Boot and your script into one binary
- you can get the address of your script in the code with few lines:

unsigned long *ptr = (unsigned long *)&_end; - start address of your DTB

ptr += fdt_totalsize(ptr) >> 2; - start address of your script

- you can add some header with "magic code" before your script binary

- check the size limit of your u-boot binary, because your script can be broken if the output binary exceeds the size, which can be loaded to RAM by SPL.

- also check if your bigger binary will not overwrite something on the flash layout

- to execute the script at every boot, you can modify same late function, like autoboot_command in common/autoboot.c ?

- so at this point, you can check your script's magic code - if added

- run script with:

char cmd[64];

sprintf(cmd, "source %p", ptr);
run_command(cmd, 0);

If you add some logic for checking if the script is valid (e.g. header with size and crc ?), then I think you can be sure, that it will work.

Best regards,
--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marc...@samsung.com
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to