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]

Re: Re: Réf. : Twothreads.c without cyg_thread_delay


Michele Portolan wrote:
I found the answer: simply the example twothread.c does not explicetly calls up cyg_scheduler_start inside cyg_user_start.
After adding teh command scheduling works just fine!


Sounds like your platform has some problem (perhaps with tools or otherwise). There should not need to be
any explicit call to start the scheduler - this happens when cyg_user_start() returns.


Certainly when I tested it last week (from the latest sources), there was no need to change the example program
other than the modifications I posted to light LEDs instead of prints and delays.

Gary Thomas wrote:
Michele Portolan wrote:
I have the same problems for eCos working on Leon2: I have no context switches if the process is not suspended....
Which interrupt whoudl I check? Thanks,

CYGNUM_HAL_INTERRUPT_RTC



Michele


Gary Thomas wrote:
David Luca wrote:
Timeslicing is enabled by default in eCos kernel.
This is what I'm interested, to see two threads of
same priority working. Using cyg_thread_delay doesn't
mean much advantage over infinite loops because the
tasks can be very long in working time before it
reaches cyg_thread_delay. Its just a cooperative
multitasking. Timeslicing is the reason I must use
RTOS. If timeslicing is not working, then eCos is not
a true RTOS. Anyone tested timeslicing?

Of course!


I just tried it.  I changed the thread function to simply
put a unique value into the platform LEDs - no delays:

/* this is a simple program which runs in a thread */
void simple_program(cyg_addrword_t data)
{
  int message = (int) data;

  printf("Beginning execution; thread data is %d\n", message);
  while (true) {
      HAL_SET_LEDS(1<<data);
  }
}

Using the default scheduler (MLQUEUE), I changed the timeslice count
to be something that I can see (500 ticks = 5 seconds). Running this,
I see first one value in the LEDS then a different value 5 seconds later.
The pattern repeats, ad nauseum.


Timeslicing definitely works, as do eCos' other scheduling mechanisms.

I believe that you're having trouble with your platform - interrupts aren't
working for your system clock. Have you tried running the various kernel
tests?



--- Jean-Marc.Lopez@faiveleytransport.com wrote:



---------------------------------
Hi David.


Excuse me but with your explanations, it's looks like
you did not manage properly the threads priorities.


It's just a problem of Real time OS.


If your 2 threads had the same priority, and Thread_1
never "give the hand" to the kernel, the Thread 2 will
never run. …Except if you configure the timeSlicing
option in your kernel. ( never done at this moment).


By using a cyg_thread_delay function, we said to the kernel to stop the current Thread ( Thread 1 ) and to
run the Thread 2 ( or the thread who have the higtest
priority after the Thread1).


By setting the timeslicing option, the kernel will
commute between the 2 threads every x ms ( depending
of your kernel configuration) even if threads have the
same priority. (but not experimented yet).


LPZ

-----David Luca <davidluca3000@yahoo.com> a écrit :
-----


Pour : ecos-devel <ecos-devel@sourceware.org>,
ecos-discuss <ecos-discuss@sourceware.org>
De : David Luca <davidluca3000@yahoo.com>
Date : 24/11/2006 14:29
Objet : Twothreads.c without cyg_thread_delay





Hello,
Today I started twothreads.c application, but I
replaced printf(not working yet on my platform) with
leds. My question is, without the cyg_thread_delay, is
it possible to run concurrently the two threads?
Because if I comment this function, only one task is
running, I can see that only one led is turn on and
off.
Thank you in advance,
David Luca.










--
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------


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


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