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.