This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
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