This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Re: redboot configuration bug
- From: Jürgen Lambrecht <J dot Lambrecht at televic dot com>
- To: Armin von Collrepp <avc2107 at googlemail dot com>
- Cc: ecos-discuss at sources dot redhat dot com
- Date: Thu, 29 May 2008 14:22:20 +0200
- Subject: Re: [ECOS] redboot configuration bug
- References: <483D8088.3000105@televic.com> <EBA990E6-816D-407B-A92F-3123D1472650@gmail.com>
Armin von Collrepp wrote:
Hi,
we met the same problem when building a Redboot debug version with RAM
startup and mangling enabled.
Well, the only reason not to claim the COMMs is that you have another
way to print/read characters to/from console. Normally this is a
bootloader that initializes the COMMs in the VVT.
Indeed, the bootloader is redboot in ROM that initializes the VVT. So
the RAM application should not reinitialize the VVT (so not claim COMMs).
This solved the problem for our purposes...
#if !defined(CYGSEM_HAL_USE_ROM_MONITOR_GDB_stubs)
CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL);
#endif // #if defined(CYGSEM_HAL_USE_ROM_MONITOR_GDB_stubs)
Indeed, I do the same; but I guess it's better to find a way to solve it
in the main ecos tree.
Kind regards,
Juergen
Best Regards,
Armin
On May 28, 2008, at 11:55 PM, Jürgen Lambrecht wrote:
Hello,
I am building a RAM version of redboot, and I want to disable the
following option:
CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS.
But this *forces* CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL to become
inactive, so it is undeclared.
And therefore redboot/../main.c fails to compile on line 270:
void
cyg_start(void)
{
...
CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL);
The CDL rationale is correct:
CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL should only be modifiable if
CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE=1, and this only
makes sense if CYGSEM_HAL_VIRTUAL_VECTOR_CLAIM_COMMS=1.
So the redboot source code should be changed, agree?
line 270 should be replace by something like this:
#ifdef CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL
CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL);
#else
CYGACC_CALL_IF_SET_CONSOLE_COMM(READ_VVT(VVT_DEBUG_CHANNEL));
#endif
Of course READ_VVT is not the correct function/macro. Does anybody
know it?
Kind regards,
Juergen
--Before posting, please read the FAQ:
http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss