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]

Idle thread vanished!!!


Hello,

I'm trying to bring up eCos on an ARM9 board, the starting point I
have is a port for Redboot but I would like to use the full feature
set of eCos. I have put together a configuration which I can program
to the board and have basic I/O over serial.
The main entry point for my code 'cyg_start' runs as expected but the
thread I create does not start. I enabled debug trace and the first
assert I get is "ASSERT FAIL: <2>mlqueue.cxx[265]void
Cyg_Scheduler_Implementation::add_thread() Idle thread vanished!!!"

Can anyone tell me why I would get the ASSERT above?

thanks,
Brendan.

========= code ===========
voidÂcyg_start(void)
{
ÂÂ ÂunsignedÂcyg_start_count = 0;
ÂÂ Âdiag_printf("Hello from cyg_start: #%u\n", cyg_start_count++);
ÂÂ Âcyg_thread_create(1,Âtestthd_main, (cyg_addrword_t) 0, "testthd",
ÂÂ Â Â Â Â Â Â Â Â Â Â(void *)stack[0], STACKSIZE, &thread[0], &thread_obj[0]);
ÂÂ Âcyg_thread_resume(thread[0]);
ÂÂ Âfor(;;)
ÂÂ Â{
ÂÂ Â Â Âcyg_thread_delay (100);
ÂÂ Â}
}
static voidÂtestthd_mainÂ(CYG_ADDRESS data)
{
ÂÂ Âunsigned int Count = 0;
ÂÂ Âfor (;;)
ÂÂ Â{
ÂÂ Â Â Âdiag_printf ("testthd_main:: %10u\n", Count++);
ÂÂ Â Â Âcyg_thread_delay (100);
ÂÂ Â}
}
========= code ===========

===== serial output ======
Hello from cyg_start: #0
ASSERT FAIL: <2>mlqueue.cxx[265]void
Cyg_Scheduler_Implementation::add_thread() Idle thread vanished!!!
ASSERT FAIL: <2>mlqueue.cxx     [ 265] void
Cyg_Scheduler_Implementation::add_thread()
ÂÂ Â Â Â Â Â Â Â Â Â Â ÂIdle thread vanished!!!
TRACE: <2>clock.cxx      [ Â87] Cyg_Counter::Cyg_Counter()
ÂÂ Â Â Â Â Â Â Â Â{{enter
TRACE: <2>clock.cxx      [ Â87] Cyg_Counter::Cyg_Counter()
ÂÂ Â Â Â Â Â Â Â Â}}RETURNING UNSET!
TRACE: <2>clock.cxx      [ 432] Cyg_Clock::Cyg_Clock()
ÂÂ Â Â Â Â Â Â Â Â{{enter
TRACE: <2>clock.cxx      [ 432] Cyg_Clock::Cyg_Clock()
ÂÂ Â Â Â Â Â Â Â Â}}RETURNING UNSET!
TRACE: <2>intr.cxx      Â[ Â86] Cyg_Interrupt::Cyg_Interrupt()
ÂÂ Â Â Â Â Â Â Â Â{{enter
TRACE: <2>intr.cxx      Â[ Â86] Cyg_Interrupt::Cyg_Interrupt()
ÂÂ Â Â Â Â Â Â Â Â Â((vector=26, priority=1, data=0000eb90,
isr=83f0b81c, dsr=83f0c488))
TRACE: <2>intr.cxx      Â[ 109] Cyg_Interrupt::Cyg_Interrupt()
ÂÂ Â Â Â Â Â Â Â Â}}return void
TRACE: <2>clock.cxx      [ 838] Cyg_RealTimeClock::Cyg_RealTimeClock()
ÂÂ Â Â Â Â Â Â Â Â{{enter
TRACE: <2>intr.cxx      Â[ 452] void Cyg_Interrupt::attach()
ÂÂ Â Â Â Â Â Â Â Â Â{{enter
TRACE: <2>intr.cxx      Â[ 513] void Cyg_Interrupt::attach()
ÂÂ Â Â Â Â Â Â Â Â Â}}return void
TRACE: <2>intr.cxx      Â[ 716] static void
Cyg_Interrupt::unmask_interrupt()
ÂÂ Â Â Â Â Â Â Â Â Â{{enter
TRACE: <2>intr.cxx      Â[ 729] static void
Cyg_Interrupt::unmask_interrupt()
ÂÂ Â Â Â Â Â Â Â Â Â}}return void
TRACE: <2>clock.cxx      [ 838] Cyg_RealTimeClock::Cyg_RealTimeClock()
ÂÂ Â Â Â Â Â Â Â Â}}RETURNING UNSET!
TRACE: <2>except.cxx     Â[ Â95]
Cyg_Exception_Control::Cyg_Exception_Control()
ÂÂ Â Â Â Â Â Â Â Â{{enter
TRACE: <2>except.cxx     Â[ 107]
Cyg_Exception_Control::Cyg_Exception_Control()
ÂÂ Â Â Â Â Â Â Â Â}}return void
TRACE: <2>mlqueue.cxx     [ Â89]
Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation()
ÂÂ Â Â Â Â Â Â Â Â{{enter
TRACE: <2>mlqueue.cxx     [ 110]
Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation()
ÂÂ Â Â Â Â Â Â Â Â}}return void
TRACE: <2>mlqueue.cxx     [ 583]
Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation()
ÂÂ Â Â Â Â Â Â Â Â{{enter
TRACE: <2>mlqueue.cxx     [ 583]
Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation()
ÂÂ Â Â Â Â Â Â Â Â Â((sched_info=00000001))
TRACE: <2>mlqueue.cxx     [ 597]
Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation()
ÂÂ Â Â Â Â Â Â Â Â}}return void
TRACE: <2>sched.cxx      [ 487] Cyg_SchedThread::Cyg_SchedThread()
ÂÂ Â Â Â Â Â Â Â Â{{enter
TRACE: <2>sched.cxx      [ 487] Cyg_SchedThread::Cyg_SchedThread()
ÂÂ Â Â Â Â Â Â Â Â}}RETURNING UNSET!
TRACE: <2>clock.cxx      [ 647] Cyg_Alarm::Cyg_Alarm()
ÂÂ Â Â Â Â Â Â Â Â{{enter
TRACE: <2>clock.cxx      [ 647] Cyg_Alarm::Cyg_Alarm()
ÂÂ Â Â Â Â Â Â Â Â}}RETURNING UNSET!
TRACE: <2>thread.cxx     Â[ 186] Cyg_Thread::Cyg_Thread()
ÂÂ Â Â Â Â Â Â Â Â{{enter
TRACE: <2>mlqueue.cxx     [ 425] void
Cyg_Scheduler_Implementation::register_thread()
ÂÂ Â Â Â Â Â Â Â Â Â{{enter
TRACE: <2>mlqueue.cxx     [ 425] void
Cyg_Scheduler_Implementation::register_thread()
ÂÂ Â Â Â Â Â Â Â Â Â Â((thread=0000af10))
TRACE: <2>mlqueue.cxx     [ 428] void
Cyg_Scheduler_Implementation::register_thread()
ÂÂ Â Â Â Â Â Â Â Â Â}}return void
TRACE: <2>thread.cxx     Â[ 224] Cyg_Thread::Cyg_Thread()
ÂÂ Â Â Â Â Â Â Â Â}}return void
TRACE: <2>thread.cxx     Â[ 597] void Cyg_Thread::resume()
ÂÂ Â Â Â Â Â Â Â Â{{enter
TRACE: <2>mlqueue.cxx     [ 202] void
Cyg_Scheduler_Implementation::add_thread()
ÂÂ Â Â Â Â Â Â Â Â Â{{enter
TRACE: <2>mlqueue.cxx     [ 202] void
Cyg_Scheduler_Implementation::add_thread()
ÂÂ Â Â Â Â Â Â Â Â Â Â((thread=0000af10))
Scheduler:
Lock: Â Â Â Â Â Â Â Â2
Current Thread: Â Â ÂIdle Thread
Threads:
ÂÂ Â Â Â Â Â Â Âmain pri = Â10 state = Â U Â Âid = Â 1
ÂÂ Â Â Â Â Â Â Â Â Â stack base = 0000cae0 ptr = 0000ea70 size = 00002000
          sleep reason   NONE wake reason   NONE
ÂÂ Â Â Â Â Â Â Â Â Â queue = 00000000 Â Â Âwait info = 00000000
ÂÂ Â Â Â Idle Thread pri = Â31 state = Â Â ÂR id = Â 2
ÂÂ Â Â Â Â Â Â Â Â Â stack base = 0000c190 ptr = 0000c920 size = 00000800
          sleep reason   NONE wake reason   NONE
ÂÂ Â Â Â Â Â Â Â Â Â queue = 00000000 Â Â Âwait info = 00000000
ÂÂ Â Â Â Â Â testthd pri = Â 1 state = Â Â ÂR id = Â 3
ÂÂ Â Â Â Â Â Â Â Â Â stack base = 000095a8 ptr = 0000ae90 size = 00001960
          sleep reason   NONE wake reason   NONE
ÂÂ Â Â Â Â Â Â Â Â Â queue = 00000000 Â Â Âwait info = 00000000
===== serial output ======

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]