バイナリーファイルをプロジェクトに組み込む方法


以前、バイナリファイルのリンク可能なオブジェクトへの変換技を紹介しましたが、肝心の変換後のオブジェクトファイルの埋め込み方、プロジェクトへのへの組み込み方をご紹介していませんでした。

今回は、短い記事ですが、その変換したオブジェクトをプロジェクトへどのように組み込むのかご紹介したいと思います。非常に簡単です。

リンク可能なオブジェクトファイルの用意

以前の記事を参考にしてELF形式のバイナリーへ変換してください。

参考
以前の記事では、サイン波のリソースの作成方法とそのイメージファイルのリンク可能なオブジェクトへの変換方法を紹介しています。以前の記事はこちらから↓

オブジェクト変換技!バイナリーイメージの組み込み方法

無事変換できたら、変換後のファイルを分かりやすいように、プロジェクトのワークスペースフォルダにでもコピーしておきましょう。

メモ: 変換したオブジェクトのセクションをリネームしておかないと、.dataセクションに配置されてしまいます。 RAM領域に配置する場合には、リネームは必要ありませんが、プログラム領域(フラッシュROM)に配置する場合には、変換じにきちんとセクションをリネームしておきましょう。

MCUXpresso IDEの場合

まず、MCUXpresso IDEの場合です。

こちらは、非常に簡単です。リンカ設定に指定オブジェクトを選択して追加するだけです。

バイナリオブジェクトの指定
バイナリオブジェクトの指定

はい、これだけです。

IAR EWARMの場合

EWARMの場合は、少し設定があります。シンボルは、objdumpなどで事前に確認した方が確実です。

そのシンボル名を設定し、ローバイナリイメージに変換したバイナリオブジェクトファイルを指定します。

セクションには、textセクションやreadonlyを指定します。アライメントは、適宜変更してください。

これで設定は終わりです。

ソースコードからアクセスする

あとは、このバイナリへアクセスすれば良いわけですが、ソースコードでは以下のようにしてアクセスすることが可能です。

extern char _binary_filename_bin_start[];
extern char _binary_filename_bin_end[];
extern char _binary_filename_bin_size[];

これらは、ポインタを使用して管理しても良いと思います。

以上でバイナリオブジェクトのプロジェクトへの組み込み方法でした。

是非、参考にしてください。