Armadilloフォーラム

電源投入時のarmadillo起動でhermitの内容は?

s.sekiguchi

2016年11月10日 15時04分

関口と申します。

armadillo-840の設置作業を行っております。
SDカードにDebian環境を構築し、SDカードからのbootで
armadilloを起動します。

設定作業ですので、パソコンのvmwareからシリアル接続で

保守モード起動 ⇒ hermitコマンド入力 ⇒ boot でlinux起動

の手順で行っております。

これを、パソコンは使用せずにarmadilloの電源投入で行いたい
(保守モードでの起動は行わない)のですが、hermitのコマンドは
どうなってしまうのか分かりません。

以下のマニュアルがそれっぽいのですが、イメージファイルを
作成するところまでしか記述がなく、その後、SDカード上のどこかに
反映させるのか等が不明です。

http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…
11.2. ブートローダーをビルドする

保守モードで以下の内容を設定しております。

hermit> setenv
1: console=tty1
2: noinitrd
3: rootwait
4: root=/dev/mmcblk0p2

hermit> setbootdevice
bootdevice: mmcblk0p2

armadilloの電源投入でhermitの設定内容も含めたSDカード上の
Debian起動につきまして、お忙しいところ申し訳ありませんが、
ご存じの方、ご教授をお願いいたします。

よろしくお願いいたします。

コメント

ごめんなさい。質問の意味がイマイチ把握できていないので、教えてください。

「hermit のコマンドを、PC を使わずに入力したい」という事でしょうか?

それとも、一連の動作を電源投入で行いたいということでしょうか?

setenv や setbootdevice を使うと、設定がボード上のフラッシュメモリに保
存されます。なので、auto boot しても設定が有効になっているはずです。

申し訳ありません。
ご回答ありがとう

一連の動作を電源投入時に行いたいということです。

現在、SDカード起動、保守モードなので、
ジャンパピンを以下のようにしております。

JP1 起動モード設定
オープン: OSを自動起動します。
ショート: ブートローダーを保守モードにします。
⇒ショートにしています。

JP2 起動デバイス設定
オープン: オンボードフラッシュメモリのブートローダーを起動します。
ショート: SDカードのブートローダーを起動します。
⇒ショートにしています。

これを、両方ともオープン、JP1をオープン、JP2をショートの2パターンで
やってみましたが同じようには起動することができませんでした。

液晶パネルをデフォルトに設定してありますので、画面上に起動ログ出力後、
ブラウザが表示されるハズですが真っ暗です。

何かやってることが違いますでしょうか?

> ごめんなさい。質問の意味がイマイチ把握できていないので、教えてください。
>
> 「hermit のコマンドを、PC を使わずに入力したい」という事でしょうか?
>
> それとも、一連の動作を電源投入で行いたいということでしょうか?
>
> setenv や setbootdevice を使うと、設定がボード上のフラッシュメモリに保
> 存されます。なので、auto boot しても設定が有効になっているはずです。
>
>

SDカードを挿すことで、SDブートさせたいということですか?

Armadillo を SDブートの状態にして、SDには専用の hermitを書いておけば良いです。

hermit をビルドし直すことで、defaultのブートデバイスを変更できます。
CONFIG_CMD_SETBOOTDEVICE_DEFAULT_DEVICE

http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

ご回答ありがとうございます。

SDカードを差した状態でarmadilloの電源投入でSDカードに構築した
Debianが起動されればOKです。

ご教授いただきました内容でやってみます。
ありがとうございました。

> SDカードを挿すことで、SDブートさせたいということですか?
>
> Armadillo を SDブートの状態にして、SDには専用の hermitを書いておけば良いです。
>
> hermit をビルドし直すことで、defaultのブートデバイスを変更できます。
> CONFIG_CMD_SETBOOTDEVICE_DEFAULT_DEVICE
>
> http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

やってみますと言いましたが、不明点があります。

ご回答の

CONFIG_CMD_SETBOOTDEVICE_DEFAULT_DEVICE

は何のことでしょうか?

手順ですが、

> > http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

イメージファイルが作成されますまでしか記述がありません。
実際、SDカード上のどこにイメージを反映すれば良いのか分かりません。

また、実際にhermit上で入力しているコマンドは、手順のどこでどのように
反映させるのかが分かりません。

> ご回答ありがとうございます。
>
> SDカードを差した状態でarmadilloの電源投入でSDカードに構築した
> Debianが起動されればOKです。
>
> ご教授いただきました内容でやってみます。
> ありがとうございました。
>
>
> > SDカードを挿すことで、SDブートさせたいということですか?
> >
> > Armadillo を SDブートの状態にして、SDには専用の hermitを書いておけば良いです。
> >
> > hermit をビルドし直すことで、defaultのブートデバイスを変更できます。
> > CONFIG_CMD_SETBOOTDEVICE_DEFAULT_DEVICE
> >
> > http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

> CONFIG_CMD_SETBOOTDEVICE_DEFAULT_DEVICE
>
> は何のことでしょうか?

configで使われている変数です。

make menuconfig

  -> Target Configurations
    -> Commands

以下をご確認ください。

> 実際、SDカード上のどこにイメージを反映すれば良いのか分かりません。

http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

SDブートの情報は↑にあります。

> また、実際にhermit上で入力しているコマンドは、手順のどこでどのように
> 反映させるのかが分かりません。

こちらは、config に出ていないのでソースコードを変更する必要があります。
src/target/armadillo8x0/board.c::armadillo8x0_prepare_normal_boot() をご確認ください。

ご回答ありがとうございます。
申し訳ありませんが、私にとってはこれだけの詳細な手順書が
必要なレベルです。

手順の確認だけさせていただきたいと思います。
以下の手順で合ってますでしょうか?

(使用するファイル) :アットマークサイトからダウンロード
・ブートローダー (Hermit-At) hermit-at-3.8.0-source.tar.gz

1.ブートローダー (Hermit-At)を展開

2.ソース変更
 src/target/armadillo8x0/board.c::armadillo8x0_prepare_normal_boot()
 ⇒hermitで実行しているコマンドを反映

3.make menuconfig
 ⇒CONFIG_CMD_SETBOOTDEVICE_DEFAULT_DEVICE

4.make
 ⇒loader-armadillo840*.bin のイメージファイルが作成される

5.SDブート用のブートローダーイメージファイルを第1パーティションに配置
 ⇒4.で作成したイメージをSDにコピー

よろしくお願いいたします。

> > CONFIG_CMD_SETBOOTDEVICE_DEFAULT_DEVICE
> >
> > は何のことでしょうか?
>
> configで使われている変数です。
>
> make menuconfig
>
>

>   -> Target Configurations
>     -> Commands
> 

> 以下をご確認ください。
>
> > 実際、SDカード上のどこにイメージを反映すれば良いのか分かりません。
>
> http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…
>
> SDブートの情報は↑にあります。
>
> > また、実際にhermit上で入力しているコマンドは、手順のどこでどのように
> > 反映させるのかが分かりません。
>
> こちらは、config に出ていないのでソースコードを変更する必要があります。
> src/target/armadillo8x0/board.c::armadillo8x0_prepare_normal_boot() をご確認ください。
>

ブートイメージの作成手順中のソース修正ですが、

デフォルトでは以下のようになっております。

src/target/armadillo8x0/board.c::armadillo8x0_prepare_normal_boot()

デフォルト状態

static void armadillo8x0_prepare_normal_boot(struct platform_info *pinfo)
{
pinfo->adjust_boot_args = NULL;
pinfo->adjust_boot_device = NULL;
}

追加したい Hetmit コマンド

1: console=tty1
2: noinitrd
3: rootwait
4: root=/dev/mmcblk0p2

hermit> setbootdevice
bootdevice: mmcblk0p2

ここを、どのようにソースに反映すれば良いのか分からないのですが、
参考サイトなどありますでしょうか?

> ご回答ありがとうございます。
> 申し訳ありませんが、私にとってはこれだけの詳細な手順書が
> 必要なレベルです。
>
> 手順の確認だけさせていただきたいと思います。
> 以下の手順で合ってますでしょうか?
>
> (使用するファイル) :アットマークサイトからダウンロード
> ・ブートローダー (Hermit-At) hermit-at-3.8.0-source.tar.gz
>
> 1.ブートローダー (Hermit-At)を展開
>
> 2.ソース変更
>  src/target/armadillo8x0/board.c::armadillo8x0_prepare_normal_boot()
>  ⇒hermitで実行しているコマンドを反映
>
> 3.make menuconfig
>  ⇒CONFIG_CMD_SETBOOTDEVICE_DEFAULT_DEVICE
>
> 4.make
>  ⇒loader-armadillo840*.bin のイメージファイルが作成される
>
> 5.SDブート用のブートローダーイメージファイルを第1パーティションに配置
>  ⇒4.で作成したイメージをSDにコピー
>
> よろしくお願いいたします。
>
>
> > > CONFIG_CMD_SETBOOTDEVICE_DEFAULT_DEVICE
> > >
> > > は何のことでしょうか?
> >
> > configで使われている変数です。
> >
> > make menuconfig
> >
> >

> >   -> Target Configurations
> >     -> Commands
> > 

> > 以下をご確認ください。
> >
> > > 実際、SDカード上のどこにイメージを反映すれば良いのか分かりません。
> >
> > http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…
> >
> > SDブートの情報は↑にあります。
> >
> > > また、実際にhermit上で入力しているコマンドは、手順のどこでどのように
> > > 反映させるのかが分かりません。
> >
> > こちらは、config に出ていないのでソースコードを変更する必要があります。
> > src/target/armadillo8x0/board.c::armadillo8x0_prepare_normal_boot() をご確認ください。
> >

at_daisuke.sasaki

2016年11月11日 12時16分

佐々木大輔です

> ここを、どのようにソースに反映すれば良いのか分からないのですが、
> 参考サイトなどありますでしょうか?

Armadillo-800 EVAのリカバリブート用のコードを活用すれば、
やりたい事が実現できると思いますよ。

diff --git a/src/target/armadillo8x0/board.c b/src/target/armadillo8x0/board.c
index 8b9c916..9f0c016 100644
--- a/src/target/armadillo8x0/board.c
+++ b/src/target/armadillo8x0/board.c
@@ -140,8 +140,7 @@ static int armadillo8x0_is_autoboot(struct platform_info *pinfo)
        struct board_private *priv = pinfo->private_data;
        int autoboot = priv->jumper ? 0 : 1;
 
-       if (priv->boot_mode == BOOT_MODE_SD &&
-           priv->tactsw[0]) {
+       if (priv->boot_mode == BOOT_MODE_SD ) {
                hprintf("*** Recovery Mode ******************************\n");
                autoboot = 1;
                pinfo->adjust_boot_args = adjust_recovery_boot_args;

元のコードはSDブート 且つ SWが押されていた時に、
setbootdeviceやkernel parameterを設定で自動ブートするようになっています。

今回は 電源を投入した状態で起動したいので、タクトスイッチを条件から外します。

src/target/armadillo8x0/board-armadillo840.c に定義されている以下の関数に
期待するパラメータを入れてください。
やり方は関数を見ればわかると思います。
- adjust_recovery_boot_args()
- adjust_recovery_boot_device()
上記のパッチだけで、やりたい事ができると思います。

試してみてください。

関口です。

ソース修正のご教授、大変ありがとうございました。

修正は何とかやりましたが、この後の手順がやはり分かりません。
マニュアルを見直します。

> 佐々木大輔です
>
> > ここを、どのようにソースに反映すれば良いのか分からないのですが、
> > 参考サイトなどありますでしょうか?
>
> Armadillo-800 EVAのリカバリブート用のコードを活用すれば、
> やりたい事が実現できると思いますよ。
>
>

> diff --git a/src/target/armadillo8x0/board.c b/src/target/armadillo8x0/board.c
> index 8b9c916..9f0c016 100644
> --- a/src/target/armadillo8x0/board.c
> +++ b/src/target/armadillo8x0/board.c
> @@ -140,8 +140,7 @@ static int armadillo8x0_is_autoboot(struct platform_info *pinfo)
>         struct board_private *priv = pinfo->private_data;
>         int autoboot = priv->jumper ? 0 : 1;
>  
> -       if (priv->boot_mode == BOOT_MODE_SD &&
> -           priv->tactsw[0]) {
> +       if (priv->boot_mode == BOOT_MODE_SD ) {
>                 hprintf("*** Recovery Mode ******************************\n");
>                 autoboot = 1;
>                 pinfo->adjust_boot_args = adjust_recovery_boot_args;
> 

>
> 元のコードはSDブート 且つ SWが押されていた時に、
> setbootdeviceやkernel parameterを設定で自動ブートするようになっています。
>
> 今回は 電源を投入した状態で起動したいので、タクトスイッチを条件から外します。
>
> src/target/armadillo8x0/board-armadillo840.c に定義されている以下の関数に
> 期待するパラメータを入れてください。
> やり方は関数を見ればわかると思います。
> - adjust_recovery_boot_args()
> - adjust_recovery_boot_device()
> 上記のパッチだけで、やりたい事ができると思います。
>
> 試してみてください。

関口です。

ソース修正後の手順をご教授いただけないでしょうか?

基本的な部分が分かっていないのかも知れませんが、
イメージファイルを作成してSDカードにコピーするまでの
手順が分かる方、よろしくお願いいたします。

参考サイトがあればURLでも構いません。

よろしくお願いいたします。

> 関口です。
>
> ソース修正のご教授、大変ありがとうございました。
>
> 修正は何とかやりましたが、この後の手順がやはり分かりません。
> マニュアルを見直します。
>
>
>
> > 佐々木大輔です
> >
> > > ここを、どのようにソースに反映すれば良いのか分からないのですが、
> > > 参考サイトなどありますでしょうか?
> >
> > Armadillo-800 EVAのリカバリブート用のコードを活用すれば、
> > やりたい事が実現できると思いますよ。
> >
> >

> > diff --git a/src/target/armadillo8x0/board.c b/src/target/armadillo8x0/board.c
> > index 8b9c916..9f0c016 100644
> > --- a/src/target/armadillo8x0/board.c
> > +++ b/src/target/armadillo8x0/board.c
> > @@ -140,8 +140,7 @@ static int armadillo8x0_is_autoboot(struct platform_info *pinfo)
> >         struct board_private *priv = pinfo->private_data;
> >         int autoboot = priv->jumper ? 0 : 1;
> >  
> > -       if (priv->boot_mode == BOOT_MODE_SD &&
> > -           priv->tactsw[0]) {
> > +       if (priv->boot_mode == BOOT_MODE_SD ) {
> >                 hprintf("*** Recovery Mode ******************************\n");
> >                 autoboot = 1;
> >                 pinfo->adjust_boot_args = adjust_recovery_boot_args;
> > 

> >
> > 元のコードはSDブート 且つ SWが押されていた時に、
> > setbootdeviceやkernel parameterを設定で自動ブートするようになっています。
> >
> > 今回は 電源を投入した状態で起動したいので、タクトスイッチを条件から外します。
> >
> > src/target/armadillo8x0/board-armadillo840.c に定義されている以下の関数に
> > 期待するパラメータを入れてください。
> > やり方は関数を見ればわかると思います。
> > - adjust_recovery_boot_args()
> > - adjust_recovery_boot_device()
> > 上記のパッチだけで、やりたい事ができると思います。
> >
> > 試してみてください。