[U-Boot-Users] Can U-boot Autodetect arch/ppcversusarch/powerpc from info in the uImage?
Joakim Tjernlund
joakim.tjernlund at transmode.se
Sun Dec 16 22:27:34 CET 2007
> -----Original Message-----
> From: wd at denx.de [mailto:wd at denx.de]
> Sent: den 16 december 2007 21:15
> To: joakim.tjernlund at transmode.se
> Cc: 'Jerry Van Baren'; u-boot-users at lists.sourceforge.net
> Subject: Re: [U-Boot-Users] Can U-boot Autodetect
> arch/ppcversusarch/powerpc from info in the uImage?
>
> In message
> <1197647601.21876.12.camel at gentoo-jocke.transmode.se> you wrote:
> >
> > This is what I came up with to make $dtb a hush variable that don't
> > end up in the environment:
>
> > #define FLAG_PARSE_SEMICOLON (1 << 1)
> > #define FLAG_EXIT_FROM_LOOP 1
> > int misc_init_r (void)
> > {
> > char *bootstr, dtb_str[30], workstr[256];
> >
> > u_boot_hush_start();
>
> Be careful. You are invoking undefined behaviour heare. The idea is
> that u_boot_hush_start() is supposed to be called exactly once only.
> [Yes, I know from looking at the code that at the moment this seems
> to be OK, but ther eis no guarantee for it.]
Yes, I suspected this. Maybe it would be a good idea to move the call
to u_boot_hush_start() earlier in common code so that there is no need
to do it here?
>
> > sprintf(dtb_str, "dtb=0x%lx", (ulong)dt_blob_start);
> > /* Set $dtb in local HUSH env.to my OF tree */
> > if (parse_string_outer(dtb_str,
> > FLAG_PARSE_SEMICOLON |
> FLAG_EXIT_FROM_LOOP) != 0) {
> > /* Add " - $dtb" to $bootcmd if it is missing */
> > bootstr = getenv("bootcmd");
> > if (bootstr && !strstr(bootstr, "- $dtb")) {
> > strcpy(workstr, bootstr);
> > strcat(workstr, " - $dtb");
> > setenv("bootcmd", workstr);
> > }
> > }
> > return 0;
> > }
> >
> > It is fairly ugly, but it works. Comments?
>
> I don't understand why you make it so complicated when a preboot
> command would do exactly the same?
hmm, didn't think of that. Will look into that tmw, thanks
>
> Best regards,
>
> Wolfgang Denk
More information about the U-Boot
mailing list