[ECOS] redboot init entry

Gary Thomas gary@mlbassoc.com
Wed Mar 30 17:21:00 GMT 2005


On Wed, 2005-03-30 at 19:55 +0400, Nickolay wrote:
> Hallo Guys!
> 
> I discovered, that my IXDP425 is hanged in this section code:
> 
> #if defined(CYGPRI_REDBOOT_ZLIB_FLASH) && 
> defined(CYGOPT_REDBOOT_FIS_ZLIB_COMMON_BUFFER)
>     fis_zlib_common_buffer =
>     workspace_end -= CYGNUM_REDBOOT_FIS_ZLIB_COMMON_BUFFER_SIZE;
> #endif
> 
> #ifdef CYGFUN_REDBOOT_BOOT_SCRIPT
>     script_timeout = CYGNUM_REDBOOT_BOOT_SCRIPT_DEFAULT_TIMEOUT;
> #endif
> 
> for (init_entry = __RedBoot_INIT_TAB__; init_entry != 
> &__RedBoot_INIT_TAB_END__;  init_entry++) {
>     (*init_entry->fun)();
> }
> 
> 
> What does it mean?
> What is the init_entry ?

It's a pointer (from a table) to initialization functions for the
various pieces of RedBoot.  Try changing the lines to be:

  for (init_entry = __RedBoot_INIT_TAB__; init_entry != &__RedBoot_INIT_TAB_END__;  init_entry++) {
      diag_printf("Calling init: %p\n", init_entry->fun);
      (*init_entry->fun)();
      diag_printf("... back from: %p\n", init_entry->fun);
  }

This should then print out a number of lines with addresses.
Then use 'nm' or 'gdb' to figure out which function was called
last and you can carry on from there.

-- 
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------


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



More information about the Ecos-discuss mailing list