2

RAMにELFファイルをロードするSTM32があります(OpenOCDとJTAGを使用)。これまでのところ、ロードする ELF ファイルのサイズにはあまり注意を払っていませんでした。

通常、自分のボードには大きすぎる ELF ファイルをコンパイルすると (私のボードには実行可能ファイルをロードできる 128KB の RAM があります)、リンカは文句を言います (リンカ スクリプトで RAM のサイズを指定します)。

出力された ELF ファイルのサイズに気付いたので、261KB であることがわかりましたが、リンカは文句を言っていません!

ELF ファイルが非常に大きいのに、リンカは問題ないのはなぜですか? ホスト上の ELF ファイルはボードに正確にロードされていますか?

4

1 に答える 1

5

いいえ -- ELF には、ロードされない再配置レコードのようなものが含まれています。また、デバッガーによってのみロードされるデバッグ情報 (通常は DWARF 形式) を含めることもできます。

readelfELF ファイルの 1 つに実際に何が含まれているかを把握するために使用するとよいでしょう。常にやりたいとは思わないかもしれませんが、少なくとも数回実行して、そこに何があるかを理解することで、何を扱っているかをよりよく理解できるようになります。

readelfbinutils パッケージの一部です。他の開発ツールに付属しているコピーを既に持っている可能性はかなり高いです。

さらに詳しく知りたい場合は、「ELF 形式」などをグーグルで検索すると、多くの記事が表示されるはずです。ただし、ELF は明らかに重要な形式であることに注意してください。すべての詳細を理解したい場合は、かなりの時間と労力がかかります。

于 2012-05-01T15:28:13.620 に答える