重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

現在、H8Sマイコンのプログラミング環境を今までやっていたPCから別のPCでもできるように自分のPCにHEWをインストールして同じ環境を構築しようとしています。

今までビルドを行っていたPCからプロジェクトを自分のPCにもコピーしてビルドを実行してみたところ、ソースコードも同一なのですが、出力されてきたバイナリファイルの内容に違いが生じてしまいます。


今までのPCと自分のPCにインストールされているHEWのコンパイラのVersionも確認したところ同一であることも確認しました。


hwpファイル等もファイルパスの違いがあるだけだったので、それぞれのPCのHEWのtoolchainの設定を今度は比較したいと思っているのですが、現在のHEWのtoolchainで設定されているオプションなどのテキストはどこかのファイル等で一括で確認することはできませんでしょうか?

どうぞ、ご教授いただきますよう、お願い致します。

A 回答 (3件)

繰り返しますが……。


拡張子が、bin のファイルは、単なるアセンブラファイルでも、単なる機械語のファイルでもありません。
H8系だと、最終的なオブジェクトファイルは、拡張子がhexのファイルじゃないかなと思いますが、hex ファイルが違っていたら、「生成されたマシン語が違う」ということです。

bin ファイルには、主にデバッグのための、いろいろな情報が詰まっています。
その中には、ソースファイルの所在(つまり、フォルダ名を含む)があるかもしれません。

単純なバイナリ比較をして、「違う」と騒ぐ前に、普通のエディタで良いから,中をのぞいてみましょう。エディタで読める形で、フォルダが見えたりする可能性はかなりあります。

せめて、hex ファイルを生成して、それを比較してみましょう。
hex ファイルが同じなら、「マシン語として同じ」ということです。
    • good
    • 0

だから、「お礼」の欄に書かれたのが、「PCのHEWのtoolchainの設定」です。


tookchain の個々の設定は、HEW ではなくて、ワークスペース毎にありますから。

で、それが同じなら、あなたのいう、「バイナリ」が同一になるかどうかは、わかりません。
そもそも、その、「バイナリの中に、マシン固有の情報をかかえていませんか? 設定が違うかどうかより、バイナリファイルの具体的な『違い』をまず調べましょう」というのが、当方の主張です。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。お世話になっております。以前使用していたPCで出力したバイナリのbinファイルと、自分のPCで出力したbinファイルを比較ソフトのDFでバイナリ比較機能で違いを調べてみたところ、ファイルのデータ中、16バイト中1つでもデータの違いのある番地は約410kbyte中1/3程度ありました。

コンパイラのtoolchainの設定の違いでここまでバイナリのデータの結果に違いが出るものでしょうか。

また、バイナリファイルの具体的な違いがここまである場合、たとえば、このC言語のプログラムはこのようにアセンブラに変換している等のファイルなどはHEWの場合ありますでしょうか?

AtmelのAVR Studioなどだと拡張子lssファイルなどでアセンブラ変換をどのようにしたかというのが解説されるファイルがあったと思うのですが、HEWにはありませんでしょうか?


どうぞ、よろしくお願い致します。

お礼日時:2012/07/09 09:56

あの……。



出力されたバイナリファイルの「何が・どう」違うのか確認しましたか?
H8 だとすると、.hex が違っていたら、ちょっと問題ですが、それ以外のファイルが違うことは、普通にあります。

適切なツールがなければ、テキストエディタで強引に開いて、その、「バイナリファイル」の中に、パスの情報が入っていたりしないか、眺めてみましょう。

あと、Hew でワークシートを開いた「後」で、「ビルド」メニューの、一番先頭にある、toolchains メニューで、それぞれのコマンドのオプションを確認するのは、やってみましたか?
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。助かります。

HEWのメニュー”ビルド”---->”H8S,H8/300 Standard Toolchain”のところのコンパイラやアセンブラや最適化リンカ等のコンパイラオプションが、今までビルドを行っていたPCのHEWの設定と同一かどうかをこれから調べようと思っています。

コンパイラのカテゴリとか、のソース、オブジェクト、リストなど、項目がかなりたくさんあるようですが、

(コンパイラオプション)
-cpu=2000A:24 -stack=large -include="$(PROJDIR)\include","$(PROJDIR)\rtos" -object="$(PROJDIR)\obj\$(FILELEAF).obj" -debug -show=nostatistics,allocation,nosource,tab=4 -optimize=0 -speed=register,switch,shift,struct,expression -global_alloc=1 -const_var_propagate=1 -chgincpath -nologo


(アセンブラオプション)
-cpu=2000A:24 -debug -object="$(CONFIGDIR)\$(FILELEAF).obj" -list="$(CONFIGDIR)\$(FILELEAF).lis" -nologo -chgincpath -errorpath



(最適化リンカオプション)
-noprelink -rom=D=R -nomessage -list="$(CONFIGDIR)\$(PROJECTNAME).map" -show=symbol,reference,xreference,total_size -nooptimize -start=PResetPRG,PIntPRG/0400,P,C,C$DSEC,C$BSEC,D/0800,BHEAPMEM/0600000,BJURNEL/0670000,BPROGERASE/0FF4000,B,R/0FF4400,S/0FFBE00 -nologo -output="$(CONFIGDIR)\$(PROJECTNAME).abs" -end -input="$(CONFIGDIR)\$(PROJECTNAME).abs" -form=binary -output="$(PROJDIR)\bin\$(PROJECTNAME).bin" -exit


(ライブラリオプション)
-cpu=2000A:24 -stack=large -output="$(PROJDIR)\obj\$(PROJECTNAME).lib" -reent -head=runtime,new,math,stdarg,stdio,stdlib,string


これらの内容が書かれていました。

このオプションの内容が、今までのPCのHEWのものと同一であれば、同一のバイナリ実行ファイルが出力できるようになるのでしょうか?

お礼日時:2012/07/08 07:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!