GPIOピンの1つからPulse Per Second(PPS)入力にアクセスできるRaspberry Pi 3用のLinuxイメージを構築するためにBuildrootを使用しています。
まず、標準のRaspbianディストリビューションでこれを試して、次の変更を適用して機能するようにしました。
- に追加してください
dtoverlay=pps-gpio,gpiopin=20
。/boot/config.txt
- に追加してください
pps-gpio
。/etc/modules
次に、/dev/pps0
PPS信号を含むワイヤをRPi3の物理ピン38に接続して実行すると、pps-test /dev/pps0
予想される1秒あたり1つの信号が得られます。今まではそんなに良くなった。
今私はBuildrootで構築した私のイメージを使って再作成したいと思います。デフォルトconfigs/raspberrypi3_64_defconfig
設定を使用しましたが、次のように変更しましたmake nconfig
。
rpi-4.14.y-rt
カーネルブランチの使用github.com/raspberrypi/linux
systemd
初期化システムとして/dev management using udev (from systemd)
Target packages
->Hardware handling
->pps-tools
有効
(私が変更した内容はこれがすべてのようですが、何か忘れてしまったことがあるかもしれません。)
私が得た出力にはsdcard.img
ブートパーティションのファイルが表示されます。この行をファイルにpps-gpio.dtbo
追加しました。また、ファイルシステムに入れたファイルに対応する行を追加しました。dtoverlay=pps-gpio,gpiopin=20
config.txt
pps-gpio
pps.conf
/etc/modules-load.d
システムを起動すると何も得られませんが/dev/ppsX
、実行すると次lsmod
のような項目が表示されます。
pps_gpio 16384 0 pps_core 20480 1 pps_gpio
dtoverlay
これは正しくロードされたことを意味しますか?資格を得るにはどうすればよいですか/dev/ppsX
?
答え1
欠けているのはmake nconfig
オプションでもあります。
Kernel
->Build Device Tree with overlay support
また、セクションが次のように見えるようにファイルに<buildroot>/board/raspberrypi3-64/genimage-raspberrypi3-64.cfg
ファイルを追加します。pps-gpio.dtbo
image boot.vfat
image boot.vfat {
vfat {
files = {
"bcm2710-rpi-3-b.dtb",
"bcm2710-rpi-3-b-plus.dtb",
"bcm2837-rpi-3-b.dtb",
"rpi-firmware/bootcode.bin",
"rpi-firmware/cmdline.txt",
"rpi-firmware/config.txt",
"rpi-firmware/fixup.dat",
"rpi-firmware/start.elf",
"Image"
}
file overlays/pps-gpio.dtbo {
image = "rpi-firmware/overlays/pps-gpio.dtbo"
}
}
size = 32M
}
以下にファイルを入れる必要はありませんpps.conf
。etc/modules-load.d
この変更により、/dev/pps0
システムの起動時に自動的にデバイスが作成されます。