[U-Boot-Users] How to specify the starting function of aU-boot standalone application.
richardretanubun
richardretanubun at ruggedcom.com
Fri Jun 27 18:08:55 CEST 2008
Hi Guys,
I found this in the u-boot FAQ (is there anything that thing can't
answer? :D)
http://www.denx.de/wiki/view/DULG/MyStandaloneProgramDoesNotWork
Of course, Jason's solution is also nice. Thanks for that!
Regards,
- Richard Retanubun
Jens Gehrlein wrote:
> Hi Jason,
>
> McMullan, Jason schrieb:
>> On Wed, 2008-06-25 at 07:44 +0200, Jens Gehrlein wrote:
>>> I have the same problem. When I modify the source code the compiler
>>> may or may not rearrange the functions. It is not guaranteed, that
>>> the main function always starts at the same address.
>>>
>>> How can this be solved? Is it possible/meaningful to put the main
>>> function into a separate linker segment? Any suggestions?
>>
>> The simplest way I've found is to make the following C file:
>>
>> --- _start.c ---
>> void _start(void)
>> {
>> extern int main(int argc, char **argv);
>> char *args[] = { "myprogramname", "-foo", "bar", /* etc. etc. */ };
>> main(sizeof(args)/sizeof(args[0]), args);
>> /* Wait forever after the program ends */
>> for (;;);
>> }
>> -----------------
>>
>> Then, link '_start.o' before *any* other objects in your link step.
>>
>> Voila! The text entry should be _start!
>>
>> Feel free to add BSS initialization, etc. in _start as needed.
>
> Very nice. Thank you for this tip!
>
> Best Regards,
> Jens
More information about the U-Boot
mailing list