[Armadillo:05016] Re: CON16 (シリアルインターフェース1)のリブート時のメッセージ抑制
Yasuhisa Nakamura
email@hidden
2010年 3月 12日 (金) 01:12:03 JST
中村です。
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 メーリングリストの案内