2016-08-18 34 views
-2

ポイントは、IARリンカー-xlinkを使用してメイン関数なしで16進数を生成することですか? このコードは、RL78 MCUのRAMにロードする必要があります。IARリンカーを使用してメイン関数なしで16進数を生成する方法 - xlink?

+0

これまでに何をしていますか? 'library.a'のようなものを生成するライブラリプロジェクトがあると思いますか? – rjp

+0

XY質問のように見えます。あなたは実際に何を達成しようとしていますか?動的ロード/リンクおそらく?完全にリンクされたアプリケーションにはエントリポイントが必要です。 GNUリンカは、あなたのことが分からない「部分的なリンク」というオプションをサポートしています。 – Clifford

答えて

1

Google検索でiar generate hex from libraryを検索したところ、this document, "Creating an Absolutely Placed Library"という最初の結果が得られました。これには、必要なすべての情報と、一貫性チェックにCRCを使用するための情報が含まれています。この文書はIAR EWRXバリアント用ですが、概念はすべて同じである必要があります。

基本的なプロセスは、ライブラリを実行可能ファイルとしてコンパイルすることですが、その中にはmain()機能はありません。 [ライブラリ]の[一般] - > [ライブラリオプション]をNoneに設定する必要があります。この時点でファイル変換設定を設定することもできます。

プログラムエントリポイントにmain()関数がないので、IAR Cランタイム初期化関数__iar_data_init2()を呼び出すエントリ関数を作成し、この関数をエントリとして使用するようにリンカを設定する必要がありますポイント(リンカオプション - >ライブラリオプションの下にあります)。

ライブラリをビルドする場合、ライブラリを使用するアプリケーションの最終リンクステップまですべてのシンボルが保存されますが、実行可能ファイルとしてビルドするので、保持するシンボルには__rootというキーワードリンカ - >余分オプションの下で、すべてのシンボルを保持するために--no-removeを指定することができます。

isymexportを使用して、必要なシンボルをエクスポートする必要があります。ツールにエクスポートするものを指示するファイルが必要です。

show lib_* 
show __checksum* 

これはlib_で始まるすべてのシンボルと__checksumで始まるすべてのシンボルをエクスポートするツールを指示します:例では、彼らは次のものが含まれていたファイルを持っています。彼らは、__iar_data_init2()ではなくをエクスポートする必要があることに注意してください。最終的にこのコードを使用するアプリケーションと競合する可能性があります。あなたはそのようなツールを起動します。

isymexport <path to .out file> <path to output from tool> --edit <path to file created above> 

今、あなたはisymexportから出力し、あなたが探していたライブラリファイルを持っている必要があります。このライブラリを使用するアプリケーションでは、isymexportの出力をリンカ - >ライブラリの下にライブラリとして追加する必要があります。アプリケーションでは、ライブラリのエントリ関数を呼び出す必要があります。図書館のシンボル。

これは、16進ファイルで存続し、別々にロードできるライブラリを生成するために必要な情報であり、そのライブラリの使用方法です。参照されているドキュメントの詳細は非常に多いので、そのリンクで利用可能な場合(またはタイトル別に見つけることもできます)、ここでのまとめよりも参考になります。

+0

ドキュメントへのリンクは便利ですが、実際にはSOの質問に答えて、それが単独で立つようにする必要があります(リンクが壊れた場合など)。あなたがそれを見つけた方法に関する余計なコメントと無関係の提案をリンクを囲んでも、それがリンクのみの回答ではないということはありません。 – Clifford

+0

回答に要約を追加します。 – rjp

関連する問題