Howto

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

本Howtoは参考情報ですので、動作を保証するものではありません。 また、ハードウェアを一部改造する必要がありますので、十分ご注意ください。

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

CS4270について

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

必要機材

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

ソフトウェア

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

Linux カーネルソースアーカイブlinux-3.4-at9.tar.gz

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

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

ハードウェア仕様

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

機能 R-Mobile A1インターフェース名 フォーマット コネクタ
デジタルオーディオ入出力 FSIA I2S CON7 拡張インターフェース1(Cコネクタ)
オーディオコーデック制御 I2C_0 I2C CON7 拡張インターフェース1(Cコネクタ)

Armadillo-840液晶モデルでは、Armadillo-840 拡張ボード01(Cコネクタ用)の CON8 拡張インターフェース2でこれらの機能を使うことができます。

CS4270ボード参考回路

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

参考回路図a840_demo_cs4270_rev2.pdf

Armadillo-840 拡張ボード01の改造

Armadillo-840液晶モデルで外付けのオーディオコーデックを使用するために、Armadillo-840 拡張ボード01に 搭載しているオーディオコーデック(WM8978)の配線をArmadilloから切り離す必要があります。 以下の基板図を参考にArmadillo-840 拡張ボード01に搭載しているチップ抵抗を事前に取り外してください。 取り外すチップ抵抗は以下の通りです。

リファレンス名 抵抗値
R25
R27 22Ω
R29 22Ω
R31
R32 22Ω
R36
R38

Armadillo-840 拡張ボード01 基板A面側 全体図

Armadillo-840 拡張ボード01 基板A面側 拡大図

Armadillo-840 拡張ボード01 基板B面側 全体図

Armadillo-840 拡張ボード01 基板B面側 拡大図

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

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

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


atmark@atde5:~$ ls
linux-3.4-at9.tar.gz
atmark@atde5:~$ tar zxf linux-3.4-at9.tar.gz 
atmark@atde5:~$ cd linux-3.4-at9/

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


atmark@atde5:~/linux-3.4-at9$ make ARCH=arm armadillo840_defconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/zconf.lex.c
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#

atmark@atde5:~/linux-3.4-at9$ make ARCH=arm menuconfig

System Type  --->
    Armadillo-840 System Configuration  --->
        CON7 extension board (LCD)  --->
            (X) Custom
        -*- use FSIA as Slave
            Audio Codec (AUDIO: WM8978 codec)  --->
                (X) AUDIO: CS4270 codec

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


atmark@atde5:~/linux-3.4-at9$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KALLSYMS_EXTRA_PASS=1 && gzip -c arch/arm/boot/Image > linux-a840-cs4270-support.bin.gz
    :(ビルドには数分かかります)

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

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

動作確認

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


cs4270 0-004a: found device at i2c address 4A
cs4270 0-004a: hardware revision 3

ALSA device list:
  #0: FSI2B-HDMI
  #1: FSI2A-CS4270

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

再生音量の調節

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


[root@armadillo840-0 (ttySC2) ~]# amixer -c 1 set Master on 70%
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch cswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: Playback 0 - 255
  Front Left: Playback 179 [70%] [on] Capture [on]
  Front Right: Playback 179 [70%] [on] Capture [on]

WAVファイルの再生

以下のコマンド例では、48kHz16bitステレオのWAVファイル(test.wav)を再生しています。


[root@armadillo840-0 (ttySC2) ~]# aplay -Dplug:hw:1 -M -twav /home/ftp/pub/test.wav
Playing WAVE '/home/ftp/pub/test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo

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

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


[root@armadillo840-0 (ttySC2) ~]# arecord -Dplug:hw:1 -M -twav -fS16_LE -c2 -r48000 /home/ftp/pub/sample.wav
Recording WAVE '/home/ftp/pub/sample.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo

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

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


[root@armadillo840-0 (ttySC2) ~]# arecord -Dplug:hw:1 -M -twav -fS16_LE -c1 -r48000 /home/ftp/pub/sample.wav
Recording WAVE '/home/ftp/pub/sample.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono