ChrisSchuku
12 years ago
Hi,
I'm capturing an 8-channel TDM stream (32 bit slots) on the BeagleBone
running Ubuntu. My problem is, that when CPU is under heavy load, channels
are swapping like crazy (ie. signal from channel one is suddenly on channel
8, then on 5, ...).
Analyzing the recorded stream I found that the reason for this is that
sometimes one time-slot within a frame is missing (is skipped). Since this
behaviour correlates with the CPU load, I'm pretty sure that it's not the
codec that messes up the TDM stream. Rather I suspect the problem to be on
the McASP or EDMA side of the ALSA driver.
Unfortunately I really have no idea how to track down this problem further
- I only know that somewhere along the way from the McASP input pins to the
ALSA API some timeslots (1 slot is 4 Byte long) get lost.
Has anyone ever experienced similar behaviour or can anyone suggest a way
to debug this problem (I can't seem to get any hints from kernel messages
on this)?
Btw: It seems to me, that currently ping/pong buffering is not being used
as davinci_pcm_enqueue_dma (sound/soc/davinci/davinci-pcm.c) is called on
every DMA interrupt. Is that something to look into?
Any suggestion are very much appreciated!
best,
Chris
I'm capturing an 8-channel TDM stream (32 bit slots) on the BeagleBone
running Ubuntu. My problem is, that when CPU is under heavy load, channels
are swapping like crazy (ie. signal from channel one is suddenly on channel
8, then on 5, ...).
Analyzing the recorded stream I found that the reason for this is that
sometimes one time-slot within a frame is missing (is skipped). Since this
behaviour correlates with the CPU load, I'm pretty sure that it's not the
codec that messes up the TDM stream. Rather I suspect the problem to be on
the McASP or EDMA side of the ALSA driver.
Unfortunately I really have no idea how to track down this problem further
- I only know that somewhere along the way from the McASP input pins to the
ALSA API some timeslots (1 slot is 4 Byte long) get lost.
Has anyone ever experienced similar behaviour or can anyone suggest a way
to debug this problem (I can't seem to get any hints from kernel messages
on this)?
Btw: It seems to me, that currently ping/pong buffering is not being used
as davinci_pcm_enqueue_dma (sound/soc/davinci/davinci-pcm.c) is called on
every DMA interrupt. Is that something to look into?
Any suggestion are very much appreciated!
best,
Chris
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups "BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit https://groups.google.com/groups/opt_out.
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups "BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit https://groups.google.com/groups/opt_out.