This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
RE: Interrupts
- From: "Chris Zimman" <czimman at bloomberg dot com>
- To: "Rick Davis" <rickdavisjr at comcast dot net>, <ecos-discuss at ecos dot sourceware dot org>
- Date: Fri, 17 Oct 2008 07:41:28 -0400
- Subject: RE: [ECOS] Interrupts
- References: <012201c93041$1a3e7c80$4ebb7580$@net>
> 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