Maybe this should be obvious, but I don't recall seeing it anywhere. Is 
the "console" that referred to, the device that is attached to stdin, 
stdout, stderr?

Can the console and dev/haldiag device share the same UART? On my ARM 
LPC-2214 device I have one external port connected to the UART; the 
other serial port is connected to an internal modem.

I'd like to make sure my serial operations are working on the easily 
tested external device first (I have a terminal connected to that), before 
I try to talk to the internal device.

Right now I am seeing some initial setup messages on /dev/haldiag. See 
below.

However when my application calls printf at the top of cyg_user_start in 
the example program TwoThreads, I get an ASSERT. The associated trace is 
below. I think the "console" or stdout is not set up at all. What options 
do I need to configure for that?

I thought my printf was working yesterday, and then it stopped. But I 
don't recall changing anything so am puzzled.

I find the doumentation of the virtual vectors and ROM/RAM loads a bit 
confusing. Right now I am loading what I would consider a "ROM" image into 
RAM for testing using a JTAG debugger. There is not intended to be any 
linkage to redboot, external monitors, etc as that is not needed; I can 
load the program via JTAG. I am not sure this configuration is related to 
my stdout problem.

Any feedback appreciated. Thanks!

Brett

---------------------------------------------------------------

TwoThreads.c

void cyg_user_start(void)
{
  printf("Entering twothreads' cyg_user_start() function\n"); <-- triggers 
ASSERT

etc...

------------------------

Init device '/dev/ttydiag'
Init tty channel: 81200444
Init device '/dev/haldiag'
HAL/diag SERIAL init
ASSERT FAIL: <1>stream.cxx[604]Cyg_ErrNo Cyg_StdioStream::write() Stream object 
is not a valid stream!
ASSERT FAIL: <1>stream.cxx          [ 604] Cyg_ErrNo Cyg_StdioStream::write()   
                                                                Stream object 
is not a valid stream!
TRACE: <FFFF>mlqueue.cxx         [  89] 
Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation()                    
                     {{enter
TRACE: <FFFF>mlqueue.cxx         [ 110] 
Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation()                    
                     }}return void
TRACE: <FFFF>except.cxx          [  95] 
Cyg_Exception_Control::Cyg_Exception_Control()                                  
                     {{enter
TRACE: <FFFF>except.cxx          [ 107] 
Cyg_Exception_Control::Cyg_Exception_Control()                                  
                     }}return void
TRACE: <FFFF>clock.cxx           [  87] Cyg_Counter::Cyg_Counter()              
                                                             {{enter
TRACE: <FFFF>clock.cxx           [  87] Cyg_Counter::Cyg_Counter()              
                                                             }}RETURNING UNSET!
TRACE: <FFFF>clock.cxx           [ 432] Cyg_Clock::Cyg_Clock()                  
                                                             {{enter
TRACE: <FFFF>clock.cxx           [ 432] Cyg_Clock::Cyg_Clock()                  
                                                             }}RETURNING UNSET!
TRACE: <FFFF>intr.cxx            [  86] Cyg_Interrupt::Cyg_Interrupt()          
                                                             {{enter
TRACE: <FFFF>intr.cxx            [  86] Cyg_Interrupt::Cyg_Interrupt()          
                                                               ((vector=4, 
priority=1, data=81205f4c, isr=8101a864, dsr=8101a8a4))
TRACE: <FFFF>intr.cxx            [ 109] Cyg_Interrupt::Cyg_Interrupt()          
                                                             }}return void
TRACE: <FFFF>clock.cxx           [ 838] Cyg_RealTimeClock::Cyg_RealTimeClock()  
                                                             {{enter
TRACE: <FFFF>intr.cxx            [ 395] void Cyg_Interrupt::attach()            
                                                               {{enter
TRACE: <FFFF>intr.cxx            [ 456] void Cyg_Interrupt::attach()            
                                                               }}return void
TRACE: <FFFF>intr.cxx            [ 659] static void 
Cyg_Interrupt::unmask_interrupt()                                               
           {{enter
TRACE: <FFFF>intr.cxx            [ 672] static void 
Cyg_Interrupt::unmask_interrupt()                                               
           }}return void
TRACE: <FFFF>clock.cxx           [ 838] Cyg_RealTimeClock::Cyg_RealTimeClock()  
                                                             }}RETURNING UNSET!
TRACE: <FFFF>mlqueue.cxx         [ 578] 
Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation()                
                     {{enter
TRACE: <FFFF>mlqueue.cxx         [ 578] 
Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation()                
                       ((sched_info=0000001f))
TRACE: <FFFF>mlqueue.cxx         [ 592] 
Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation()                
                     }}return void
TRACE: <FFFF>sched.cxx           [ 493] Cyg_SchedThread::Cyg_SchedThread()      
                                                             {{enter
TRACE: <FFFF>sched.cxx           [ 493] Cyg_SchedThread::Cyg_SchedThread()      
                                                             }}RETURNING UNSET!
TRACE: <FFFF>clock.cxx           [ 647] Cyg_Alarm::Cyg_Alarm()                  
                                                             {{enter
TRACE: <FFFF>clock.cxx           [ 647] Cyg_Alarm::Cyg_Alarm()                  
                                                             }}RETURNING UNSET!
TRACE: <FFFF>thread.cxx          [ 186] Cyg_Thread::Cyg_Thread()                
                                                             {{enter
TRACE: <FFFF>mlqueue.cxx         [ 420] void 
Cyg_Scheduler_Implementation::register_thread()                                 
                  {{enter
TRACE: <FFFF>mlqueue.cxx         [ 420] void 
Cyg_Scheduler_Implementation::register_thread()                                 
                    ((thread=81205d30))
TRACE: <FFFF>mlqueue.cxx         [ 423] void 
Cyg_Scheduler_Implementation::register_thread()                                 
                  }}return void
TRACE: <FFFF>thread.cxx          [ 224] Cyg_Thread::Cyg_Thread()                
                                                             }}return void
TRACE: <FFFF>thread.cxx          [1275] Cyg_IdleThread::Cyg_IdleThread()        
                                                             {{enter
TRACE: <1>thread.cxx          [ 597] void Cyg_Thread::resume()                  
                                                            {{enter
TRACE: <1>mlqueue.cxx         [ 202] void 
Cyg_Scheduler_Implementation::add_thread()                                      
                    {{enter
TRACE: <1>mlqueue.cxx         [ 202] void 
Cyg_Scheduler_Implementation::add_thread()                                      
                      ((thread=81205d30))
TRACE: <1>mlqueue.cxx         [ 263] void 
Cyg_Scheduler_Implementation::add_thread()                                      
                    }}return void
TRACE: <1>thread.cxx          [ 628] void Cyg_Thread::resume()                  
                                                            }}return void
TRACE: <1>thread.cxx          [1282] Cyg_IdleThread::Cyg_IdleThread()           
                                                          }}return void
TRACE: <1>mlqueue.cxx         [ 578] 
Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation()                
                     {{enter
TRACE: <1>mlqueue.cxx         [ 578] 
Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation()                
                       ((sched_info=0000000a))
TRACE: <1>mlqueue.cxx         [ 592] 
Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation()                
                     }}return void
TRACE: <1>sched.cxx           [ 493] Cyg_SchedThread::Cyg_SchedThread()         
                                                          {{enter
TRACE: <1>sched.cxx           [ 493] Cyg_SchedThread::Cyg_SchedThread()         
                                                          }}RETURNING UNSET!
TRACE: <1>clock.cxx           [ 647] Cyg_Alarm::Cyg_Alarm()                     
                                                          {{enter
TRACE: <1>clock.cxx           [ 647] Cyg_Alarm::Cyg_Alarm()                     
                                                          }}RETURNING UNSET!
TRACE: <1>thread.cxx          [ 186] Cyg_Thread::Cyg_Thread()                   
                                                          {{enter
TRACE: <1>mlqueue.cxx         [ 420] void 
Cyg_Scheduler_Implementation::register_thread()                                 
                  {{enter
TRACE: <1>mlqueue.cxx         [ 420] void 
Cyg_Scheduler_Implementation::register_thread()                                 
                    ((thread=81208408))
TRACE: <1>mlqueue.cxx         [ 423] void 
Cyg_Scheduler_Implementation::register_thread()                                 
                  }}return void
TRACE: <1>thread.cxx          [ 224] Cyg_Thread::Cyg_Thread()                   
                                                          }}return void
TRACE: <1>cstartup.cxx        [  88] cyg_iso_c_start()                          
                                                          {{enter
TRACE: <1>cstartup.cxx        [  88] cyg_iso_c_start()                          
                                                            (((void)))
TRACE: <1>cstartup.cxx        [  92] void cyg_iso_c_start()                     
                                                            'Resuming 
cyg_libc_main_thread'
TRACE: <1>thread.cxx          [ 597] void Cyg_Thread::resume()                  
                                                            {{enter
TRACE: <1>mlqueue.cxx         [ 202] void 
Cyg_Scheduler_Implementation::add_thread()                                      
                    {{enter
TRACE: <1>mlqueue.cxx         [ 202] void 
Cyg_Scheduler_Implementation::add_thread()                                      
                      ((thread=81208408))
TRACE: <1>mlqueue.cxx         [ 263] void 
Cyg_Scheduler_Implementation::add_thread()                                      
                    }}return void
TRACE: <1>thread.cxx          [ 628] void Cyg_Thread::resume()                  
                                                            }}return void
TRACE: <1>cstartup.cxx        [  95] cyg_iso_c_start()                          
                                                          }}return void
TRACE: <1>mutex.cxx           [  92] Cyg_Mutex::Cyg_Mutex()                     
                                                          {{enter
TRACE: <1>mutex.cxx           [ 130] Cyg_Mutex::Cyg_Mutex()                     
                                                          }}return void
TRACE: <1>malloc.cxx          [ 122] malloc()                                   
                                                          {{enter
TRACE: <1>malloc.cxx          [ 122] malloc()                                   
                                                            ((size=256 ))
TRACE: <1>mempolt2.inl        [ 247] cyg_uint8* Cyg_Mempolt2<T>::try_alloc()    
                                                            {{enter
TRACE: <1>mempolt2.inl        [ 395] cyg_bool Cyg_Mempolt2<T>::check_this()     
                                                              {{enter
TRACE: <1>mempolt2.inl        [ 395] cyg_bool Cyg_Mempolt2<T>::check_this()     
                                                              }}RETURNING UNSET!
TRACE: <1>mempolt2.inl        [ 395] cyg_bool Cyg_Mempolt2<T>::check_this()     
                                                              {{enter
TRACE: <1>mempolt2.inl        [ 395] cyg_bool Cyg_Mempolt2<T>::check_this()     
                                                              }}RETURNING UNSET!
TRACE: <1>mempolt2.inl        [ 247] cyg_uint8* Cyg_Mempolt2<T>::try_alloc()    
                                                            }}RETURNING UNSET!
TRACE: <1>malloc.cxx          [ 147] malloc()                                   
                                                          }}returning pointer 
00000000
TRACE: <1>mutex.cxx           [  92] Cyg_Mutex::Cyg_Mutex()                     
                                                          {{enter
TRACE: <1>mutex.cxx           [ 130] Cyg_Mutex::Cyg_Mutex()                     
                                                          }}return void
TRACE: <1>startup.cxx         [  94] void cyg_start()                           
                                                          {{enter
TRACE: <1>startup.cxx         [  94] void cyg_start()                           
                                                            (((void)))
TRACE: <1>prestart.cxx        [  75] void cyg_prestart()                        
                                                            {{enter
TRACE: <1>prestart.cxx        [  75] void cyg_prestart()                        
                                                              (((void)))
TRACE: <1>prestart.cxx        [  78] void cyg_prestart()                        
                                                              'This is the 
system default cyg_prestart()'
TRACE: <1>prestart.cxx        [  82] void cyg_prestart()                        
                                                            }}return void
TRACE: <1>pkgstart.cxx        [  85] void cyg_package_start()                   
                                                            {{enter
TRACE: <1>pkgstart.cxx        [  85] void cyg_package_start()                   
                                                              (((void)))
TRACE: <1>pkgstart.cxx        [  88] void cyg_package_start()                   
                                                              'This is the 
system default cyg_package_start()'
TRACE: <1>pkgstart.cxx        [  96] void cyg_package_start()                   
                                                            }}return void

Scheduler:

Lock:                1
Current Thread:      Idle Thread

Threads:

         Idle Thread pri =  31 state =      R id =   1
         stack base = 81205530 ptr = 81205cc0 size = 00000800
         sleep reason     NONE wake reason     NONE
         queue = 00000000      wait info = 00000000

                 main pri =  10 state =      R id =   2
                 stack base = 81206408 ptr = 81208390 size = 00002000
                 sleep reason     NONE wake reason     NONE
                 queue = 00000000      wait info = 00000000



-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

Reply via email to