コグノスケ


2018年11月6日

職業ダブってた

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

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

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

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

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

コメント一覧

  • コメントはありません。
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月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月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月11日

ROCK64のアナログオーディオ - その3 - I2S2を認識しない問題解決

目次: ROCK64/ROCKPro64

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, I2S1, SPDIFを有効に(11/16: I2S2 → I2S1に訂正)すると、一応動くのですが、割り当てを調べると、

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

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

(11/16加筆)UARTはDMAが無効になっても動作はしますので、死んでしまうという言い方は間違いでした。正しくは、Audioのために勝手にUARTのDMAを無効にしてしまうのはダメな気がします。デバイスツリー上は有効になっているように見えるので。

正解は特にない

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

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

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

コメント一覧

  • T4さん(2018/11/16 23:22)
    こんにちわ
    T4 といいます、以前に一度話した事があります。
    全く同じ処で(I2S1->ACODEC 出力)つまずいてて、探していたら ココを見つけました。
    先日の事ですが、私の方では何とか解決に漕ぎ着けました。

    ---

    それはさておき、DMAリソースの件ですが
    ROCK64に限って言えば、I2S2の関連端子は ボード上で GMAC/SPI-FLASH に接続されてます
    この状況で、I2S2 を有効にする事に意味があるとは思えません。

    また、> "Audio が動いても、UART が死んじゃうのはダメな気がします。"
    についてですが、私のところでは DMAを使わなくても実使用上差し支えありません。
    DMAを使わないと、"UART が死んじゃう" という事はないと思います。

    あと、"SPI-FLASH" 関しても U-Bootの為の書き換え程度で、その他は殆ど使う機会が有りません
    (今は直ってるかも知れませんが、以前はDMAを使うとマトモニ動かないと言った報告もありました)

    UART/SPI-FLASH の何れも、DMAの使用無し でも問題なく機能しています(使えなくなるわけじゃない)
    加えて この2者の場合、その転送速度と使用頻度を考慮すれば 無理にDMAを使う必要も無いと思います。

    私見ですが、ROCK64に限っては "SPI0/UART2/I2S2" のDMA使用は "OFF" でいいんじゃないですかね?
    ご指摘のリソース不足の件がありますので、 私はずっと前からこのような設定で使ってました。
  • すずきさん(2018/11/17 00:15)
    T4さん

    > 全く同じ処で(I2S1->ACODEC 出力)つまずいてて、探していたら ココを見つけました。
    > 先日の事ですが、私の方では何とか解決に漕ぎ着けました。

    私の方はまだ動いていないです。よろしければどのように解決したか教えていただけるとありがたいです。


    > この状況で、I2S2 を有効にする事に意味があるとは思えません。

    すみません、思い切り書き間違ってます…。私が使いたいのは I2S2 ではなく、ACODEC に繋がっている I2S1 です。I2S2 はご指摘の通り、有効にする意味がありません。

    > についてですが、私のところでは DMAを使わなくても実使用上差し支えありません。
    > DMAを使わないと、"UART が死んじゃう" という事はないと思います。

    確かに UART は DMA が無効になっても動いていたので「UART が死んでしまう」という表現は間違いですね。ご指摘ありがとうございます。直しておきます。


    > 私見ですが、ROCK64に限っては "SPI0/UART2/I2S2" のDMA使用は "OFF" でいいんじゃないですかね?
    > ご指摘のリソース不足の件がありますので、 私はずっと前からこのような設定で使ってました。

    うーん、そうですね、linux-next にパッチを送るとすると、
    「サウンドは DMA 使わないと動かないから、UART は DMA を無効にして PIO にする」
    という内容になるんですかね。うまく説明しないと reject されそうです。
  • T4さん(2018/11/17 09:44)
    ● I2S1が 全く動かない
    なぜか "I2S1"が 全く動かない、また それをクリアすると今度は別のエラーがでる
    といった問題は下記記ファイルに原因があります
    全ては書けませんが、参考として最後に一部を付けておきます(ココだけじゃありません、他にもあります)
    "Rockchip-Tree" のモノ & TRM(Technical Reference Manual)とじっくり見比べて見てください。
    drivers/clk/rockchip/clk-rk3328.c
    include/dt-bindings/clock/rk3328-cru.h
    sound/soc/rockchip/rockchip_i2s.c

    次に "ACODEC" ですが、
    これは、"Rockchip-Tree" の中にドライバがありますので、
    sound/soc/codecs/rk3328_codec.c
    sound/soc/codecs/rk3328_codec.h
    これを移植します。
    *)ドライバ・モデルの変更に合わせた修正が必要、単純作業ですが修正量は多いです

    そして、デバイスツリーに "ACODEC" を追加します

    ---
    以上の作業の後、私のところでは音が出るようになりました
    でも、まだ問題が
    "FS(サンプリング・レート)"の違う音源を交互に再生すると、音が出なくなる" と言った症状です。
    o 44kHz -> 48Khz
    x 48Khz -> 44kHz
    このため、更に rk3328_codec.c のロジックも弄る必要がありました
    資料が無いので手探り状態での修正を強いられます。
    まぁ、例え有ったとしても rk3328_codec.h に書かれている程度の内容でしょうが…

    以上を合わせると、結構な分量になります。

    ---
    最も時間とを費やしたのは、"I2S1が 全く動かない" の解析です
    全く動かないと、次に進めませんからね
    しかも問題の箇所が、まるで "間違い探し" のようなヤツでしたから…
    でも、バグなんて みんなこんなモンです
    バグの全てと言っていいほどが、作業量の99%を原因の特定に費やします。

    ---
    ● DMA リソース不足
    これに付いては、ボード固有の事情 / 若しくは個人の趣味趣向の類に入ると思いますので
    送る程のものか? とも思いますが、もし報告するとしたら

    rk3328-rock64.dts (HPの使用文字制約ため、一部全角で書いてます)
    &uart2 {
    + /delete-property/ dmas;
    + /delete-property/ dma-names;
    + /delete-property/ #dma-cells;
      status = "okay";
    };
    コード自体を弄くるわけじゃないから、受け入れやすいかも?
    でも 現状の"next"では、"SOUND" 自体が 全て無効になってますよね

    ---

    drivers/clk/rockchip/clk-rk3328.c (HPの使用文字制約ため、一部全角で書いてます)
     COMPOSITE(0, "clk_i2s1_div", mux_2plls_p, 0,
       RK3328_CLKSEL_CON(8), 15, 1, MFLAGS, 0, 7, DFLAGS,
       RK3328_CLKGATE_CON(1), 4, GFLAGS),
     COMPOSITE_FRACMUX(0, "clk_i2s1_frac", "clk_i2s1_div", CLK_SET_RATE_PARENT,
       RK3328_CLKSEL_CON(9), 0,
       RK3328_CLKGATE_CON(1), 5, GFLAGS,
       &rk3328_i2s1_fracmux),
     GATE(SCLK_I2S1, "clk_i2s1", "i2s1_pre", CLK_SET_RATE_PARENT,
    -   RK3328_CLKGATE_CON(0), 6, GFLAGS),
    +   RK3328_CLKGATE_CON(1), 6, GFLAGS),
     COMPOSITE_NODIV(SCLK_I2S1_OUT, "i2s1_out", mux_i2s1out_p, 0,
       RK3328_CLKSEL_CON(8), 12, 1, MFLAGS,
       RK3328_CLKGATE_CON(1), 7, GFLAGS),
  • すずきさん(2018/11/17 13:06)
    T4 さん

    クロック周りなんですね。
    clk-rk3328.c の間違いは私も気づいて、パッチを送ろうと思っていました。ただこれだけでは I2S1 が動かなかったので、困っていました。

    rk3328-cru.h の方は見ていなかったので、比べてみます。

    ACODEC は一応移植してますが、今は I2S1 だけ見たいので、ダミーのコーデックドライバとくっつけて試しています。

    ありがとうございます。
open/close この記事にコメントする



2018年11月12日

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

目次: Kindle

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


Kindleアップデート

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

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

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

編集者:すずき(2021/12/08 04:02)

コメント一覧

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



2018年11月13日

お気に入りのマンガ

目次: マンガ紹介

お気に入りのマンガ紹介シリーズ。

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

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

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

転生物

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

転生物以外

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

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

編集者:すずき(2022/08/30 23:00)

コメント一覧

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



2018年11月14日

初めてのOpenVX

目次: OpenCL

OpenCV+OpenVXのデモンストレーション(GitHubへのリンク)を動かしてみました。

VirtualBoxのディスクイメージを使えば、何もしなくてもQtEditorとCMakeで簡単にビルド&実行できますが、それだけでは何が何だかわかりませんので、あえて手動でビルドしてみます。

いくつかサンプルが含まれていますが、Harris Cornerと呼ばれる角検出のデモであるsolution_tutrial1を題材にして、ビルド方法と動かし方を書こうと思います。

サンプルコードはGitHubからcloneすればよいです。その際READMEにある通り、tutorial_videosディレクトリを作成して、動画ファイル(リンク先)をダウンロードして入れておくと良いです。

もし既にVirtualBoxで試しているなら、scpなりなんなりでディレクトリごとコピーしても良いです(動画ファイルも入っています)。ホームディレクトリのopenvx_tutorialというディレクトリに入っています。

ビルド

必要なものはOpenCVとOpenVXのライブラリです。

OpenCVのビルドはメチャクチャ面倒くさそうなので、apt-get install libopencv-devでインストールしてしまうのが楽です。

OpenVXはDebianのパッケージになっていないようなので、自分でビルドする必要があります。

Khronosのサイトに「OpenVX 1.2 sample code (updated January 17, 2018). 」があるので、このコードを使います。(Khronosへのリンク

OpenVXサンプル実装ライブラリのビルド
$ tar xf openvx_sample_1.2.tar.bz2
$ cd openvx_sample
$ make -j4

成功するとout/LINUX/x86_64/releaseというディレクトリの下に、libopenvx.soが生成されているはずです。installはやってもやらなくても動かせるので、今回はinstallせずに続行します。

サンプルのビルド

次にサンプルコードをビルドします。

OpenCV, OpenVXサンプルのデモをビルド
$ cd openvx_tutorial/tutorial_exercises/solution_exercise1
$ g++ solution_exercise1.cpp -lopencv_imgproc -lopencv_videoio -lopencv_highgui -lopencv_core -L/path/to/openvx_sample/out/LINUX/x86_64/release -lopenvx

本当はCMakeを使えば依存ライブラリを勝手に調べてくれますし、オプションを手で指定する必要はありませんが、ここではあえて -lオプションでOpenCVとOpenVXのライブラリを明示的に指定しています。

ビルドがうまくいったら実行します。

OpenCV, OpenVXサンプルのデモを実行
$ LD_LIBRARY_PATH=/path/to/openvx_sample/out/LINUX/x86_64/release ./a.out

OpenVXのライブラリを /usr/libなどにinstallしていない場合は、この例のようにLD_LIBRARY_PATHでOpenVXライブラリの場所を教える必要があります。


Harris-corner, tracking Demo

うまくいけば、ウインドウが出て、右下からたくさんの人が歩いてくる動画が出ます。また、検出された角に赤い点が打たれていて、点の動きがトラッキング(黄色い矢印)されている様子が表示されるはずです。

編集者:すずき(2023/09/24 11:56)

コメント一覧

  • よしだあさん(2018/11/27 00:46)
    libopencv-dev とな…!!
    知らんかった。。
  • すずきさん(2018/11/27 22:22)
    そうなんです。Debian 便利です。

    自分が困っていることは、既に世の中の誰かが解決してくれています。一番手になるのは難しいな〜と痛感しますね。
open/close この記事にコメントする



2018年11月15日

Windows 10とSamba

WindowsからアクセスするファイルサーバにはSambaを入れていますが、なぜかWindows 10から接続できるマシンと、接続できないマシンがあって、ずっと理由が分からずほったらかしにしていました。

結論から言えば、Sambaで無効なユーザでログインを試みた際に、ゲストにフォールバックする機能を有効にしていることが原因で、Windows 10がサーバへの接続を拒否していました。

これはSambaのmap to guest = bad userに設定されていると発生します。大抵のディストリビューションでSambaをインストールすると、この設定になっていると思います。設定の意味ですがWindows 10側のユーザ名がAAAAだとして、Samba側のユーザ名にAAAAが存在しない場合、Sambaは不明なユーザをゲストユーザとしてログインさせようとするそうです。

この動きに対してWindows 10は拒否反応を示して、接続を切ってしまいます。不明なユーザなら、ログイン確認画面を開いてユーザ名から確認すれば良いのに、何も出さずに「接続できませんでした」と言ってくる始末です。

問題を解決するにはSambaのmap to guest = neverに設定すれば直りました。Windows 10がユーザ名とパスワードを聞いてくるようになります。

なお、現象の見分け方は、イベントビューア(eventvwr.msc /s)の
[アプリケーションとサービスログ] - [Microsort] - [Windows] - [SMBClient] - [Security]
を見たときに、エラー、イベントID 31017が記録されていて、

Windowsのエラーイベント

安全でないゲスト ログオンを拒否しました。

ユーザー名: 
サーバー名: (サーバのIPアドレス、コンピュータ名などが入る)

ガイダンス:
このイベントは、サーバーがユーザーを未認証のゲストとしてログオンさせようとした結果、
クライアントによって拒否されたことを示します。ゲスト ログオンでは、署名と暗号化などの
標準のセキュリティ機能はサポートされません。このため、ゲスト ログオンは、重要な
データをネットワーク上に漏えいさせる可能性のあるman-in-the-middle攻撃に対して脆弱
です。Windowsでは、ゲスト ログオンは既定で無効になっています。Microsoftでは、安全
でないゲスト ログオンを有効にすることは推奨していません。

こういうエラーが記録されていたら、該当していると思われます。

編集者:すずき(2018/11/17 01:29)

コメント一覧

  • hdkさん(2018/11/17 08:18)
    -in-に色がついていますね :-)
    この設定、たぶん昔のWindowsも同様に拒否されるんだと思います。ウチではいつもユーザー名を指定して接続を使っていました。ファイルコピーが主な用途だったので、OpenSSHが使えるようになった今は外からscp/sftpで済ませてしまいますが...
  • すずきさん(2018/11/17 13:15)
    hdk さん

    色は自動で付けているので…、たまに変になります。お気になさらず。

    昔の Windows でも発生していたかどうかはわからないです。ググっても出てこなかったんですが、困っている人は居ないのかなあ…。

    確かに Windows 10 なら SSH も使えますね。ファイルコピーという意味では等価ですが、Samba なら Windows 側から見たとき、ファイルシステムと統合してくれるのが利点ですね。
  • hdkさん(2018/11/17 21:07)
    あっ、拒否されるというのは昔のWindowsにWindows 10からつなぐと拒否されるのではという意味でした。わかりにくくてすみません。
  • すずきさん(2018/11/17 22:47)
    なるほど、Windows 10 と古い Windows の間でも同じ問題があるってことですね。

    しかしそれだとなおさら同じ問題で困っている人が居そうなものなのですが…。探し方が悪かったかなあ??
open/close この記事にコメントする



2018年11月16日

OSSと仕様書

オープンソース製品の「仕様」 - 赤帽エンジニアブログを読んで。

前職ではLinuxに限らずOSSの仕様について質問されたことは何度かありますが、今同じことを聞かれたら、この記事を紹介したいですね。仕様が〜!と質問してくる人に対して感じていた、モヤモヤ感をスッキリ説明してくれるとても良い内容です。

今は自動車関連の会社に在籍している訳ですが、自動車の考え方と、OSSの考え方は合わなさそうな気がしました。

とはいえ今の時代、ソフトウェア開発において、OSSを完全に無視することはできませんし、OSSの劣化コピーなんて素人が作っても品質悪いだけで、金と時間の無駄なので、どこかうまく折り合いをつける必要があるでしょうね。

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

編集者:すずき(2018/11/27 23:01)

コメント一覧

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



2018年11月17日

挙動のおかしいKindle Fire HD

目次: Kindle

Kindle Fireがおかしいのは今に始まったことではないのですが、いくつかのタイトルのマンガがダウンロードできません。困りました。

Kindle Fireで本をダウンロードする方法は、私の知る限り4つありますが、うまくいったりいかなかったり変な挙動です。

  • ライブラリの作品名クリック: NG
  • Kindleストアの「ダウンロード」(オレンジ色): NG
  • シリーズページの「今すぐ読む」(緑色): OK
  • サンプル版の最後のページから「製品版を購入」: エラー

ちなみにPCとAndroidにもKindleのアプリはありますが、どちらも正常にダウンロードできます。

  • PC版Kindle: OK
  • Android版Kindle: OK

Kindle Fireは安さが魅力的ですが、非常にイマイチな出来です。初代Kindle Fire HDも100冊くらいでハング連発したり起動不能になったり挙動不審でしたし、今使っている第七世代Kindle Fire HDもハングこそしませんが、上記のような変な挙動をします。

Kindleストアで買った本なのに「この書籍はDRMで保護されているので表示できません」エラーが出たこともありました。はあ?何言ってるの??と思って、もう一回表示させたら何事もなかったかのように表示されます。本当に意味不明です。

DRM掛かってる本なんてAmazonの本しかないよ!

Kindle Fire HD復活

最近は、新しく買ったマンガまでダウンロードできなくなってしまい、せっかく買ったのに読めなくて困っています。これはいよいよファクトリリセットか?マンガもアカウント設定も何もかも消えるから、再設定が面倒くさいんだよなーなどと考えていたのですが。

謎の「コンテンツ管理サービス」というアプリのデータを消去したら、ダウンロードできない病が直った気がします。

とりあえずこの状態でしばらく運用してみようと思います。

Kindle Fire HDの代わりは?

Kindleはもう嫌になったので、次は買わないと思います。しかし、困ったことに代わりになりそうなタブレットがありません。

Androidタブレット市場は、Kindleが利益度外視の安値攻勢で全て焼き払ってしまいました。特にマンガを読むのに適した10インチ級のタブレットは、新製品がほとんど発売されません。困ったね……。

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

編集者:すずき(2021/12/08 03:49)

コメント一覧

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



2018年11月18日

ゲーミングスマホ

ASUS、ゲーミングスマホ「ROG Phone」を11月23日に発売 - ケータイWatch を読んで。

ゲーミングスマホを見ていると、割と高い(11万円)し、ゲーム画面が小さいし、これ売れるのかな?と思いますけど、スマホに吸収された機能って、何だかんだ言われつつ最後には駆逐されているし、いずれゲーム機もスマホに吸収されるんですかね?

スマホは「独自」と「最高性能」が売りで、ゲーム機は「均一」と「最低性能を保証」が売りで、設計の方向性の違いがあるので、個人的にはしばらくはゲーム機の置き換えは難しいだろうと踏んでいますけども。

PCの代わり?

FacebookでゲーミングPCの延長線ではないかというコメントを貰いました。言われてみればゲーム機というより、PCに近い設計思想だなと思いました。

スマホが当たり前の世代だと、PCを触ったことのない人も多いと聞くので、ゲーミングPCがそのうちスマホに喰われるかもしれませんね。

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

編集者:すずき(2018/11/27 23:37)

コメント一覧

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



2018年11月24日

電車広告

山手線の新型車両の車内広告は、横並びの3つの液晶ディスプレイを使いますが、各社で広告の見せ方が違って面白いです。

左から並べたとき、

  • 動画A、B、C(日テレ、日産)
  • 動画A、A、A(シスコ、モビット)

動画、静止画の混在パターンもありました。

  • 静止画a、動画A、静止画a(Google、JR)
  • 動画A、静止画a、動画A

静止画のみのパターンもあります。

  • 静止画a、b、c(シースリー)
  • 静止画a、a、a(官公庁)

不思議なもので、3画面全て動画じゃなくても見栄えはします。しかし同じ静止画にされると、映っているものに関わらず、手抜き感を強く感じます。

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

編集者:すずき(2018/11/27 23:42)

コメント一覧

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



2018年11月28日

ROCK64のアナログオーディオ - その4 - I2S1が動かない問題解決

目次: ROCK64/ROCKPro64

先日(2018年11月11日の日記参照)の続きです。linux-nextでROCK64のI2S1が動きました。残る問題は2つでした。

  • I2S1はなぜか動かない
  • I2S2はSPDIFと資源が衝突して認識しない → 2018年11月11日に解決
  • ACODECはTRMに何も情報が載っていない

1番目の「I2S1はなぜか動かない」の原因が判明しました。

I2S1だけ死んでいた原因は、日記のコメントでT4さんに指摘いただいていた通り、RK3328のクロックゲートの定義がバグっていたことでした。linuxの開発MLに修正パッチをブン投げておきました。先週のどこかで取り込まれたっぽいです。良かった。

RK3328のクロック分周器はかなり対応範囲が広いので、単純にシステムクロック=fs * 256とすれば、44.1kHz系を再生するときシステムクロックが11.2896MHzになり、48kHz系を再生するときシステムクロックが12.288MHzになって、うまく再生されるだろうと考えました。

やってみると48kHz系は正常に動作しますが、44.1kHz系を流すとEINVALを返してきて、なぜかACODECまでおかしくなり、リセットするまで一切音が出なくなります。イケてないです。

クロックのレジスタはGPLL * 147 / 6400 = 11.2896MHzに正しく設定されているのに、なぜかクロックドライバは11.289599MHzだと報告してくるので、サウンドドライバが44.1kHzの整数倍じゃないと判定してEINVALを返しています。

良く見るとGPLLの周波数も491.519999MHzという変な値になっています。なぜ491.52MHzじゃないのか?491.52MHzなら先ほどの割り算は割り切れるはずなんですけどね。

あと44.1kHz系を再生するとACODECがおかしくなる仕組みも謎です。ACODECとクロックに何か関係があるのだろうか?また今度追ってみますか。

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

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

コメント一覧

  • T4さん(2018/12/04 10:00)
    まずは、おめでとうございます。

    いきなりですが、本題にはいります
    https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next/+log/master/include/dt-bindings/clock/rk3328-cru.h
    https://github.com/rockchip-linux/kernel/commits/release-4.4/include/dt-bindings/clock/rk3328-cru.h

    上の二つを見比べてみて下さいな
    (上のには、如何にも日本人ぽい人がいるが 貴方かな?)

    ---

    オイオイ、一年も前に解ってた話じゃないか
    私は、これみてムッときたね。
    *) 前回の11日時点では既に解かってたけど、敢えて書かなかった
     あまりネタばらしが過ぎると、貴方の楽しみを奪うことになるからね

    以前、Torvalds が、"メンテも碌にしないくせにツリーにだけは入れたがる" って中指立てて怒ってた
    その気持ちが、私にもよくわかるよ。

    ---

    > 11.289599MHz だと報告してくるので…
    律儀に端数まで返してくるので、こんなの↓使って誤魔化してるみたいよ
    sound/soc/rockchip/rockchip_i2s.c
     div_bclk = DIV_ROUND_CLOSEST(mclk_rate, bclk_rate);
    うろ覚えなので、もしかしたらハズレかもしれない…
  • すずきさん(2018/12/05 02:04)
    ありがとうございます。Linux のコミットログに出ている名前は私ですね。

    クロック周りではありませんが RK3228 がデグレしたというメールも貰っているので、私のような素人がいじるより Rockchip の人たちが linux-next に入れてくれれば良いんですけども…。

    DIV_ROUND_CLOSEST は rockchip-linux を見ているときに発見しましたが、まだ試していないです。こんなんで動くならもうそれでいいかとも思っています。。。
  • すずきさん(2018/12/05 02:19)
    RK3228 じゃなくて RK3288 だった。
  • T4さん(2018/12/05 09:20)
    やっぱり貴方でしたか、ご苦労さまでした。

    > クロック周りではありませんが RK3228 がデグレしたというメールも貰っているので…
    > Rockchip の人たちが linux-next に入れてくれれば良いんですけども…。
    望み薄だと思うな
    ビジネス上必要だから仕方なくやってるだけで、貢献しようとか言う気持など 更々無いようにしかみえない。

    ----

    > 整数倍じゃないと判定して EINVAL を返しています。

    DIV_ROUND_CLOSEST で効果あるのは↑部分だけだね、次に進めるようになるだけで↓には効果なしです

    > なぜか ACODEC までおかしくなり、リセットするまで一切音が出なくなります

    そもそも詳細仕様が不明だから、対処方法は人夫々になるだろうね
    コレが正解というのは無いと思う。

    私も、該当の症状が消えた時点で その対処方法で良し として、
    もうそれ以上は追ってない。
  • すずきさん(2018/12/10 12:33)
    Linux に contribute するかどうかは、
    企業の判断によるので、仕方ないですね…。

    rockchip-linux があるだけマシなのかもしれません。

    ACODEC はまだ追っていませんが、TRM に仕様も何もないので、
    ご指摘の通り、正解は不明ですね。Rockchip の方々が登場するまでは、
    とりあえず動けば良いんじゃないかと思っています。
open/close この記事にコメントする



2018年11月29日

ROCK64のアナログオーディオ - その5 - アナログオーディオが動かない問題解決

目次: ROCK64/ROCKPro64

先日(2018年11月28日の日記参照)の続きです。linux-nextでROCK64のアナログオーディオ出力から音が出ました。残る問題は1つでした。

  • I2S1はなぜか動かない → 2018年11月28日に解決
  • I2S2はSPDIFと資源が衝突して認識しない → 2018年11月11日に解決
  • ACODECはTRMに何も情報が載っていない

3番目の「ACODECはTRMに何も情報が載っていない」を回避しました。

ACODECはI2S信号をアナログオーディオ信号に変換するハードウェアです。仕様を秘密にするようなハードウェアではないと思いますが、TRM(Technical Reference Manual)に記載がありません。無いものは仕方ないので、rockchip-linuxからドライバを移植しました。

残念ながらrockchip-linuxはカーネルバージョンが4.4と古く、ACODECドライバをlinux-nextに持ってきてもビルドできませんので、適当に直しました。ALSA SoCのドライバを作った経験があって良かった。うん。

とりあえずアナログオーディオは動いたのですが、昨日の日記にも書いた通り、44.1kHz系を再生するとACODECがおかしくなる仕組みは謎のままなので、まだ完成とは言えないです。

ROCK64はまだまだおもちゃとして遊べそうです。

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

コメント一覧

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



こんてんつ

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 サイトの情報