電気回路/zynq/自動起動の設定 の変更点
更新- 追加された行はこの色です。
- 削除された行はこの色です。
- 電気回路/zynq/自動起動の設定 へ行く。
- 電気回路/zynq/自動起動の設定 の差分を削除
[[電気回路/zynq]]
* 電源投入後に初期化&アプリケーションを自動実行する [#v9672a1a]
- FPGA ロジックのプログラム
- 各種 dtso のデバイスツリーへの組み込み
- 初期化スクリプトの実行
- アプリケーションの実行
をしたい。
** 目次 [#seefcc4e]
#contents
* /etc/init.d と /etc/rc5.d を使う [#rfb55e43]
この際 systemd を使ってみようかしら、とも思ったけれど
- https://dev.classmethod.jp/cloud/aws/service-control-use-systemd/
- https://qiita.com/ledmonster/items/5f2e1633d4124cb978fe
何だかややこしいので Sysvinit でお茶を濁すことにする。
LANG:console
$ runlevel
N 5
通常起動時の runlevel は 5 なので、/etc/init.d に起動スクリプトを置いて、
そこへのシンボリックリンクを /etc/rc5.d に作っておく。
/etc/init.d/fpga : https://github.com/osamutake/zynq-utils/tree/master/src/fpga
を用意し、
LANG:console
$ ln -s /etc/init.d/fpga /etc/rc5.d/S00fpga
することで、起動時に
- /boot/design*.bin を fpga-program する
- /boot/dtso/*.dtso を dto する
- /boot/fpga_init.d/* に start を付けて実行する
を行えるようになった。
後は、
/boot/fpga_init.d/10_gpio1
LANG:sh
#!/bin/sh
do_start () {
if [ ! -e /sys/class/gpio/gpiochip901 ]; then
echo "ERROR: /sys/class/gpio/gpiochip901 not found."
exit 1
fi
for n in 901 902 903 904 905
do
echo $n > /sys/class/gpio/export
done
}
do_stop () {
if [ ! -e /sys/class/gpio/gpiochip901 ]; then
echo "ERROR: /sys/class/gpio/gpiochip901 not found."
exit 1
fi
for n in 901 902 903 904 905
do
echo $n > /sys/class/gpio/unexport
done
}
case $1 in
start)
do_start
;;
stop)
do_stop
;;
*)
echo "Usage: $0 {start|stop}"
exit 2
;;
esac
/boot/fpga_init.d/80_lcd-show-ip
LANG:sh
#!/bin/sh
do_start () {
lcd-show-ip
}
do_stop () {
true
}
case $1 in
start)
do_start
;;
stop)
do_stop
;;
*)
echo "Usage: $0 {start|stop}"
exit 2
;;
esac
のようにして起動スクリプトを追加していけばいい。
作業履歴へ戻る → [[電気回路/zynq]]
* コメント・質問 [#g1487be2]
#article_kcaptcha
Counter: 2617 (from 2010/06/03),
today: 1,
yesterday: 1