Raspberry Pi (Jessie)のapt-get upgradeについて
2016-09-14
Raspberry Pi (Jessie)のカーネルを使用して「sudo apt-get upgrade」を実行すると、LazDriverが使用できなくなります。
その時の対応方法に関する記事です。
sudo apt-get upgradeを実行するとLazDriverが動作しなくなる理由
sudo apt-get upgradeを実行すると、/boot/*.dtbのファイルが上書きされます。このファイルは、Rspberry PiのSPIの端子を無線モジュールに割り当てるための定義ファイルであり、Lazurite用にカスタマイズしたものを配布しています。updateにより、この定義ファイルが書き換えられてしまうために、無線モジュールが使用でキナなります。
確認方法
必要なソフトウエアのインストールしてください
sudo apt-get install device-tree-compiler
確認をするためのコマンドは以下のとおりです
Raspberry Pi3用
dtc -I dtb -O dts /boot/bcm2710-rpi-3-b.dtb
Raspberry Pi2用
dtc -I dtb -O dts /boot/bcm2709-rpi-2-b.dtb
これらのコマンドを実行した際に表示されたspidev@0が”bp3596_spi”になっていればOKです。
・NGの例
[bash]
spidev@0 {
compatible = "spidev";
reg = <0x0>;
#address-cells = <0x1>;
#size-cells = <0x0>;
spi-max-frequency = <0x7a120>;
phandle = <0x2e>;
;
[/bash]
・OKの例
[bash]
spidev@0 {
compatible = "bp3596_spi";
reg = <0x0>;
#address-cells = <0x1>;
#size-cells = <0x0>;
spi-max-frequency = <0x7a120>;
phandle = <0x2e>;
};
[/bash]
NGの時の修正方法
1. 次のコマンドを実行してください
[bash]
cd ~/linux
make dtbs
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
[/bash]
- 続いて再起動します。
[bash]
sudo reboot
[/bash]
3. ドライバをビルドするファイルの設定
再起動したら、ドライバをビルドするためのフォルダの設定を行います。
uname -rを実行し、現在使用されているバージョンを取得します。
[bash]
uname -r
4.4.13-v7+
[/bash]
この場合は、以下のコマンドでbuildフォルダにリンクをはります。
sudo ln -s /home/pi/linux /lib/modules/4.4.13-v7+/build
確認方法
ドライバのビルドを行ってください
cd ~/driver/LazDriver
make
これがうまくいかない場合は、「3. ドライバをビルドするファイルの設定」を確認してください。
続いて、ドライバをloadします。
sudo insmod ~/driver/LazDriver/lazdriver.ko
カーネルログを確認してください。
dmesg
以下のようなログが表示されたら設定はすべて成功しています。
[bash]
[ 2259.434960] [HAL] lzpi_rf_main_th thread start pid=1836
[ 2259.435049] [HAL] lzpi_rx_led_thr thread start pid=1837
[ 2259.435088] [HAL] lzpi_tx_led_thr thread start pid=1838
[ 2259.444648] [drv-lazurite] End of init
[/bash]
ロードしたドライバは次のコマンドでカーネルから外すことが出来ます。
sudo rmmod lazdriver
以上です。