コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2018年11月10日 >>> 2018年11月1日
link もっと後

2018年11月10日

ROCK64のアナログオーディオ - その2 - I2SのDMA問題

目次: ROCK64/ROCKPro64

ROCK64のI2Sが動かない

先日(2018年7月22日の日記参照)買ったRockchip RK3328搭載ボードROCK64で遊んでいます。

RockchipのSoCで動くLinuxはRockchipがメンテナンスしているLinux(以降Rockchip Linux)ですが、実はLinuxの本流開発ツリー(以降linux-next)も動作します。

しかしlinux-nextの方は全く音が出ません(speaker-testで叩くとxrun_recovery faild: -5, Input/output errorが出ます)。

以前S/PDIFも全く動かなかったのですが、原因が分かったのでパッチを送って直しました。今は出音までできているはずです。しかしI2Sは原因が違うらしく、なぜ動かないのかさっぱりです。

Rockchip Linuxとの差

I2Sのレジスタ情報はTRM(Technical Reference Manual)に載っていたので、それを見つつRockchip Linuxとレジスタ値を同じに揃えましたが、I2Sは微塵も動きませんでした……。

I2S以外のドライバのバグを疑い、Rockchip LinuxのI2Sドライバを丸ごとコピーしたら、動いてしまいました。疑いはハズレ、つまりI2Sドライバに何らかのバグがあることは確定です。一体何が違うんでしょう。diffを見ましたが差分の意味がわかりません。

差分は多くないので、力技でRockchip Linuxからlinux-nextに1つずつ差分を移植していって、動作するかどうか確かめました。原因はdevm_snd_dmaengine_pcm_register() の第2引数(config)にNULLを渡すかどうか、でした。

私には、その違いの意味するところも、現在のlinux-nextのコードの何が悪いのかも、さっぱりわかりません。

差分の意味

動作とコードを追ってみると、現在のlinux-nextのコードはstruct snd_dmaengine_pcm_configのprepare_slave_configを設定し忘れているため、全くDMA転送設定がされていないことがわかりました。

要は、音声データを全くI2Sハードに送っていなかったんです。そりゃ動くわけないわ。

Rockchip Linuxはなぜ動くのか

Rockchip Linuxはどうしていたかというとdevm_snd_dmaengine_pcm_register() の第2引数にNULLを指定していました。何も指定していないのに、どうして動くのでしょう?同じバグを踏まないのでしょうか?

実は第二引数にNULLを指定するとALSAのフレームワーク側でprepare_slave_configにsnd_dmaengine_pcm_prepare_slave_config() を指定した状態と同等に扱われます。この働きにより、無事動作していたのでした。わかるかそんなの。

知っていれば秒殺系のバグでしょうけど、私はぱっと見ではわかりませんでした。

バグの修正としてはたった1行なんですが、理解するまで2日掛かりました。Linux詳しい人はもっと早く解析できると思います……。Linuxを触っているとこういうの多いので、もっとLinuxパワーが欲しいです。

せっかく判明したバグなのでALSA MLにパッチをぶん投げておきました。

まだまだ問題は山積み

ちなみに、これで万事解決ではなく、アナログ音声端子から音を出すにはI2S1とACODECというハードを叩かないといけないです(今回動いたのはI2S0)。今わかっているだけで、

  • I2S1はなぜか動かない
  • I2S2はSPDIFと資源が衝突して認識しない
  • ACODECはTRMに何も情報が載っていない

これだけの問題があります。Rockchip Linuxは何らかの方法で問題を解決しているはずなのですが、今のところ私にはさっぱりわかりません。

私のような門外漢が四苦八苦するより、Rockchipの中の人がlinux-nextに修正パッチを投げてくれる方が断然早いんですけどねえ。あまりlinux-nextにはご興味がないのでしょうか。

編集者:すずき(2020/10/30 01:31)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2018年11月9日

遠くに映せ

LANケーブルでHDMI伝送できる世界初の "GPU搭載" HDBaseTカード - PCWatch を読んで。

面白い製品だな〜と思いつつ、今一つこの製品の価値が理解できていませんので、少し調べてみました。

私の予想するこの製品の魅力は、

  • 価格: LANケーブルはHDMIケーブルより安い
  • 距離: HDMIの伝送距離は短い、LANは長距離引き回せる

のどちらかです。まず価格を見てみると、

10m
LAN: 4,800円(Amazon): サンワサプライKB-T7-10NVN
HDMI: 2,200円(Amazon): HORIC HDM100-886SV
30m
LAN: 9,700円(Amazon): サンワサプライKB-T7-30NVN
HDMI: 9,500円(Amazon): HORIC HDM300-008
50m
LAN: 17,700円(Amazon): サンワサプライKB-T7-50NVN
HDMI: 14,000円(Amazon): HORIC HDM500-275GD

HDMIケーブルは確かに高いけど、実はCAT7 LANケーブルもかなり高いため、大きな違いがありません。

次に距離を見てみると、HDMIも50mくらいならイコライザ付きのケーブルを使えば、引き回せるみたいです。さすがにケーブル1本で100mは無理そうでした。商品が見当たりません。HDMIで100mに挑むとすると、

  • HDMIエクステンダ(送信、受信に2つ必要、1つ1万円くらい、電源も必要、LANケーブルも必要)で延長
  • 光ファイバのHDMIケーブル(10万円くらい、電源必要)で接続

このような選択肢があるようです。HDMIで50mを超えることは不可能ではないですが、一気に価格が跳ね上がります。

従って、この製品が輝くシーンは
「50m〜100mのディスプレイ配線をケーブル1本で安く繋ぎたいとき」
だと思われます。たぶん。

メモ: 技術系の話はFacebookから転記しておくことにした。少し加筆。

編集者:すずき(2018/11/09 15:03)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2018年11月8日

家にたくさんマウスとキーボードがある

引っ越し荷物を開梱していると、たくさんのマウスとキーボードが出てきました。いつのまにこんなに買っていたのか。


我が家のマウスとキーボード

写真には6つのマウス、6つのキーボードが映っていますが、他にもマウス3つ(Logicool V450、Microsoft Wireless Mouse 1000が2つ)と、キーボード1つ(Topre REALFORCE)がありました。

マウスの一覧です。

  • Logitech Optical Mouse USB M-UV96
  • ELECOM EX-G Ultimate Laser Mouse M-XGL20DL(リンク)
  • Logicool Wireless Mouse M510(リンク)
  • Logicool Wireless Mouse M560(リンク)
  • Logicool Cordless Laser Mouse MX1100(リンク)
  • Logicool Marathon Mouse M705(リンク)
  • Logicool Nono Cordless Laser Mouse V450(リンク)
  • Microsoft Wireless Mouse 1000(リンク)

キーボードの一覧です。

マウスの感想

マウスは9個も買ったにも関わらず、一番手に合うと思ったのは、会社のPCに付属している有線タイプのマウスでした。サイズが絶妙で、とても軽くて良いです。

ワイヤレスマウスは妙に小さいか、妙に重たいので、手が疲れてしまいます。今のところ唯一気に入ったのはLogicoolのM705だけです。

キーボードの感想

キーボードは7個も買いましたが、キーの配置がスタンダードであることだけが重要で、構造や他の要素はあまり気にならないことがわかりました。PCに付属しているキーボードはキー配置に捻りがなくて使いやすいものが多いですが、最近のPCは変なキー配置のキーボードが増えていて困ります。普通の配置が良いです。要らんことしないで欲しい。

前の会社(ソシオ)で使っていた富士通PCに付いてたキーボード(FKB-1424と配置が似ているやつ)はキーが若干頼りなかったですけど、キー配置が普通で良かったです。

今の会社のDELL KB216はイマイチです。左下のFnキーが邪魔ですし、左Altのところ(Zキーの一段下)にWinキーが来ていて、メチャクチャ押し間違えます。あまりに誤打するので撤去して、REALFORCEに置き換えたほどです。昔使っていたDELLマシンのキーボード(DELL SK8115?スペースキーが正方形のもの)はスタンダードな配置で良かったのにな〜。なんでノートPCもどきの配置にしたんでしょうね。

Logicoolのマウスは良いものが多いんですけど、キーボードはイマイチなキー配置が多いです。K275以外は誤打連発で手に合いません。

REALFORCEは価格は高いのを除けば、キー配置がスタンダードで非常に良いキーボードです。我が家では活躍の場がないため、会社に持って行って活躍してもらっています。

メモ: 技術系の話はFacebookから転記しておくことにした。10月13日の投稿が元だが、大幅に加筆した。

編集者:すずき(2018/11/09 14:43)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2018年11月6日

職業ダブってた

先日(2018年10月15日の日記参照)気づいたことですが、FacebookやLinkedInの職歴では、現職として2社以上に所属することができるようになっています。

エグゼクティブクラスなら複数の会社の取締役を兼任するだろうけど、正直言って自分には縁が無い機能だと思っていました。

しかしエグゼクティブでなくとも、この世には「出向」という2足の草鞋を履ける制度がある訳で。自分でこの機能を使うことになるとは思いませんでした……。

メモ: 技術系の話はFacebookから転記しておくことにした。

編集者:すずき(2018/11/09 14:42)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2018年11月10日 >>> 2018年11月1日
link もっと後

管理用メニュー

link 記事を新規作成

<2018>
<<<11>>>
----123
45678910
11121314151617
18192021222324
252627282930-

最近のコメント5件

  • link 21年3月13日
    すずきさん (03/05 15:13)
    「あー、このプログラムがまずいんですね。ご...」
  • link 21年3月13日
    emkさん (03/05 12:44)
    「キャストでvolatileを外してアクセ...」
  • link 24年1月24日
    すずきさん (02/19 18:37)
    「簡単にできる方法はPowerShellの...」
  • link 24年1月24日
    KKKさん (02/19 02:30)
    「追伸です。\nネットで調べたらマイクロソ...」
  • link 24年1月24日
    KKKさん (02/19 02:25)
    「私もエラーで困ってます\n手動での回復パ...」

最近の記事3件

  • link 23年4月10日
    すずき (03/19 11:48)
    「[Linux - まとめリンク] 目次: Linuxカーネル、ドライバ関連。Linuxのstruct pageって何?Linu...」
  • link 24年3月18日
    すずき (03/19 11:47)
    「[画面のブランクを無効にする] 目次: LinuxROCK 3 model CのDebian bullseyeイメージは10分...」
  • link 24年3月3日
    すずき (03/19 11:07)
    「[解像度の設定を保存する] 目次: LinuxRaspberry Pi 3 Model B (以降RasPi 3B)のHDMI...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 03/19 11:48