Raspberry pi3のシステムタイマーの周波数を1000Hzにする

実は1年くらい前からRaspberry pi3を少しだけいじっているんです。
というのも、ハードのMIDIシーケンサーってもう新品で売ってないじゃないですか。
かといってノートPCとかスマホとかタプレットとかは組み込み的には使えない。
じゃあRaspberry piならLINUXだしMIDIシーケンサー入れれば
使えるんじゃないですかね?

と思ってRaspberry pi3買ったんです。
そして、MIDIを扱えるソフトをインストールしたんですね。
Rosegardenというソフトです。
そしたらなんか警告が出るんですよ。
画面のキャプチャをとってないのが悔やまれますが、
英語なら「System timer resolution is too low」
日本語なら「システムタイマーの解像度が低いです」
とかそんな感じです、確か。

色々調べるとRaspbianでは100Hzに設定されている
システムタイマーの周波数を1000Hzにしろと言うことらしい。
最初は環境設定的なもので変更できるのかと調べたら、
詳しいことはわからないけどカーネルをビルドしろと書いてある。
カーネル?ケンタッキー?くらいによくわからないけど
しろというなら調べてやってやろうではないか。
さあ死闘の始まりです。

が、死闘の内容を書いても資料的に価値がないので
それは最後に。まずは成功した方法を書いておきます。
後で見返す自分のために。

(多分)最短手順

2017.11
Raspbian Kernel4.9
で作業

Raspberry piのターミナルもしくは
sshでログインしたターミナルより

sudo apt-get update
sudo apt-get install bc
sudo apt-get install ncurses-dev

ここまでRaspberry pi側の準備

uname -r

現在Raspberry piで動いているカーネルのバージョン表示。
「4.9.41-v7+」と出た。

cd /usr/src
sudo su
git clone --depth 1 https://github.com/raspberrypi/linux.git -b rpi-4.9.y

末尾のrpi-4.9.yはunameで調べたバージョンと
ここのBranchで選べるやつで二つ目の数字まで合わせる。

git clone --depth 1 https://github.com/raspberrypi/firmware.git
cd linux
modprobe configs
zcat /proc/config.gz > .config
cp ../firmware/extra/Module7.symvers Module.symvers

ここまでファイルの準備。
コンフィグファイルを編集します。

make oldconfig

何か聞かれた時にはyを連打してしまったがよかったのだろうか…

make menuconfig

Kernel Features→Timer frequencyで1000Hzを選ぶ
Saveを忘れないこと。

いよいよビルドします。

make -j4 zImage modules dtbs

長いです。一例ですが1時間15分くらいでした。
Raspberry piの温度を調べたらビルド中はずっと80度以上でした。怖い。
別のターミナルを立ち上げて
温度を見る vcgencmd measure_temp
CPUクロックを見る vcgencmd measure_clock arm
で見られる。

make modules_install
cp arch/arm/boot/dts/*.dtb /boot/
cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
cp arch/arm/boot/dts/overlays/README /boot/overlays/
cp /boot/kernel7.img /boot/kernel7.img.old
scripts/mkknlimg arch/arm/boot/zImage /boot/kernel7.img
reboot

以上で、Rosegardenを起動しても警告が出なくなりました!
現在のタイマーの数値を表示するコマンドがわからないのですが、
まあ警告出てないんだからきっと大丈夫でしょう!

余談

最初は別のLinuxでクロスコンパイルというのをしようとしていたのですが、
ビルドのところでどうしてもエラーで進めなくなってしまいあきらめました。
書いてみたら2行ですが、3日くらい分の余剰時間をこれに費やしました。

以下、参考にした先人のページです。多謝!
Raspberry Pi + kernel 4.1 / 4.4 / 4.9 系列で5GHz対応WifiドングルGW-450Dを動かした
ビルドの流れは主にこちらを参考にさせていただきました。

2017-11-19 0.30.11
さて、これで問題なく動いてくれるとイイナー。

作成者: necobit(ねこびっと)

音楽と電子工作でMIDI寄りものづくりをするユニット。MIDI制御基板の開発・販売、製品作例として自動演奏化楽器の展示・音とメカのパフォーマンスを行なっています。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください