別のバイナリを統合する


8

GCCとCrossworksを使用してARMのバイナリを構築しています。起動時に別のICにロードする必要があるセカンダリバイナリイメージがあります。

このバイナリをツールチェーンに統合するのが好きです。つまり、このバイナリをイメージの一部にし、ビルドするたびに、このバイナリが最終的なバイナリファイルに統合されて、CPUにロードされます。これのベストプラクティスは何ですか?

THX

回答:


3

を使用objcopyして、バイナリイメージをオブジェクトファイルに変換できます。オブジェクトファイルには、Cコードからアクセスできるシンボルが含まれます。次に、GCCにオブジェクトファイルをリンクするようexternに指示すると、データを他のICにロードするために使用するオブジェクトファイル内のシンボルにアクセスできます。

を使用するために渡す必要のあるオプションをファイルする方法を含め、バイナリBLOBでリンクする方法に関する優れたチュートリアルを次に示します。objcopyobjdump

そしてもちろん、objcopymanページobjdumpmanページ


スーパーアンサー..この作品を作るのに合計5分かかった..
Ktc

追加の質問。objファイルは正常に機能していますが、ツールチェーンがRAMに配置するため、ファイルのサイズが原因で問題になっています。このオブジェクトを強制的にフラッシュに配置するにはどうすればよいですか?
Ktc

基本的に、objcopy -Iバイナリ-O elf32-littlearm -B arm --rename-section .data = .rodata、alloc、load、readonly、data、contents fpga.bin fpga.oこれで全体ができます。 rodataとリンカがフラッシュに正しく配置されます。
Ktc

objcopy膨大な数のオプションがあります。それはおそらくあなたがしたいことを何でもすることができます。そのmanページをじっと見つめるだけです。解決策を共有していただきありがとうございます。これは、あなたがしていることを実行しようとしている人々にとって一般的な質問になると確信しています。
embedded.kyle
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.