This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: scheduler/printf questions
- From: Andrew Lunn <andrew dot lunn at ascom dot ch>
- To: Mathieu Lacage <mathieu_lacage at realmagic dot fr>
- Cc: ecos-discuss at sources dot redhat dot com
- Date: Fri, 23 Nov 2001 16:33:39 +0100
- Subject: Re: [ECOS] scheduler/printf questions
- References: <1006527830.9302.64.camel@mathieu>
> I am currently trying to understand the basic architecture of the eCos
> HAL (and yes, I read the docs which are excellent btw :).
These questions deal with more than the HAL....
>
> I have two questions:
> - so that the scheduler can interrupt a task which reached the end of
> its timeslice, there must be a timer somewhere to trigger an interrupt
> which asks for a reschedule. So, where is this setup ? And where can I
> find this interrupt handler's code ? I have tried to find it in the
> ARM/Integrator example but failed miserably.
Im not familiar with that target. I know the EBSA well....
hal_hardware_init() starts the hardware timer by calling
hal_clock_initialize with the correct timer period.
Then in the kernel clock.cxx
Cyg_RealTimeClock::Cyg_RealTimeClock()
: Cyg_Clock(rtc_resolution),
interrupt(CYGNUM_HAL_INTERRUPT_RTC, 1, (CYG_ADDRWORD)this, isr, dsr)
Installs the isr/dsr which are just bellow in the source code. The dsr
calls the scheduler to do a timeslice.
> - what are the semantics of a printf call ? I have tried to trace in
> the package/langage libc source what happens but I still cannot figure
> out where the data will be printed. I would expect there is a way to
> configure this on different targets. For example, if the target has an
> output serial port, I would expect the bytes to be written there. Is
> this a safe assumption ? If so, where can such configuration options be
> found ?
Its all configurable via CDL and the ecos.ecc file. There are a number
of virtual devices which map onto the physical drivers. eg /dev/tty0
is a virtual device which is normally mapped onto the physical device
/dev/ser0. Similarly /dev/termios0 is mapped to /dev/ser0. I think
normal printf is mapped to the console, which defaults to
/dev/ttydiag.
Andrew