[ECOS] clocktruth not working with arm946e-s

Sinan KAYA sinan.kaya@siemens.com
Thu Nov 2 08:28:00 GMT 2006


 
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



More information about the Ecos-discuss mailing list