問題タブ [microblaze]
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.
tcp - ザイリンクスの microblaze IP スタックの問題に関するチュートリアル
私のチームは microblaze を使用していますが、IP スタックに問題があります。
私は通常、組み込みプログラマーではありませんが、支援する方法を学びたいと思っています。
IP スタックに関するチュートリアルはありますか? 彼らは何ですか?それらはどのようにプログラムされていますか?IP スタックの問題をトラブルシューティングするにはどうすればよいですか?
基本的にどんな情報でも役に立ちます。
前もってありがとう、
オマー。
編集:
当社の電子技術者によると、これが問題です:
Spartan-3A DSP S3D1800A サーキットで lwIP を使用し、BSB を使用しており、マイクロブレイズを使用しています。
提供された Echo Server デモを使用しようとしていますが、telnet へのポートを開き、そこから受信したメッセージをエコーするはずですが、そうではありません。
何が問題なのか、まったくわかりません。
c - ザイリンクス Microblaze C とアセンブリ
Xilinx Microblazeコア用に C で記述されたアプリケーションがあります。しかし、パフォーマンスは私が望んでいたものではなく、アセンブリのコア関数のいくつかを書き直すことを検討していました。ただし、Xilinx Platform Studio で両方を 1 つのELFファイルにコンパイルする方法がわかりません。
どうすればいいですか?
embedded - ザイリンクス FPGA で EDK を使用せずに Microblaze をプログラムすることはできますか?
ザイリンクス FPGA デバイスで EDK を使用せずに Microblaze をプログラムすることはできますか?
Linuxで開発しています。
それについての推奨されるチュートリアル/本はありますか?安定したオープンソースのクローンはありますか?
c - コード変更後の Microblaze での実行時間の変化
Microblaze で実行するコードにいくつかの変更を加えると、同じパスをたどるコードの実行で実行時に大きな不一致が見られることがあります。私が実際に同じパスを意味することを説明するために、次の例を取り上げます。
つまり、 function のコードを変更すると、が設定されていて functionが変更されていないexecute_that
場合でも、実行時に変更が表示されます。何が原因でしょうか? 関数のメモリ配置?キャッシュ?どんな手掛かり?condition
execute_this
c - これの何が問題なのですか?
これをコードのどこに置いても...
error: parse error before "check_alphas"が発生します。
microblaze gcc を使用しています。何がこれを引き起こす可能性がありますか?私は今本当に怒っています!
c - システムC/ザイリンクスXによって指定されたVerilogデータで絶対値を見つける
ザイリンクスSystemCを使用してVerilogコアに指定された整数の絶対値を見つけようとしていますが、Verilogは負の数を正の数として扱うことがわかりました。
私はすべてのデータ型を試しました: signed int
、、。int
Xuint32
私のSystemCまたはザイリンクスCコードは次のとおりです。
変数の値を取得した後、ハイパーターミナルに出力しました。
私のVerilog側では、コードは次のとおりです。
私もこのコードを試しましたが、結果は似ていました
親切に私を助けてください!
他のデータ型を試し、パラメータを変更しましたが、結果はうまくいきませんでした。常に入力したのと同じ数値を取得します。
ステートメントは真実ではありません、私も試しましたin<=0;
gcc - Microblaze CPU、アセンブリ言語の割り込みハンドラーへの分岐
私はアセンブリ言語とmicroblazeCPUにかなり慣れていませんが、割り込み処理を機能させるのに問題があります。
私は自分のスタートアップと初期化ルーチンを書くことを余儀なくされています。(通常はcrt0に含まれているもの)そして、指定されたアドレスの割り込みハンドラーへの分岐で何か問題が発生していると思います。ドキュメントでは、コードアドレス0x10から割り込みハンドラーに分岐すると言われていますが、私のテストプログラムでは機能しません。
ここでmicroblazeのドキュメントを見つけることができます。私はpを参照しています。102(割り込みおよび例外処理)
ここに「my_crt0_intc.asm」のコードが表示されます
私のテストプログラム'test_interrupt_cpu_intc_gpio.asm'は、アドレス0x81400000のLEDを介して割り込みを通知することを目的としています。
エラーの症状は次のとおりです。MSRで割り込みを有効にしない場合、LED 0001が点滅し、適切なボタンを押して割り込みをトリガーすると、LED1000と0100がアクティブになります。ただし、この状況ではもちろん、CPUは割り込みを処理せず、割り込みハンドラルーチンに分岐しません。
しかし、MSRで割り込みを有効にして割り込み処理を有効にすると、最初にLED0001が点滅します。割り込みをトリガーした後、led 0001は永続的に設定されます(または、割り込みが発生したときにled 0001がすでに設定解除されている場合は、それぞれunset)。LED 1000と0100は非アクティブのままです。これは、CPUが機能しなくなったようです。
mb-gccツールを使用して次のようにコードをコンパイルしました。
どんな助けでも素晴らしいでしょう。この問題は本当に厄介で、私はこれに何日も取り組んでいます。私は本質的にコードの何かを見逃していると確信しています。追加情報が必要な場合は、お知らせください。
アップデート:
mb-gdbを信頼できる限り、私のプログラムはアドレス0x50から始まります。これが本当なら、これは私のブランチ操作が決して実行されない理由を説明します。
重要な指示を正しい位置に配置するために、いくつかのことを試みました(1)
(2)mb-gccとオプションx1-mode-xmdstubでリンクしようとしました(ドキュメントに記載されているように、標準のcrt0.oはこのオプションを使用してリンクされていません)->しかし、この場合、エラーが発生します、_startの複数の定義
(3)mb-ld test_interrupt_cpu_intc_gpio.o my_crt0_intc.o -o../executable.elf-Nを試しました
このように、動作は変更されますが、test_interrupt_cpu_intc_gpio.asmがアドレス0x50で開始されるため、まだ正しくありません。
ありがとう、セマ
c++ - パフォーマンスを高く維持しながら、標準のC /C++コードにカスタム命令/拡張機能を含めて変換する方法
FPGAおよびASIC用の汎用画像処理コアを開発しています。アイデアは、標準のプロセッサをそれに接続することです。私が抱えている問題の1つは、それを「プログラム」する方法です。説明させてください:コアには、私の「カスタム」拡張機能用の命令デコーダーがあります。例えば:
そしてもっとそのようなものがたくさんあります。この操作は、次のようなプロセッサforループ、非ベクトル操作などを使用して、プロセッサによってバスを介してコアに送信されます。
プログラムはC/C++で書かれています。コアは、マシンコードでの命令自体のみを必要とします
- オペコード=vector_add= 0x12h
- register_src_1 = v0 = 0x00h
- register_src_2 = v1 = 0x01h
register_dst = v2 = 0x02h
マシンコード=opcore| v0 | v1 | v2 = 0x7606E600h
(または何でも、バイナリで命令を構築するためのさまざまなフィールドの単なる組み合わせ)
バスを介してコアに送信すると、コアは専用バスを使用してメモリからすべてのデータを要求し、プロセッサを使用せずにすべてを処理できます。大きな手がかりは、前の命令を16進表現に変換するにはどうすればよいかということです。(バスを介して送信しても問題ありません)。頭に浮かぶいくつかのオプションは
- インタプリタされたコードを実行する(プロセッサで実行時にマシンコードに変換する)->ある種のインラインマクロを使用しても、非常に遅い
- カスタムセクションを外部カスタムコンパイラでコンパイルし、外部メモリからバイナリをロードして、独自の命令でコアに移動します->ソースコードの読み取り/理解が難しい、SDK統合が不十分、コードが非常にセグメント化されている場合はセクションが多すぎる
- JITコンパイル->これだけで複雑になりますか?
- コンパイラの拡張->悪夢!
- ループ、ポインタ、メモリ割り当て、変数など、すべてを処理するためにカスタムコアに接続されたカスタムプロセッサ...->作業が多すぎる
問題はソフトウェア/コンパイラに関するものですが、このトピックに関する深い知識を持っている人にとっては、これはFPGAのSoCであり、メインプロセッサはMicroBlazeであり、IPコアはAXI4バスを採用しています。
正しく説明できたらいいのに…よろしくお願いします!
gdb - gdb のようなデバッガは、JTAG を介してブレークポイントを設定するためにどのように機能しますか?
私はgdbでデバッグに取り組んでいます。JTAG を介して組み込みプロセッサにブレークポイントを設定するために、gdb が内部でどのように機能するかを知りたいと思っていました。
c - ループ展開-MicroblazeCプログラミング
EDKを使用したMicroblazeCプログラミングでループ展開を行うことはできますか?
より多くのパフォーマンスが必要なため、これが必要です。従来、私のCコードはシリアルに実行されるため、コンパイラ指令を使用してループを展開すると、アプリケーションが高速化されます。
(たとえば、openMPを使用する場合と同様)。
これはMicroblazeで可能ですか?はいの場合、同じ例はありますか?