Closed
Description
特定の条件下ではrtcounterが使用できない場合があります。詳しくは以下の「考えられる原因と対処方法」に書いていますが、CPUのgovernorをpowersave
に指定し、CPUクロックを下げることでエラーを回避してrtcounterを使用することができるようになります。
環境
Raspberry Pi 3 Model B
OS
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
$ uname -a
Linux ubuntu 4.15.0-1027-raspi2 #29-Ubuntu SMP PREEMPT Wed Oct 24 08:56:30 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
rt-net/RaspberryPiMouse のバージョン
$ git log -n 1
commit 864acceef45eac90b0c7f8342e0371468ea67e62
現象
i2c-tools
でデバイスに直接アクセスしようとしてもRead faild
となる
$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: 10 11 -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
$ sudo i2cget -y 1 0x10 0x10 w
Error: Read failed
デバイスドライバをインストールする際にrtcounter
がnot found, or wrong
となる
$ cd RaspberryPiMouse/src/drivers/
$ make
$ sudo insmod rtmouse.ko
$ dmesg
[ 70.775579] rtmouse: loading driver...
[ 70.776570] rtmouse: rtcounter not found, or wrong i2c device probed
[ 70.777546] rtmouse: rtcounter not found, or wrong i2c device probed
[ 70.886544] rtmouse: mcp3204 probed
[ 70.886606] rtmouse: 15 devices loaded.
[ 70.886610] rtmouse: module installed at 4294910017
I2Cの波形
エラーが出る場合のI2Cの波形
エラーが出ない場合のI2Cの波形
考えられる原因と対処方法
今回使用した環境では、デフォルトでI2Cのbaudrateは100kHzですが、CPUのクロックが600MHzまで下がるとI2Cのbaudrateが62.5kHzまで下がるようです。
I2Cのbaudrateを62.5kHzまで下げるとrtcounter
へのアクセスに失敗しません。以下の方法でCPUのクロックを下げ、I2Cのbaudrateを62.5kHzにすることができます。
$ sudo apt install cpufrequtils
$ sudo cpufreq-set -g powersave
参考
- I2Cのbaudrate
- CPUのクロック設定について