This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: redboot init entry
- From: Gary Thomas <gary at mlbassoc dot com>
- To: Nickolay <nickolay at protei dot ru>
- Cc: eCos Discussion <ecos-discuss at ecos dot sourceware dot org>
- Date: Wed, 30 Mar 2005 09:00:30 -0700
- Subject: Re: [ECOS] redboot init entry
- Organization: MLB Associates
- References: <424ACBF7.8090609@protei.ru>
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