×

Raspberry Pi (Jessie)のapt-get upgradeについて

2016-09-14

Raspberry Pi (Jessie)のカーネルを使用して「sudo apt-get upgrade」を実行すると、LazDriverが使用できなくなります。
その時の対応方法に関する記事です。

raspi3

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の例


spidev@0 {
    compatible = "spidev";
    reg = <0x0>;
    #address-cells = <0x1>;
    #size-cells = <0x0>;
    spi-max-frequency = <0x7a120>;
    phandle = <0x2e>;
;

・OKの例


spidev@0 {
    compatible = "bp3596_spi";
    reg = <0x0>;
    #address-cells = <0x1>;
    #size-cells = <0x0>;
    spi-max-frequency = <0x7a120>;
    phandle = <0x2e>;
};

NGの時の修正方法

1. 次のコマンドを実行してください

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/
  1. 続いて再起動します。

sudo reboot

3. ドライバをビルドするファイルの設定

再起動したら、ドライバをビルドするためのフォルダの設定を行います。

uname -rを実行し、現在使用されているバージョンを取得します。


uname -r

4.4.13-v7+

この場合は、以下のコマンドで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

以下のようなログが表示されたら設定はすべて成功しています。


[ 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

 

ロードしたドライバは次のコマンドでカーネルから外すことが出来ます。

sudo rmmod lazdriver

以上です。