This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
clocktruth not working with arm946e-s
- From: "Sinan KAYA" <sinan dot kaya at siemens dot com>
- To: <ecos-discuss at ecos dot sourceware dot org>
- Date: Thu, 2 Nov 2006 10:27:57 +0200
- Subject: [ECOS] clocktruth not working with arm946e-s
Hi,
I have been porting eCos to an arm946e-s variant. Even though many of
the tests pass, i cannot have clocktruth test passing. Can anybody give
me some clue about what is going on ?
Here are the test that pass.
hal/common/basic pass
hal/common/context pass
hal/common/cache notapplicable
infra/cxxsupp pass
kernel/bin_sem0 pass
kernel/bin_sem1 ok
kernel/bin_sem2 ok
kernel/clock0 ok
kernel/clock1 ok
kernel/cnt_sem0 ok
kernel/cnt_sem1 ok
kernel/sched1 ok
kernel/stress_threads ok
kernel/thread0 ok
kernel/thread1 ok
kernel/thread2 ok
kernel/sync2 ok
kernel/sync3 ok
kernel/mutex0 ok
kernel/mutex1 ok
kernel/mutex2 ok
kernel/mutex3 ok
kernel/mqueue1 ok
kernel/mbox1 ok
kernel/tmbasic ok
kernel/timeslice ok
services/malloc1 ok
services/malloc2 ok
ecos-examples/twothreads ok
Somehow, there is an infinite loop and dsr not being served. Google
tells me that an interrupt needs to be received during this loop but
there is already a scheduler lock which does not allow dsr to be served.
I enable kernel instrumentation startup at plf_hardware_init
#ifdef CYGPKG_KERNEL_INSTRUMENT
cyg_instrument_enable(CYG_INSTRUMENT_CLASS_INTR, 0);
cyg_instrument_enable(CYG_INSTRUMENT_CLASS_SCHED, 0);
#endif
During debugging the system i see the following breakpoints.
(gdb) Breakpoint 1, cyg_start () at
/opt/ecos/ecos-2.0/packages/kernel/v2_0/tests/clocktruth.cxx:141
(gdb) Breakpoint 6, Cyg_RealTimeClock::isr (vector=0, data=546315712)
at /opt/ecos/ecos-2.0/packages/kernel/v2_0/src/common/clock.cxx:862
(gdb) Breakpoint 7, interrupt_end (isr_ret=3, intr=0x20901dd8,
regs=0x20901340) at
/opt/ecos/ecos-2.0/packages/kernel/v2_0/src/intr/intr.cxx:291
(gdb) Breakpoint 8, entry0 (data=546313124) at
/opt/ecos/ecos-2.0/packages/kernel/v2_0/tests/clocktruth.cxx:101
My instrumentation output is also here:
(gdb) c
Continuing.
Breakpoint 1, cyg_start () at
/opt/ecos/ecos-2.0/packages/kernel/v2_0/tests/clocktruth.cxx:141
(gdb) c
Continuing.
Breakpoint 6, Cyg_RealTimeClock::isr (vector=0, data=546315712) at
/opt/ecos/ecos-2.0/packages/kernel/v2_0/src/common/clock.cxx:862
(gdb) c
Continuing.
Breakpoint 7, interrupt_end (isr_ret=3, intr=0x20901dd8,
regs=0x20901340) at
/opt/ecos/ecos-2.0/packages/kernel/v2_0/src/intr/intr.cxx:291
(gdb) c
Continuing.
Breakpoint 8, entry0 (data=546313124) at
/opt/ecos/ecos-2.0/packages/kernel/v2_0/tests/clocktruth.cxx:101
$1 = {type = 0x306, thread = 0xfff, timestamp = 0x792f, arg1 = 0x0, arg2
= 0x0}
$2 = {type = 0x30c, thread = 0xfff, timestamp = 0x787f, arg1 = 0x0, arg2
= 0x0}
$3 = {type = 0x101, thread = 0xfff, timestamp = 0x75f3, arg1 = 0x2, arg2
= 0x0}
$4 = {type = 0x102, thread = 0xfff, timestamp = 0x7563, arg1 = 0x2, arg2
= 0x0}
$5 = {type = 0x101, thread = 0x1, timestamp = 0x7381, arg1 = 0x2, arg2 =
0x0}
$6 = {type = 0x102, thread = 0x1, timestamp = 0x726c, arg1 = 0x2, arg2 =
0x0}
$7 = {type = 0x101, thread = 0x1, timestamp = 0x62d0, arg1 = 0x2, arg2 =
0x0}
$8 = {type = 0x102, thread = 0x1, timestamp = 0x6218, arg1 = 0x2, arg2 =
0x0}
$9 = {type = 0x101, thread = 0x1, timestamp = 0x6013, arg1 = 0x2, arg2 =
0x0}
$10 = {type = 0x102, thread = 0x1, timestamp = 0x5f0c, arg1 = 0x2, arg2
= 0x0}
$11 = {type = 0x301, thread = 0x1, timestamp = 0x6873, arg1 = 0x0, arg2
= 0x0}
$12 = {type = 0x30e, thread = 0x1, timestamp = 0x53b6, arg1 = 0x0, arg2
= 0x0}
$13 = {type = 0x302, thread = 0x1, timestamp = 0x76ae, arg1 = 0x0, arg2
= 0x3}
$14 = {type = 0x304, thread = 0x1, timestamp = 0x7622, arg1 = 0x0, arg2
= 0x0}
$15 = {type = 0x102, thread = 0x1, timestamp = 0x755b, arg1 = 0x2, arg2
= 0x0}
$16 = {type = 0x303, thread = 0x1, timestamp = 0x74a2, arg1 = 0x0, arg2
= 0x0}
$17 = {type = 0x101, thread = 0x1, timestamp = 0x7255, arg1 = 0x2, arg2
= 0x0}
$18 = {type = 0x102, thread = 0x1, timestamp = 0x718e, arg1 = 0x2, arg2
= 0x0}
$19 = {type = 0x101, thread = 0x1, timestamp = 0x6fbf, arg1 = 0x2, arg2
= 0x0}
$20 = {type = 0x102, thread = 0x1, timestamp = 0x6eb8, arg1 = 0x2, arg2
= 0x0}
Note also that i am not using common stacks, i disabled it:
cdl_option CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK {user_value
0}
any ideas, i tried to put as much information as possible.
sinan.
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss