(toppers-users 3165) Re: cq_starm_gcc のサンプルビルドに失敗

高木信尚 takagi-n @ biggie.jp
2010年 4月 7日 (水) 22:33:49 JST


長島さん

コンフィギュレータ担当の高木です。

> prc.tfの130行目に
> $bitpat_cfgint = 0$
> という行がありますが、これを
> $bitpat_cfgint = 1-1$
> に書き換えるとうまくいくようです。

Boost.Spiritの挙動がバージョンによって変わることが原因ですが、
具体的にいうと、空白を読み飛ばすスキップパーサの振る舞いが
変わったことに直接の原因があります。

0にしていると、これは" 0"という文字列として扱われてしまいます。
これに対して何らかの演算を行えば整数値だけになるわけです。
上記のように 1-1 でもかまいませんが、他の部分では、1-1ではなく
+0のように単項の符号演算子を使っています。

パスデリミタの件は悩ましいですが、応急処置としてはご提案の
方法が妥当だと思います。
まともにやろうとすると、ロケールを設定したり、結構面倒なので、
今後のバージョンアップで何とかしたいと思います。

---
高木信尚


2010年4月7日20:32 長島 宏明 <nagasima @ core-s.co.jp>:
> 長島と申します。
>
> 下記の件、解決までは至っていないようなので、
> 遅いとは思いますが、解決方法がありましたので、
> 連絡いたします。
>
> prc.tfの130行目に
> $bitpat_cfgint = 0$
> という行がありますが、これを
> $bitpat_cfgint = 1-1$
> に書き換えるとうまくいくようです。
>
> こちらは、boost 1.38をインストールして、
> Visual Studio 2008でコンパイルしたものを使用しました。
>
> 別件なのですが、質問させてください。
>
> MinGW+MSysの環境で、
> Make depend
> を行うと、
> Makefile.dependの1行目が
> cfg1_out.c: main.cfg ..\arch\arm_m_gcc…
> とパスデリミタが「\」になります。
> これだとmakeが失敗してしまいます。
> 手動で、「/」に直すとmake出来るようになります。
>
> これは、cfg1_out.cppの関数
> void cfg1_out::implementation::preprocess( std::string const& input_file,
> codeset_t codeset, text& txt )
> のitronx::preprocess…の後に、
> for ( std::set< std::string >::iterator iter( depend.begin() ), last(
> depend.end() ); iter != last; ++iter )
> {
>  std::replace( iter->begin(), iter->end(), '\\', '/');
> }
> を挿入すればとりあえず解決するのですが、
> マルチバイト文字には対応できていません。(たぶん)
>
> 適切な修正方法がありましたら、ご教授願います。
>
> よろしくお願いします。
>
>> -----Original Message-----
>> From: Hiromichi Okazaki [mailto:okazaki @ tome.jp]
>> Sent: Saturday, March 27, 2010 9:04 AM
>> To: users @ toppers.jp
>> Subject: (toppers-users 3114) Re: cq_starm_gcc のサンプルビルドに失敗
>>
>> Okazaki です.
>>
>> 皆様どうもありがとうございます.
>>
>> 杉本様
>> > 試しに、arch/arm_m_gcc/prc.tfの136行目あたりにある、
>> >     $TAB$UINT32_C($FORMAT("0x%08x", bitpat_cfgint)$), $NL$
>> > という記述の0x%08xというのを単に0x%xと変えると解消するかもしれませ
>> ん。
>>
>> 変更しましても 0x000000 0  -> 0x 0 となり解決しませんでした.(
>> kernel_bitpat_cfgint のご説明もいただき、どうもありがとうございました ).
>>
>>
>> koisan 様
>> > _kernel_bitpat_cfgintにブランクは含まれていませんでした。特に問題なく
>> コンパイルできましたよ。ブランクは削除すればよいと思っています。
>>
>> 私も今はサンプルビルドの段階ですので割り切って先に進もうと思います.ブ
>>>> ンクは削除すれば、とのことですが、ということはブランクが挿入されている
>>>> 分の正しい値(問題なくコンパイルできた場合は) 0x00000000 になる、とい
>>>> ことですね.
>> また、CFG だけ実行したいとの件、当方は toppers が今回初めてですのでまだ
>> その段階まで至っておりません.お力になれず申し訳ありませんが、今後なに
>>>> ありましたら投稿させていただきます.ありがとうございます.
>>
>>
>> 高木様
>> > 確実なのは、Boost C++ Libraries 1.33.0です。
>> 了解いたしました.原因が分かり良かったです.
>> macports で以前インストールしたのが ver1.38.0 でしたので 1.33.0 以上だ
>>>> 思いそのまま使っていました.
>> ダウングレードできればよいのですが、ports でのダウングレード方法など情
>>>> がありませんでしたので、上記の様にブランクを 0 埋め修正することで対応
>> し、次回のバージョンアップを待ちたいと思います.
>>
>> ありがとうございました.
>>
>>
>> > Okazaki と申します.
>> >
>> > TOPPERS-ASP on cq-starm を利用させて頂いています。
>> > (asp_cq_starm_gcc-20081003.tar.gz)
>> >
>> > toppers は初めてなのですが、サンプルプログラムビルドで躓きまして、質
>> 問させていただきました.
>> >
>> > user.txt 記載の様に
>> >
>> > perl ../configure -T cq_starm_gcc
>> > make depend
>> > make
>> >
>> > を実行したところ、make でエラーがでます.
>> >
>> > -- error message --
>> > arm-none-eabi-gcc -c  -mcpu=cortex-m3 -mthumb  -Wall -g -O2
>> > -DTOPPERS_LABEL_ASM -I. -I../include -I../arch -I..
>> > -I../target/cq_starm_gcc -I../arch/arm_m_gcc/   -DALLFUNC
>> > -fno-strict-aliasing -mcpu=cortex-m3 -I../kernel kernel_cfg.c
>> > kernel_cfg.c:401: error: expected ')' before numeric constant
>> > kernel_cfg.c:402: error: expected ')' before numeric constant
>> > make: *** [kernel_cfg.o] Error 1
>> >
>> >
>> > ディレクトリに生成された kernel_cfg.c を調べてみますと L.398 から次
>> の様になっており、make depend
>> > で誤った出力がされているようです.
>> >
>> > const uint32_t _kernel_bitpat_cfgint[4] = {
>> >     UINT32_C(0x00008000),
>> >     UINT32_C(0x00200000),
>> >     UINT32_C(0x000000 0), <------- この部分、数値中にスペースが入
>> っている
>> >     UINT32_C(0x000000 0),   <------- この部分、数値中にスペースが入
>> っている
>> >
>> > };
>> >
>> > どなたかお心当たりある方、ご教示頂ければと思っております.
>> > また、もし可能でしたらこの変数( _kernel_bitpat_cfgint
>> > )についてもどういう役割を持ったものなのか(割り込み許可/不許可が関係
>> しているようですが...)、ご教示頂ければと思っております.
>> > どうぞ宜しくお願いいたします。
>> >
>> >
>> > 以下が当方の環境になります.
>> >
>> > Mac OSX 10.5.8
>> > arm-none-eabi-gcc : ver.4.4.2
>> > GNU Make 3.81
>> >
>> > asp kernel は次のものに、コンフィギュレータのみ単体で配布されているも
>> のをビルドし、asp ディレクトリ以下の cfg/
>> > を入れ替えたものを使用しています.
>> >
>> > asp_cq_starm_gcc-20081003.tar.gz
>> > cfg-1.5.0.tar.gz
>> > boost 1.38
>> >
>> >
>
>
>
>