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: redboot configuration bug


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


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