command line parameters
Till Straumann
strauman at slac.stanford.edu
Wed Sep 19 15:02:52 UTC 2007
IIRC, GRUB stores the command line at physical address 0x2000
which (again, IIRC) is not touched by RTEMS so you can do the
ugly trick:
const char *grub_cmdline_hack = (const char *)0x2000;
Beware, it is probably not \0 terminated and I don't remember
if it is an 'official' feature...
I don't remember if GRUB supports multiboot. A cleaner method
lets early BSP startup code use info from the multiboot record
(small mod to start.S and bspstart.c required). This works for me
in combination with etherboot. I can provide a patch if anyone is
interested.
HTH
-- Till
Joel Sherrill wrote:
> nir levy wrote:
>
>> Hi All,
>>
>> I am running RTEMS on QEMU emulator and i am using grub for booting (
>> similar to most descriptions on the net for doing so).
>> However, i could not find a way to send command line parameters for the
>> RTEMS applications i am running.
>> I have tried to specified them in the GRUB configuration file ( after
>> the program name) but they don't seem to be pass to the application in
>> the Init procedure ( i have checked the c_rtems_main and the procedure
>> in the boot_card and they don't get there as well). I assume the problem
>> might be in the grub but if anyone ever succeed doing it and can help me
>> with that or advice on the issue it will be nice.
>>
>>
> There is no main() in an RTEMS application. So the idea of
> what to do with command line parameters is a bit vague.
>
> Some boot loaders pass in a pointer to a data structure which
> is used by the BSP. U-Boot comes to mind in this case.
>
> Right now, it is the responsibility of the BSP early start
> code (usually named start.S) to invoke boot_card() with
> argc, argv, and environ. Right now, this information disappears
> in boot_card() because there is no defined way to make it
> available to the application.
>
> I looked at this a while back and didn't have any real
> example invoking environments to test with so left it
> alone. My thoughts were:
>
> + conditional compile argc, argv support in bootcard.c
> since it is unused baggage for most BSPs. BSPs which
> want to and can support argc, argv can enable it.
>
> + Define a set of public variables which are the
> bsp or boot argc, argv, and environ values.
>
> Getting the info from grub to pc386's start code
> and to boot_card() makes it possible to address the
> more general issue of what to do with them when they
> are available.
>
> I hope this has encouraged you to modify the BSP
> to transfer the info from grub through start.S to
> boot_card and help define the mechanism. :-D
>
> FWIW another way I have seen is to prompt a user
> for command line arguments. Then convert that
> string into argc/argv format to pass into a
> main that was renamed to XXX_main(). This is a
> relatively painless way to port UNIX main()'s to
> RTEMS especially for testing purposes. I am
> thinking that since at least ttcp has code already
> to do this and I have copied it at least once, that
> is makes sense to generalize it and make it
> part of libmisc.
>
> --joel
>
>
>> Thanks in advance.
>>
>> Best,
>> Nir
>>
>> _______________________________________________
>> rtems-users mailing list
>> rtems-users at rtems.com
>> http://rtems.rtems.org/mailman/listinfo/rtems-users
>>
>>
>
> _______________________________________________
> rtems-users mailing list
> rtems-users at rtems.com
> http://rtems.rtems.org/mailman/listinfo/rtems-users
>
More information about the users
mailing list