[Armadillo:05017] Re: CON16 (シリアルインターフェース1)のリブート時のメッセージ抑制
Masahiro Hanada
email@hidden
2010年 3月 12日 (金) 01:38:28 JST
花田です。
> 元ソースの
> char console[] = { "console=ttyAM0,115200" };
> この文字列初期化の書式(構文)が気になっています。
>
> 普通は
> char console[] = "console=ttyAM0,115200";
> こう書きますよね?
ここでのconsoleは配列型であって、代入される初期化要素は
集成体型(= { 1, 2, 3 } のような書き方)であってよい、
ということがポイントと思います。
いい加減に探した中でGoogleキャッシュしか見つからなくて恐縮ですが…
↓の表6-6参照。
http://74.125.153.132/search?q=cache:ZOrNzBKf5lcJ:www.imit.chiba-u.ac.jp/new-system/sr/man_hitachi_c/MAN/3000/03C3100D/C310095.HTM
{ 'a', 'b', 'c', '\0' } // '\0'は省略もできます
の省略形が
{ "abc" }
であって、
"abc"
と書いて構わないと許した…結果的にどの書き方も正しい、ということだった筈。
"Yasuhisa Nakamura" <email@hidden> wrote:
> 中村です。
>
> totoさんの質問とも、Armadilloとも関係がないのですが・・・
>
> 元ソースの
> char console[] = { "console=ttyAM0,115200" };
> この文字列初期化の書式(構文)が気になっています。
>
> 普通は
> char console[] = "console=ttyAM0,115200";
> こう書きますよね?
>
> 中カッコは
> char *str[]= { "abc", "xyz" };
> のようなときに使うかと。。。
>
> (要素1つの配列は意味がなさそうですが)上のconsoleだと
> char *console[] = { "console=ttyAM0,115200" };
> が言語仕様的には正しいと思うのですが、元ソースの
> ままでgccに"-W"や"-Wall"をつけても警告は出ません。
>
> 簡単なテストコードを書いてgccで試してみたところ、
> どちらでもconsoleには同じ値が入るようです。
>
> どなたか、根拠(Cの言語仕様)がわかる方がいましたら
> 教えてください。
>
> よろしくお願いします。
>
> --
> なかむら
>
>
> 2010年 3月 12日(金)00:26 に Yasuhisa Nakamura さんは書きました:
> > totoさん、こんばんは。
> > 中村です。
> >
> > 2010年 3月 11日(木)21:41 に email@hidden さんは書きました:
> >>> は、ソースの次の部分です。
> >>> char console[] = { "console=ttyAM0,115200" };
> >>>
> >> ということは
> >> char console[] = { "console=ttyAM1,115200" };
> >> した、Hermitを作成すれば、
> >> setenvをしなくても、コンソールをttyAM1にすることが出来るのでしょうか?
> >
> > はい、そうです。
> >
> > 私は次のような修正をして、ttyAM1用とnotty用でconsole[]の
> > デフォルトが異なるhermitを作って使っています。
> >
> > (最新のhermitのソースでは異なるかもしれません)
> >
> > --- src/target/armadillo2x0/linux.c-orig 2008-08-18 11:45:47.000000000 +0900
> > +++ src/target/armadillo2x0/linux.c 2008-10-01 21:53:45.000000000 +0900
> > @@ -134,7 +134,17 @@
> >
> > char mtdparts210[] = { MTDPARTS210 };
> > char mtdparts2x0[] = { MTDPARTS2X0 };
> > +#if defined(CONSOLE)
> > +# if CONSOLE == 0
> > char console[] = { "console=ttyAM0,115200" };
> > +# elif CONSOLE == 1
> > +char console[] = { "console=ttyAM1,115200" };
> > +# else
> > +# error "unknown CONSOLE value"
> > +# endif
> > +#else
> > +char console[] = { "console=null" };
> > +#endif
> >
> > static int boot_cmdfunc(int argc, char *argv[])
> > {
> > @@ -171,7 +181,9 @@
> > case BOARD_ID_A210:
> > case BOARD_ID_A210C:
> > argv[argc++] = mtdparts210;
> > +#if defined(CONSOLE)
> > console[13] = '1';
> > +#endif
> > break;
> > case BOARD_ID_A220:
> > case BOARD_ID_A230:
> >
> > --
> > なかむら
> >
> > _______________________________________________
> > armadillo mailing list
> > email@hidden
> > http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> >
> >
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
armadillo メーリングリストの案内