[Armadillo:03206] Re: Armadillo-500の音声出力について

山本 慎二郎 email@hidden
2008年 7月 30日 (水) 10:01:50 JST


いつもお世話になっております。
山本@北都システムです。

ご回答ありがとうございます。

> > 現在、Armadillo-500を使用して
> > 「マイク入力→入力データをそのまま出力」という動作をさせたく、
> > /dev/dspをアプリ起動時にRONLYとWONLYでオープンし、
> > read()→write()→read()→write()と繰り返していると
> > 以下のような現象が発生します。
> 
> codecをBypassモードにしてあげると入力→出力ということもできますね。
> # linuxではノータッチ
> 
> cat /dev/dsp > /dev/dsp
> でもできますね。(ノイズがのるかもしれませんが。)

了解しました。
ちょっと試してみます。

> > 「DMA Config failed」のエラーを回避する方法は
> > 何かありますでしょうか?
> > それとも、エラーが発生するのは、書き込みが
> > 追いついていないだけなので、printk()の出力箇所を
> > コメントアウトする、でも問題がないことなのでしょうか?
> 
> コメントアウトでも問題ないですが、
> writeが追いつかないとノイズがのると思います。

了解しました。

> サンプリングレートを下げるとどうでしょう?

サンプリングレートを44.1kHz(デフォルト)から、
8kHzに下げても発生します。

ただ、8kHzに下げた場合は、発生するまでの時間が
長くなります。

「DMA Config failed」の発生するトリガとなる情報を
取得することは、現状のドライバでは不可能でしょうか?
#少なくとも/dev/dspのioctlや、pollでは、取得できませんでした。。

よろしくお願い致します。

以上

On Tue, 29 Jul 2008 20:32:49 +0900
nakai <email@hidden> wrote:

> nakaiです。
> 
> > 現在、Armadillo-500を使用して
> > 「マイク入力→入力データをそのまま出力」という動作をさせたく、
> > /dev/dspをアプリ起動時にRONLYとWONLYでオープンし、
> > read()→write()→read()→write()と繰り返していると
> > 以下のような現象が発生します。
> 
> codecをBypassモードにしてあげると入力→出力ということもできますね。
> # linuxではノータッチ
> 
> cat /dev/dsp > /dev/dsp
> でもできますね。(ノイズがのるかもしれませんが。)
> 
> > 「DMA Config failed」のエラーを回避する方法は
> > 何かありますでしょうか?
> > それとも、エラーが発生するのは、書き込みが
> > 追いついていないだけなので、printk()の出力箇所を
> > コメントアウトする、でも問題がないことなのでしょうか?
> 
> コメントアウトでも問題ないですが、
> writeが追いつかないとノイズがのると思います。
> 
> サンプリングレートを下げるとどうでしょう?
> 
> 
> 山本 慎二郎 さんは書きました:
> > いつもお世話になっております。
> > 山本@北都システムです。
> > 
> > 現在、Armadillo-500を使用して
> > 「マイク入力→入力データをそのまま出力」という動作をさせたく、
> > /dev/dspをアプリ起動時にRONLYとWONLYでオープンし、
> > read()→write()→read()→write()と繰り返していると
> > 以下のような現象が発生します。
> > 
> > ■現象
> > 「DMA Config failed」がコンソールに出力される
> > 
> > ■環境
> > ・atmark-dist-20080617
> > ・linux-2.6.18-at8
> >     ※特にデフォルトから手を入れていません。
> > 
> > 
> > 調査してみたところ、
> >   ●linux-2.6.18-at8/sound/arm/mxc-alsa-i2s.c
> >     (L241)mxc_alsa_i2s_dma_playback()
> >       mxc_dma_config()の戻り値が-EBUSYのため
> >       printk出力されている。
> >         →linux-2.6.18-at8/arch/arm/plat-mxc/sdma/dma_sdma.c
> >             (L295)で-EBUSY
> > 
> > というところまでは追えましたが、
> > 回避方法は不明です。
> > 
> > 上記を見る限りwrite()によるデータ転送が追いついて
> > いないように見えるのですが、ユーザーアプリ側で出力可能な
> > タイミングを知ることができないため、
> > 回避できないように思えます。
> > (write()はwaitせずに正常にreturnしてきます。
> >  また、pollも「書き込み可」と返ってきます)
> > 
> > 以下のように、WONLY側のwrite()後、close()→open()して
> > 再度write()をするように繰り返した場合は
> > エラー出力の現象が発生しませんが、
> > プツプツというノイズが入ってしまうため、
> > 実用に耐えません。
> > 
> >   read()→write()→close()→read()→open()→write()→close()→…
> > 
> > 「DMA Config failed」のエラーを回避する方法は
> > 何かありますでしょうか?
> > それとも、エラーが発生するのは、書き込みが
> > 追いついていないだけなので、printk()の出力箇所を
> > コメントアウトする、でも問題がないことなのでしょうか?
> > 
> > よろしくお願い致します。
> > 
> > 以上
> > 
> > =================================================
> > 北都システム株式会社
> >   第4ユニット ITソリューショングループ所属
> > 山本  慎二郎(Shinjiro Yamamoto)
> >  TEL: 045-470-2773
> >  Mail: email@hidden
> > =================================================
> > 
> > 
> > _______________________________________________
> > armadillo mailing list
> > email@hidden
> > http://lists.atmark-techno.com/mailman/listinfo/armadillo
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo
> 






armadillo メーリングリストの案内