« XILINXのJTAG to AXI masterの使い方 | トップページ | XILINXのJTAG to AXI masterのプロトコル »

2018.11.25

Cosmo-Z Miniのファームウェアアップデート・スクリプトを作った

ZYNQ搭載の小型高速ADCシステム「Cosmo-Z Mini」のシステムは、boot.binや、メインのelfファイル、Webブラウザで動くアプリケーションなど様々なファイルで成り立っています。

こういったファイルを一括で更新するためのスクリプトを作成しました。

1527731222_1525757428_cszmini_sma_f

アップデート方法の詳細は

http://www.cosmoz.jp/update.html

のページに記載しましたが、wgetに-q -Nオプションを付けて、サーバから最新の更新スクリプトをダウンロードしてきます。

-qは進捗を画面に表示させないオプション、-Nは、サーバとローカルで日付を比較して、サーバのほうが新しければダウンロードするというオプションです。

そして、ダウンロードしたスクリプトを実行するのですが、ダウンロードしたスクリプトの中もwget -q -Nの羅列となっています。

また、

echo "  Enter [y|yes|YES] to execute."
read input

でユーザ入力を促して、

if [ -z $input ] ; then
	echo "  コンフィグは行われませんでした。"
elif [ $input = 'yes' ] || [ $input = 'YES' ] || [ $input = 'y' ] ; then
	chmod 600 /home/share/cszmain.elf
	echo "Stopping 'cszmain.elf' process."
	killall cszmain.elf
	echo "Check and download firmware '$BITFILE'"
	wget $WGETOPTION http://www.cosmoz.jp/files/$BITFILE -O /tmp/tmp.bit
	if [ $? -ne 0 ] ; then
		echo "file not found."
		exit 1
	fi
	echo "Wait more 2sec"
	sleep 2s
	echo "Execute configuration via /dev/xdevcfg. Sorry if hang-up"
	sleep 1s
	if [ -s /tmp/tmp.bit ]; then
		cat /tmp/tmp.bit > /dev/xdevcfg
		rm /tmp/tmp.bit
	fi
	chmod 777 /home/share/cszmain.elf
	echo "....."
	echo "Run setup script"
	echo "----------------"
	/home/share/setup
	echo "----------------"
	echo "done"
	exit 0
fi

でyesが押されれば、bitファイルをサーバからダウンロードしてきて、/dev/xdevcfgに流し込むようになっています。

アプリからPLのAXIにアクセスしている最中に/dev/xdevcfgを使ってコンフィグするとハングアップするので、まずアプリを止めてから実行権限を消して、他人が実行できないようにして、それから初めてxdevcfgを使ってコンフィグし、その後にアプリを再び実行可能なようにしています。

sun

更新した結果、Cosmo-Z Miniでちゃんとイベントキャプチャができるようになりました。

Filewave

NaI + PMTで4時間取ったスペクトラムもそれなりに出るようになりました。

Spec

sun

次は、このような自動更新スクリプトをさらに一歩進めて、「更新があります」というのをユーザに通知するような仕組みを作っていきたいと思います。

|

« XILINXのJTAG to AXI masterの使い方 | トップページ | XILINXのJTAG to AXI masterのプロトコル »

コメント

コメントを書く



(ウェブ上には掲載しません)




« XILINXのJTAG to AXI masterの使い方 | トップページ | XILINXのJTAG to AXI masterのプロトコル »