This is the mail archive of the ecos-discuss@sources.redhat.com 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]

Re: eCos Lockup on CYGACC_CALL_IF_DBG_DATA_SET


On Fri, 2001-10-12 at 07:47, Trenton D. Adams wrote:
> What does this macro do exactly?  It's little confusing with so many
> nested MACROS.
> 
> The code below is from "eth_drv.c".  The program locks up on the
> CYGACC_CALL_IF_DBG_DATA_SET line.  There's no way to step into a macro
> that I know of so I'm pooched unless I remove the code.
> 
> #ifdef CYGSEM_HAL_VIRTUAL_VECTOR_DIAG
> // Set up interfaces so debug environment can share this device
>     {
>         void *dbg = CYGACC_CALL_IF_DBG_DATA();
>         if (!dbg) {
>             CYGACC_CALL_IF_DBG_DATA_SET((void *)sc);
>         }
>     }
> #endif
> 
> Is it safe to remove the code above or not?  Any ideas as to why it
> might lockup at that location?  The WaveLAN driver is initialized except
> for the call to wvlan_start () which I assume is called by eCos when
> it's ready to bring up the TCP/IP stack?!

This code allows your eCos application and RedBoot to share device
drivers.  Things could go terribly awry if your new device driver
does something odd.  In particular, if you loaded your application
using the network (via a GDB TCP connection, or started it by connecting
to RedBoot via TELNET), then there could be complications.  In 
particular, driver calls to "diag_printf()" can cause problems.

When you say "lockup", exactly what do you mean?  
What kind of application/configuration are you running?
How did you load this application?



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