隠居日録

隠居日録

2016年(世にいう平成28年)、発作的に会社を辞め、隠居生活に入る。日々を読書と散歩に費やす

FreeBSD NanoPi NEO2上でpowerdが使えるようになった

FreeBSDにはpowerdという機能があり、CPUの負荷状況をモニタリングして、CPUのクロックを制御してくれる。この機能を使うにはcpufreqがkernelに必要で、arm/Allwinner - FreeBSD Wikiを見る限りはAllwinnerでも使えるように見える。しかし、NaoPi NEO2を普通に立ち上げてもcpufreqは有効にならず、powerdを実行すると"no such file or directory"のエラーが出てしまう。これも、なぜ使えないのだろうと、ずーと気になっていた。Linuxでは同等の機能は特別な設定なしで使えていたので、不思議だったのだが、ようやく解決方法が分かった。

D20129 Add support for NanoPI NEO2

b.hatena.ne.jp

これもまた、dtbを読み込まないと、cpufreqが有効にならないようなのだ。/boot/loader.confを修正して、ftd_overlayに設定を追加して、ようやく使えるようになった。

fdt_overlays="sun50i-h5-opp,sun50i-h5-sid,sun50i-h5-ths,sun50i-h5-nanopi-neo2-opp"

この設定でcpufreqが有効になったので、powerdの動作を暫く見ていたが、一度bsdtarがcore dumpした以外は問題は特になさそうだ。bsdtarの問題もcore dumpを読み込んでもスタックのバックトレースが表示できないので、何が起きたかわからず、powerdに関連する問題かどうかはわからなかった。

2020/8/6追記
LTSではないNanoPi NEO2のfdt_overlaysにsun50i-h5-nanopi-neo2-oppを加えると、周波数が1152MHzまで設定されるようで、この場合動作が不安定になるようだ。make buildworldで以下のようなエラーが出るようになった。

c++ -Wno-c++11-extensions  -c /usr/src/contrib/llvm/lib/TableGen/Main.cpp -o TableGen/Main.o
error: unable to rename temporary 'TableGen/Main-f9ece819.o.tmp' to output file
      'TableGen/Main.o': 'No such file or directory'
1 error generated.
*** Error code

何度かmakeを試したが、エラーになるファイルは毎回違っていた。sun50i-h5-nanopi-neo2-oppを削除して、起動すると、設定可能は周波数は816、648と408なるようで、これだとエラーは発生しないようだ。