Howto

Armadillo-410 液晶モデル開発セット でオーディオコーデック(CS4270)を使用する

本Howtoは参考情報ですので、動作を保証するものではありません。

2014年10月1日現在、オーディオの録音動作において、以下の問題がありますのでご注意ください。
・24ビットデータフォーマットでの録音が正常に行われない

Armadillo-410 液晶モデルにオーディオコーデック(CS4270)を接続して使用する方法を説明します。

CS4270について

CS4270はCIRRUS LOGIC社の24ビット、192 kHzステレオ・オーディオ・コーデックです。 デバイスの詳しい情報については、メーカーのホームページを参照してください。

必要機材

  • Armadillo-410液晶モデル
  • CS4270ボード(本Howtoに掲載している回路図を参考に作成してください)

ソフトウェア

本Howtoで使用するソフトウェアは次の通りです。

Linux カーネルソースアーカイブlinux-2.6.26-at20.tar.gz
Linux カーネルパッチ(1)0001-a400-Add-cs4270-support.patch
Linux カーネルパッチ(2)0002-cs4270-corrected-maximum-and-minimum-channel-number.patch
Linux カーネルパッチ(3)0003-cs4270-fix-recording-error.patch

本Howtoで作成するソフトウェアのバイナリファイルは以下よりダウンロードすることが出来ます。

Linux カーネルイメージlinux-a400-cs4270-support.bin.gz

ハードウェア仕様

今回オーディオコーデックを動作させるために使用するArmadillo-410の機能は以下の通りです。

機能 i.MX25インターフェース名 フォーマット コネクタ
デジタルオーディオ入出力 AUD5 I2S CON2 拡張インターフェース
オーディオコーデック制御 I2C3 I2C CON2 拡張インターフェース

Armadillo-410液晶モデルでは、Armadillo-410拡張ボードの CON16 テストインターフェースでこれらの機能を使うことができます。

CS4270ボード参考回路

CS4270ボードは、ステレオのヘッドホン出力とライン入力を装備したボードです。 Armadillo-410液晶モデルのArmadillo-410 拡張ボードを介してArmadillo-410と接続します。 CS4270ボードの参考回路は以下の通りです。

参考回路図a410_demo_cs4270_rev1.pdf

CS4270ボードをArmadillo-410液晶モデルに接続する際の注意点

Armadillo-410 拡張ボードのCON11に接続されているFFCケーブルを取り外してから、 CS4270ボードをArmadillo-410液晶モデルに接続してください。 Armadillo-410液晶モデルにそのままCS4270ボードを接続すると、LCD拡張ボードの オーディオコーデックとCS4270の信号同士が衝突して、部品が故障する恐れがあります。

Linuxカーネルイメージの作成

CS4270を有効化したLinuxカーネルイメージを作成します。

はじめに、ソースコードの準備を行います。Linux カーネルのソースアーカイブを展開し、パッチを適用します。


atmark@atde3:~/cs4270_demo$ ls
0001-a400-Add-cs4270-support.patch
0002-cs4270-corrected-maximum-and-minimum-channel-number.patch
0003-cs4270-fix-recording-error.patch
linux-2.6.26-at20.tar.gz
atmark@atde3:~/cs4270_demo$ tar zxf linux-2.6.26-at20.tar.gz 
atmark@atde3:~/cs4270_demo$ cd linux-2.6.26-at20/
atmark@atde3:~/cs4270_demo/linux-2.6.26-at20$ patch -p1 < ../0001-a400-Add-cs4270-support.patch 
patching file arch/arm/mach-mx25/armadillo400.c
patching file arch/arm/mach-mx25/devices.c
patching file arch/arm/mach-mx25/devices.h
patching file sound/soc/codecs/cs4270.c
patching file sound/soc/imx/Kconfig
patching file sound/soc/imx/Makefile
patching file sound/soc/imx/armadillo440-cs4270.c
atmark@atde3:~/cs4270_demo/linux-2.6.26-at20$ patch -p1 < ../0002-cs4270-corrected-maximum-and-minimum-channel-number.patch 
patching file sound/soc/codecs/cs4270.c
atmark@atde3:~/cs4270_demo/linux-2.6.26-at20$ patch -p1 < ../0003-cs4270-fix-recording-error.patch 
patching file sound/soc/codecs/cs4270.c
patching file sound/soc/imx/imx-ssi.c
atmark@atde3:~/cs4270_demo/linux-2.6.26-at20$ 

次に、カーネルコンフィギュレーションの変更を行います。Armadillo-410のデフォルトコンフィギュレーション(armadillo400_defconfig)を適用した後に、CS4270ドライバを有効に設定します。


atmark@atde3:~/cs4270_demo/linux-2.6.26-at20$ make ARCH=arm armadillo400_defconfig
    :(カーネルの設定情報が表示されます)
#
# configuration written to .config
#

atmark@atde3:~/cs4270_demo/linux-2.6.26-at20$ make ARCH=arm menuconfig

-> Device Drivers
  -> Sound
    -> Advanced Linux Sound Architecture
      -> System on Chip audio support
        <*> Audio Codec (SoC Audio support for Armadillo-440 - CS4270)

最後に、ビルドを実行します。作成されるLinuxカーネルイメージは、本Howtoよりダウンロードして入手することもできます。


atmark@atde3:~/cs4270_demo/linux-2.6.26-at20$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- && gzip -c arch/arm/boot/Image > linux-a400-cs4270-support.bin.gz
    :(ビルドには数分かかります)

Linuxカーネルイメージの更新

作成したLinuxカーネルイメージを、Armadillo-410のフラッシュメモリに書き込みます。 Armadillo のオンボードフラッシュメモリを書き換える手順につきましては、 Armadillo-400 シリーズ ソフトウェアマニュアル「6. フラッシュメモリの書き換え方法」をご確認ください。

動作確認

CS4270の動作確認を行います。 CS4270ボードが接続されたArmadillo-410液晶モデルを起動します。 CS4270が認識されると、Linuxカーネルのブートメッセージに以下のメッセージが表示されます。


ASoC version 0.13.2
CS4270 ALSA SoC Codec
asoc: CS4270 <-> imx-i2s-1 mapping ok
cs4270: found device at I2C address 4A
cs4270: hardware revision 3
ALSA device list:
  #0: armadillo440 (CS4270)

Armadilloにログイン後、以下の説明を参考に動作確認を行ってください。

asound.confの編集

モノラルの録音再生に対応するため、以下を参考に/etc/asound.confの内容を修正してください。


pcm.!default {
    type hw
    card 0
}

ctl.!default {
    type hw
    card 0
}

pcm.mono {
    type route
    slave.pcm default
    slave.channels 2
    ttable.0.0 0.5
    ttable.0.1 0.5
    ttable.1.0 0.5
    ttable.1.1 0.5
}

再生音量の調節

音量は0~100%の数値で設定することができます。 以下のコマンド例では、70%の音量設定となります。


[armadillo ~]# amixer set Master on 70%

WAVファイルの再生 (ステレオの場合)

以下のコマンド例では、WAVファイル(sample.wav)を再生しています。


[armadillo ~]# aplay -Dplug:default -M -twav sample.wav

WAVファイルの再生 (モノラルの場合)

以下のコマンド例では、WAVファイル(sample.wav)を再生しています。


[armadillo ~]# aplay -Dplug:mono -M -twav sample.wav

音声の録音 (ステレオの場合)

以下のコマンド例では、48kHz16bitステレオで録音します。 録音を終了する場合は、コンソール上でCTRL+Cキーを入力してください。


[armadillo ~]# arecord -M -twav -fS16_LE -c2 -r48000 sample.wav

音声の録音 (モノラルの場合)

以下のコマンド例では、48kHz16bitモノラルで録音します。 録音を終了する場合は、コンソール上でCTRL+Cキーを入力してください。


[armadillo ~]# arecord -Dplug:mono -M -twav -fS16_LE -c1 -r48000 sample.wav