みみず工房掲示板
[リストに戻る] [ホームに戻る] [新規投稿] [thread view] [tree view] [留意事項] [ワード検索] [過去ログ] [管理用]
BBBのI2S interface - syu 2014/03/30(Sun) 07:04 No.4231
 ├ Re: BBBのI2S interface - syu 2014/03/30(Sun) 14:19 No.4234
 ├ Re: BBBのI2S interface - tinker 2014/03/30(Sun) 15:30 No.4236
 ├ Re: BBBのI2S interface - yo 2014/03/30(Sun) 20:16 No.4239
 ├ Re: BBBのI2S interface - syu 2014/03/31(Mon) 20:48 No.4240
 ├ Re: BBBのI2S interface - tinker 2014/03/31(Mon) 21:43 No.4241
 ├ Re: BBBのI2S interface - syu 2014/03/31(Mon) 23:52 No.4242
 ├ Re: BBBのI2S interface - yo 2014/04/01(Tue) 19:44 No.4243
 ├ Re: BBBのI2S interface - tinker 2014/04/01(Tue) 20:59 No.4244
 ├ Re: BBBのI2S interface - twl 2014/04/02(Wed) 00:14 No.4245
 ├ Re: BBBのI2S interface - tinker 2014/04/02(Wed) 17:44 No.4246
 ├ Re: BBBのI2S interface - twl 2014/04/02(Wed) 20:46 No.4247
 ├ Re: BBBのI2S interface - tinker 2014/04/02(Wed) 21:00 No.4248
 ├ Re: BBBのI2S interface - yo 2014/04/02(Wed) 21:09 No.4249
 ├ Re: BBBのI2S interface - twl 2014/04/02(Wed) 21:59 No.4250
 ├ Re: BBBのI2S interface - twl 2014/04/02(Wed) 22:25 No.4251
 ├ Re: BBBのI2S interface - tinker 2014/04/02(Wed) 23:03 No.4252
 ├ Re: BBBのI2S interface - syu 2014/04/03(Thu) 01:08 No.4253
 ├ Re: BBBのI2S interface - syu 2014/04/03(Thu) 13:40 No.4254
 ├ Re: BBBのI2S interface - syu 2014/04/03(Thu) 14:05 No.4255
 ├ Re: BBBのI2S interface - twl 2014/04/03(Thu) 18:02 No.4256
 ├ Re: BBBのI2S interface - syu 2014/04/03(Thu) 19:27 No.4257
 ├ Re: BBBのI2S interface - twl 2014/04/03(Thu) 22:36 No.4258
 ├ Re: BBBのI2S interface - tinker 2014/04/05(Sat) 15:57 No.4259
 ├ Re: BBBのI2S interface - twl 2014/04/06(Sun) 16:27 No.4261
 ├ Re: BBBのI2S interface - syu 2014/04/06(Sun) 19:25 No.4263
 ├ Re: BBBのI2S interface - syu 2014/04/06(Sun) 21:05 No.4265
 ├ Re: BBBのI2S interface - twl 2014/04/06(Sun) 21:44 No.4266
 ├ Re: BBBのI2S interface - syu 2014/04/08(Tue) 19:17 No.4268
 ├ Re: BBBのI2S interface - twl 2014/04/08(Tue) 23:59 No.4271
 ├ Re: BBBのI2S interface - syu 2014/04/11(Fri) 21:32 No.4279
 ├ Re: BBBのI2S interface - tinker 2014/04/12(Sat) 09:10 No.4281
 ├ Re: BBBのI2S interface - syu 2014/04/13(Sun) 07:20 No.4284
 ├ Re: BBBのI2S interface - twl 2014/04/13(Sun) 11:01 No.4285
 ├ Re: BBBのI2S interface - twl 2014/04/13(Sun) 18:52 No.4286
 ├ Re: BBBのI2S interface - syu 2014/04/13(Sun) 20:40 No.4288
 ├ Re: BBBのI2S interface - twl 2014/04/13(Sun) 22:19 No.4290
 ├ Re: BBBのI2S interface - syu 2014/04/14(Mon) 13:44 No.4293
 ├ Re: BBBのI2S interface - syu 2014/04/14(Mon) 20:33 No.4294
 ├ Re: BBBのI2S interface - syu 2014/04/17(Thu) 23:57 No.4302
 ├ Re: BBBのI2S interface - twl 2014/04/19(Sat) 09:33 No.4308
 ├ Re: BBBのI2S interface - syu 2014/04/19(Sat) 18:14 No.4309
 ├ Re: BBBのI2S interface - syu 2014/04/20(Sun) 07:01 No.4311
 ├ Re: BBBのI2S interface - syu 2014/04/20(Sun) 07:05 No.4312
 ├ Re: BBBのI2S interface - tinker 2014/04/20(Sun) 08:54 No.4313
 ├ Re: BBBのI2S interface - syu 2014/04/21(Mon) 21:06 No.4315
 ├ Re: BBBのI2S interface - tinker 2014/04/21(Mon) 21:30 No.4316
 ├ Re: BBBのI2S interface - syu 2014/04/23(Wed) 20:31 No.4319
 ├ Re: BBBのI2S interface - tinker 2014/04/27(Sun) 22:34 No.4320
 ├ Re: BBBのI2S interface - tinker 2014/04/29(Tue) 09:41 No.4323
 ├ Re: BBBのI2S interface - tinker 2014/04/29(Tue) 12:30 No.4324
 ├ Re: BBBのI2S interface - syu 2014/04/30(Wed) 19:05 No.4330
 ├ Re: BBBのI2S interface - tinker 2014/04/30(Wed) 21:50 No.4331
 ├ Re: BBBのI2S interface - syu 2014/05/01(Thu) 00:24 No.4332
 ├ Re: BBBのI2S interface - moct 2014/05/01(Thu) 17:29 No.4333
 ├ Re: BBBのI2S interface - tinker 2014/05/01(Thu) 18:13 No.4334
 ├ Re: BBBのI2S interface - tinker 2014/05/01(Thu) 18:24 No.4335
 ├ Re: BBBのI2S interface - moct 2014/05/01(Thu) 21:12 No.4336
 ├ Re: BBBのI2S interface - tinker 2014/05/01(Thu) 22:33 No.4337
 ├ Re: BBBのI2S interface - syu 2014/05/01(Thu) 23:10 No.4338
 ├ Re: BBBのI2S interface - syu 2014/05/01(Thu) 23:12 No.4339
 └ Re: BBBのI2S interface - syu 2014/05/01(Thu) 23:15 No.4340

BBBのI2S interface 投稿者:syu 投稿日:2014/03/30(Sun) 07:04 No.4231 home
皆様

BBBのI2S interfaceを、RasPiからのI2S直接入力とは別スレッドにしてみました。

さて、春爛漫の筍探索日和のもと、arch linuxを試しました。
にしても、筍もだけど、今時分のツワブキ、最高ッス^^;;

arch linuxを新規インストールすると、3.8.13-16 が入ります。
# pacman -Syu で 3.8.13-17 になります。

[root@alarm ~]# uname -a
Linux alarm 3.8.13-17-ARCH #1 SMP Fri Mar 7 16:01:11 MST 2014 armv7l GNU/Linux

mpdは、mpd-0.18.9-dsdをmakeした後で気付いたんですが、デフォルトで 0.18.9-dsd がインストールされます。

[root@alarm ~]# mpd -V
Music Player Daemon 0.18.9-dsd

/usr/bin/mpd が 0.18.9-dsdだったというお粗末。

[root@alarm ~]# systemctl status mpd
mpd.service - Music Player Daemon
Loaded: loaded (/usr/lib/systemd/system/mpd.service; enabled)
Active: active (running) since Sun 2014-03-30 01:42:22 JST; 43min ago
Main PID: 343 (mpd)
CGroup: /system.slice/mpd.service
└─343 /usr/bin/mpd --no-daemon

Boticのdriverは http://bbb.ieero.com/botic_driver_v3.tar.gz です。

この版でも、16/44.1は48kHzにresampleされます。
24/96はそのまま出力され、CPU負荷は16/44.1よりも大幅に軽くなります。
24/176.4はmclkの周波数が合わないのか、dacに192kHz表示が出るもフリーズ。dacは電源を一旦切って入れ直せば回復。
24/192は48kHz系列だからか、良好に再生。
DXD:24/352.8はait dacが対応せず、192kHzの表示が明滅し、dacフリーズ。
384kHzは音源が無く、未検証。

主たるテスト音源は http://www.2l.no/hires/

24/192再生中

Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.7 us, 4.0 sy, 0.0 ni, 87.9 id, 0.0 wa, 0.0 hi, 1.3 si, 0.0 st
KiB Mem: 507636 total, 503208 used, 4428 free, 2124 buffers
KiB Swap: 0 total, 0 used, 0 free. 473048 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
343 mpd 20 0 90400 12988 5316 S 9.0 2.6 15:51.74 mpd
179 root 20 0 0 0 0 S 2.7 0.0 2:40.42 cifsd
15 root 20 0 0 0 0 S 0.3 0.0 0:10.21 kworker/0:1
1 root 20 0 4220 2680 1808 S 0.0 0.5 0:02.08 systemd

24/96再生中

Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 4.1 sy, 0.0 ni, 91.4 id, 2.7 wa, 0.0 hi, 1.0 si, 0.0 st
KiB Mem: 507636 total, 441324 used, 66312 free, 2232 buffers
KiB Swap: 0 total, 0 used, 0 free. 411112 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
179 root 20 0 0 0 0 S 3.6 0.0 0:53.16 cifsd
343 mpd 20 0 90400 12864 5232 S 2.3 2.5 4:28.96 mpd
15 root 20 0 0 0 0 S 0.3 0.0 0:03.27 kworker/0:1
357 root 20 0 4976 1248 984 R 0.3 0.2 0:00.07 top
1 root 20 0 4220 2688 1816 S 0.0 0.5 0:01.74 systemd

16/44.1再生中

Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
%Cpu(s): 31.5 us, 3.0 sy, 0.0 ni, 63.2 id, 0.0 wa, 0.0 hi, 2.3 si, 0.0 st
KiB Mem: 507636 total, 485128 used, 22508 free, 2248 buffers
KiB Swap: 0 total, 0 used, 0 free. 454788 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
343 mpd 20 0 90400 12864 5232 S 33.4 2.5 4:38.11 mpd
179 root 20 0 0 0 0 S 2.3 0.0 0:54.66 cifsd
15 root 20 0 0 0 0 S 0.3 0.0 0:03.36 kworker/0:1
139 root 20 0 1728 520 456 S 0.3 0.1 0:00.39 ifplugd
359 root 20 0 4976 1248 984 R 0.3 0.2 0:00.03 top
1 root 20 0 4220 2688 1816 S 0.0 0.5 0:01.74 systemd

この版では、24/96が特にマッチしており、素晴らしい。

capeからのi2s配線長を15cmから7.5cmに短縮しましたが、気持ち、音は改善される気が・・・
BBBと配線をアルミでシールドしてみようかと思っています。

384kHz対応版とRT kernelの公開をドライバ作者のmieroさんが予定している気配に、期待大。
http://www.diyaudio.com/forums/twisted-pear/250583-building-open-embedded-audio-applicance-45.html#post3871359

今から、贅沢者の猪君が掘りかけながらイマイチなので放棄した筍の探索に出かけます。トリュフ探索豚と筍探索猪って、どこか似てますね。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/03/30(Sun) 14:19 No.4234 home
皆様

capeの部品リストです。

シリアルケーブルを併用するには高さが必要ですので、ケープ側にハンダ付けしたピンソケットとBBBのソケットとの間にピンヘッダを挟むなどの工夫が必要です。ピンは必要な場所だけでよいと思います。

univ. cape 1 ¥300 ¥300 秋月 http://akizukidenshi.com/catalog/g/gP-07190/
ピンヘッダ 1 ¥40 ¥40 1x40p 秋月 http://akizukidenshi.com/catalog/g/gC-00167/
ピンソケット 1 ¥80 ¥80 1x40p 秋月 http://akizukidenshi.com/catalog/g/gC-05779/
丸ピンICソケット 1 ¥100 ¥100 1x40p 秋月 http://akizukidenshi.com/catalog/g/gP-01591/
セラミックコン 22pF 1 ¥100 ¥100 20個入り 秋月 http://akizukidenshi.com/catalog/g/gP-03620/
抵抗 10k 1 ¥100 ¥100 100本セット 秋月 http://akizukidenshi.com/catalog/g/gR-25103/
耐熱22G配線材 1 ¥300 ¥300 2mx7色 秋月 http://akizukidenshi.com/catalog/g/gP-06755/
3.3V電源 2 ¥1,200 ¥2,400 秋月 http://akizukidenshi.com/catalog/g/gK-06194/
逓倍クロック基板 1 ¥2,900 ¥2,900 お気楽オーディオキット http://easyaudiokit.hobby-web.net/bekkan/distr/distr.html
アイソレータ基板 1 ¥1,200 ¥1,200 お気楽オーディオキット
ADuM1100BR 4 ¥350 ¥1,400 お気楽オーディオキット

合計 ¥8,920

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/03/30(Sun) 15:30 No.4236 home
syuさん

結構安価で出来るんですね。
私は、I2Sを受けられるうDACを持ってないですし、何よりraspiにピンヘッダ立てるだけでドキドキするので無理そうです^^;

Re: BBBのI2S interface 投稿者:yo 投稿日:2014/03/30(Sun) 20:16 No.4239 home
syuさん

> 今から、贅沢者の猪君が掘りかけながらイマイチなので放棄した筍の探索に出かけます。トリュフ探索豚と筍探索猪って、どこか似てますね。

ここ位しかコメントのしようがないのですが(^^;;;、同感です。

興味深く拝見しています。僕はパスですが、内容には興味があるので、続報楽しみにしています。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/03/31(Mon) 20:48 No.4240 home
tinkerさん、yoさん

>パス
capeはそのうちTwisted Pear Audioから発売されるでしょうから、それからのお楽しみですね。

音は、twlさんがおっしゃる通り、次元が違うほど変わります。現状のi2s driverや自作capeがまだ不完全であっても、usb-ddcには戻る気が起きないほどの大きな差です。

現在、ドライバはV4になっていますが、挙動はV3とあまり変化していません。ChangeLogの記載では、V4から3.13.6に対応したようです。テストはできませんが384kHzにも対応したかもです。

sourceファイルのdavinci-botic.c の末尾の記載も、下記のようになっています。このドライバは、Twisted Pear Audio BBB I2S Transport Cape driverとして開発されており、ライセンスはGPLなので我々の利用も可能になっているということのようです。

MODULE_AUTHOR("Miroslav Rudisin");
MODULE_DESCRIPTION("Twisted Pear Audio BBB I2S Transport Cape driver");
MODULE_LICENSE("GPL");

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/03/31(Mon) 21:43 No.4241 home
syuさん

>RT kernelの公開をドライバ作者のmieroさんが予定している気配に、期待大
capeのサポートってどの程度のものが必要なんでしょうか?
3.8みたいにフルサポートが必要 or 3.12くらいのサポートで良いのでしょうか?

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/03/31(Mon) 23:52 No.4242 home
tinkerさん

どんなものになるのか、想像もできていませんが、ドライバもRT向けに改変するという意図かもしれません。
今のところ、ドライバはソースも公開されてはいますが、基本、コンパイルされた状態で配布されていますので、3.13.6でテストしたってことは、3.8.17以降3.13.6まで、そのまま使えるのかも?

>3.8みたいにフルサポートが必要 or 3.12くらいのサポートで良いのでしょうか?

ご質問の意味が理解できていませんが、何か作っていただけるならば、音が出るかテストしてみることは可能です。
是非よろしく^^;

Re: BBBのI2S interface 投稿者:yo 投稿日:2014/04/01(Tue) 19:44 No.4243 home
質問です。

dsd対応ってどうなっているのですかね。
diyAudioのスレッドでは話題になっているけど、本格的な議論はまだなようなので。
綺麗に対応するには、mpdやalsa-player側の修正が必要だと思うのですが。

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/01(Tue) 20:59 No.4244 home
syuさん

>音が出るかテストしてみることは可能です
お言葉に甘えて、テストお願いします。
https://drive.google.com/file/d/0BxnbJHx0_xurODV5QXBmQlBBam8/edit?usp=sharing

以下の手順で作った3.12.13.rt21です。
何をサポートすればいいのか分からないので、ほぼNelsonさんのconfigをそのまま使って、rtパッチを当てたあと、./tools/rebuild.shにて作成しました。
configの変更点は以下のとおりです。
・full RT
・CMA
・Native language supportでUTF8をビルトイン

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/02(Wed) 00:14 No.4245 home
> 何をサポートすればいいのか分からないので、

中身を拝見しましたが、以下のmoduleが含まれていないので、このお試し版は使えないですね。

snd_davinci_botic
snd_codec_es9018

私は3.12(rtカーネルを含め)と3.13で上記のmoduleはコンパイルでき、insmodでも認識されますが、いざ使おうとすると

/sys/devices/bone_capemgr.*/slots: No such file or directory

というメッセージが出るために現実には使えません。

多分miero氏が書いているようにMcASP patchesが正しくあたっている条件が必要のようです。3.13ではこのpatchは既に組み込まれているようなコメントもありますが、 それでもBoticは認識されないので、実際現行でmiero氏のI2Sドライバーが使えるのはDebianでもArchでも3.8.13のカーネルに限られるようです。

多分BBBで実際にI2S接続の環境を作らないと目的にあったカーネルを作るのはtinkerさんでも無理な状況です。私は現状のカーネルで何も問題はないのでcapeができるまでゆっくり待っています。

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/02(Wed) 17:44 No.4246 home
twlさん

ちょっと舌足らずでしたね。
「何をサポートすればいいのか分からない」と言うのは、kernelレベルでということです。
driverが必要なことは分かっていますが、syuさんはすでにお持ちなので同包しませんでした。
capeのサポートは
3.8 > 3.12 > 3.13 > 3.14(3.14はサポートされていないと思う) なので、3.13.6で動いているのであれば、3.12でも動くはずだと思い、確認をお願いした次第です。
新たにkernel作って確認してと言うのも何なので、kernelだけはこちらで用意しました。

>McASP patchesが正しくあたっている条件が必要
linux-dev/patches/を見ると、3.13は微妙ですが3.12は当たってるようですね。

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/02(Wed) 20:46 No.4247 home
tinkerさん wrote:

> capeのサポートは
> 3.8 > 3.12 > 3.13 > 3.14(3.14はサポートされていないと思う) 
> なので、3.13.6で動いているのであれば、3.12でも動くはずだと思い、
> 確認をお願いした次第です。

ちょっとここに誤解があるようです。現在公開されているI2Sドライバーが3.13.6で動いているという報告はありません。件のフォーラムでは開発者のmiero氏の現在の開発環境でのカーネルが3.13.6になっているということであり、公開済みのドライバーがその環境で動作しているという報告はありません。実際にフォーラムでの流れを把握されればご了解いただけると思います。

tinkerさんのcapeサポートが上記のご指摘通りになるかどうか、アップされたお試し版のカーネルおよびrootfsとしてruneaudioを使い、3.8.13-17-ARCH対応のドライバーを入れてチェックしてみました。以下のその一部です。

[root@runeaudio ~]# uname -a
Linux runeaudio 3.12.13-rt21-bone12 #1 SMP PREEMPT RT Tue Apr 1 20:45:29 JST 2014 armv7l GNU/Linux

最初にドライバーの出自を確認、

[root@runeaudio sound]# modinfo snd-codec-es9018.ko
filename: /lib/modules/3.12.13-rt21-bone12/kernel/sound/snd-codec-es9018.ko
license: GPL
author: Miroslav Rudisin
description: ES9018 codec driver
srcversion: 52F8EAC30BB6C9C2BCACF15
alias: of:N*T*Cess,es9018*
depends:
vermagic: 3.8.13-17-ARCH SMP mod_unload modversions ARMv7 p2v8

これを動作中の3.12.13-rt21-bone12カーネルのもとでinsmodしてみますが、

[root@runeaudio sound]# insmod snd-codec-es9018.ko
insmod: ERROR: could not insert module snd-codec-es9018.ko: Invalid module format

といった具合で認識されません。それではと、同じ 3.12.13-rt21環境で以前私が作ったsnd-codec-es9018.koについてinsmodしてみました。

modinfo snd-codec-es9018.ko
filename: /lib/modules/3.12.13-rt21-bone12/kernel/sound/snd-codec-es9018.ko
license: GPL
author: Miroslav Rudisin
description: ES9018 codec driver
srcversion: 52F8EAC30BB6C9C2BCACF15
alias: of:N*T*Cess,es9018*
depends:
vermagic: 3.12.13-rt21_BBB_0320_RT-bone12 SMP preempt mod_unload modversions ARMv7 thumb2 p2v8

結果は同じく、

[root@runeaudio sound]# insmod snd-codec-es9018.ko
insmod: ERROR: could not insert module snd-codec-es9018.ko: Invalid module format

と、認識されません。でも自作の 3.12.13-rt21_BBB_0320_RT-bone12のカーネル環境ではこの自作ドライバーは

[root@runeaudio ~]# uname -a
Linux runeaudio 3.12.13-rt21_BBB_0320_RT-bone12 #7 SMP PREEMPT RT Fri Mar 21 09:07:31 JST 2014 armv7l GNU/Linux

[root@runeaudio sound]# lsmod
Module Size Used by
snd_davinci_botic 4193 0
snd_codec_es9018 2798 0

すんなりと認識されます。

ここから言えることはドライバー開発者のmiero氏も書いているように、3.8.13以外についてのI2S dirver moduleについては自力compileする必要があるということで、残念ながらtinkerさんのお示しになられたようなわけにはいかないのが現状です。

でも、上記のように3.8.13以外のカーネルでI2S driver moduleが認識されたとしても、背景にdts (dtb) overlayによる設定が仕組まれているためか(私には詳細が分かりませんが)、これを反映させようと、miero氏の指示のごとく

echo BB-BONE-BOTIC1 > /sys/devices/bone_capemgr.*/slots

とやってドライバーを指定しようとしても

/sys/devices/bone_capemgr.*/slots: No such file or directory

というエラーで認識されないというのが現状です。

というわけで、

> McASP patchesが正しくあたっている条件が必要
> linux-dev/patches/を見ると、3.13は微妙ですが3.12は当たってるようですね。

これについても私は確信できません。この点では現在I2Sドライバーを使う際に一番信用できるのは3.8.13カーネルということになりそうですね。長文、失礼しました。

twl

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/02(Wed) 21:00 No.4248 home
twlさん
詳しい解説ありがとうございます。

>一番信用できるのは3.8.13カーネルということになりそうですね
Nelsonさんのところに、Checkout v3.8.x branch (full cape support):って書いてありますよね。
4241に書いたように、full cape supportとその他の違いが知りたいんですよね。

Re: BBBのI2S interface 投稿者:yo 投稿日:2014/04/02(Wed) 21:09 No.4249 home
要するに実行環境で自力でビルドすればOKということではないのですか。事情が分かっていないので、ハズしていたらごめんなさいです。

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/02(Wed) 21:59 No.4250 home
tinkerさん

> 4241に書いたように、full cape supportとその他の違いが知りたいんですよね。

Yo さん

> 要するに実行環境で自力でビルドすればOKということではないのですか。

そうなんです。お二人のご指摘の通りなのですが、この自力ビルドとfull cape supportが直接には結びつかないようなので悩んでおります。

今回のmiero氏のI2S driverが機能するにはdevice tree overlayの利用が前提になっています。以前yoさんがお示しになったように3.8カーネル以降ではdevice treeの概念が導入されていますが、これらのblobはboot時に指定される必要があり、そのためにdtbsフォルダーがzImageとともに用意される必要があると認識しています。

BBBのようなcapeサポートのある装置だと、cape装着とかGPIOのヘッダーピンへのジャンパーケーブル接続による初期化などの際には、いちいちBBBを再起動しなくとも装着されたハードウェアを自動認識できるような機能があれば便利な訳ですが、上記のdevice tree overlayの概念がこれを可能にしているものと解釈しています。

今回のmiero氏のドライバーではdevice tree overlayを利用したドライバーのローディングはとりあえずboot毎に行う必要があるのですが、3.8.13以外の環境ではmodule自体はビルドできても、overlayを利用したこのローディングがうまくいかないというか、少なくとも私の環境ではそんな具合なのです。

フォーラムではドライバーの指定にdevice tree overlayを利用することに疑問のコメントもあり、これから先もES9018を対象としたI2Sドライバーの内容や動作環境は変化する可能性も考えられますが、ま、そんな訳で私は現在様子見の状態を続けております。

逆に言いますと、tinkerさん、BBBのcapeも出来上がっていない今こそ、来るべく日を待ち構えながらハンダ付けの練習をされる絶好の期間かもしれません。安い2.54mmピッチの基板とそれにあったピンヘッダーを用意して、コツコツとハンダ付けを練習すれば、I2S友の会を主催できるようになられるのではと思いますが、いかがでしょうか。(^^;

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/02(Wed) 22:25 No.4251 home
tinkerさん、お願いがあります。

3.8.13、できれば3.8.13-17(-ARCH)のバージョンでrtカーネルというのは可能でしょうか。

.configに関してはruneaudioでpacman -Syuすると3.8.13-17になりますので、そのconfig.gzをそのまま使うということでいけそうですが。

すみません、勝手なお願いで。

twl

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/02(Wed) 23:03 No.4252 home
twlさん
>I2S友の会
ハンダはまじめに練習したいと思います。
I2S友の会は、やっぱりtwlさんとsyuさんにやって頂くしかないですね。

>3.8.13、できれば3.8.13-17(-ARCH)のバージョンでrtカーネルというのは可能でしょうか。
今、Archが動いるのがないんですm(__)m
odroidで全然動かないので、イラッときて抹殺しました。

3.8のrtカーネルは難しいです。
以前、lightmpdのページを眺めていたら、3.8.13+rt14というのを使われてるみたいなので興味本位でやってみたのですが、大きな修正が1つあって諦めてます。
お役にたてなくて申し訳ありません。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/03(Thu) 01:08 No.4253 home
tinkerさん、yoさん、twlさん

只今ちょっと多忙で、ついて行けなくなってますが・・・

>ちょっとここに誤解があるようです。現在公開されているI2Sドライバーが3.13.6で動いているという報告はありません。件のフォーラムでは開発者のmiero氏の現在の開発環境でのカーネルが3.13.6になっているということであり、公開済みのドライバーがその環境で動作しているという報告はありません。

これは、わたしがNo.4240に、こう書いたからですが、
>ChangeLogの記載では、V4から3.13.6に対応したようです。

v4のChangeLogに
----- botic driver/ChangeLog -----------

(V4) Sun Mar 30 19:34:29 CEST 2014
- release GPIOs if probe fails
- add DTS+DTB for static configuration
- tested with 3.13.6

(V3) Sat Mar 15 09:14:09 CET 2014
- added modules for Arch Linux ARM 3.8.13-17-ARCH

(V2) Thu Mar 13 23:56:12 CET 2014
- added modules for BeagleBoardDebian 3.8.13-bone41
------

と記載があった点だけが根拠です。やはり3.8.13-17以外ではだめなんでしょうね。ぼちぼち試してみますです。

ところで、今使用中のcapeにはアイソレータ積んだり色々やってますが、実は、ait dacのi2s入力にはアイソレータが入れてあるそうで、cape側に入れる必要は低そうです。むしろジッタが増えてるかも。

それなら逓倍クロック基板だけ積んでmclkを生成するだけで良さそうですので、他を省略した簡易版capeを現在作成中です。

試聴をしたらどちらかが用済みになりますので、それにHiFiBerry Digiが使えるピンヘッダとソケットを付ければ、tinkerさんの環境で使える動作テスト用capeができるかも・・・などと皮算用中です。

逓倍クロック基板を使用するcapeはここまでにし、次はcape上に22.5792/24.576MHz水晶発振moduleを積んでbbbからの信号で周波数を切り替えるTwisted Pear Audio方式をやってみたいと調査中です。

P9-24の出力でP9-25に入れる信号の周波数を切り替えるのですが、この周波数ならait dacが要求するmclkとしても使えます。P9-24の信号が単なるH/Lなのか、だとして、22.5792/24.576MHzのどちらがHなのか、など不明ですが、やってみればわかりますかね。

わたしは発見できませんでしたが、twlさん、フォーラムでそのような話(P9-24の信号)は出ていませんでしたでしょうか。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/03(Thu) 13:40 No.4254 home
只今お昼休みのsyuです。

わたしの場合、arch linuxはArch Linux ARMにあったものをそのままです。

http://archlinuxarm.org/platforms/armv7/ti/beaglebone-black

# pacman -Syu 
で3.8.13-17(ARCH)になります。

http://bbb.ieero.com/
の指定に従って、uEnv.txtを書き換えてHDMIをdisableし、

http://bbb.ieero.com/botic_driver_v4.tar.gz
のfarmwareをbbbの/lib/firmware/にmodulesを/lib/modules/にコピーしました。

# depmod -a
とやって、modulesの依存関係をアップデート、

# echo BB-BONE-BOTIC1 > /sys/devices/bone_capemgr.*/slots
で、ドライバをロード。

これだけで音が出てますので、これ以外のサポートは必要なさそうなんですけどね。

もちろん
# echo BB-BONE-BOTIC1 > /sys/devices/bone_capemgr.*/slots
は、1回だけで、2回やるとエラーになりました。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/03(Thu) 14:05 No.4255 home
diyAudioのサイトが現在メンテ中で確認できませんが、確かmieroさんが、3-8-13以外はarch linuxでしか動作しないと書いていたような記憶があります。tinkerさん、よろしくです。^^;;

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/03(Thu) 18:02 No.4256 home
syuさん wrote:

> わたしは発見できませんでしたが、twlさん、フォーラムで
> そのような話(P9-24の信号)は出ていませんでしたでしょうか。

Capeの電源をどこからとるかといった話題はありますが、外部クロックのスイッチの詳細まで煮詰めた話題は出ていないと思います。

Miero氏のBOTIC3では単にP24が切替スイッチになるとしか記述されていないので、LでもHでもどちらでもいいんじゃないかと思われますが。後はempiricalにお決めになるしかなさそうですね。いずれcapeの実装が決まればより具体的な指示が得られるではないでしょうか。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/03(Thu) 19:27 No.4257 home
twlさん、お手数をお掛けしました。ありがとうございました。

http://bbb.ieero.com/files/f01/ctl_gpio1_27.sh
ここを読んでみたら、

ctl_gpio1_27.sh on

で、P9-24の出力は'H'でした。詳細な動きは実験的に確かめるしかなさそうですね。

Twisted Pear Audioからbbb-I2S-capeが発売されればそれも試してみますが、わたしの興味はbbbがP9-25入力信号に対してslave動作可能らしい点です。最終的にdacのmclkをmasterとしてbbbをslave動作させたいと狙っています。発売される予定のbbb-I2S-capeに外部クロック入力端子が付いてることを期待していますが、なければ自作しようかと思っているわけです。

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/03(Thu) 22:36 No.4258 home
syuさん wrote:

> ctl_gpio1_27.sh on
>
> で、P9-24の出力は'H'でした。詳細な動きは実験的に確かめるしかなさそうですね。

echo high, echo lowなどの記述がこのHやLに相当するのでしょうか。

ちょっと気になるのですが、この部分はAngstromでの動作環境に関する記述で、しかも、その冒頭に'obsolete'とあるので、ArchやDebianの環境でも通用するのでしょうかね。

> 最終的にdacのmclkをmasterとしてbbbをslave動作させたいと狙っています。
> 発売される予定のbbb-I2S-capeに外 部クロック入力端子が付いてることを期待
> していますが、なければ自作しようかと思っているわけです。

TPAのBBB用capeにはMCLKを必要とするようなsynchronous typeのDACへの接続を考慮して48および44.1系の二種類のクロックが搭載されるようですが、外部クロック入力のオプションは現在のところないようです。

外部入力のクロックを使う場合には、搭載予定のオシレータへの電力供給を断ち、その出力先へ自前のクロック出力をつなげればいいのかなとは思いますが、masterであるDACからのMCLKでslaveにされたBBBからのI2S出力を受ける、もともとのDACはこの場合どういう立場になるのでしょうか。Slaveでもありmasterでもあるような、うーん、なんか無限循環するようなニワタマ モードですね。(^^; よく理解しないで書いているかもしれないので、お許し下さい。

twl

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/05(Sat) 15:57 No.4259 home
syuさん

>3-8-13以外はarch linuxでしか動作しないと書いていたような記憶があります
何故なんでしょうね。
ArchのPKGBUILDを見ても、aufsのパッチを当ててるくらいの違いしかないんですけどね。
https://github.com/archlinuxarm/PKGBUILDs/blob/master/core/linux-am33x/PKGBUILD

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/06(Sun) 16:27 No.4261 home
#4253でsyuさんが、

> P9-24の出力でP9-25に入れる信号の周波数を切り替えるのですが、

と書かれている件について、Miero氏のファイル(http://bbb.ieero.com/)を眺めてみました。そこで気付いたことなのですが、

McASP pinのmappingとして、

P9_25 - A14/0 - mcasp0_ahclkx (oscillator) - GPIO3_21
P9_31 - A13/0 - mcaps0_aclkx (bit clock) - SPI1_SCLK
P9_29 - B13/0 - mcasp0_fsx (lr clock) - SPI1_D0
P9_28 - C12/2 - mcasp0_axr2 (data1) – SPI1_CS0

とあります。28, 29, 31ピンの機能については周知のことですが、P9_25は oscillatorとあります。なんだ、これはMCLKの出力ピンではないか、どうして今まで気付かなかったのかと、早速、それまでRasPiからのI2S入力に使っていたTPA自作キットのOpus DAC (WM8741, dual mono構成)にBBBをI2S接続、上記のP9_25のピンとDAC側のMCLK受けとをつないでみましたら、あっけなくノイズなしのI2S再生が得られ、自分の調査不足を反省するとともに、その再生音の品位の高さに改めて感激してしまいました。

#なお、再生にはruneaudio (3.8.13-17-ARCH)、mpd-0.18.9を用いました。

というのは、それまでBBBのI2S接続先に用いていたTPAのBuffalo IIISEでは44.1/16のファイル再生についてはALSA上で48/32へのresamplingが常に行われているため(おそらくdmixがresamplingしているのだろうと思うのですが)、時々信号のdropoutが生じ、基本的な再生音がいいだけに、聴く楽しみがそこでそがれてしまうのが難点でした。

以前にも述べましたが、上記のOpus DACは48kHz系のオシレーターしか積んでいないslave型なのですが、このP9_25ピンからのMCLK入力を使うと、BBBからALSA経由で送られる信号との相性が非常によく、上記の再生音のdropoutは完璧に消失、それまでのRasPiによるI2S直結よりも、空間的な広がりや奥行き、楽音の分解能などに改善傾向が見られ(プラシーボかも (^^; )、BBBの潜在的な性能の良さを再認識しました。

syuさんは既にこの接続を試されているのかもしれませんが、BBB用のcapeが使える時期までは、この環境でのI2S接続をしばらく楽しむことにします。

twlでした。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/06(Sun) 19:25 No.4263 home
twlさん

>syuさんは既にこの接続を試されているのかもしれませんが

それがまだなんですよね。twlさんの実験でP9-25ピンの信号品質がmclkとして悪くないことが判明して良かった。

これで、yoさんのようにBBBとait dacがある場合、オスメスのジャンパワイヤを6本用意するだけでBOTIC1のお試しが可能になります。

まだDSDは実装されていませんので、GNDと3.3vを間違えなければ、あとは順につなぐだけでait dacが自動判定してくれます。
ait dacのI2S受け端子の信号の並びはNo.4227に書きましたが、下記のようになっています。48kHz系列のPCMだけ試すので、ピン2-5は適当でも良く、DSDの場合でもピン6は接続する必要はありません。

P9-3,4:pin 1 3.3v
P9-31 :pin 2 BCK (DSDCLK)
P9-29 :pin 3 LRCK(DSD L)
P9-28 :pin 4 DATA(DSD R)
P9-25 :pin 5 MCLK(24.576MHz)
open :pin 6 DSD ON/OFF
P9-1,2:pin 7 GND

P9-25は、BOTIC1では24.576MHz出力、BOTIC2では48kHz系列用には24.576MHz出力で44.1kHz系列用には22.5792MHz入力、BOTIC3では22.5792/24.576MHz共に入力の端子として切り替える仕組みのようですね。

tinkerさんの場合も両端オスのジャンパワイアでHiFiBerry Digiの端子と適切に接続すれば、spdif経由ではありますが、ハンダ付けなしでBBBのI2S出力動作を試すことが可能かも知れません。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/06(Sun) 21:05 No.4265 home
twlさんの方法で実際にやってみました。

ジャンパワイア6本だけでbbbとait dacを接続してみました。間違えないように、pin45から33まではテープでフタをしました。

16/44.1(16/48にresample)、24/96、24/192まで音が出ています。別電源とアイソレーターを搭載しクロック基板で98.304MHzのmclkを生成したcapeの場合よりも、いくらかクリアさが低下しますが、同系統の良い音です。

ait dac筐体内でのジャンパワイア接続状態。
http://mimizukobo.sakura.ne.jp/upload/bbb-ait-i2s-140406.jpg

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/06(Sun) 21:44 No.4266 home
私の方はいたってシンプルな結線です。

http://mimizukobo.sakura.ne.jp/upload/p9_25.jpg

中央の赤いケーブルが追加したMCLK用のケーブルで、見にくいですが、左側のbreadboard経由で後方のdual monoのOpus DACにつながっています。

さらに調べてみたら、P9_25がMCLKってのは、

http://hifiduino.wordpress.com/2014/03/27/

で既に指摘されているのですね。Miero氏のI2Sドライバーの影響の大きさを改めて見直しました。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/08(Tue) 19:17 No.4268 home
ジャンパ直結方式でしばらく聴いていましたが、少しうるさくて疲れますね。別電源とアイソレータ付きに戻したら、うるささは大幅に減りました。
http://mimizukobo.sakura.ne.jp/upload/bbb-i2s-140408.jpg


HDMI経由だとどうなるか。DAC筐体内設置による直結と、HDMI経由とを比較してみたいと思っています。

すでに皆さんご覧になっていると思いますが、TPAのcapeは部品配置などもほぼ決まりつつあるようですし、ドライバもDSD対応がほぼ達成されたようです。
http://www.diyaudio.com/forums/twisted-pear/250583-building-open-embedded-audio-applicance-50.html#post3883178
期待大ですね。

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/08(Tue) 23:59 No.4271 home
syu さん wrote:

> ジャンパ直結方式でしばらく聴いていましたが、少しうるさくて疲れますね。
> 別電源とアイソレータ付きに戻したら、うるささは大幅に減りました。

そうなんですか。I2S接続により再生音の情報が増えているという印象はあるのですが、もしかしたら、それがうるささの一因かも。おそらくジャンパ直結方式自体には欠点はないだろうと思われますが。

いずれにしても、昨年のBBBがらみのスレッドで、皆さんがあれだけrtカーネルで七転八倒していた3.8カーネルがI2S接続によりあっけなく素直な再生音を出してくれている状況は、私にとっては大変な驚きですが、非常にうれしい驚きでもあります。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/11(Fri) 21:32 No.4279 home
次のネタは仕込み中です。
まだ特別なものは出来てないのですが、アップロード用フォルダを活用すべく、写真をもう1枚。

http://mimizukobo.sakura.ne.jp/upload/bbb-i2s-140411.jpg

twlさんのマネをしてbbbにピンヘッダを挿し、最短距離でait dacのi2s入力端子と直結しました。配線長は150mmから50mmに短縮。ddcとは次元の違う立派な音が出ています。配線長の短縮で中高域の固有音が少し改善したような気が・・

ちょっと良くなると、欲が出て、アソコをもう少しとか、文句が出るのが、オデオマニアだっちゅうことですね。

この際bbbまわりを徹底的に電磁シールドすると変わるかも。やるとしたら、どうするのが良いのでしょうね。皆さんお知恵をお貨しください。

tinkerさん、なかなかrt kernelのテストまで行き着きません。ちょっとだけ試しましたが、動きませんでした。テストはきちんと出来てないです。

https://github.com/beagleboard/kernel/tree/3.13
から3.13.6(rtなし)を作って見ましたが、これも動きませんでした。3.8.13の.configを抽出して使ってみましたが、kernelの入れ替えで失敗という初歩的な段階での躓きです^^;

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/12(Sat) 09:10 No.4281 home
syuさん

>ちょっとだけ試しましたが、動きませんでした
twlさんも3.12は動かないって言われてましたね。
3.14-bone0はcapeのpatchが一つも当てられてなかったのですが、bone1で少しだけ3.13.xから移植されてるみたいです。なので3.13で動き(または動くようになれば)3.14への移植が進めば、3.14でRTに出来るかもしれませんね。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/13(Sun) 07:20 No.4284 home
皆様、お早うございます。当地は春雨の日曜日です。

bbb i2s capeに水晶発信器を実装してBotic3の音出しに漕ぎつけました。

[root@arch-botic ~]# uname -a
Linux arch-botic 3.8.13-17-ARCH #1 SMP Fri Mar 7 16:01:11 MST 2014 armv7l GNU/Linux

[root@arch-botic ~]# echo BB-BONE-BOTIC3 > /sys/devices/bone_capemgr.*/slots
[root@arch-botic ~]#

http://bbb.ieero.com/
botic_driver_v4です。

Botic3では、P9-25にmclkを入力し、P9-24の出力で周波数を切り換えます。他の接続はBotic1と同じです。

今回は手軽に調達できる共立エレショップの「PLLクロック独立実験基板」を使いました。
http://eleshop.jp/shop/g/gBC1414/
ハンダ付け難易度の高い部品はすでに実装されていますので、楽です。

「PLLクロック独立実験基板」のSCOK2端子からmclkを出力します。
SRピン:ショート=H、FS2ピン:開放=Lのとき、FS1=Hで22.5792MHz、FS1=Lで24.576MHzです。
P9-24をFS1に接続しBotic3からの信号で切り替える予定だったのですが、残念ながら、ロジックが逆でした。
P9-24の出力にインバータを入れる必要がありますが、今回は間に合いませんでしたので、FS1にショートピン手動で周波数の切り換えをしています。16/44.1を16/48で早回し再生も可能です。しばらくは、このまま手動切り換えで使うことになるかもです。

ait dac筐体内に仮設した図。

http://mimizukobo.sakura.ne.jp/upload/bbb-i2s-140413.jpg

「PLLクロック独立実験基板」の電源は秋月のTPS7A4700電源キットを使い回しです。その電源はbbbのSYS5Vから取っています。

PLLなので位相雑音がやや多くなります。あまり期待していなかったのですが、音は素晴らしいと思います。Botic1でbbbの内部クロックを使用する場合より改善されます。気になっていた中高域の固有音がほぼ消えました。16/44.1がresampleされないのも効いているはずですが、Botic1でもresampleされない24/96の場合も、Botic3で改善があると思います。

ait dacのi2s入力におけるmclkは、ある程度以上の質なら音に対する影響は少ないのではないかと推定しています。もっと良いクロックを積むべきかどうか・・・コストが急増しそうなのに効果は薄そうで、悩みます。大人しくTPAのcapeを待つ方がマトモなんでしょうけどね。



16/44.1再生中のtop。

Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 507636 total, 275580 used, 232056 free, 6308 buffers
KiB Swap: 0 total, 0 used, 0 free. 241740 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
147 root 20 0 91396 12584 5148 S 0.7 2.5 0:07.61 mpd
367 root 20 0 4976 1256 988 R 0.3 0.2 0:02.21 top
1 root 20 0 4244 2632 1808 S 0.0 0.5 0:01.56 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0

resampleを行っていないので、mpdの負荷が低くなっています。

24/176.4も問題なく再生(ときどきロックが外れるがすぐ復帰)

Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.4 us, 4.4 sy, 0.0 ni, 90.4 id, 2.7 wa, 0.0 hi, 1.0 si, 0.0 st
KiB Mem: 507636 total, 503184 used, 4452 free, 2160 buffers
KiB Swap: 0 total, 0 used, 0 free. 472644 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
182 root 20 0 0 0 0 S 3.6 0.0 0:16.20 cifsd
147 root 20 0 91396 12608 5152 S 3.0 2.5 0:20.85 mpd
372 root 20 0 4976 1248 984 R 0.7 0.2 0:00.09 top
15 root 20 0 0 0 0 S 0.3 0.0 0:01.56 kworker/0:1
132 root 20 0 4796 3516 448 S 0.3 0.7 0:02.36 haveged

ショートピンで周波数を切り換えて、24/96を再生。

Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.4 us, 3.1 sy, 0.0 ni, 92.4 id, 2.4 wa, 0.0 hi, 0.7 si, 0.0 st
KiB Mem: 507636 total, 503192 used, 4444 free, 2048 buffers
KiB Swap: 0 total, 0 used, 0 free. 473200 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
147 root 20 0 91396 12608 5152 S 3.0 2.5 1:41.74 mpd
182 root 20 0 0 0 0 S 3.0 0.0 1:40.98 cifsd
15 root 20 0 0 0 0 S 0.3 0.0 0:04.91 kworker/0:1
373 root 20 0 4976 1248 984 R 0.3 0.2 0:00.16 top
1 root 20 0 4244 2628 1804 S 0.0 0.5 0:01.72 systemd

24/192も余裕で再生。

Tasks: 60 total, 2 running, 58 sleeping, 0 stopped, 0 zombie
%Cpu(s): 7.7 us, 3.0 sy, 0.0 ni, 87.7 id, 0.0 wa, 0.0 hi, 1.7 si, 0.0 st
KiB Mem: 507636 total, 503440 used, 4196 free, 2056 buffers
KiB Swap: 0 total, 0 used, 0 free. 473512 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
147 root 20 0 91396 12744 5240 S 9.3 2.5 1:44.29 mpd
182 root 20 0 0 0 0 S 2.3 0.0 1:42.32 cifsd
374 root 20 0 4976 1248 984 R 0.7 0.2 0:00.12 top
132 root 20 0 4796 3516 448 S 0.3 0.7 0:04.52 haveged
1 root 20 0 4244 2628 1804 S 0.0 0.5 0:01.72 systemd

dsdに対応したドライバの公開が待たれます。

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/13(Sun) 11:01 No.4285 home
syu さん wrote:

> bbb i2s capeに水晶発信器を実装してBotic3の音出しに漕ぎつけました。

おお、素晴らしい。外部クロック入力による44.1系のサポートだけでresamplingによるCPU負荷が大きく減少することがわかりました。私も追試したくなり、秋月でクロック基板を購入しようかと思いましたが、syuさんの記事を参考にしながら、とりあえず手元にあるMutec社のiDという周波数generator/distributorを使ってBotic3を試してみました。

iDで44.1系のMCLK、22.5792MHzを発生させ、これをBNC経由でP9_25に接続、Botic3を試しましたが、すんなりとこの外部クロックが認識され、44.1kHzの音源ファイルが信号のドロップアウトもなく、素直に再生されました。もう、この環境でもいいんじゃないかという極めて満足度の高い再生音です。

http://mimizukobo.sakura.ne.jp/upload/mclk1_twl.jpg
http://mimizukobo.sakura.ne.jp/upload/mclk2_twl.jpg

/proc/asound/card0/pcm0p/sub0/hw_paramsで44.1kHzのファイルがresamplingされていないことを確認、

access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 1024
buffer_size: 16384

topでmpd負荷が大幅に減少していることも確認しました。

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2281 mpd 20 0 72780 9180 2604 S 2.3 1.8 1:23.50 mpd
2314 mpd 20 0 72780 9180 2604 S 0.7 1.8 0:09.22 mpd
2534 root 20 0 0 0 0 S 0.7 0.0 0:10.12 cifsd
3535 root 20 0 2656 1144 808 R 0.7 0.2 0:00.38 top

ま、あくまでも実験ですので、図体の大きいiDは上記の実験後、速やかに退場させようと考えています。あくまでもTPAのcape待ちですね、と冷静に書いているふりをしていますが、この、外部クロック入力-Botic3-I2S/BBB-ES9018の組み合わせでの再生音は本当に気に入ってしまいました。

twl

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/13(Sun) 18:52 No.4286 home
twl です。

MCLK生成に使用したiDを片付けた後、要するにMCLKを外部出力として取り出せれば、どんなものでもBotic3の環境で使用できるのではと思いつきました。

I2S接続環境が充実するとともに、最近はめっきり出番の少なくなったAmanero Combo384が手元にころがっておりましたが、このDDCには48系と44.1系の優秀なクロックが搭載されており、それぞれMCLKのヘッダーピンから取り出すことができます。

こいつを使わない手はないと考え、ヘッダーのMCLKピンをBBBのP9_25に接続、Botic3の環境でmpdを起動したところ、iDでの実験同様、非常に澄んだPCM再生音が流れてきました。

http://mimizukobo.sakura.ne.jp/upload/amanero_as_MCLK.jpg

AmaneroのいいところはP9_24のuart1_txdを切り替えスイッチとして使用しなくとも、フォーマットに応じて自動的に44.1系と48系のいずれかにMCLKが対応できることのようです。

試しに2Lからの96kHzのファイルと普段聴いている44.1系のファイルを連続して再生してみましたが、/proc/asound/card2/pcm0p/sub0/hw_paramsでは、その再生時の時系列に応じて

access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 96000 (96000/1)
period_size: 1024
buffer_size: 16384

および

access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 1024
buffer_size: 16384

と、何もしなくともサンプリング周波数が48系から44.1系に変わっており、これは便利です。改めて、Botic3に関するヒントを下さったsyuさんに感謝申し上げます。

補足ですがDSD再生のためのDDCが必要なので、画像にお示ししたように、こいつもUSBでBBBと接続、適時切り替えながら使用することにしました。

root@volumio:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Amanero [Combo384 Amanero], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: X20 [XMOS USB Audio 2.0], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Botic [TPA Botic], device 0: ES9018 es9018-hifi-0 []
Subdevices: 0/1
Subdevice #0: subdevice #0

Amaneroを大事に使ってあげられる状況が生まれ、ちょっとうれしいtwlでした。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/13(Sun) 20:40 No.4288 home
twlさん

>Amaneroを大事に使ってあげられる状況が生まれ、ちょっとうれしい

おお・・・

実はわたしも数日前、これ使えないかな、って思いながらamaneroをじっと見つめたんですが、使い方を思いつかず、諦めてました。

amaneroからmclkとGNDだけをbbbに接続しているように見えますが、USB経由でもamaneroに信号を送って周波数の選択をさせているのですか。それとも、USB接続は必須ではないのですか?

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/13(Sun) 22:19 No.4290 home
> amaneroからmclkとGNDだけをbbbに接続しているように見えますが、USB経由でもamaneroに信号を送って周波数の選択をさせているのですか。それとも、USB接続は必須ではないのですか?

はい。MCLKとGNDのみの結線ですが、USB接続は単に5Vの電源供給のためだけで、多分必須ではないと思います。

現在までAmaneroからのMCLKで聴いていますが、快適の一語につきます。おすすめです。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/14(Mon) 13:44 No.4293 home
twlさん

私もamaneroのmclkを導入してみました。amaneroの電源はUSBバッテリー電源からです。

Botic3でamaneroのmclkの方がPLLクロック基板よりも音はずっと良いですね。twlさんのアイディアを試してみて、mclkの質で音はまだ良くなる余地があることが実感できました。ありがとうございました。

ただし私の環境では、mclkだけの接続では周波数の自動切換は無理みたいです。

24/96に変更しても良い音ですが、dacの表示は88kHz。24/192だと表示は176kHz。96kHzや192kHzのファイルを88kHzや176kHzで演奏しているので、ピッチが低下し、テンポも遅くなります。

この時の/proc/asound/card0/pcm0p/sub0/hw_params

[root@arch-botic ~]# cat /proc/asound/card0/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 96000 (96000/1)
period_size: 1024
buffer_size: 16384

[root@arch-botic ~]# cat /proc/asound/card0/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 192000 (192000/1)
period_size: 1024
buffer_size: 16384

16/44.1で楽しむには十分過ぎる極めて良好な音質です。同じことが、I2SoverUSBやUDAでも可能かもしれません。

>快適の一語につきます。おすすめです。

全面的に同意ですね。皆さんにもおすすめ。私のような老人にとっては、TPAのcapeを待つ時間が惜しいのです ^^;;;

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/14(Mon) 20:33 No.4294 home
amanero接続状態の写真です。

http://mimizukobo.sakura.ne.jp/upload/bbb-i2s-140414.jpg

ait dacのアイソレータの電源として3.3v安定化電源を残しています。PLLクロック基板はピンソケットで接続されていましたので取り外し、amaneroのmclkから直接P9-25とi2s端子のmclkに接続しています。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/17(Thu) 23:57 No.4302 home
前回、twlさんのアイディアを頂いてamaneroのmclkを流用し良好な結果を得ました。

そこで、もっと良好な特性のmclkを得ようと、某「高級」クロック基板を借用しました。
http://www.newclassd.com/index.php?page=24&hv=1
これで結果に大差がつけば嫌だなあ・・・

ご覧のようにケーブル類は長いままで仮配線しました。電源はfidelixの15v。
http://mimizukobo.sakura.ne.jp/upload/bbb-i2s-140417.jpg
結果、残念ながら^^;; このクロックは抜群でした。わずかに気になっていたギラツキがほぼ解消してしまいます。さらに低域もより正確に。

予定されているTPAのBOTIC Audio capeのクロックはcrystekのCCHD-957だそうですが、amaneroのクロックよりもノイズが少ないのかな。

[参考] TPAのBOTIC Audio Capeの部品配置予定図 

http://www.diyaudio.com/forums/attachments/twisted-pear/410935d1396828859-building-open-embedded-audio-applicance-cape.jpg
http://www.diyaudio.com/forums/twisted-pear/250583-building-open-embedded-audio-applicance-50.html#post3883178

予定されているクロックは
http://www.crystek.com/crystal/spec-sheets/clock/CCHD-957.pdf
特性的には抜群のようですね。
http://www.diyaudio.com/forums/twisted-pear/250583-building-open-embedded-audio-applicance-52.html#post3883826

Re: BBBのI2S interface 投稿者:twl 投稿日:2014/04/19(Sat) 09:33 No.4308 home
tinkerさん wrote:

> 3.14-bone0はcapeのpatchが一つも当てられてなかったのですが、bone1で少しだけ3.13.xから移植されてるみたいです。なので3.13で動き(または動くようになれば)3.14への移植が進めば、3.14でRTに出来るかもしれませんね。

Nelsonさんが3.14のrt化を簡単にできるように設定してくれました。

https://github.com/RobertCNelson/linux-dev/commit/bd69ecb7570865a29dd24fd779fa8568ffa39e5d

上記を参考にlinux-dev-am33x-v3.14内のpatch.shを編集、#rtの行をコメントアウトした後に./build_kernel.shとしたら、以下のrtカーネルができました。

root@volumio:~# uname -a
Linux volumio 3.14.1-rt1-bone2 #1 SMP PREEMPT RT Sat Apr 19 01:00:55 JST 2014 armv7l GNU/Linux

早速、これに合わせてMiero氏のbotic driver moduleをコンパイル、インストールを試みました。何故かinsmodでは認識されず、modprobe -fで強制的にインストール、lsmodでは以下のような具合で表示されました。

root@volumio:~# lsmod
Module Size Used by
nfsd 241405 2
snd_codec_es9018 2872 0
snd_davinci_botic 4842 0
snd_soc_core 158002 2 snd_davinci_botic,snd_codec_es9018
snd_compress 7777 1 snd_soc_core
snd_usb_audio 113187 0
snd_hwdep 5809 1 snd_usb_audio

これで3.14-rtでのI2Sドライバーが動くかなと思いましたが、

/sys/devices/bone_capemgr.*/slots: No such file or directory

とのエラーが表示され、I2Sの環境は得られませんでした。

modinfoでは

root@volumio:/lib/modules/3.14.1-rt1-bone2/kernel/sound# modinfo snd-codec-es9018.ko

filename: /lib/modules/3.14.1-rt1-bone2/kernel/sound/snd-codec-es9018.ko
license: GPL
author: Miroslav Rudisin
description: ES9018 codec driver
alias: of:N*T*Cess,es9018*
depends: snd-soc-core
vermagic: 3.14.1-rt1-bone2 SMP preempt mod_unload modversions ARMv7 p2v8

とあり、私が真面目にdriver moduleを作ったという証拠はあるのですが (^^; capeまわりのpatchはまだ完成していないのかもしれません。ボチボチいくしかないbotic driverという、ひんしゅくを買うこと間違いなしの駄洒落で報告を終わります。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/19(Sat) 18:14 No.4309 home
皆様

先ほど、ご機嫌に歌ってくれているbbb/arch linux-3.8.13-17/botic3を、覚悟の上で、pacman -Syuしてみました。
3.8.13ー20になります。これで動くのかどうか。

[root@arch-botic ~]# pacman -Syu
:: Synchronizing package databases...
core is up to date
extra is up to date
community is up to date
alarm is up to date
aur is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for inter-conflicts...

Packages (37): bash-4.3.008-2 ca-certificates-20140325-1 coreutils-8.22-4
device-mapper-2.02.106-1 ffmpeg-1:2.2.1-1 file-5.18-1
git-1.9.2-1 glib2-2.40.0-1 gnutls-3.3.0-1 haveged-1.9.1-1
iproute2-3.14.0-1 kmod-17-1 libdrm-2.4.53-1
libjpeg-turbo-1.3.1-1 libsystemd-212-3 libutil-linux-2.24.1-6
libwbclient-4.1.7-1 linux-am33x-headers-3.14.0-3
linux-am33x-legacy-3.8.13-20 logrotate-3.8.7-3 lvm2-2.02.106-1
man-db-2.6.7.1-1 man-pages-3.64-1 mesa-10.1.0-5
mesa-libgl-10.1.0-5 mpd-0.18.10-1 openssl-1.0.1.g-1
pacman-mirrorlist-20140406-1 pcre-8.35-1 readline-6.3.003-2
s-nail-14.6.4-1 shadow-4.1.5.1-9 systemd-212-3
systemd-sysvcompat-212-3 talloc

Total Download Size: 55.55 MiB
Total Installed Size: 198.51 MiB
Net Upgrade Size: 1.29 MiB

エイヤッと^^;;;アップグレードして、再起動しました。

Arch Linux 3.8.13-20-ARCH (ttyO0)

arch-botic login: root
Password:
Last login: Sat Jan 1 09:00:23 on ttyO0
[root@arch-botic ~]# uname -a
Linux arch-botic 3.8.13-20-ARCH #1 SMP Fri Apr 18 11:42:29 MDT 2014 armv7l GNU/Linux
[root@arch-botic ~]# echo BB-BONE-BOTIC3 > /sys/devices/bone_capemgr.*/slots

ここまでは通ったみたいですが・・・

[root@arch-botic ~]# aplay -l
aplay: device_list:268: no soundcards found...

・・・ダメですね。

[root@arch-botic ~]# systemctl status mpd
● mpd.service - Music Player Daemon
Loaded: loaded (/usr/lib/systemd/system/mpd.service; enabled)
Active: active (running) since Sat 2000-01-01 09:19:38 JST; 14 years 3 months ago
Main PID: 147 (mpd)
CGroup: /system.slice/mpd.service
└─147 /usr/bin/mpd --no-daemon

Jan 01 09:19:38 arch-botic systemd[1]: Started Music Player Daemon.
Jan 01 09:19:40 arch-botic mpd[147]: server_socket: bind to '0.0.0.0:6600' ...d)
Jan 01 09:19:42 arch-botic mpd[147]: playlist: No such playlist
Apr 19 17:58:37 arch-botic mpd[147]: alsa_output: Failed to open "Botic" [a...ry
Apr 19 17:58:37 arch-botic mpd[147]: output: Failed to open audio output
Apr 19 17:58:37 arch-botic mpd[147]: player: problems opening audio device ...v"
Hint: Some lines were ellipsized, use -l to show in full.
[root@arch-botic ~]#

このレベルでV4 driverが受け付けないなら、それ以上は全部ダメじゃないかと思います。

数週間後にはTPAのcapeのベータ版が仕上がるらしいので、その頃新しいdriverがリリースされるかも。

それまで、3.8.13-17をキープしとくべきですね。

私はバックアップ取ってあるので、今から復元します。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/20(Sun) 07:01 No.4311 home
皆様

この際なので、3.8.13-20-ARCHでsouceからdriverをmake installしてみました。しかし、そのままではできません。
http://bbb.ieero.com/ の記載に従えば、

[root@arch-botic ~]# cd botic_driver/source
[root@arch-botic source]# make install
make -C /lib/modules/3.8.13-20-ARCH/build M=/root/botic_driver/source modules
make[1]: *** /lib/modules/3.8.13-20-ARCH/build: No such file or directory. Stop.
Makefile:8: recipe for target 'all' failed
make: *** [all] Error 2

無理だそうです。/lib/modules/3.8.13-20-ARCH/の中をみると、

[root@arch-botic source]# ls -l /lib/modules/3.8.13-20-ARCH/
total 1324
lrwxrwxrwx 1 root root 33 Apr 19 02:44 extramodules -> ../extramodules-3.8--am33x-legacy
drwxr-xr-x 9 root root 4096 Apr 19 02:44 kernel
-rw-r--r-- 1 root root 346406 Apr 19 17:52 modules.alias
-rw-r--r-- 1 root root 364864 Apr 19 17:52 modules.alias.bin
-rw-r--r-- 1 root root 11716 Apr 19 02:44 modules.builtin
-rw-r--r-- 1 root root 14534 Apr 19 17:52 modules.builtin.bin
-rw-r--r-- 1 root root 102789 Apr 19 17:52 modules.dep
-rw-r--r-- 1 root root 161127 Apr 19 17:52 modules.dep.bin
-rw-r--r-- 1 root root 170 Apr 19 17:52 modules.devname
-rw-r--r-- 1 root root 53920 Apr 19 02:44 modules.order
-rw-r--r-- 1 root root 55 Apr 19 17:52 modules.softdep
-rw-r--r-- 1 root root 115625 Apr 19 17:52 modules.symbols
-rw-r--r-- 1 root root 147709 Apr 19 17:52 modules.symbols.bin

本当にbuildがありません。'am33x'でデータベースを検索。

[root@arch-botic ~]# pacman -Ss am33x
core/linux-am33x 3.14.0-3
The Linux Kernel and modules - TI AM335x Beaglebone (Black)
core/linux-am33x-headers 3.14.0-3 [installed]
Header files and scripts for building modules for linux kernel - TI AM335x Beaglebone (Black)
core/linux-am33x-legacy 3.8.13-20 [installed]
The Linux Kernel and modules - am33x processors
core/linux-headers-am33x-legacy 3.8.13-20
Header files and scripts for building modules for linux kernel - am33x processors

最近のarch linuxの流儀なのか、headersは3.14.0-3。中を見ると、ここにはbuildがあります。
あちこち調べましたら、headersをlegacyに入れ替える必要があるようです。

[root@arch-botic ~]# pacman -S linux-headers-am33x-legacy
resolving dependencies...
looking for inter-conflicts...
:: linux-headers-am33x-legacy and linux-am33x-headers are in conflict (linux-headers). Remove linux-am33x-headers? [y/N] y

Packages (2): linux-am33x-headers-3.14.0-3 [removal] linux-headers-am33x-legacy-3.8.13-20

Total Download Size: 5.39 MiB
Total Installed Size: 35.75 MiB
Net Upgrade Size: -2.69 MiB

:: Proceed with installation? [Y/n]
:: Retrieving packages ...
linux-headers-am33x-legacy-3.8.13-20-armv7h 5.4 MiB 1122K/s 00:05 [##########################################] 100%
(1/1) checking keys in keyring [##########################################] 100%
(1/1) checking package integrity [##########################################] 100%
(1/1) loading package files [##########################################] 100%
(1/1) checking for file conflicts [##########################################] 100%
(2/2) checking available disk space [##########################################] 100%
(1/1) removing linux-am33x-headers [##########################################] 100%
(1/1) installing linux-headers-am33x-legacy [##########################################] 100%

[root@arch-botic ~]# ls -l /usr/lib/modules/3.8.13-20-ARCH/
total 1324
lrwxrwxrwx 1 root root 33 Apr 19 02:45 build -> ../../../src/linux-3.8.13-20-ARCH
lrwxrwxrwx 1 root root 33 Apr 19 02:44 extramodules -> ../extramodules-3.8--am33x-legacy
drwxr-xr-x 9 root root 4096 Apr 19 02:44 kernel
-rw-r--r-- 1 root root 346406 Apr 19 17:52 modules.alias
-rw-r--r-- 1 root root 364864 Apr 19 17:52 modules.alias.bin
-rw-r--r-- 1 root root 11716 Apr 19 02:44 modules.builtin
-rw-r--r-- 1 root root 14534 Apr 19 17:52 modules.builtin.bin
-rw-r--r-- 1 root root 102789 Apr 19 17:52 modules.dep
-rw-r--r-- 1 root root 161127 Apr 19 17:52 modules.dep.bin
-rw-r--r-- 1 root root 170 Apr 19 17:52 modules.devname
-rw-r--r-- 1 root root 53920 Apr 19 02:44 modules.order
-rw-r--r-- 1 root root 55 Apr 19 17:52 modules.softdep
-rw-r--r-- 1 root root 115625 Apr 19 17:52 modules.symbols
-rw-r--r-- 1 root root 147709 Apr 19 17:52 modules.symbols.bin

これで/lib/modules/3.8.13-20-ARCH/にbuildが入りましたので、make install。

[root@arch-botic ~]# cd botic_driver/source
[root@arch-botic source]# make install
make -C /lib/modules/3.8.13-20-ARCH/build M=/root/botic_driver/source modules
make[1]: Entering directory '/usr/src/linux-3.8.13-20-ARCH'
CC [M] /root/botic_driver/source/es9018.o
CC [M] /root/botic_driver/source/davinci-botic.o
LD [M] /root/botic_driver/source/snd-davinci-botic.o
LD [M] /root/botic_driver/source/snd-codec-es9018.o
Building modules, stage 2.
MODPOST 2 modules
CC /root/botic_driver/source/snd-codec-es9018.mod.o
LD [M] /root/botic_driver/source/snd-codec-es9018.ko
CC /root/botic_driver/source/snd-davinci-botic.mod.o
LD [M] /root/botic_driver/source/snd-davinci-botic.ko
make[1]: Leaving directory '/usr/src/linux-3.8.13-20-ARCH'
make -C /lib/modules/3.8.13-20-ARCH/build M=/root/botic_driver/source modules_install
make[1]: Entering directory '/usr/src/linux-3.8.13-20-ARCH'
INSTALL /root/botic_driver/source/snd-codec-es9018.ko
INSTALL /root/botic_driver/source/snd-davinci-botic.ko
DEPMOD 3.8.13-20-ARCH
make[1]: Leaving directory '/usr/src/linux-3.8.13-20-ARCH'
depmod -a
[root@arch-botic source]#

うまくいったようです。systemctl rebootすると。

[root@arch-botic ~]# uname -a
Linux arch-botic 3.8.13-20-ARCH #1 SMP Fri Apr 18 11:42:29 MDT 2014 armv7l GNU/Linux

[root@arch-botic ~]# echo BB-BONE-BOTIC3 > /sys/devices/bone_capemgr.*/slots
[root@arch-botic ~]# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Botic [TPA Botic], device 0: ES9018 es9018-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0

音も問題なく出ました。3.8.13-17-ARCHよりもおとなしい音なのに、ぎっしりと充実しています。好みです。
もうこれ以上は望むべくもないと思えるほど。まさにs2d4[*]です。
でも、しばらくしたら、また不満が出て来るんでしょうね。先手を打って、シールドケースをデザイン中です。

[*] s2d4:[somthing/system/sounds to die for]

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/20(Sun) 07:05 No.4312 home
連投失礼します。

3.8.13-20-ARCHで出来たので、3.14.0-3-ARCHでも試してみました。

[root@arch-botic ~]# pacman -S linux-am33x
resolving dependencies...
looking for inter-conflicts...
:: linux-am33x and linux-am33x-legacy are in conflict (linux). Remove linux-am33x-legacy? [y/N] y

Packages (2): linux-am33x-legacy-3.8.13-20 [removal] linux-am33x-3.14.0-3

Total Download Size: 19.80 MiB
Total Installed Size: 24.06 MiB
Net Upgrade Size: 5.48 MiB

:: Proceed with installation? [Y/n]
:: Retrieving packages ...
linux-am33x-3.14.0-... 19.8 MiB 1749K/s 00:12 [######################] 100%
(1/1) checking keys in keyring [######################] 100%
(1/1) checking package integrity [######################] 100%
(1/1) loading package files [######################] 100%
(1/1) checking for file conflicts [######################] 100%
(2/2) checking available disk space [######################] 100%
(1/1) removing linux-am33x-legacy [######################] 100%
(1/1) installing linux-am33x [######################] 100%
>>> Updating module dependencies. Please wait ...
Optional dependencies for linux-am33x
crda: to set the correct wireless channels of your country
[root@arch-botic ~]#

systemctl reboot します。

[root@arch-botic ~]# uname -a
Linux arch-botic 3.14.0-3-ARCH #1 SMP Sat Apr 12 16:29:15 MDT 2014 armv7l GNU/Linux

[root@arch-botic source]# pacman -Ss am33x
core/linux-am33x 3.14.0-3 [installed]
The Linux Kernel and modules - TI AM335x Beaglebone (Black)
core/linux-am33x-headers 3.14.0-3 [installed]
Header files and scripts for building modules for linux kernel - TI AM335x
Beaglebone (Black)
core/linux-am33x-legacy 3.8.13-20
The Linux Kernel and modules - am33x processors
core/linux-headers-am33x-legacy 3.8.13-20
Header files and scripts for building modules for linux kernel - am33x
processors

[root@arch-botic source]# make install
make -C /lib/modules/3.14.0-3-ARCH/build M=/root/botic_driver/source modules
make[1]: Entering directory '/usr/lib/modules/3.14.0-3-ARCH/build'
CC [M] /root/botic_driver/source/es9018.o
In file included from include/linux/types.h:5:0,
from include/linux/list.h:4,
from include/linux/module.h:9,
from /root/botic_driver/source/es9018.c:1:
include/uapi/linux/types.h:4:23: fatal error: asm/types.h: No such file or directory
#include <asm/types.h>
^
compilation terminated.
scripts/Makefile.build:308: recipe for target '/root/botic_driver/source/es9018.o' failed
make[2]: *** [/root/botic_driver/source/es9018.o] Error 1
Makefile:1275: recipe for target '_module_/root/botic_driver/source' failed
make[1]: *** [_module_/root/botic_driver/source] Error 2
make[1]: Leaving directory '/usr/lib/modules/3.14.0-3-ARCH/build'
Makefile:8: recipe for target 'all' failed
make: *** [all] Error 2
[root@arch-botic source]#

出来ませんでした。時期尚早なんでしょうかね。どなたか、ヒントをお願い。

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/20(Sun) 08:54 No.4313 home
syuさん

ヘッダーに足りない物があるんですかね。
davinci-botic.c(V3の場合ですが)を見ると必要なヘッダーは以下のようです。揃っているか確認して下さい。
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/timer.h>
#include <linux/interrupt.h>
#include <linux/platform_device.h>
#include <linux/platform_data/edma.h>
#include <linux/i2c.h>
#include <linux/of_platform.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/soc.h>
#include <sound/pcm_params.h>
#include <asm/dma.h>
#include <asm/mach-types.h>
#include <linux/edma.h>
#include <linux/of_gpio.h>

何が必要なのか分かってないですが、3.14でサポートしているのは以下くらいなので、今のとこは無理だと思いますよ。
・ttyO1,ttyO2,ttyO4
・UPS

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/21(Mon) 21:06 No.4315 home
tinkerさん

>揃っているか確認

ちょっとだけ足掻いてみましたが、確認手段がわかりませんでした。

pacman -Syuで3.14.1-1-ARCHにしてみましたが、当然のごとく、make installは通りませんでした。
では、3.13.6-3-ARCHならば出来るのか?

Nelsonさんのgitからいただいたソースでは上手く出来なかったので、arch linux armのgitからPKGBUILDをもらって来てmakepkgで3.13.6-3を作ってみました。

https://github.com/archlinuxarm/PKGBUILDs
core/linux-am33x to 3.13.6-3 を遡って探すと、ありました。
https://github.com/archlinuxarm/PKGBUILDs/commit/2803ba6e4a773c8708987ca5db495913f7082893

適当なディレクトリにPKGBUILD、config、linux-am33x.installを取り込み、PKGBUILDを編集。

[root@arch-botic 31363]# nano PKGBUILD

-----
source=("http://www.kernel.org/pub/linux/kernel/v3.x/${_srcname}.tar.xz"
"http://www.kernel.org/pub/linux/kernel/v3.x/patch-${pkgver}.xz"
"http://rcn-ee.net/deb/sid-armhf/v${pkgver}-${rcnrel}/patch-${pkgver%.0}-${rcnrel}.diff.gz"
"git://git.code.sf.net/p/aufs/aufs3-standalone#branch=aufs${pkgver%.*}"
'config')
md5sums=('0ecbaf65c00374eb4a826c2f9f37606f'
'a9b131a589a176b4c437b8ca4557b85e'
'64605b106b9b3670cc12a6132d0651cd'
'SKIP'
'SKIP') #< ここを変更

-- 少し下にある

build() {
cd "${srcdir}/${_srcname}"

# get kernel version
make prepare

# load configuration
# Configure the kernel. Replace the line below with one of your choice.
make menuconfig # CLI menu for configuration #< ここの#を削除
#make nconfig # new CLI menu for configuration
#make xconfig # X-based configuration
#make oldconfig # using old config from previous kernel version
# ... or manually edit .config
-----

makepkgはrootでやらない方が良いらしいですが・・・

[root@arch-botic 31363]# makepkg --asroot
==> Missing dependencies:
-> xmlto
-> docbook-xsl
-> bc
==> ERROR: Could not resolve all dependencies.

足らないものをインストールして、再開。
今回はBBBでやったので、やたら時間がかかりました。エラーはひとつ出ました。

depmod: ERROR: Module 'hci_vhci' has devname (vhci) but lacks major and minor information. Ignoring.

ググると、3.13シリーズでこのエラーはたくさん報告が・・
Bluetooth Virtual HCI device driver.なので、無視。
とりあえずrebootしてみました。

Arch Linux 3.13.6-3-ARCH (ttyO0)

arch-botic login: root
Password:
[ 40.291315] type=1006 audit(40.280:2): pid=180 uid=0 old auid=4294967295 new auid=0 old ses=4294967295 new ses=1 res=1
[ 40.464034] type=1006 audit(40.450:3): pid=182 uid=0 old auid=4294967295 new auid=0 old ses=4294967295 new ses=2 res=1
Last login: Thu Jan 1 09:01:40 on ttyO0
[root@arch-botic ~]# uname -a
Linux arch-botic 3.13.6-3-ARCH #1 SMP Mon Apr 21 10:03:24 JST 2014 armv7l GNU/Linux

[root@arch-botic ~]# cd botic_driver/source
[root@arch-botic source]# make install
make -C /lib/modules/3.13.6-3-ARCH/build M=/root/botic_driver/source modules
make[1]: Entering directory '/usr/src/linux-3.13.6-3-ARCH'
CC [M] /root/botic_driver/source/es9018.o
CC [M] /root/botic_driver/source/davinci-botic.o
LD [M] /root/botic_driver/source/snd-davinci-botic.o
LD [M] /root/botic_driver/source/snd-codec-es9018.o
Building modules, stage 2.
MODPOST 2 modules
CC /root/botic_driver/source/snd-codec-es9018.mod.o
LD [M] /root/botic_driver/source/snd-codec-es9018.ko
CC /root/botic_driver/source/snd-davinci-botic.mod.o
LD [M] /root/botic_driver/source/snd-davinci-botic.ko
make[1]: Leaving directory '/usr/src/linux-3.13.6-3-ARCH'
make -C /lib/modules/3.13.6-3-ARCH/build M=/root/botic_driver/source modules_install
make[1]: Entering directory '/usr/src/linux-3.13.6-3-ARCH'
INSTALL /root/botic_driver/source/snd-codec-es9018.ko
INSTALL /root/botic_driver/source/snd-davinci-botic.ko
DEPMOD 3.13.6-3-ARCH
make[1]: Leaving directory '/usr/src/linux-3.13.6-3-ARCH'
depmod -a
depmod: ERROR: Module 'hci_vhci' has devname (vhci) but lacks major and minor information. Ignoring.

で、結局、botic3は動きませんでした。ボチボチ行くしかないですね。

botic3/3.8.13-20-ARCHで良い音が出てますので、これで一旦終了。TPAのcapeと正式driver待ちとします。

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/21(Mon) 21:30 No.4316 home
syuさん

>ちょっとだけ足掻いてみましたが、確認手段がわかりませんでした
include/uapi/linux/types.h:4:23: fatal error: asm/types.h: No such file or directory ってエラーが出てるので、asm/types.h?が足りないですね(ソースでは#include <asm/mach-types.h> となってるので、たぶんmach-types.hが足りない。他にもなにか足りないかもしれないですが)
確認方法はfindかければいいと思います。
cd /usr/lib/modules/3.14.0-3-ARCH/build
find . -name 'mach-types.h' -print

ヘッダーは、kernelをbuildするとinclude下に出来ます。
mach-types.hは、linux-3.14.x/include/generatedにあるようです。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/23(Wed) 20:31 No.4319 home
tinkerさん

>確認方法はfindかければいいと思います。
いつもありがとうございます。やってみます。

皆様

>これで一旦終了。
などと言いつつ、もうひと足掻きしてみました。

エレアトさんから分けていただいたHDMI送信基板が遊んでいましたので、bbbからのi2sをHDMI送信基板に接続。bbb本体をait dacの筐体外に追放しました。

http://mimizukobo.sakura.ne.jp/upload/bbb-i2s-140423.jpg

ait dacのHDMIはait独自方式なのですが、ジャンパピンでps-audio方式に変更できます。また、エレアトさんのようにHDMI経由で電源が来ていない場合でも、dac側の電源基板から、独立した5Vをdac基板上のアイソレータ1次側に供給することができます。

bbbを筐体外に出して高周波ノイズが減るのと、HDMIの固有音が加わるのと、どっちがよりマシなのかの勝負ですが、結果は、悩むことなくHDMIの勝ちでした。bbb等からの高周波ノイズの悪影響は結構あるんでしょうね。

ノイズ以外では筐体内ダイレクト結線の方が良いはずですから、あとはシールド次第なのだろうと思います。

追記:140425:P9-25からクロックを入れる場合にbbbを破壊しないための注意喚起です。外部クロックの起動はbotic3の起動後が望ましいと思われます。また、poweroffする時点でクロックの電源を切った方が良いでしょう。P9-25が入力モードになっていない時にHレベルの信号を入れるとbbbが壊れる可能性があるようです。

参考: http://www.diyaudio.com/forums/twisted-pear/250583-building-open-embedded-audio-applicance-64.html#post3903750

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/27(Sun) 22:34 No.4320 home
HiFiBerry Digiを接続してみました。
結論から言えば音は出てません。
原因としては、
・配線がおかしい
・Digiが壊れてる
・ドライバーが9018依存
等、いろいろだと思いますが、今回はこの件の追求はしません。

使ってみて分かったことを書いておきます。
先に書いたように音は出ませんが、GMPCは認識しているような動作をします。また、top -Hの結果は(96/24再生時)、
top - 22:20:01 up 16 min, 1 user, load average: 0.24, 0.27, 0.19
Threads: 78 total, 3 running, 75 sleeping, 0 stopped, 0 zombie
%Cpu(s): 11.7 us, 5.2 sy, 0.0 ni, 83.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 505240 total, 188188 used, 317052 free, 7172 buffers
KiB Swap: 0 total, 0 used, 0 free, 156676 cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2210 mpd 20 0 67640 5112 2024 R 12.1 1.0 1:13.87 mpd
2211 mpd 20 0 67640 5112 2024 R 2.0 1.0 0:16.96 mpd
2356 root 20 0 4200 1264 900 R 2.0 0.3 0:08.05 top
2209 mpd 20 0 67640 5112 2024 S 0.7 1.0 0:04.11 mpd
2205 mpd 20 0 67640 5112 2024 S 0.3 1.0 0:03.19 mpd
のようになっています。
これはI2Sは垂れ流しなので、ドライバーが組み込まれていれば、その先は関知せずってことなんでしょうか?

debianでは動かないとか、3.13.xでは動かないとか言う話があったので、検証してみました。
モジュールは、Verごとに野良ビルドです。
・3.8.13-bone41 : 問題なし
・3.8.13-bone47 : 問題なし
・3.13.9-bone9 : 問題なし(※ 上記topの結果は3.13.9-bone9のものです)


3.8.13.xの場合は、HPのとおり echo BB-BONE-BOTIC1 > /sys/devices/bone_capemgr.*/slots としますが、3.13.xの場合は以下のようにするようです。
botic_driver/firmware/am335x-boneblack.dtb を dtbsにコピーし再起動。echo BB-BONE-BOTIC1 > /sys/devices/bone_capemgr.*/slots は必要ないようです。
ただ、音が出ていないので検証は出来ていません^^;
am335x-boneblack.dtsに当っているパッチを取り出して3.12に当ててdtbを作成すれば、3.12でも動くかもしれません。

追記
3.13.9-bone9のdmesgの結果です。
root@debian-bbb:~# dmesg | grep botic
[ 7.421293] botic_hw_params@175
[ 7.424624] snd_davinci_botic: not using external clocks
[ 7.484094] davinci_botic snd_davinci_botic.11: es9018-hifi <-> 48038000.mcasp mapping ok
[ 7.545547] snd_davinci_botic: supported playback.rates=0x14a8
[ 153.333242] botic_hw_params: np=c1392a70, format=0xa, rate=96000, chan=2
[ 153.340454] botic_hw_params@62
[ 153.348206] botic_hw_params@68
[ 153.351422] botic_hw_params@86
[ 153.354625] botic_hw_params@99
[ 153.364260] botic_hw_params@105
[ 153.367577] botic_hw_params@111
[ 153.370878] botic_hw_params@118
[ 153.374175] botic_hw_params@129

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/29(Tue) 09:41 No.4323 home
3.12を眺めてみましたが、3.13と同じ手法は難しそうですね。
3.14のam335x-boneblack.dtsは3.13と同じようですので、3.14への移植が進めば3.13と同じ手法が使えますね。

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/29(Tue) 12:30 No.4324 home
連投失礼します。
こんなの出来ました。rtも出来そうです。
syuさん、もう少し足掻いてみます?

root@debian-bbb:~# uname -a
Linux debian-bbb 3.14.1-bone2 #1 SMP Sun Apr 20 09:56:48 UTC 2014 armv7l GNU/Linux

root@debian-bbb:~# cat /proc/asound/cards
0 [Botic ]: TPA_Botic - TPA Botic
TPA Botic

root@debian-bbb:~# lsmod
Module Size Used by
rpcsec_gss_krb5 21773 0
nfsd 242277 2
snd_davinci_botic 4893 1
snd_codec_es9018 2872 1
snd_soc_davinci_mcasp 9855 2
snd_soc_davinci 6544 1 snd_soc_davinci_mcasp
snd_soc_core 156574 4 snd_soc_davinci_mcasp,snd_soc_davinci,snd_davinci_botic,snd_codec_es9018
snd_compress 7845 1 snd_soc_core
snd_pcm 87340 3 snd_soc_core,snd_soc_davinci
snd_seq 58436 0
snd_seq_device 6314 1 snd_seq
snd_timer 19626 2 snd_pcm,snd_seq
ti_am335x_adc 4736 0
kfifo_buf 2490 1 ti_am335x_adc
industrialio 46642 2 ti_am335x_adc,kfifo_buf
omap_aes 11910 0
omap_sham 17324 0
snd 61590 7 snd_soc_core,snd_timer,snd_pcm,snd_seq,snd_seq_device,snd_compress
soundcore 7210 1 snd
rtc_omap 5272 0
uio_pdrv_genirq 3297 0
uio 8777 1 uio_pdrv_genirq

top - 12:24:24 up 3 min, 1 user, load average: 0.48, 0.60, 0.27
Threads: 87 total, 1 running, 86 sleeping, 0 stopped, 0 zombie
%Cpu(s): 7.0 us, 1.7 sy, 0.0 ni, 91.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 505476 total, 78744 used, 426732 free, 7384 buffers
KiB Swap: 0 total, 0 used, 0 free, 43800 cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2239 mpd 20 0 67620 5136 2024 S 6.0 1.0 0:03.05 mpd
2240 mpd 20 0 67620 5136 2024 S 1.6 1.0 0:00.78 mpd
2389 root 20 0 4200 1268 900 R 1.6 0.3 0:00.44 top

root@debian-bbb:~# cat /proc/asound/Botic/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 96000 (96000/1)
period_size: 1024
buffer_size: 16384
root@debian-bbb:~# cat /proc/asound/Botic/pcm0p/sub0/info
card: 0
device: 0
subdevice: 0
stream: PLAYBACK
id: ES9018 es9018-hifi-0
name:
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 0
root@debian-bbb:~# cat /proc/asound/Botic/pcm0p/sub0/status
state: RUNNING
owner_pid : 2240
trigger_time: 240.988774586
tstamp : 1417.729661518
delay : 16384
avail : 0
avail_max : 2048
-----
hw_ptr : 112962560
appl_ptr : 112978944
root@debian-bbb:~# cat /proc/asound/Botic/pcm0p/sub0/sw_params
tstamp_mode: NONE
period_step: 1
avail_min: 1024
start_threshold: 15360
stop_threshold: 16384
silence_threshold: 0
silence_size: 0
boundary: 1073741824

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/04/30(Wed) 19:05 No.4330 home
tinkerさん

足掻くのはやめていません^^;;;;

>botic_driver/firmware/am335x-boneblack.dtb を dtbsにコピーし再起動。

No.4315で作った3.13.6-3-ARCHで試しました。
botic1の場合だけ音が出ましたが、外部クロックを入れてbotic3動作にするにはどこをいじればいいのか、さっぱりわかりません。

音は良いです。外部クロックでのbotic3(3.8.13-20-ARCH)には負けます。

[root@arch-botic ~]# cat /proc/asound/cards
0 [Botic ]: TPA_Botic - TPA Botic
TPA Botic

[root@arch-botic ~]# dmesg | grep botic
[ 0.000000] Linux version 3.13.6-3-ARCH (root@arch-botic) (gcc version 4.8.2 20131219 (prerelease) (GCC) ) #1 SMP Mon Apr 21 10:03:24 JST 2014
[ 4.857231] systemd[1]: Set hostname to <arch-botic>.
[ 9.778010] botic_hw_params@175
[ 9.781441] snd_davinci_botic: not using external clocks
[ 9.874893] davinci_botic snd_davinci_botic.11: es9018-hifi <-> 48038000.mcasp mapping ok
[ 9.992104] snd_davinci_botic: supported playback.rates=0x14a8
[ 13.930465] botic_hw_params: np=c138fa70, format=0xa, rate=48000, chan=2
[ 13.937662] botic_hw_params@62
[ 13.945161] botic_hw_params@68
[ 13.948415] botic_hw_params@86
[ 13.951616] botic_hw_params@99
[ 13.961237] botic_hw_params@105
[ 13.964530] botic_hw_params@111
[ 13.967843] botic_hw_params@118
[ 13.971135] botic_hw_params@129

pacman -Syuで3.14.2-1-ARCHになりますが、これは失敗。

[root@arch-botic ~]# uname -a
Linux arch-botic 3.14.2-1-ARCH #1 SMP Mon Apr 28 20:36:10 MDT 2014 armv7l GNU/Linux

[root@arch-botic ~]# pacman -Ss am33x
core/linux-am33x 3.14.2-1 [installed]
The Linux Kernel and modules - TI AM335x Beaglebone (Black)
core/linux-am33x-headers 3.14.2-1 [installed]
Header files and scripts for building modules for linux kernel - TI AM335x Beaglebone (Black)
core/linux-am33x-legacy 3.8.13-20
The Linux Kernel and modules - am33x processors
core/linux-headers-am33x-legacy 3.8.13-20
Header files and scripts for building modules for linux kernel - am33x processors

[root@arch-botic ~]# cd botic_driver/source
[root@arch-botic source]# make install
make -C /lib/modules/3.14.2-1-ARCH/build M=/root/botic_driver/source modules
make[1]: Entering directory '/usr/lib/modules/3.14.2-1-ARCH/build'
CC [M] /root/botic_driver/source/es9018.o
In file included from include/linux/types.h:5:0,
from include/linux/list.h:4,
from include/linux/module.h:9,
from /root/botic_driver/source/es9018.c:1:
include/uapi/linux/types.h:4:23: fatal error: asm/types.h: No such file or directory
#include <asm/types.h>
^
compilation terminated.
scripts/Makefile.build:308: recipe for target '/root/botic_driver/source/es9018.o' failed
make[2]: *** [/root/botic_driver/source/es9018.o] Error 1
Makefile:1275: recipe for target '_module_/root/botic_driver/source' failed
make[1]: *** [_module_/root/botic_driver/source] Error 2
make[1]: Leaving directory '/usr/lib/modules/3.14.2-1-ARCH/build'
Makefile:8: recipe for target 'all' failed
make: *** [all] Error 2

[root@arch-botic source]# aplay -l
aplay: device_list:268: no soundcards found...

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/04/30(Wed) 21:50 No.4331 home
syuさん

>外部クロックを入れてbotic3動作にするにはどこをいじればいいのか、さっぱりわかりません。
まじめに見てませんが、botic_driver/firmware/am335x-boneblack.dtsの最後辺りですかね。

実はこんなの作ったんですが、試してみます?
もちろん無保証です。
root@debian-bbb:~# uname -a
Linux debian-bbb 3.14.1-rt1 #1 SMP PREEMPT RT Tue Apr 29 20:43:52 JST 2014 armv7l GNU/Linux
root@debian-bbb:~# cat /proc/asound/cards
0 [Botic ]: TPA_Botic - TPA Botic
TPA Botic

top - 21:50:10 up 12 min, 1 user, load average: 0.15, 0.13, 0.12
Threads: 102 total, 1 running, 101 sleeping, 0 stopped, 0 zombie
%Cpu(s): 12.1 us, 5.1 sy, 0.0 ni, 82.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 501932 total, 244340 used, 257592 free, 7952 buffers
KiB Swap: 0 total, 0 used, 0 free, 166832 cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2237 mpd -48 0 69556 65m 22m S 6.9 13.5 1:04.15 mpd
2238 mpd -54 0 69556 65m 22m S 4.7 13.5 0:34.86 mpd
2400 root 20 0 4200 1276 900 R 3.1 0.3 0:00.42 top
20 root -51 0 0 0 0 S 1.3 0.0 0:09.91 irq/28-edma
3 root -2 0 0 0 0 S 0.3 0.0 0:02.73 ksoftirqd/0
28 root -51 0 0 0 0 S 0.3 0.0 0:01.40 irq/86-44e0b000
92 root -54 0 0 0 0 S 0.3 0.0 0:09.77 irq/57-4a100000
93 root -54 0 0 0 0 S 0.3 0.0 0:05.42 irq/58-4a100000

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/05/01(Thu) 00:24 No.4332 home
tinkerさん

No.4324の記事で、tinkerさんのところでは3.14.1-bone2で動いているので、3.14.2-1-ARCHでもサポートされているはずですが、make installでは無理なんですよね。ドライバの作り方も3.13シリーズまでと3.14では違うんでしょうか。

>Linux debian-bbb 3.14.1-rt1 #1 SMP PREEMPT RT Tue Apr 29 20:43:52 JST 2014 armv7l GNU/Linux

凄いですね、早くもRT kernelとは。

cpu負荷が高いのは、RTだからですか、それともbotic1だからですか?
使い方を指導していただかないと実働に持ち込むのは無理だと思いますが、是非試してみたいです。よろしく。

Re: BBBのI2S interface 投稿者:moct 投稿日:2014/05/01(Thu) 17:29 No.4333 home
みなさんはじめまして。

この掲示板を参考にさせていただき、BBBよりのI2S出力で音楽を楽しんでおります。とにかくびっくりするぐらい高音質ですね。DACはPCM1792です。BOTICドライバの9018依存はないんじゃないでしょうか。Arch、Debianで、BOTIC1、BOTIC3とも44.1/16から192/24まで問題なく音が出ています。BOTIC3の外部クロックはAmaneroです。
ArchとDebianでは音がかなり違います。Archは解像度が非常に高く、音にスピード感があり馬力を感じます。Debianの方は、Archと比べると少し地味な感じがしますが、音に厚みがあります。
音以外では、
BOTIC3の際ArchとDebianでAmaneroの接続順でどうも音が出たり出なかったりします。(BBBのaudio_outputは2つ設定)
Debianの場合、Amaneroを接続したまま起動し起動後ドライバを組み込みます。
Archの場合は、ドライバを組み込み後、AmaneroをUSBに接続します。これで、Arch、Debianの双方でAmaneroの方も自動的に追従するようです。

Arch,Debian 96/24
root@debian-armhf:~# uname -a
Linux debian-armhf 3.8.13-bone41 #1 SMP Tue Mar 4 22:51:47 UTC 2014 armv7l GNU/Linux

top - 06:41:43 up 30 min, 1 user, load average: 0.01, 0.04, 0.05
Threads: 69 total, 1 running, 68 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.4 us, 0.7 sy, 0.0 ni, 97.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 509168 total, 265168 used, 244000 free, 14292 buffers
KiB Swap: 0 total, 0 used, 0 free, 218492 cached
top - 06:43:44 up 32 min, 1 user, load average: 0.03, 0.04, 0.05
Threads: 70 total, 1 running, 69 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.2 us, 1.1 sy, 0.0 ni, 94.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 509168 total, 278784 used, 230384 free, 14292 buffers
KiB Swap: 0 total, 0 used, 0 free, 231968 cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2103 mpd 20 0 84668 13m 2024 S 4.0 2.8 0:22.73 mpd
2105 mpd 20 0 84668 13m 2024 S 1.0 2.8 0:06.26 mpd
2188 root 20 0 4212 1268 896 R 1.0 0.2 0:00.20 top
2106 mpd 20 0 84668 13m 2024 S 0.7 2.8 0:03.83 mpd
2099 mpd 20 0 84668 13m 2024 S 0.3 2.8 0:02.93 mpd
2139 root 20 0 8316 2948 2356 S 0.3 0.6 0:02.26 sshd
2183 root 20 0 0 0 0 S 0.3 0.0 0:00.14 kwork


[root@alarm ~]# uname -a
Linux alarm 3.8.13-20-ARCH #1 SMP Fri Apr 18 11:42:29 MDT 2014 armv7l GNU/Linux

top - 09:14:58 up 14 min, 1 user, load average: 0.00, 0.05, 0.07
Threads: 67 total, 1 running, 66 sleeping, 0 stopped, 0 zombie
%Cpu0 : 4.0 us, 2.3 sy, 0.0 ni, 93.0 id, 0.3 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem: 507484 total, 203092 used, 304392 free, 9876 buffers
KiB Swap: 0 total, 0 used, 0 free. 155936 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
183 mpd 20 0 104280 18424 5784 S 3.3 3.6 0:09.58 mpd
273 root 20 0 0 0 0 S 1.3 0.0 0:03.16 cifsd
184 mpd 20 0 104280 18424 5784 S 1.0 3.6 0:02.73 mpd
163 mpd 20 0 104280 18424 5784 S 0.3 3.6 0:03.39 mpd
182 mpd 20 0 104280 18424 5784 S 0.3 3.6 0:00.58 mpd
172 root 20 0 7492 3528 456 S 0.3 0.7 0:01.95 haveged
295 root 20 0 4520 1292 984 R 0.3 0.3 0:00.38 top


tinkerさん

RT kernel 私も是非試してみたいです。よろしくお願いします。

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/05/01(Thu) 18:13 No.4334 home
moctさん

9018以外でも大丈夫なんですね。
ということは、配線間違いor壊れてる(壊した)ってことなんでしょうね。

準備整い次第UPします。良かったらTestして下さい。
ただし、ドライバー作者さえtestしてないであろう3.14.x and RTということはご了承くださいね。

Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/05/01(Thu) 18:24 No.4335 home
syuさん

>ドライバの作り方も3.13シリーズまでと3.14では違うんでしょうか
ドライバの作り方は、3.14でも同じです。ただしam335x-boneblack.dtbは作成しなおしました(後述)

syuさんの場合、include/uapi/linux/types.h:4:23: fatal error: asm/types.h: No such file or directory とエラーが出ています。
ドライバーのソースがおかしいのかヘッダーがおかしいのかは分かりませんが、このエラーを回避する必要があります。
以下の手順でやってみてください。
・asm/types.hは存在するか
・存在しない場合、どっかから持ってくる(-_-;)
・存在する場合、cat types.hとし、include行があればそのincludeされている*.hが所定の場所に存在するか確認する
私のところでは、すんなりmakeできたのは3.8.13-bone41,3.14.1-bone2のみで、他のものではエラーが出ました。
3.8.13-bone47の場合、linux-headers-3.8.13-bone47/arch/arm/include/asm/timex.h:18:24: fatal error: mach/timex.h: No such file or directoryとのエラーが出ました。
このため、上記の手順で確認し/usr/src/linux-headers-3.8.13-bone47/arch/arm/include/mach/timex.hを用意しました。
また3.14.1-rt1の場合は、linux-headers-3.14.1-rt1/scripts関係でエラーが出たので、エラーが出る/scriptsを3.14.1-bone2のものに入れ替えました。
作者の方は、カーネルソースに対するパッチとして(raspiのように)提供してくだされば、カーネルを何度もビルドする場合に一緒にモジュールも作成できるので便利なんですけどね。
カーネルをビルドしない or たまにしかしないって方たちにとっては今のほうがいいのかなぁ・・・

I2Sに必要な定義はどこでされてるんしょうか? ってことで探してみました。
3.8の場合、
"P9.25", /* mcasp0: mcasp0_ahclkx */
などはBBB固有のパッチで追加定義されていますが※、3.13では定義されてないようです。
(3.12も同様の追加定義はされています。作者の方が少しいじってくれれば3.12も動くはずなんですけどね)
※確認方法
ss@xh61v:~/build/linux-dev$ cd patches/
ss@xh61v:~/build/linux-dev/patches$ grep mcasp0_ahclkx * -r | less

必要な定義がされていないのに、なんで3.13.6は動くの?ってことでChangeLogを見ると、ご存知のようにadd DTS+DTB for static configurationと記載されています。
そこでam335x-boneblack.dtsを確認すると該当の記述がありましたので、am335x-boneblack.dtbを入れ替えればいいことが分かります。
3.14も必要な定義がされていませんが、3.13と同様の手法で出来るのではと考えました。
ただし、am335x-boneblack.dtsのサイズは3.13と同じですが、am335x-boneblack.dtbのサイズは3.13と違います。
am335x-boneblack.dtsで以下をincludeしているので、きっとこのあたりの中身が3.13と違うのでしょう。
#include "am33xx.dtsi"
#include "am335x-bone-common.dtsi"
確認するのも面倒なので、3.13.6-bone8のam335x-boneblack.dtsとbotic_driver/firmware/am335x-boneblack.dtsからパッチを作成し、3.14.1のam335x-boneblack.dtsに当てdtbを作成することとしました。


以下にファイルをUPしておきます。
https://drive.google.com/file/d/0BxnbJHx0_xurQV9mbmtYNmdKVkU/edit?usp=sharing
こちらでは音が出ていないので、正常に動いているのかどうか判断できません。音切など発生しているかもしれません。
検証して頂いて、RTに可能性があるようでしたらソース及びヘッダーもUPしますので、後のことはよろしくお願いします。
なお、3.14rtのカーネルソースは以下の構成のものでビルドしています。
・am335x-boneblack.dts:BBB固有パッチ + rtパッチ(多分ない)+ boticパッチ(同包のbotic.patch.gz)
・上記以外      :BBB固有パッチ + rtパッチ
・ヘッダー      :適当に作成しました
また、configはCFQからDeadlineに変更しています。出音はその辺を脳内変換(^_^;)して確認して下さい。

>cpu負荷が高いのは、RTだからですか、それともbotic1だからですか?
多分RTだからだと思いますが、よく分かりません。
3.13.6以降では、botic1とかbotic3の区別は無いように見えます。
カーネル起動時に外部クロックが発見できれば外部クロックを、見つからない場合は48kを使うようです。
きちんと動作しているのかどうかは、環境がないので分かりません。


注)
I2Sでは関係ありませんが、UPしたカーネルはUSB DACでは正常に動作しません。
3.14(多分3.13も)のMUSBではDMAが使えないようです(bug?)
USB DACを使うためには、PIOに変更が必要です。
cpufreqも効かないような・・・
なんでだろ・・・

Re: BBBのI2S interface 投稿者:moct 投稿日:2014/05/01(Thu) 21:12 No.4336 home
tinkerさん
早速のup、ありがとうございます。
音が出ました。ご安心ください。
内部クロックでは192/24まで問題なく再生できています。
やはり外部クロックへの切り替え方がわかりません。
音の方は、より豊かになったような・・   プラシーボ?

以前、ここにyoさんがupされたimgを使いました。mpdはrtバッチ済みの0.185dsdです。44.1再生中のtop -Hです。
root@beagle:~# uname -a
Linux beagle 3.14.1-rt1 #1 SMP PREEMPT RT Tue Apr 29 20:43:52 JST 2014 armv7l GNU/Linux


%Cpu(s): 9.8 us, 8.1 sy, 0.0 ni, 75.8 id, 0.0 wa, 0.0 hi, 6.4 si, 0.0 st
KiB Mem: 501944 total, 497552 used, 4392 free, 1788 buffers
KiB Swap: 0 total, 0 used, 0 free, 400600 cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2528 mpd -50 0 91536 78m 22m S 7.9 16.0 1:02.41 mpd 92 root -55 0 0 0 0 S 6.6 0.0 13:28.53 irq/57-4a100000 top - 11:37:59 up 1:12, 1 user, load average: 0.61, 1.05, 1.94
Threads: 118 total, 1 running, 117 sleeping, 0 stopped, 0 zombie
%Cpu(s): 31.7 us, 3.0 sy, 0.0 ni, 65.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 501944 total, 496564 used, 5380 free, 2124 buffers
KiB Swap: 0 total, 0 used, 0 free, 393264 cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14485 mpd -55 0 90332 86m 23m S 30.6 17.6 0:22.79 mpd
14484 mpd -50 0 90332 86m 23m S 1.3 17.6 0:14.61 mpd
15110 root 20 0 4216 1284 880 R 1.0 0.3 0:00.71 top
20 root -51 0 0 0 0 S 0.3 0.0 0:22.25 irq/28-edma
92 root -55 0 0 0 0 S 0.3 0.0 13:37.06 irq/57-4a100000
395 root 20 0 1496 480 248 S 0.3 0.1 0:08.41 net.agent
2511 root 20 0 18336 876 648 S 0.3 0.2 0:32.55 cpufreqd
1 root 20 0 1688 624 520 S 0.0 0.1 0:02.61 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd


Re: BBBのI2S interface 投稿者:tinker 投稿日:2014/05/01(Thu) 22:33 No.4337 home
moctさん
動いたみたいで安心しました。

>プラシーボ?
かもしれません。
というのも、別の機種(odroid-u3)で3.14を使っているのですが、3.8ほどの変化が感じられませんでした。

>load average: 0.61, 1.05, 1.94
こちらでも1.0を超えることがあります。
ちょっと問題ありそうですね。

>やはり外部クロックへの切り替え方がわかりません
これについてはお役に立ちそうにないです。

twlさん、syuさん
3.13の動作報告及び3.13での外部クロックへの切り替えなど、フォーラムで話題が出ていないでしょうか?

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/05/01(Thu) 23:10 No.4338 home
tinkerさん、moctさん

arch linuxのrootfsでも音が出ましたが、botic1動作です。
外部クロック(22.5792MHz)をP9-25に入れたまま起動しましたが、クロックを止めないとコンフリクトでdacにはNO SIGと表示され、再生不能でした。止めるとfs=48kHzの表示(16/44.1再生)になります。

[root@arch-botic ~]# uname -a
Linux arch-botic 3.14.1-rt1 #1 SMP PREEMPT RT Tue Apr 29 20:43:52 JST 2014 armv7l GNU/Linux

top - 22:57:56 up 2 min, 1 user, load average: 0.57, 0.34, 0.14
Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie
%Cpu(s): 31.1 us, 1.3 sy, 0.0 ni, 67.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 501940 total, 140112 used, 361828 free, 7164 buffers
KiB Swap: 0 total, 0 used, 0 free. 95268 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
258 root 20 0 91756 12964 5356 S 30.1 2.6 0:30.82 mpd
457 root 20 0 4980 1288 984 R 0.7 0.3 0:00.15 top
19 root 20 0 0 0 0 S 0.3 0.0 0:00.11 kworker/0:1
20 root -51 0 0 0 0 S 0.3 0.0 0:00.35 irq/28-edma
1 root 20 0 4656 2840 1708 S 0.0 0.6 0:05.03 systemd

[root@arch-botic ~]# cat /proc/asound/cards
0 [Botic ]: TPA_Botic - TPA Botic
TPA Botic

bbbのクロックでリサンプルなので、音は良いですが残念ながらbotic3動作(3.8.13-21-ARCH)には、かなり離されています。

>外部クロックへの切り替えなど、フォーラムで話題
今のところ私は気付きません。
bbbがやっと買えたとかで盛り上がってるようです。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/05/01(Thu) 23:12 No.4339 home
あら失敗!

mpdはrtにしていませんでした。後ほど再試行しますです。

Re: BBBのI2S interface 投稿者:syu 投稿日:2014/05/01(Thu) 23:15 No.4340 home
このスレッドも長くなりましたので、rt kernelの登場を記念して、次の投稿から新しいスレッドでお願いします。


- 返信フォーム

Name
E-Mail
Title
Message
WebSite
password (英数字で8文字以内, under 8 alphanumeric characters to delete or correct message)
submit key (投稿時には 投稿キー(文字) を入力してください, please enter characters left)
返信を完了させるには「submit」キーを押して下さい。

掲示板用にデータをアップロード出来ます。ログインするにはここをクリック。ヘルプを見るにはここをクリック。
- 記事修正&削除フォーム
処理 No. 暗証キー