[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-arm-kernel
Subject:    Problem with FIQ on at91rm9200
From:       "Jean-Philippe Francois" <jp.francois () cynove ! com>
Date:       2004-05-17 9:07:57
Message-ID: 200405171107570646.00843074 () smtp ! wanadoo ! fr
[Download RAW message or body]

Hi,
I already posted something similar a few days ago, but now I have more time to \
investigate about it.

Here is my problem :
I use the FIQ to emulate a DMA from SDRAM to external chip select 3.
Since it is used to test a kind of screen driver, this FIQ routine is only used image \
by image, ie send an image, change some parameters, send another image etc...

For one image, the external screen controller send FIQ interrupts. The duration of \
this is Tframe, ie there are 160 FIQ spreaded evenly over a Tframe period.

The program we use to copy an image in memory and set some parameters also runs for a \
certain period of time. Let's call this Tproc. After this the control proc execve \
some script that relaunch it

When Tproc < Tframe, I sometime get an oops. (see below)
The only workaround I found is to sleep at the end of my process, to have Tproc + \
Tsleep > Tframe.

What should I do to prevent this ? Did someone already run into similar problem ?

The same program and FIQ routine on an ARM 7 board never generates an oops.

Here is the oops :
Bad mode in interrupt handler detected: mode ABT_32
Vectors: (0xffff0000 to 0xffff0040)
0000: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0020: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
Stubs: (0xffff0200 to 0xffff04b8)
0200: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0220: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0240: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0260: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0280: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
02a0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
02c0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
02e0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0300: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0320: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0340: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0360: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0380: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
03a0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
03c0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
03e0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0400: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0420: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0440: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0460: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
0480: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
04a0: 00000000 00000000 00000000 00000000 00000000 00000000                   
Internal error: Oops: 0
CPU: 0
pc : [<ffff000c>]    lr : [<00034ccc>]    Not tainted
sp : bffffda4  ip : bffffdb8  fp : bffffdb4
r10: 40062d9c  r9 : 00000000  r8 : 00000002
r7 : 0006d000  r6 : 00000001  r5 : 00060324  r4 : 0006d000
r3 : 00000008  r2 : 00000001  r1 : 00060324  r0 : 00000000
Flags: nZCv  IRQs off  FIQs on  Mode ABT_32  Segment user
Control: C000317F  Table: 20D10000  DAC: 00000015
Process ibt_start (pid: 265, stack limit = 0xc0d0e374)
Stack: (0xc0d0fff8 to 0xc0d10000)
ffe0:                                                       00000000 00000000 
Backtrace: invalid frame pointer
Code: bad PC value.


Thank you for your help.

JP Francois



-------------------------------------------------------------------
Subscription options: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
FAQ:       http://www.arm.linux.org.uk/armlinux/mlfaq.php
Etiquette: http://www.arm.linux.org.uk/armlinux/mletiquette.php


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic