
現在、H8Sマイコンのプログラミング環境を今までやっていたPCから別のPCでもできるように自分のPCにHEWをインストールして同じ環境を構築しようとしています。
今までビルドを行っていたPCからプロジェクトを自分のPCにもコピーしてビルドを実行してみたところ、ソースコードも同一なのですが、出力されてきたバイナリファイルの内容に違いが生じてしまいます。
今までのPCと自分のPCにインストールされているHEWのコンパイラのVersionも確認したところ同一であることも確認しました。
hwpファイル等もファイルパスの違いがあるだけだったので、それぞれのPCのHEWのtoolchainの設定を今度は比較したいと思っているのですが、現在のHEWのtoolchainで設定されているオプションなどのテキストはどこかのファイル等で一括で確認することはできませんでしょうか?
どうぞ、ご教授いただきますよう、お願い致します。

No.3ベストアンサー
- 回答日時:
繰り返しますが……。
拡張子が、bin のファイルは、単なるアセンブラファイルでも、単なる機械語のファイルでもありません。
H8系だと、最終的なオブジェクトファイルは、拡張子がhexのファイルじゃないかなと思いますが、hex ファイルが違っていたら、「生成されたマシン語が違う」ということです。
bin ファイルには、主にデバッグのための、いろいろな情報が詰まっています。
その中には、ソースファイルの所在(つまり、フォルダ名を含む)があるかもしれません。
単純なバイナリ比較をして、「違う」と騒ぐ前に、普通のエディタで良いから,中をのぞいてみましょう。エディタで読める形で、フォルダが見えたりする可能性はかなりあります。
せめて、hex ファイルを生成して、それを比較してみましょう。
hex ファイルが同じなら、「マシン語として同じ」ということです。

No.2
- 回答日時:
だから、「お礼」の欄に書かれたのが、「PCのHEWのtoolchainの設定」です。
tookchain の個々の設定は、HEW ではなくて、ワークスペース毎にありますから。
で、それが同じなら、あなたのいう、「バイナリ」が同一になるかどうかは、わかりません。
そもそも、その、「バイナリの中に、マシン固有の情報をかかえていませんか? 設定が違うかどうかより、バイナリファイルの具体的な『違い』をまず調べましょう」というのが、当方の主張です。
回答頂きありがとうございます。お世話になっております。以前使用していたPCで出力したバイナリのbinファイルと、自分のPCで出力したbinファイルを比較ソフトのDFでバイナリ比較機能で違いを調べてみたところ、ファイルのデータ中、16バイト中1つでもデータの違いのある番地は約410kbyte中1/3程度ありました。
コンパイラのtoolchainの設定の違いでここまでバイナリのデータの結果に違いが出るものでしょうか。
また、バイナリファイルの具体的な違いがここまである場合、たとえば、このC言語のプログラムはこのようにアセンブラに変換している等のファイルなどはHEWの場合ありますでしょうか?
AtmelのAVR Studioなどだと拡張子lssファイルなどでアセンブラ変換をどのようにしたかというのが解説されるファイルがあったと思うのですが、HEWにはありませんでしょうか?
どうぞ、よろしくお願い致します。

No.1
- 回答日時:
あの……。
出力されたバイナリファイルの「何が・どう」違うのか確認しましたか?
H8 だとすると、.hex が違っていたら、ちょっと問題ですが、それ以外のファイルが違うことは、普通にあります。
適切なツールがなければ、テキストエディタで強引に開いて、その、「バイナリファイル」の中に、パスの情報が入っていたりしないか、眺めてみましょう。
あと、Hew でワークシートを開いた「後」で、「ビルド」メニューの、一番先頭にある、toolchains メニューで、それぞれのコマンドのオプションを確認するのは、やってみましたか?
回答頂きありがとうございます。助かります。
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のものと同一であれば、同一のバイナリ実行ファイルが出力できるようになるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#include <Windows.h>というヘ...
-
コマンドプロンプトで作成日時...
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
exeファイルの中身を見る方法は...
-
公文書のxmlファイルの開き方が...
-
リンクの張り付けかたを教えて...
-
frm、frxファイル
-
ラッパーって何なんでしょう・...
-
コマンドプロンプトで、指定し...
-
.NETアプリを作ったときの .man...
-
C#でログファイルにファイルパ...
-
HEWのtoolchainの設定の確認方法。
-
JSPが表示されない
-
自分で作成した重要ファイルを...
-
ファイル名にドットを使ったフ...
-
Tomcatのプロジェクトのクラス...
-
隠しファイルの扱い
-
Latexで図番号だけを「図1.1」...
-
vbsにてショートカットが存在す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトで作成日時...
-
#include <Windows.h>というヘ...
-
Latexで図番号だけを「図1.1」...
-
リンクの張り付けかたを教えて...
-
.NETアプリを作ったときの .man...
-
jarファイル
-
コマンドプロンプトで、指定し...
-
「営業秘密の漏洩」について
-
自分で作成した重要ファイルを...
-
warファイルをEclipseでプロジ...
-
公文書のxmlファイルの開き方が...
-
ストレージにある全てのファイ...
-
C言語---ファイルに出力したデ...
-
HTMLからのBATファイル実行
-
ファイルが開かれているかどう...
-
監視ツールを入れさせられまし...
-
「ブルーファイル」と「グリー...
-
バッチ処理で追記コピーしたい
おすすめ情報