ts-7000
[Top] [All Lists]

Re: [ts-7000] Avoiding task preemption by Linux kernel

To:
Subject: Re: [ts-7000] Avoiding task preemption by Linux kernel
From: David Smead <>
Date: Sat, 13 Aug 2011 01:23:00 -0700


I don't know whether this will help on Linux or not, but this is what I do on another real time system with preemptive scheduling.

First, there are multiple devices using the SPI bus, and the ADC must be able to deliver X readings per second, where other devices aren't as critical.  All SPI requests go into a priority list and the ADC is given top priority.

The other requirement is not to interrupt an SPI transaction that is in progress.  The SPI device has a hardware queue that is 16 deep, (bytes or words, depending on dynamic configuration).  So that's the maximum 'bunch' size any device can use at one time.
If any device needs more than 16, then it has to be parceled before requesting an SPI operation.  That also prevents a device from hogging the SPI port, which would force a higher priority task, (ADC) to wait.

SPI bit rates are 2-25 MHz, so the SPI driver doesn't rest a lot.



On Fri, Aug 12, 2011 at 4:32 PM, Clark Dunson <> wrote:
 

I am also interested, thanks.
Does anybody know whether compiling the main interrupt to use a slower speed,
and/or using nice or renice to set the scheduling priority like -19, or -20 will make 
much of a difference?

On Aug 12, 2011, at 4:17 PM, Walter Marvin wrote:

 

you can't avoid technologic has a user space semaphore that they test and force a tack switch if required the only way to avoid it is to down all technologic servers


From: tourindorian <>
To:
Sent: Friday, August 12, 2011 9:04 AM
Subject: [ts-7000] Avoiding task preemption by Linux kernel

 
Hi,

I'm developing an application (C code) on the TS7550 board, using Linux 2.6. I got an issue trying to use continuously the SPI bus for 20ms.
Every 10ms, the communication is interrupted during about 0.5ms. I guess the Kernel scheduler interrupts the process.

Do you have any idea to fix it? Could I change the tick rate of the scheduler so that it is about 50 or 100ms instead of 10ms? Could I prevent the Kernel from preempting the task during that critical section?

Any idea would be useful :-)

Many thanks,

Dorian.








__._,_.___


Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: =Email Delivery: Digest | m("yahoogroups.com?subject","ts-7000-fullfeatured");=Change Delivery Format: Fully Featured">Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | =Unsubscribe

__,_._,___
<Prev in Thread] Current Thread [Next in Thread>
Admin

Disclaimer: Neither Andrew Taylor nor the University of NSW School of Computer and Engineering take any responsibility for the contents of this archive. It is purely a compilation of material sent by many people to the birding-aus mailing list. It has not been checked for accuracy nor its content verified in any way. If you wish to get material removed from the archive or have other queries about the archive e-mail Andrew Taylor at this address: andrewt@cse.unsw.EDU.AU