0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

BH3 高速シャットダウンシーケンス

Last updated at Posted at 2021-08-26

####BH3(産業用RaspberryPi)の高速シャットダウンシーケンスについて説明します。

  1. BH3 の電源切断時に GPIO の 23 番(INPUT モード)が H レベル(1)から L レ
    ベル(0)になります。

  2. 常駐プログラム「/usr/local/sbin/shutdownSensor」が 1.の割り込みを受けて次
    のスクリプトを実行します。
    ●/usr/local/sbin/fastshutdown
    ●/usr/local/sbin/__fastdown-function(fastshutdown から呼ばれます)

  3. 開始時間をログに出力します。(高速シャットダウンの処理時間を計測するため)
    出力先: /var/log/fastshutdown.log
      Start time: (/proc/uptime の内容)

  4. ディスプレイの信号を OFF にします。

  5. /usr/local/sbin/system-stop-use-usb スクリプトを実行します。
    (10 秒経過するとタイムアウトとなり、強制終了します)

  6. USB コントローラの電源を OFF にします。(シャットダウン時の消費電力を減らすため、有線 LAN と USB に接続された機器を利用不可にします)

  7. /usr/local/sbin/system-stop スクリプトを実行します。
    (10 秒経過するとタイムアウトとなり、強制終了します)

  8. 現在の時刻を保存します。
    (RTC が接続されていない場合でも動作可能にするため)

  9. 全てのプロセスを正常終了させます。

  10. メモリ上のデータの内容を強制的にディスクに書き込みます。

  11. 全てのプロセスを強制終了します。

  12. 終了時間をログに出力します。(高速シャットダウンの処理時間を計測するため)
    出力先: /var/log/fastshutdown.log
       End time: (/proc/uptime の内容)

  13. メモリ上のデータの内容を強制的にディスクに書き込みます。

  14. マウントされているすべてのファイルシステムを読み込み専用モードで再マウントします。

  15. GPIO の 23 番(INPUT モード)が H レベル(1)の場合はシステムを再起動、L レ
    ベル(0)の場合はシステムを停止します。(ユーザが誤って AC 電源を切ってしまい、シャットダウンプロセスが走り始めたのに AC 電源を復旧させたようなケースを想定)

高速シャットダウン時に任意のコマンド(独自に作成したプログラムなど)を実行したい場合は、次のスクリプトに任意のコマンドを追加します。
/usr/local/sbin/system-stop

任意のコマンド内でネットワークと通信する処理や USB を利用した処理(有線 LANや 無 線 LAN の利用 、 USB メモリへのファイル保存など ) を行う場合は「/usr/local/sbin/system-stop」に記述せずに次のスクリプトに任意のコマンドを追加します。
/usr/local/sbin/system-stop-use-usb

system-stop スクリプトと system-stop-use-usb スクリプトは 10 秒以内に処理を完了してください。10 秒経過するとタイムアウトとなり、強制終了します。タイムアウトの秒数は次のスクリプトで変更可能です。
/usr/local/sbin/__fastdown-function

timeout -s 9 /usr/local/sbin/system-stop-use-usb # 9はタイムアウトの秒数
timeout -s 9 /usr/local/sbin/system-stop         # 9タイムアウトの秒数

高速シャットダウン時に独自に作成したプログラム内でファイルのクローズ処理などを行う場合は、kill シグナルの割込みを受けてファイルのクローズ処理を行います。system-stop スクリプトまたは system-stop-use-usb スクリプトに killall コマンドなどを追加して、高速シャットダウン時に独自に作成したプログラムに対して kill シグナルが送られるようにします。
追加例:
/usr/local/sbin/system-stop

killall <独自に作成したプログラム名>

OS 起動中に予期しないリセットが発生しないようにするため、常駐プログラム「/usr/local/sbin/shutdownSensor」の起動時(OS 起動時)に GPIO の 18 番(OUTモード)を H レベル(1)にし、シャットダウン完了までそのままの状態を保持しています。

DSCF0562.JPG
ビズライト・テクノロジー社製BH3

BHシリーズは、株式会社ビズライト・テクノロジーが開発・生産する、シングルボードコンピュータの実用化した商品です。BHシリーズではRaspberryPiを産業利用するための対策が施されています。詳しくは、こちらをご覧ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?