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

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

日々

link permalink

お気に入りのマンガ

Kindle Fire HD は大量の本を入れると動作がおかしくなる(Kindle アプリが落ちる、起動しなくなる)ので、本は読み終わったらいったん端末から削除し、読み返したくなったらまたダウンロードする運用で使っています。

そんな中、既読かつ Kindle 内に残り続けている本、いわゆる「お気に入り」をいくつかピックアップしてみます。

あまり意識していませんでしたが、異世界転生系小説のコミカライズが多いですね…。

転生物

乙女ゲームの破滅フラグしかない悪役令嬢に転生してしまった…(2巻)
女性が主人公で、乙女ゲームの世界の公爵令嬢に転生しバッドエンド回避のために頑張る作品です。
シチュエーションはありきたりですが、かなりギャグ寄りなのと、転生物の定番である現代知識を振るう無双要素があまりないので、面白い毛色の作品です。今のところ一番の楽しみです。
戦国小町苦労譚(3巻)
農業学校に通う女子高生が戦国時代に飛ばされ、織田信長の家臣として現代農業の知識で無双する、異世界転生物で少し変わった設定の作品です。
現代知識で無双する作品は、大抵、異世界の住人が極端に無能で何だか見ていて可哀想になるんですけど、この作品は主人公周辺も割と曲者で面白いです。農業系に詳しくないせいか、農業ネタも新鮮で楽しいです。
公爵令嬢の嗜み(5巻)
乙女ゲームの〜、とほぼ同じ転生物ですが、こちらはギャグ成分は少なめで、国や領地運営がテーマです。
主人公の現代知識無双はあるものの、周辺のメンバーがかなり強く、主人公だけの力で勝っていて、他全員が飾りになっている作品ではないです。良いバランスだと思います。

転生物以外

はんどすたんど!(全 3巻)
体操をテーマにした日常系のギャグ漫画です。ギャグが中心で、体操成分は半分くらいですかね?
独特のゆるいギャグが良くて、クセになります。先日、完結してしまいました。もっと読みたかったな〜。
球詠(4巻)
野球漫画です。百合成分もあるのかな?ややギャグ寄りですが、野球もちゃんとやっていて、駆け引きが面白いです。
ページの都合か、セリフ回しが独特なだけなのか、会話の受け答えが変なときがありますが、面白さには関係ないので、最近はあまり気にせず読んでいます。

野球漫画は球詠、メジャー 2nd、グラゼニくらいしか読んだことないですけど、どれも面白いですね。

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

コメント一覧

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



link permalink

Kindle のシステムアップデート

Kindle fire はときおりシステムアップデートが勝手に降ってきて、気づいたら更新されています。


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

アップデートしてくれるのは良いですけども、バッテリー駆動の時でもお構いなしに始まるのが結構怖いです。

当然、アップデート開始前に一定の残量(例えば 50%以上、とか)があるかどうか見てから、アップデートを開始しているとは思いますが、バッテリーが弱っていて、アップデート中に一気にバッテリー残量が枯渇して電源が落ちたら、文鎮になってしまうのでは……?

メモ: 技術系の話は Facebook から転記しておくことにした。11/9 の投稿が元、一部加筆。

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

コメント一覧

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



link permalink

linux-next で動かない ROCK64 の I2S

昨日(2018年 11月 10日の日記参照)の続きです。残る問題は 3つありました。

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

2番目の「認識しなくなる問題」の原因が判明しました。

DMA の資源は有限です

I2S2 を有効にすると SPDIF が使えなくなる問題は、DMA の資源が枯渇していたせいでした。

RK3328 は ARM の PL330(or 互換)の DMA を持っています。SPI, UART, I2S, SPDIF, PWM, PDM など 16のハードウェアがこの DMA を使えますが、実は同時に使えるのは 8つまでという制約があります。知るかそんなこと……。

オーディオ系のハードを全て disable にしたときの DMA 資源の割り当ては、

  • 0: SPI TX
  • 1: SPI RX
  • 2: UART RX
  • 3: UART TX

このようになっていて、残りは 4つです。

I2S0, 1, 2 はそれぞれ DMA 資源を 2つ使い(TX, RX があるため)、SPDIF は資源を 1つ使います(TX しかないため)。

Rockchip Linux(Rockchip が独自にメンテナンスしている Linux のツリーのこと)の設定では I2S0, I2S1 のみを有効にして SPDIF を切り捨てています。ちょうど資源を 8つ使いきる設定ですね。ROCK64 はピンヘッダにしか SPDIF 信号が出せませんし、捨てるのも妥当かなとは思います。

ダメなパターン

私が前にエラーになってできないと言っていたパターンは I2S0, I2S1, I2S2, SPDIF を有効にするパターンです。この場合、

  • 0: SPI TX
  • 1: SPI RX
  • 2: I2S0 TX
  • 3: I2S0 RX
  • 4: I2S1 TX
  • 5: I2S1 RX
  • 6: I2S2 TX
  • 7: I2S2 RX
  • SPDIF TX -> エラー!

以上のように DMA 資源が足りなくなり、エラーになってしまいます。

微妙なパターン

ちなみに I2S0, I2S2, SPDIF を有効にすると、一応動くのですが、割り当てを調べると、

  • 0: SPI TX
  • 1: SPI RX
  • 2: I2S0 TX
  • 3: I2S0 RX
  • 4: I2S2 TX
  • 5: I2S2 RX
  • 6: SPDIF TX
  • 7: UART RX
  • UART TX -> エラー

このように UART が犠牲になってしまうようです。Audio が動いても、UART が死んじゃうのはダメな気がします。

正解は特にない

せっかく鳴るようになった SPDIF を活かすか、Rockchip Linux に合わせるか、さて、どうしたもんかなあ。

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

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

コメント一覧

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



link permalink

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

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

コメント一覧

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



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

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

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

最終更新: 11/14 02:08

カレンダー

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

最近のコメント 5件

  • link 18年10月12日
    すずき 「なるほど!\n京急、京成はヤバそうですね...」
    (更新:10/15 23:02)
  • link 18年10月12日
    ちかふみ 「閉会式直後の出国ラッシュ対策のためだそう...」
    (更新:10/15 20:43)
  • link 18年10月12日
    すずき 「あー、なるほど!閉会式の次にくっつけたん...」
    (更新:10/14 15:44)
  • link 18年10月12日
    hdk 「2020年の東京オリンピックが8月9日ま...」
    (更新:10/14 10:45)
  • link 18年09月07日
    すずき 「ありがとう!\nこちらこそ、楽しみにして...」
    (更新:09/11 19:30)

最近の記事 3件

link もっとみる
  • link 18年11月13日
    すずき 「[お気に入りのマンガ] Kindle Fire HD は大量の本を...」
    (更新:11/14 02:08)
  • link 18年11月10日
    すずき 「[ROCK64 の I2S が動かない] 先日(2018年 7月 ...」
    (更新:11/14 01:53)
  • link 18年11月11日
    すずき 「[linux-next で動かない ROCK64 の I2S] 昨...」
    (更新:11/14 01:52)

こんてんつ

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

その他の情報

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