[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