This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Lpc2xxxx, porting, (reset problem ?)
- From: Raghav Karol <raghavkarol at yahoo dot com>
- To: ecos-discuss at sources dot redhat dot com
- Date: Wed, 4 Jan 2006 11:02:48 -0800 (PST)
- Subject: [ECOS] Lpc2xxxx, porting, (reset problem ?)
Hello *,
I have a problem porting eCos for an Olimex LPC-E2294
Arm based evaluation board. As a starting point I use
the P2106 platform port from the eCos cvs development
branch.
I can compile and link the eCos library with an
application file containing a 'cyg_user_start().'
However a program trace reveals that the idle thread
does not run.
To me it looks like the problem occurs at
sched.cxx:void::Cyg_Scheduler::start_cpu()'s
HAL_THREAD_LOAD_CONTEXT( &next->stack_ptr );
and start_cpu() does not return. Instead the system is
restarted.
>From the mailing lists I could find that someone has
had a simliar problem
(http://sourceware.org//ml/ecos-discuss/2004-09/msg00041.html).
It is the same using eCos 2.0 and the latest code (4
Jan 2006) from cvs. I use the prebuilt build toolchain
available with eCos 2.0
Could someone point me to where I could look to solve
the problem.
TIA,
Raghav
PS. A file with trace some information is attached.
__________________________________________
Yahoo! DSL ? Something to write home about.
Just $16.99/mo. or less.
dsl.yahoo.com
TRACE: mlqueue.cxx [ 89] Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation() {{enter
TRACE: mlqueue.cxx [ 110] Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation() }}return void
TRACE: except.cxx [ 95] Cyg_Exception_Control::Cyg_Exception_Control() {{enter
TRACE: except.cxx [ 107] Cyg_Exception_Control::Cyg_Exception_Control() }}return void
TRACE: clock.cxx [ 87] Cyg_Counter::Cyg_Counter() {{enter
TRACE: clock.cxx [ 87] Cyg_Counter::Cyg_Counter() }}RETURNING UNSET!
TRACE: clock.cxx [ 432] Cyg_Clock::Cyg_Clock() {{enter
TRACE: clock.cxx [ 432] Cyg_Clock::Cyg_Clock() }}RETURNING UNSET!
TRACE: intr.cxx [ 86] Cyg_Interrupt::Cyg_Interrupt() {{enter
TRACE: intr.cxx [ 86] Cyg_Interrupt::Cyg_Interrupt() ((vector=4, priority=1, data=40001ad8, isr=0000c1e8, dsr=0000c210))
TRACE: intr.cxx [ 109] Cyg_Interrupt::Cyg_Interrupt() }}return void
TRACE: clock.cxx [ 838] Cyg_RealTimeClock::Cyg_RealTimeClock() {{enter
TRACE: intr.cxx [ 395] void Cyg_Interrupt::attach() {{enter
TRACE: intr.cxx [ 456] void Cyg_Interrupt::attach() }}return void
TRACE: intr.cxx [ 659] static void Cyg_Interrupt::unmask_interrupt() {{enter
TRACE: intr.cxx [ 672] static void Cyg_Interrupt::unmask_interrupt() }}return void
TRACE: clock.cxx [ 838] Cyg_RealTimeClock::Cyg_RealTimeClock() }}RETURNING UNSET!
TRACE: mlqueue.cxx [ 578] Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation() {{enter
TRACE: mlqueue.cxx [ 578] Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation() ((sched_info=0000001f))
TRACE: mlqueue.cxx [ 592] Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation() }}return void
TRACE: sched.cxx [ 468] Cyg_SchedThread::Cyg_SchedThread() {{enter
TRACE: sched.cxx [ 468] Cyg_SchedThread::Cyg_SchedThread() }}RETURNING UNSET!
TRACE: clock.cxx [ 647] Cyg_Alarm::Cyg_Alarm() {{enter
TRACE: clock.cxx [ 647] Cyg_Alarm::Cyg_Alarm() }}RETURNING UNSET!
TRACE: thread.cxx [ 200] Cyg_Thread::Cyg_Thread() {{enter
TRACE: mlqueue.cxx [ 420] void Cyg_Scheduler_Implementation::register_thread() {{enter
TRACE: mlqueue.cxx [ 420] void Cyg_Scheduler_Implementation::register_thread() ((thread=40001988))
TRACE: mlqueue.cxx [ 423] void Cyg_Scheduler_Implementation::register_thread() }}return void
TRACE: thread.cxx [ 238] Cyg_Thread::Cyg_Thread() }}return void
TRACE: thread.cxx [1288] Cyg_IdleThread::Cyg_IdleThread() {{enter
TRACE: thread.cxx [ 611] void Cyg_Thread::resume() {{enter
TRACE: mlqueue.cxx [ 202] void Cyg_Scheduler_Implementation::add_thread() {{enter
TRACE: mlqueue.cxx [ 202] void Cyg_Scheduler_Implementation::add_thread() ((thread=40001988))
TRACE: mlqueue.cxx [ 263] void Cyg_Scheduler_Implementation::add_thread() }}return void
TRACE: thread.cxx [ 642] void Cyg_Thread::resume() }}return void
TRACE: thread.cxx [1295] Cyg_IdleThread::Cyg_IdleThread() }}return void
TRACE: startup.cxx [ 94] void cyg_start() {{enter
TRACE: startup.cxx [ 94] void cyg_start() (((void)))
TRACE: prestart.cxx [ 75] void cyg_prestart() {{enter
TRACE: prestart.cxx [ 75] void cyg_prestart() (((void)))
TRACE: prestart.cxx [ 78] void cyg_prestart() 'This is the system default cyg_prestart()'
TRACE: prestart.cxx [ 82] void cyg_prestart() }}return void
TRACE: pkgstart.cxx [ 85] void cyg_package_start() {{enter
TRACE: pkgstart.cxx [ 85] void cyg_package_start() (((void)))
TRACE: pkgstart.cxx [ 88] void cyg_package_start() 'This is the system default cyg_package_start()'
TRACE: pkgstart.cxx [ 96] void cyg_package_start() }}return void
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TRACE: main.c [ 51] cyg_user_start() 'Initial Flashing'
TRACE: main.c [ 62] cyg_user_start() 'Initial Flashing done...'
TRACE: main.c [ 70] cyg_user_start() 'Entering Infinite Loop'
TRACE: main.c [ 80] cyg_user_start() 'Ended Inifinite Loop...'
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Cyg_Scheduler::start_cpu() does not return;
//
TRACE: sched.cxx [ 318] static void Cyg_Scheduler::start() {{enter
TRACE: sched.cxx [ 344] static void Cyg_Scheduler::start_cpu() {{enter
TRACE: mlqueue.cxx [ 119] Cyg_Thread* Cyg_Scheduler_Implementation::schedule() {{enter
TRACE: mlqueue.cxx [ 192] Cyg_Thread* Cyg_Scheduler_Implementation::schedule() }}returning thread 40001988
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TRACE: mlqueue.cxx [ 89] Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation() {{enter
TRACE: mlqueue.cxx [ 110] Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation() }}return void
TRACE: except.cxx [ 95] Cyg_Exception_Control::Cyg_Exception_Control() {{enter
TRACE: except.cxx [ 107] Cyg_Exception_Control::Cyg_Exception_Control() }}return void
TRACE: clock.cxx [ 87] Cyg_Counter::Cyg_Counter() {{enter
TRACE: clock.cxx [ 87] Cyg_Counter::Cyg_Counter() }}RETURNING UNSET!
TRACE: clock.cxx [ 432] Cyg_Clock::Cyg_Clock() {{enter
TRACE: clock.cxx [ 432] Cyg_Clock::Cyg_Clock() }}RETURNING UNSET!
TRACE: intr.cxx [ 86] Cyg_Interrupt::Cyg_Interrupt() {{enter
TRACE: intr.cxx [ 86] Cyg_Interrupt::Cyg_Interrupt() ((vector=4, priority=1, data=40001ad8, isr=0000c1e8, dsr=0000c210))
TRACE: intr.cxx [ 109] Cyg_Interrupt::Cyg_Interrupt() }}return void
TRACE: clock.cxx [ 838] Cyg_RealTimeClock::Cyg_RealTimeClock() {{enter
TRACE: intr.cxx [ 395] void Cyg_Interrupt::attach() {{enter
TRACE: intr.cxx [ 456] void Cyg_Interrupt::attach() }}return void
TRACE: intr.cxx [ 659] static void Cyg_Interrupt::unmask_interrupt() {{enter
TRACE: intr.cxx [ 672] static void Cyg_Interrupt::unmask_interrupt() }}return void
TRACE: clock.cxx [ 838] Cyg_RealTimeClock::Cyg_RealTimeClock() }}RETURNING UNSET!
TRACE: mlqueue.cxx [ 578] Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation() {{enter
TRACE: mlqueue.cxx [ 578] Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation() ((sched_info=0000001f))
TRACE: mlqueue.cxx [ 592] Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation() }}return void
TRACE: sched.cxx [ 468] Cyg_SchedThread::Cyg_SchedThread() {{enter
TRACE: sched.cxx [ 468] Cyg_SchedThread::Cyg_SchedThread() }}RETURNING UNSET!
TRACE: clock.cxx [ 647] Cyg_Alarm::Cyg_Alarm() {{enter
TRACE: clock.cxx [ 647] Cyg_Alarm::Cyg_Alarm() }}RETURNING UNSET!
TRACE: thread.cxx [ 200] Cyg_Thread::Cyg_Thread() {{enter
TRACE: mlqueue.cxx [ 420] void Cyg_Scheduler_Implementation::register_thread() {{enter
TRACE: mlqueue.cxx [ 420] void Cyg_Scheduler_Implementation::register_thread() ((thread=40001988))
TRACE: mlqueue.cxx [ 423] void Cyg_Scheduler_Implementation::register_thread() }}return void
TRACE: thread.cxx [ 238] Cyg_Thread::Cyg_Thread() }}return void
TRACE: thread.cxx [1288] Cyg_IdleThread::Cyg_IdleThread() {{enter
TRACE: thread.cxx [ 611] void Cyg_Thread::resume() {{enter
TRACE: mlqueue.cxx [ 202] void Cyg_Scheduler_Implementation::add_thread() {{enter
TRACE: mlqueue.cxx [ 202] void Cyg_Scheduler_Implementation::add_thread() ((thread=40001988))
TRACE: mlqueue.cxx [ 263] void Cyg_Scheduler_Implementation::add_thread() }}return void
TRACE: thread.cxx [ 642] void Cyg_Thread::resume() }}return void
TRACE: thread.cxx [1295] Cyg_IdleThread::Cyg_IdleThread() }}return void
TRACE: startup.cxx [ 94] void cyg_start() {{enter
TRACE: startup.cxx [ 94] void cyg_start() (((void)))
TRACE: prestart.cxx [ 75] void cyg_prestart() {{enter
TRACE: prestart.cxx [ 75] void cyg_prestart() (((void)))
TRACE: prestart.cxx [ 78] void cyg_prestart() 'This is the system default cyg_prestart()'
TRACE: prestart.cxx [ 82] void cyg_prestart() }}return void
TRACE: pkgstart.cxx [ 85] void cyg_package_start() {{enter
TRACE: pkgstart.cxx [ 85] void cyg_package_start() (((void)))
TRACE: pkgstart.cxx [ 88] void cyg_package_start() 'This is the system default cyg_package_start()'
TRACE: pkgstart.cxx [ 96] void cyg_package_start() }}return void
TRACE: main.c [ 51] cyg_user_start() 'Initial Flashing'
TRACE: main.c [ 62] cyg_user_start() 'Initial Flashing done...'
TRACE: main.c [ 70] cyg_user_start() 'Entering Infinite Loop'
TRACE: main.c [ 80] cyg_user_start() 'Ended Inifinite Loop...'
TRACE: sched.cxx [ 318] static void Cyg_Scheduler::start() {{enter
TRACE: sched.cxx [ 344] static void Cyg_Scheduler::start_cpu() {{enter
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss