大破雑記帳

個人用メモな雑記ブログ いろんなことをざっくりと。

HDL-XV R8C関連メモ

Linux Kernel

serdev

  • serdev受信時のcountは末尾の \0 を含まない
    • strscpy() でコピーする場合は \0 終端分を含めた count + 1 を渡す
      • この時、serdevのbuf内のcountと同じ長さである有効データが \0 で終端されていない場合、コピー先は有効データが \0 で終端されて返されるが戻り値が -E2BIG になることに留意する
  • serdevの受信バッファはcount上限以降に無関係のデータが付いていることが度々ある?
    • count内の有効データが \0 で終端されておらず、何も考えずにコピーすると無関係データを巻き込んで事故る
    • 他の用途のバッファと共用している?
      • count以降にEthernetやBlockデバイス絡みの文字列が混じることがある

input

  • 同一キーコード (KEY_*, BTN_*, SW_*, etc?) に対する、一つ前と同じ入力値は、input_event() (+ input_sync()) による送信を受けてもhandler等へのイベント送信を発生させない?
    • input_dev.keycode の登録状況に依存する?
    • input_dev側で前回の値を保持している可能性があり、初期値も input_event() または input_report_*() により送信されないと、実際の初期値からLinux Kernel側における初期値と同値へと変化した場合にLinux Kernel側で変化が検出できず、handler等へのイベント送信が発生しない可能性
      • 例:

        初期 初回変化 結果
        実: pressed (1)
        Linux: released (0)
        実: released (0)
        Linux: released (0)
        不検出

R8C

  • ボタン押下のタイミングによっては、コマンドのリプライとイベントコードが個々の \0 終端無しの改行による連続データで送られてくることがある?