2012-05-01 14 views
1

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

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

出力されたELFファイルのサイズに気がついたので、それは261KBですが、リンカは苦情を申し立てていません!

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

答えて

4

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

readelfを使用して、ELFファイルの実際の内容を知ることができます。あなたはたぶんそれをしたくないかもしれませんが、そこに何があるかを知るために少なくとも数回は、あなたが扱っていることのより良い考えを与えることができます。

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

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

関連する問題