This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: small custom bootloader to start an app stored in flash


Hi again,

At last got some progress! :-)

The jump from the bootloader now works (but with one minor problem. plz see below)

I found that the problem was caused by optimisation.
(and it was dumb of me not to pay attention to a warning: optimization may eliminate reads and/or writes to register variables)

I should have not used -O option when I use a register variable.

Here is bootloader's code:

#define HAL_PLF_ARCH_GETRESETVECTOR(__reset,__vector)      \
{                                                       \
    __reset = *((unsigned long*)(__vector+4));          \
    register volatile CYG_ADDRESS __stack_ptr asm("sp");\
    __stack_ptr  = (*((unsigned long*)(__vector)));     \
}

static volatile unsigned long exec;

int main (void) {

  diag_printf( "JUMP\n" );

  HAL_PLF_ARCH_GETRESETVECTOR(exec, 0x08020000);

  ((void (*)(void))exec)();

  while (1);

  return 0;
}

Here is app's code:

int main (void) {

  diag_printf( "HELLO1\n" );
  diag_printf( "HELLO2\n" );

  while (1);

    return 0;
}

But there is still some minor problem:

Please have a look at the terminal output:

JUMPC!â11=â
HELLO2

Notice that instead of "HELLO1" a garbage (C!â11=â) is printed out.
Where as the next HELLO2 is ok.

It is either something related to diag_print() that was not initialised properly.

or may be something to do with thumb mode on Cortex-4?
here:
$ arm-none-eabi-nm -n app.elf | grep hal_reset_vsr
08020984 T hal_reset_vsr

where as exec is (08020984+1):

(gdb) next
28      ((void (*)(void))exec)();
(gdb) print/x exec
$3 = 0x8020985

any ideas?

Thank you very much for you help!!!

Oleg









--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]