David.

I'm attaching extracts from a module I am currently using to create two 1300
Hz tasks.  This example only creates 1 second tasks but all I did to
increase the frequency was to change the constants.  I hope this helps in
either isolating the problem or getting you past it.

Norman Dresner
Fellow Avionics Support Systems Engineer & SGI Laboratory Administrator
Radar Systems Engineering Department
Electronic Systems and Sensors 
Northrop Grumman Corporation
Baltimore-Washington International Airport
7323 Aviation Boulevard
Baltimore Maryland 21240

Voice:  (410) 993 - 2096        Mornings; all-day voice-mail
        (410) 969 - 8068        Afternoons with answering machine
FAX:    (410) 993 - 8084        On-site
        (410) 969 - 8068        Afternoons; call first to arrange
E-Mail: Mornings:       mailto:[EMAIL PROTECTED]
        Afternoons:     mailto:[EMAIL PROTECTED]
 <<example.c>> 


> -----Original Message-----
> From: [EMAIL PROTECTED] [SMTP:[EMAIL PROTECTED]]
> Sent: Tuesday, October 16, 2001 1:26 PM
> To:   'Stephen D. Cohen'; Dresner, Norman A.
> Cc:   '[EMAIL PROTECTED]'
> Subject:      RE: [rtl] Maximum cycling frequency of 200Hz?
> 
> Stephen, Norman, et al.
> After an exhaustive search, I've finally isolated my cycling frequency
> problem, but I don't fully understand it yet.
> 
> In order to post the problem on the mailing list, I tried to reproduce the
> fault in a single file of simple code, and then found that I was able to
> get
> frequencies > 200Hz.
> 
> It took a while to realise the crucial difference between the working code
> (freq > 200Hz possible), and the non-working code (freq limited to 200Hz).
> Anyway, attached is a single file of C code which reproduces the problem.
> There are two ways to change the make the program work, and these are
> marked
> in comments.
> 
> You might wonder why I've done certain things (i.e. the 1 msec delay at
> the
> start of each start_routine), but there are good reasons to do with my
> original application.
> 
> init_module creates two threads and passes each a pointer to a semaphore. 
> One thread simulates a clock with a tick event every 2msec (post the
> semaphore).
> The other thread is an event processor. It waits for the tick event (using
> semaphore), and every 500th tick (1 second), it prints a message (in the
> future there will be other events which can wake up this thread).
> 
> It seems that, in start_routine_clk(), the setting up of the 2msec period
> is
> adversely effected by the 1 msec delay before it.
> Strangely, reversing the order in which the two threads are created also
> removes the problem.
> 
> Hope someone of you can help get to the bottom of this.
> David
>  
> 
> -----Original Message-----
> From: Stephen D. Cohen [mailto:[EMAIL PROTECTED]]
> Sent: 16 October 2001 14:20
> To: '[EMAIL PROTECTED]'
> Cc: '[EMAIL PROTECTED]'
> Subject: RE: [rtl] Maximum cycling frequency of 200Hz?
> 
> 
> Mr. Hamilton,
> 
> > I'm running a test program. There are two threads.
> > One is just to generate clock events for the other.
> > 
> > So the first thread is set up as periodic with a time 
> > interval x and then
> > just loops...
> >     while (1)
> >     {
> >             pthread_wait_np();
> >             semaphore->signal();
> >     }
> > 
> > The second thread waits on the semaphore, and counts the 
> > clock events until
> > 1 second passes (i.e. 1/x counts) and prints actual time.
> > 
> > Therefore, I expect to see print messages of the actual time 
> > every 1 second.
> 
>       This should work just fine, as near as I can tell.  Since it is so
> simple, please post your code so we can have a look at it.  Also, how are
> you getting the actual time?
> 
> > So, how do others achieve higher rates? From what I read, I get the
> > impression that I have to recompile the kernel with 
> > #define HZ 1000
> > in params.h file.
> 
>       Absolutely not.  That is only required to adjust the normal time
> slice in standard Linux.  It is not necessary for RTLinux.
> 
> Regards,
> 
> Steve
> 
> 
> --------------------------
> Stephen D. Cohen
> Engineering Manager
> Xybion Sensor Positioning Systems
> 11528 53rd Street North
> Clearwater, FL 33760
> Voice: (727) 299-0150
> Fax: (727) 299-0804 
> [EMAIL PROTECTED]
> www.xybion.com
> 
> 
> 
> ************************************************************************
> THIS EMAIL, AND ANY ATTACHMENTS, CONTAINS CONFIDENTIAL AND PRIVILEGED
> INFORMATION INTENDED FOR THE USE OF THE ADDRESSEE. IF YOU ARE NOT THE
> INTENDED RECIPIENT OR AN AUTHORIZED REPRESENTATIVE OF THE RECIPIENT, DO
> NOT
> READ OR DISTRIBUTE THE CONTENTS OF THIS EMAIL AND DELETE IT FROM YOUR
> SYSTEM. THIS EMAIL AND ALL ATTACHMENTS HAVE BEEN SCANNED FOR VIRUSES AND
> ARE
> BELIEVED TO BE VIRUS FREE. HOWEVER, IT IS THE RECIPIENT'S RESPONSIBILITY
> TO
> ENSURE THAT THEY ARE VIRUS FREE. XYBION DOES NOT ACCEPT ANY RESPONSIBILITY
> FOR ANY LOSS OR DAMAGE ARISING IN ANY WAY FROM USE OF THIS EMAIL AND
> ATTACHMENTS. XYBION ALSO DOES NOT ACCEPT RESPONSIBILITY FOR PERSONAL EMAIL
> OR EMAIL NOT ASSOCIATED WITH ITS BUSINESS PURPOSES.
> ************************************************************************
>  << File: loop.c >> 

example.c

Reply via email to