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: how to implement EDF scheduling in eCos


Hello all,

I tried various ways to overcome, but, still couldn't solve the problem.

But, interesting thing to tell is that, always I am having the same
value for the first (thread_edf_info->deadline) field of the
*thread_edf_info* structure. E.g. when I am tracing it via:
> CYG_TRACE1(1, "edf_info->deadline = %d", edf_info->deadline);
It always outputs me value *edf_info->deadline=16688624*

But for the other two fields I have *edf_info->wcet = 15304688* and
*edf_info->period = 15691760*.
Maybe it can help to have you some idea, about what is going inside...

Here is link for the all files which I created/modified for eCos
EDF support.
http://rapidshare.com/files/341448817/modified_files_at_eCos_kernel_for_EDF_sched.zip.html
Can anyone make a time to have a look and help me to
figure out "hiding bug"?

Here is the structure, where files should be put into:

Header files: ECOS_REPOSITORY/ecos-3.0/packages/kernel/v3_0/include
Source file (edf.cxx only):
ECOS_REPOSITORY/ecos-3.0/packages/kernel/v3_0/source/sched
CDL files: ECOS_REPOSITORY/ecos-3.0/packages/kernel/v3_0/cdl

I have attached my *eCos application* and *makefile* also.

Thank you for the help!
Regards,
Nodir.

2010/1/24 Nodir Kodirov
>
> Thank you John!
>
> Per your advice I changed cyg_tick_count_t to cyg_count32 in
> cyg_edf_sched_info structure fields. As:
>
> > typedef struct
> > {
> > ? ?cyg_count32 deadline; /* abs ddl of the thread, 2b changed to rel */
> > ? ?cyg_count32 wcet; /* Worst Case Execution time of the thread */
> > ? ?cyg_count32 period; /* Call frequency of the thread */
> > } cyg_edf_sched_info;
>
> But, it couldn't solve the problem, still I have the same output.
> > *** TRACE: edf.cxx [595] <nofunc>() 'thread_edf_info->deadline = 16688624'
> > *** TRACE: edf.cxx [596] <nofunc>() 'thread_edf_info->wcet = 15691760'
> > *** TRACE: edf.cxx [597] <nofunc>() 'thread_edf_info->period = 15691760'
>
> Any other hints?
>
> Thanks,
> Nodir.
>
> On 24 January 2010 16:45, John Dallaway
> >
> > cyg_tick_count_t is a 64-bit unsigned integer. You are treating these
> > values as 32-bit signed (using "%d") in your CYG_TRACE() calls.
> >
> > I hope this helps...
> >
> > John Dallaway
> > eCOs maintainer

--
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]