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: Interrupts


Chris,

I'll give that a shot.

Thanks for your support and suggestion.
Rick Davis


-----Original Message-----
From: Chris Zimman [mailto:czimman@bloomberg.com] 
Sent: Friday, October 17, 2008 7:41 AM
To: Rick Davis; ecos-discuss@ecos.sourceware.org
Subject: RE: [ECOS] Interrupts

> I am working on a platform with a compact flash. The Compact Flash is
> operating in true ide pio mode. I am using the fatfs file system. When
> I write a 1.2M file, it takes about 16 seconds to write the file. However,
> the eCos clock only advances by 6 seconds. Why is this?
> The hardware is a power PC processor using the decrementer as the eCos
> clock. I have been trying to find out where, if at all, interrupts are
> being disabled while writing the file. Is there anything else that can
> prevent the decrementer from operating.
> My problem is that I have a watchdog thread strobing a hardware
> watchdog and it never runs because the decrementer tics aren't occurring
to

> allow timeslicing and the unit reboots. The thread priorities are equal
and
> time slicing is enabled.

Hi Rick,

Try instrumenting the macro HAL_DISABLE_INTERRUPTS in
hal/powerpc/arch/[version]/include/hal_intr.h

Maybe something like:

#define HAL_DISABLE_INTERRUPTS(_old_)                   \
    CYG_MACRO_START                                     \
    cyg_uint32 tmp1, tmp2;                              \
    diag_printf("HAL_DISABLE_INTERRUPTS() called from %s at line %d\n",
__FILE__, __LINE__); \
    asm volatile (                                      \
        "mfmsr  %0;"                                    \
        "mr     %2,%0;"                                 \
        "li     %1,0;"                                  \
        "rlwimi %2,%1,0,16,16;"                         \
        "mtmsr  %2;"                                    \
        : "=r"(_old_), "=r" (tmp1), "=r" (tmp2));       \
    CYG_MACRO_END

You should definitely be able to see if/where/when interrupts are being
disabled.

--Chris


-- 
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]