内容へ移動
MA-X/MA-S/MA-E/IP-K Developers' WiKi
ユーザ用ツール
管理
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
PDF の出力
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
現在位置:
メインページ
»
ソフトウェア開発 (XG シリーズ)
»
アプリケーションの自動起動
トレース:
•
本装置へのログイン方法(MA-S1xx/MA-X3xx/MA-E3xx 共通)
•
MA-X3xx シリーズ TIPS
•
MA-X3xx シリーズの操作
xg_series_devel:autostart_rcs:start
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== アプリケーションの自動起動 ====== [[xg_series_devel:add_builtin_command:start]] で追加した、タスクなどを起動するビルトインアプリケーションを、 機器電源 ON 時に自動起動させる方法を紹介します。 ※ 公式ドキュメントの該当箇所は [[http://nuttx.org/Documentation/NuttShell.html#startupscript|こちら]] です。 例として、『[[xg_series_devel:use_adc:start]]』で紹介した **adc** というビルトインアプリケーションを自動起動させてみます。 \\ ===== 設定 ===== ==== config の変更 ==== [[https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=139629410#startupscript|ドキュメント]] にある下記条件 * CONFIG_DISABLE_MOUNTPOINT がセットされていないこと * CONFIG_NFILE_DESCRIPTORS が 4 より大きいこと * CONFIG_FS_ROMFS が有効化されていること はデフォルトでクリアするよう設定してあります。 追加で、**CONFIG_NSH_ROMFSETC** と **CONFIG_NSH_ARCHROMFS** を有効にします。 {{:xg_series_devel:autostart_rcs:menuconfig_nsh_rcs_01.png?640|CONFIG_NSH_ROMFSETC}} {{:xg_series_devel:autostart_rcs:menuconfig_nsh_rcs_02.png?640|CONFIG_NSH_ARCHROMFS}} \\ ==== romfs image の作成 ==== ここでビルドを試みると、下記のエラーになります。 <code> ./nsh_romfsetc.c:57:39: fatal error: arch/board/nsh_romfsimg.h: No such file or directory # include <arch/board/nsh_romfsimg.h> ^ compilation terminated. ERROR: arm-none-eabi-gcc failed: 1 </code> ''nuttx/include/arch/board/nsh_romfsimg.h'' を作成する必要があるとわかります。 \\ romfs image は ''rcS.template'' というテンプレートファイルから生成します。\\ 今回は **adc** というアプリケーションを起動させたいので、下記のようなファイルを作成します。 <file shellscript rcS.template> #! /bin/nsh echo "auto execute adc from rcS!" adc </file> \\ ''nuttx/tools/mkromfsimg.sh'' というスクリプトで、romfs image を作成します。 <code> develop:~/src/NuttX_XG50/nuttx/include/arch/board$ ../../../tools/mkromfsimg.sh ../../../ develop:~/src/NuttX_XG50/nuttx/include/arch/board$ ls -ln total 48 -rw-rw-r-- 1 1000 1000 9551 3月 13 13:45 board.h -rw-rw-r-- 1 1000 1000 2755 3月 13 13:49 boardctl.h -rw-rw-r-- 1 1000 1000 19504 3月 12 11:10 centurysys-xg50.h -rw-rw-r-- 1 1000 1000 6383 3月 14 15:38 nsh_romfsimg.h <--- 生成された -rw-rw-r-- 1 1000 1000 51 3月 14 15:38 rcS.template develop:~/src/NuttX_XG50/nuttx/include/arch/board$ </code> \\ ==== ファームウェアのビルド ==== ビルドを行います。場合にもよりますが、まずは ''make clean'' したほうが良いかもしれません。 \\ ===== ファームウェアの書き込みと実行 ===== ファームウェアを書き込み、実行してみます。 <code> ABCDF auto execute adc from rcS! adc_main: g_adcstate.count: 1 adc_main: Hardware initialized. Opening the ADC device: /dev/adc0 Sample: 1: channel: 0 value: 1498 2: channel: 1 value: 3493 3: channel: 2 value: 0 4: channel: 17 value: 926 NuttShell (NSH) nsh> </code> ''rcS'' により自動実行されました。 rcS も以下のように見えています。 <code> nsh> ls -lR /etc /etc: dr-xr-xr-x 0 . dr-xr-xr-x 0 init.d/ /etc/init.d: -r-xr-xr-x 51 rcS nsh> cat /etc/init.d/rcS #! /bin/nsh echo "auto execute adc from rcS!" adc nsh> </code> \\ ===== 応用 ===== NuttShell には、''if〜then〜else〜fi'' や ''while〜do〜done'' など、Linux の shell script のような制御文も使えますので、\\ 設定をチェックして起動するプログラムを変えるなどもスクリプトで柔軟に行うことができます。 参照 : [[http://nuttx.org/Documentation/NuttShell.html#conditional|NuttShell Conditional Command Execution]] \\
xg_series_devel/autostart_rcs/start.txt
· 最終更新: 2020/11/30 09:58 by
admin
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
PDF の出力
文書の先頭へ