Your 10 mSec period interrupt source is the Linux system clock 'tick'.
If the SPI IO window of 20 mSec is not frequently used, you could look into
writing a simple Linux kernel application or driver that masks all interrupts
during that window. Simply masking interrupts does not solve your problem
because there will likely be interrupts from the FPGA that are related to the
SPI bus: the link from the ARM processor to the outside world is only through
the FPGA and the only link from the ARM to the FPGA is a high-speed SPI bus
link. Masking out all interrupts essentially disables the Linux kernel, and
requires you to handle all SPI-related interrupts.
If the 20 mSec SPI IO window is expected frequently, Linux or any other
operating system based solution is not the way to do it. The correct way is to
use a dedicated IO processor. You could rewrite the 7550 BusyBox loader to
load an application which does nothing but SPI communication. Or use a cheaper
PIC-based IO processor.
Or live with the periodic interrupts. I routinely read and write 72-bit
SPI-based registers with no problems, despite the clock interrupts. A also set
up 72 chained 8-bit DACs in a single SPI output operation using our 7500. It
works well despite Linux preemption.
Look at your requirements. Is it mandatory that the SPI IO operation be
uninterrupted? If so, Linux is not the way to go.
HTH
--- In "J. Langley" <> wrote:
>
>
>
> 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.
> >>
> >>
> >>
> >>
> >>
> >
>
------------------------------------
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ts-7000/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/ts-7000/join
(Yahoo! ID required)
<*> To change settings via email:
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|