問題タブ [realview]
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.
debugging - RealView Debug(RVDebug) を使用したデバッグ
ARM926 ターゲット用の C コードがいくつかあります。「Arm Xtended Debugger」(AXD) を使用してデバッグしようとしています。このmain()
コードの は、コード ウォリアー プロジェクトの設定で適切な場所に記載されている 14 個のコマンド ライン引数を取り、コードの動作は期待どおりです。
しかし、同じ AXF (Arm eXecutable Format file) ファイルを使用して、Codewarrior プロジェクトの設定を変更して RVDEBUG を使用してソース レベルのデバッグを試み、デバッグを開始すると、argc 値は 1 になります。コードは予想外です。
Code Warrior 設定で RVDEBUG を選択すると、AXD デバッグ セッション中に使用したものと同じオプションが表示されます。
だから私の質問は:
両方のデバッグ セッション (AXD と RVDEBUG) で同じ AXD を使用していますが、動作が異なるのはなぜですか? それらは同じように動作する必要があります。
c++ - C ++マクロに改行を含める方法、またはC ++テンプレートを使用して同じことを行う方法は?
私は次の質問を見ました: cppマクロで改行を生成する方法は?
C++プリプロセッサの改行の必要性について簡単に説明します。C++コードで埋め込みアセンブリコードを使用するコードでARMRealviewコンパイラ3.1に取り組んでいます。
上記のマクロは、関数本体の各ステートメント間に強制的に改行を必要とする埋め込みアセンブリ関数を宣言します。
これは、関数本体のテキストがARMコンパイラによって盲目的にARMアセンブラに送信されるためだと思います。
なぜC++プリプロセッサはまだ複数行の置換をサポートしていないのですか?また、置換文字列で#を使用することはできません。たとえば、この種のアセンブリの場合、
私はたくさんの方法と方法を試しましたが、実際には何もうまくいきませんでした。ARMアセンブラ/コンパイラは非常に基本的であるため、GCCにはasmvolatileのようなAPIはありません。
DEFINE_FUNCTIONマクロは多くの場所で使用されているため、無視することもできません。
したがって、最終的な手段として、次の解決策について考えます。
- C++プリプロセッサの代わりにm4プリプロセッサを使用する
- C ++テンプレートを使用してこれを何らかの方法で実現し、grep/sedを使用してDEFINE_FUNCTIONを置き換えます
誰かが私に上記のことをするための指針や方法を教えてもらえますか?ARMRealviewコンパイラ3.1以外のコンパイラは使用できません。
、、の新しい行を使用して、以下のような拡張が必要です DEFINE_FUNCTION(void*, mov_lt, #0x04) {}
。
c++ - プラグマまたはコード変更を使用して列挙ベースタイプをオーバーライドする
問題:
私は、列挙型ベースタイプがデフォルトで32ビット(整数型)であるgccおよびビジュアルスタジオコンパイラで動作する大きなC /C++コードベースを使用しています。
このコードには、列挙型を整数型として扱い、多くの場合、列挙型データが32ビットフラグとして使用されるインライン+埋め込みアセンブリも多数含まれています。
このコードをrealviewARMRVCT 2.2コンパイラでコンパイルすると、realviewコンパイラがenumが設定されている値に基づいてenumベースタイプを自動的に決定するため、多くの問題が発生し始めました。http://www.keil.com/support/man/docs/armccref/armccref_Babjddhe.htm
例えば、
以下の列挙型を検討してください。
この列挙型は32ビットフラグとして使用されます。ただし、コンパイラは、この列挙型のunsignedchar型に最適化します。
--enum_is_intコンパイラオプションを使用すると、すべての列挙型が32ビットに変換され、-enum_is_intなしでコンパイルされた外部コードとの相互作用が中断されるため、この場合は適切なソリューションではありません。
これは、RVCTコンパイラとライブラリガイドで見つけた警告です。
--enum_is_intオプションは、一般的な使用には推奨されておらず、ISO互換のソースには必要ありません。このオプションでコンパイルされたコードは、ARMアーキテクチャ(基本標準)[BSABI]のABIに準拠していないため、誤って使用すると、実行時に障害が発生する可能性があります。このオプションは、C++ライブラリではサポートされていません。
質問
値の順序に影響を与えることなく、すべての列挙型の基本型を(手動でコーディングされた変更によって)32ビットを使用するように変換するにはどうすればよいですか?
上記の変更を試みました。しかし、コンパイラはこれを私たちの不運のためにも最適化します。:(
.NETには次のような構文があります
列挙型スケール:int
これはISOC++標準であり、ARMコンパイラにはありませんか?
ARMRVCT2.2コンパイラでこの列挙型を制御する#pragmaはありません。利用可能な隠しプラグマはありますか?
axd - AXD から Realview に移行する方法
私は常に AT91 RM9200 ボードの AXD を使用してアーム プロジェクトをデバッグしていますが、今は realview デバッガーを試してみたいと思っています。より強力なようです。メモリを再マップするための AXD 用の構成スクリプトがありますが、realview デバッガーで使用する方法が見つからないため、イメージをロードするときに 0x20000000 を書き込めないと文句を言います。この 2 つのデバッガーの使用経験がある方からアドバイスをいただけないでしょうか。どうもありがとうございました。
c++ - rvctでコンパイルしたときに呼び出されないグローバル静的メンバーのコンストラクター
ええと、これは説明するのがちょっと複雑です。次のようなヘッダーを持つ静的ライブラリをコンパイルしています。
Cppには、fooMemberの初期化があります。
静的ライブラリを私が書いているアプリケーションにリンクするとき、呼び出されるはずのGooメソッドが呼び出されていません。正確には、DoSomethingExciting()メソッドはまったく呼び出されません。私はアプリケーションでFooクラスを使用します。私が線を引くとき:
私のアプリケーションのCPPでは(もちろん静的ライブラリから同じ行を削除します)、Goo()が呼び出されていることがわかります。
発生している問題に名前を付ける方法がわかりません。グローバル静的メンバーの初期化などの問題だと思います。
RVCTを使用してコンパイルしています。Visual Studioで同じシナリオをコンパイルすると、すべてがうまく機能します。RVCTの動作が異なると推測しているので、コンパイルフラグを追加する必要があるかもしれません。
ところで、コンパイルされた実行可能ファイルで逆コンパイラーを使用しようとしましたが、メソッドがファイルにあることは確認しましたが、Goo()の呼び出しは表示されませんでした。
私は私の問題について十分に明確であったことを願っています:)
前もって感謝します...
embedded - Realview ツールでビルドするとコードのパフォーマンスが低下するのに、Codesourcery でビルドするとパフォーマンスが向上するのはなぜですか?
Codesourcery の gnu ツール チェーンを使用して以前にビルドされた C プロジェクトがあります。最近、Realview の armcc コンパイラを使用するように変換されましたが、Realview ツールで得られるパフォーマンスは、gnu ツールでコンパイルした場合に比べて非常に貧弱です。逆の場合、つまり、Realview のツールでコンパイルするとパフォーマンスが向上するはずではありませんか? ここで何が欠けていますか。Realview のツールを使用してパフォーマンスを改善するにはどうすればよいですか?
また、Realview Tools によって生成されたバイナリを Lauterbach で実行するとクラッシュすることにも気付きましたが、Realview ICE を使用して実行すると正常に実行されます。
更新 1
Realview コマンド ライン:
armcc -c --diag_style=ide --depend_format=unix_escaped --no_depend_system_headers --no_unaligned_access --c99 --arm_only --debug --gnu --cpu=ARM1136J-S --fpu=SoftVFP --apcs=/nointerwork - O3 -Otime
GNU GCC コマンドライン:
arm-none-eabi-gcc -mcpu=arm1136jf-s -mlittle-endian -msoft-float -O3 -Wall
Realview Tools バージョン 4.1 と GCC バージョン 4.4.1 を使用しています
更新 2
ローターバッハの問題は解決されました。セミホスティング SWI が Lauterbach 環境で処理されていなかったため、セミホスティングが原因でした。セミホスティングを回避するために C ライブラリを再ターゲットすることでうまくいき、私のプログラムは、Lauterbach と Realview ICE で正常に動作するようになりました。しかし、パフォーマンスの問題はそのままです。
c - コンパイラが特定のオブジェクトファイルにリンクしないように強制する
私は現在、rvctコンパイラが特定の変換単位でリンクしないように強制し、リンクされているふりをする可能性を調査しています。
当社の製品はスペースの制約に非常に厳しい状況で稼働しており、スペースを管理しながらいくつかの単体テストを統合するのに問題があります。
基本的に、実行時に利用できるメモリは、単体テストを格納するのに十分ですが、それらを保持するための十分なROMスペースがありません。
コードのメモリのどのセグメントがスキャッタファイルのデバイスに入るのかを正確に制御する手段があるので、単体テストコードが配置される領域を定義する方針に沿って考え、コンパイラにリンクしないように強制しますコンパイル時にその特定のコードで。
次のようなもの:
次に、実行時に、単体テストバイナリを、スキャッタファイルで定義した指定のメモリ領域にアップロードし、にフリップhasTestInMemory
しtrue
ます。
これは可能ですか?
または、そうでない場合は、スペースの制約を満たし、実行時に単体テストをロードできるソリューションを探す正しい方向を誰かに教えてもらえますか。
ありがとう、
linux - unistd.h の実装
私のツールチェーン ( Realview )unistd.h
にはの実装がありませunistd.h
ん。access
open
したがって、この機能を自分で実装する必要があります。
私の質問は、これらの関数を移植/実装するために使用できる別の代替手段または参考文献 (ここにある関数の説明を除く) はありますか?
それを行う正しい方法は何ですか?初めての投稿です。