|
BBBBox_WDT †BeagleBoneBlack Boxにはハードウェアウォッチドックタイマ(以下WDT)が搭載されています。
WDTの使い方 †(1)電源投入時 †BeagleBoneBlack 起動には P9_30番ピンは PullDown有りの入力になっています。ところがこの状態では内蔵Auto Reset Oscillatorが働かず1.6秒後にリセットされてしまいます。そこで電源投入直後に P9_30番ピンを PullUp/PullDown 無しの入力 = ハイ・インピーダンスにする必要があります。 U-BOOT(MLO)の改造 †改造後のビルド済み MLO はこちら(v2014.07 を 2014-09-10 にビルドした) ソースから自分でビルドする場合 u-bootの2段ブートのうち、前段であるMLOソースを改造してビルドし直します。
void set_mux_conf_regs(void) { __maybe_unused struct am335x_baseboard_id header; if (read_eeprom(&header) < 0) puts("Could not get board ID.\n"); enable_board_pin_mux(&header); + puts("ebihara custom. GPIO3_16 (P9_30) as WDT_IN ("__DATE__" "__TIME__")\n"); + writel((1<<5)|(1<<4)|(1<<3)|(7),0x44e10800+(0x198)); // 0x3f,0x44E10998 } 改造後MLOのインストール方法 †作業はBBB単体で行います。6pinUSBシリアルケーブルを接続します。 RevAからRevB (Angstrom)の場合 †MLOは eMMCの第一パーティションに存在します。Angstrom を起動後、しばらく待つと /media/BEAGLEBONE に自動マウントされます。 /dev/mmcblk0p1 on /media/BEAGLEBONE type vfat 注意: たまに /media/BEAGLEBONE_ に自動マウントされることもあります # cd media/BEAGLEBONE (または /media/BEAGLEBONE_) # mv MLO MLO-backup オリジナルのMLOをバックアップ # cp /どこかのパス/MLO . どこかのパスからMLOを持ってくる # cd / / へ移動 # sync 念のためsync 再起動。 RevC (debian)の場合 †MLOは eMMCの第一パーティションに存在します。debian を起動後、しばらく待つと /boot/uboot に自動マウントされます。 # cd /boot/uboot # mv MLO MLO-backup オリジナルのMLOをバックアップ # cp /どこかのパス/MLO . どこかのパスからMLOを持ってくる(scpなどで) # cd / / へ移動 # sync 念のためsync 再起動。 MLOが更新されたかの確認 †起動2行目に "ebihara custom" の文字列が確認できればOK U-Boot SPL 2014.07-dirty (Sep 10 2014 - 18:35:03) ebihara custom. GPIO3_16 (P9_30) as WDT_IN (Sep 10 2014 18:35:30)
(2)WDTクリアタスク †以後は RevA,B,C (Angstrom, Debian共通)
シェルスクリプトで組んだ wdt有効&クリアタスク。Linux上のGPIO番号112 を out に設定するとwdtが有効になります。その後1秒毎に 1 / 0 を切り替えてWDTをクリアする。 #!/bin/sh # WDT enable echo 112 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio112/direction # WDT clear while true do echo 1 > /sys/class/gpio/gpio112/value echo wdt_1 sleep 1 echo 0 > /sys/class/gpio/gpio112/value echo wdt_0 sleep 1 done
(3)WDT disable †シェルスクリプトで組んだ wdt disable。Linux上のGPIO番号112 を入力にするとWDTが無効になります。 MLOでPullUp/PullDown無しとしているのでハイインピーダンスとなり、Auto Reset Oscillatorの働きによって以後はWDT自動クリアとなる。 #!/bin/sh echo in > /sys/class/gpio/gpio112/direction Angstrom以外のディストリビューションを使う場合 †BBBはmicroSDが刺さっていても内蔵eMMCのMLOから起動します。
WDT対応にするためにはBBB内蔵のeMMCのMLOを書き換えれば良いことになります。 その他 †
関連 †
自動リンク 社外リンク
|