問題タブ [eabi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - arm-none-eabi-gccを使用してcppからelfファイルを生成する
埋め込みターゲットのC++ソースコードでコードカバレッジを実行したいと思います。基本的な考え方は、gccを使用して-frofile-arcs-ftest-coverageをオンにしてエルフを生成することです。それをARMデバイスにダウンロードし、データを収集して、gcovを使用してコードカバレッジを分析します。
arm-none-eabi-gccコマンドを使用してelfファイルを生成するにはどうすればよいですか。GNU ARMツールチェーンをセットアップし、env変数を設定しました。arm-none-eabi-g ++ -c -mthumb -mcpu = cortex-m3 -fprofile-arcs -ftest-coverage filename.cpp -o filename.elfを使用できますか?
前もって感謝します!
gcc - ARM objcopy で空のバイナリ ファイルが生成される
でデバイスにフラッシュするのに適したファイルにファイルarm-none-eabi-objcopy
をコピー/変換するにはどうすればよいですか?.axf
.bin
lm4tools
.axf
でコンパイルおよびリンクされた〜20KBのファイルがありますarm-none-eabi-*
。興味のある方は、これが Stellaris Launchpad です。
プロジェクトで提供されている例を変更して、stellaris-launchpad-template-gcc
C++ コードでコンパイルしようとしています。(ファイルに従って)フォーマットの.axf
ファイルを生成することができましたが、やろうとするとelf32-littlearm
.lst
プログラム可能なファイルに変換するために、.bin
ファイル出力のサイズは 0 バイトです。この質問は、同様の問題について説明しています。.axf
ファイルが完全であると確信しているのに、.bin
ファイルに何も入力されていないのはなぜですか? を削除する-O binary
と、ファイルは正常にコピーされます。ディレクトリは書き込み可能で、すべての権限は問題ありません。SO とその他のインターネットの両方でさまざまな用語を検索してみましたが、どれも役に立ちませんでした。これまで誰もこの問題を抱えていなかったようです。
実行arm-none-eabi-objdump -D main.axf
すると、アセンブラーのように見えるファイルのダンプが生成されます。
これは正しいですか、それとも適切にコンパイルしていないのでしょうか。これは何らかのアセンブラのように見えます。
.axf
ファイルに関する情報:
を実行した後arm-none-eabi-readelf -lS main.axf
、プログラム ヘッダーは返されません。
android - Android NDK: 接続時に gdb がクラッシュする
これのフォローアップとして(gdbserverが正しく起動しました):Android NDK debugging: armeabi-v7a not working
NDK 8c、Eclipse & Cygwin、NativeActivity。
ここで while ループにブレークポイントを設定します。
...しかし、接続時にgdbがクラッシュします! 約10秒間「何か」を行い、その後クラッシュします。いくつかの出力があります。
gdbserver の出力は次のとおりです。
最後の数行は、gdb の接続とクラッシュに対する応答です。
gdb の出力は次のとおりです。
Javaエントリポイントと「armeabi」を使用して、gdbで以前にデバッグ作業を行ったことがあります。C++ エントリ ポイント (android_main) と「armeabi-v7a」に切り替えると、gdb がクラッシュします。どちらも関係あるかはわかりませんが…
価値があるのは、gdb が他の接続時にもクラッシュすることです (起動時に無限の while ループを削除します)。たとえば、スレッドの問題があるため、明確な理由もなくアプリがハングします。ハングしたときに接続すると、gdb が同じようにクラッシュします。
arm - ARM - armcc で r9 レジスタを保存する方法
ARM AAPCS (ARM EABI) を読んで、見つけました: レジスタ r9 の役割はプラットフォーム固有です。仮想プラットフォームは、このレジスターに任意の役割を割り当てることができ、この使用法を文書化する必要があります。たとえば、位置に依存しないデータ モデルで静的ベース (SB) として指定することも、スレッド ローカル ストレージを使用する環境でスレッド レジスタ (TR) として指定することもできます。このレジスタを使用するには、保持されている値がすべての呼び出しで永続的であることが必要になる場合があります。このような特殊レジスターを必要としない仮想プラットフォームでは、r9 を追加の呼び出し先保存変数レジスター v6 として指定できます。
特定のアビオニクス プリエンプティブル OS の PID ホルダーとして r9 を使用したいのですが、それを保存する方法がわかりません。armcc C コンパイラは常にそれを変数レジスタとして使用するため、その値は常にアプリケーション SW によって変化します。
何か案が ?armcc で可能ですか?GCC ? ディアブ?...
助けてくれてありがとう。
よろしく
クリストフ
gcc - 「警告: コントロールが非 void 関数の終わりに達する」を抑制する方法
この関数を使用して gcc クロス コンパイラで変換された PowerPC アセンブリ コードがいくつかあります。
これは、PowerPC EABI の下で、R3 で計算された値を返します。コンパイルすると、
値が実際に返されることをgccに教える方法はありますか? または、警告を抑制する方法はありますか (-Wall を削除したり、-Wno-* を追加したりせずに)? 一般的な警告レベルを可能な限り高くするために、この関数のみのこの警告を非常に選択的に抑制したいと思います。
この関数が void を返すようにすることはオプションではありません。これは、計算された値が呼び出し元によって必要とされるためです。
c - arm 用の gnu C/C++ ツールによって生成されたスタティック ライブラリを、arm 用の Microsoft C/C++ ツールで使用する方法
Linux 環境で ARM 用の GNU ツールによって生成されたスタティック ライブラリ (.a) があり、ARM アーキテクチャ用の Microsoft ツールを使用して Windows 環境 (Visual Studio 2008) でこのライブラリを使用したいと考えています。Microsoft ツールで .a 静的ライブラリを使用する方法はありますか?
ソース コードがないため、MS コンパイラのソース コードをクロス コンパイルできません。
ありがとう!
c - gcc-arm コンパイラは、同じソース ファイルに対して異なるオブジェクト ファイルを生成します
ARM 用 GCC コンパイラの使用 (Windows):
arm-none-eabi-gcc.exe (Sourcery CodeBench Lite 2012.09-63) 4.7.2バージョン
同じソース ファイルを 5 回コンパイルするたびに、異なるオブジェクト ファイルが生成されます。
最適化レベル 3 (アグレッシブ) が使用され、コンパイラ オプションが使用されます。
-O3 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fshort-wchar -fshort-enums -funsafe-math-optimizations -mvectorize-with-neon-quad
さまざまなオブジェクト ファイルのダンプ (objdump を使用) は、使用されているアセンブリ命令、レジスタ、およびアドレスの違いが多すぎることを示しています。
コンパイラがまったく同じソース ファイルを異なる方法で最適化/コンパイルし、異なるオブジェクト ファイルを生成するのは正常ですか?! それはコンパイラのバグですか?
積極的な最適化をオフにせずにこの動作を回避するにはどうすればよいですか?
編集: オブジェクト ファイルの違いスニペット:
object_file_dump_A:
object_file_dump_B:
編集:
ソースコード :
c - C のメソッドに必要な最大スタック メモリを静的に測定する
C で記述された多数のメソッドが複数のファイルにまたがっており、それらすべてがローカル変数 (主に構造体インスタンス) を作成します。これらを Windows の ARM EABI GCC コンパイラでコンパイルした後、objdump を使用して .o オブジェクト ファイルを調べてみました。
私の質問は: メソッドで使用されるピーク スタック メモリを計算/取得するにはどうすればよいですか?
どのメソッドも、malloc を使用して動的に割り当てられたメモリを割り当てません。だから、これがもっと簡単になることを願っていました。
これが必要なのは、さまざまな最適化オプションでコンパイルしたときに各メソッドが使用するメモリ量を比較する必要があるためです。これは、ローカル メモリの最適化が実行されているかどうかを確認するためです。また、一部のローカル変数では、コンパイラがレジスタを使用する場合があることも理解しています。ただし、メソッドに必要な最大スタック メモリが何であるか、またはそれを計算する方法があるかどうかを知る必要があるだけです。
gcc - arm-none-eabi-gcc: -march オプション v/s -mcpu オプション
at91sam7s256 (マイクロコントローラー) 用の小さなプログラムを開発するために、atmel の j lynch チュートリアルに従っています。私は少し手を加えて、arm-elf (古いもの) の代わりに arm-none-eabi を使用しました。デフォルトでは、チップについて何も言及していなくても、gcc が -march=armv4t を想定してコンパイルすることがわかりました。-mcpu=arm7tdmi を使用すると、どれくらいの違いがありますか?
Googleでたくさん検索しても、個別のリンカーオプション、アセンブラー、および-MAPなどのobjcopyオプションを含むオプションのようなすべての可能なコマンドを説明する詳細なチュートリアルを見つけることができませんでした.
すべての可能性が説明されているような資料を提供できますか?