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

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

日々

link permalink

linux-next で ROCK64 のオーディオが動かない、その 2

  • 2018年 10月 14日 - I2S と クロックレジスタ
  • 2018年 11月 10日 - I2S の DMA 問題と、残りの 3つの問題
  • 2018年 11月 11日 - I2S2 を認識しない問題解決(DMA チャネル数の問題だった)
  • 2018年 11月 28日 - I2S1 が動かない問題解決(クロックゲート定義のバグを直した)
  • 2018年 11月 29日 - アナログオーディオが動かない問題解決(ACODEC ドライバがなかったから移植)
  • 2018年 12月 23日 - 44.1kHz の PCM を再生できない問題解決(GPLL クロック定義のバグを直した)
  • 2019年 1月 5日 - 32kHz → 44.1kHz の順で PCM を再生できない問題解決(fractional divider の実装を変えた)

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 にはご興味がないのでしょうか。

[編集者: すずき]
[更新: 2019年 2月 13日 00:25]
link 編集する

コメント一覧

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



link permalink

遠くに映せ

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月 9日 15:03]
link 編集する

コメント一覧

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



link permalink

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

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


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

写真には 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月 9日 14:43]
link 編集する

コメント一覧

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



link permalink

職業ダブってた

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

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

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

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

[編集者: すずき]
[更新: 2018年 11月 9日 14:42]
link 編集する

コメント一覧

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



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

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

link About www2.katsuster.net
RDF ファイル RSS 1.0
QR コード QR コード

最終更新: 9/20 00:01

カレンダー

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

最近のコメント 5件

  • link 19年09月01日
    すずき 「私も正直びっくりです。間違って違う製品を...」
    (更新:09/04 23:39)
  • link 19年09月01日
    hdk 「車向けの製品の中でも、車載コンピューター...」
    (更新:09/02 23:20)
  • link 19年07月18日
    hdk 「あっ、AAMはマニュアルのオペレーション...」
    (更新:07/25 00:02)
  • link 19年07月18日
    すずき 「AAM(ASCII Adjust AX ...」
    (更新:07/24 22:22)
  • link 19年07月18日
    hdk 「加算減算は符号のありなしどちらも命令が同...」
    (更新:07/24 07:25)

最近の記事 3件

link もっとみる
  • link 19年09月18日
    すずき 「[linux-next が久しぶりに更新された] ここしばらく更新...」
    (更新:09/20 00:01)
  • link 19年09月17日
    すずき 「[今まで知らなかった make の挙動] シェルから make に...」
    (更新:09/19 02:27)
  • link 19年09月07日
    すずき 「[Sin 波の美しさ勝負] 最近 linux-next で Roc...」
    (更新:09/08 13:17)

こんてんつ

open/close wiki
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 過去日記について

その他の情報

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