hello all,

  Running RT-Linux version 2.2.14-rtl2.2 on a Pentium III (Coppermine),
  600 MHz (motherboard Asus AX6BC), we are developing:
  
   A program that can read and write up to 6 channels from/to 
   a home brewn device through the machine's parallel port,
   using the EPP 1.9 protocol.
   The main requirement, periodically read, to start with,
   16 bytes and from these compute and return a control
   value, with a, rock HARD, cycletime of 640 us, dictated by
   the external device by interrupt, led us to use a 
   real-time system, ie. rt-linux.
   
   Controlled by a pretty GUI (glade,gtk - great stuff), we configure
   the loaded real-time module, read and write data, through a number of
   rt-fifo's, the IO through the parport runs smooth (we seem to have
   implemented the EPP 1.9 protocol correctly), and we can reach
   the nominal rate of 1562.5 Hz.
   
   However, soon, after a few, not always the same number of, transfers,
   something goes astray in the linux-task proper, as indicated by
   the wall-time clock, (seen by eg. xclock -update 1) it stops and 
   slowly but shurely linux responsetime is degrading and 
   linux stops altogether. 
   The real-time module does run on happily, io with our interface 
   does not stop, but we can no longer communicate with the rt-module.
   
   Does anyone have some idea on what goes wrong here, 
   what tricks can I possibly play to evoke this behaviour???.
   Could it be hardware, in this group the modern PC's power management
   was condemned more then once, we disabled this functionality
   in the BIOS set-up.
   What else must I check??. 
   (The longer RT tasks run in their own thread, moving local
    buffers (at most 1024 byte) from the stack to a static buffer
    did not help, the interrupt service routine is as short as
    i can afford:
    
      unsigned int pp_AckIsr (unsigned int irq, struct pt_regs *regs) {

        rtl_hard_enable_irq (IRQ7);

        i_totalcount++;  /* static global, as is i_missed */

      /* isr_configured bit 0 cleared by processIrequest on wake-up **
      ** set when thread is done and about to suspend.              **
      ** processIrequest_Thread is the highest prio. thread.        */
      
        if (isc_configured&1)
          pthread_wakeup_np (processIrequest_Thread); 
        else
          i_missed++;
             
        return 0; 
      }
      
      (Please let me know if you want/need to check more of the code,
       it is not that much but I thought it might be wiser to not
       append all of it right away)
       
   )
   
                thanks on beforehand, jaap.
                
                
-------------------------------------------------------------
jaap schuurmans. Space Research Org. Utrecht (SRON).
                 Sorbonnelaan 2
                 3584CA Utrecht
                 The Netherlands
e-mail: [EMAIL PROTECTED]              phone:..+31-30-2535644
                                   fax  :..+31-30-2540860
--------------------(o-o)-----------------------------------


-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
---
For more information on Real-Time Linux see:
http://www.rtlinux.org/rtlinux/

Reply via email to