I am studying bootloaders in embedded system.Generally speaking, there are two 
stages in a bootloader.

The first stage, which is usually written in assembler, does some necessary 
settings.

The second stage, which is usually written in C, provides more complex 
functions,such as setting specific devices, loading kernel image.

My questions occurs on the moment that bootloader jumps from stage 1 to the 
entrance of C of stage 2. 
The most comman method is to consider the address of main() function as the 
entrance of executable of code of stage2. It, however, may cause two problems: 
the one is that we cannot pass arguments by main() fuction and the other is 
that we cannot deal with the situation which main function return value. 
But the problem can be fixed by a skillful method that is using a "trampoline" 
which is usually a piece of assembler. Following is an example:

.text

.globl _trampoline
_trampoline:
        bl      main
        /* if main ever returns we just call it again */
        b       _trampoline

I want to know that why the most comman method can cause the problems? I don't 
think it is a question which is special for embedded system. It, I think, is 
about the structure of main fuction in memory. Could anybody give me some clues?
And another question is that why a "trampoline" can fix the problems?


_______________________________________________
gnhlug-discuss mailing list
[EMAIL PROTECTED]
http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss

Reply via email to