問題タブ [nios]

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.

0 投票する
1 に答える
224 参照

assembly - なぜマスクの指示が必要なのですか?

アルテラ DE2 FPGA を搭載した Nios 2 では、次の割り込みコードを調べています。

例外時:トラップか割り込みかチェック

最初の指示とマスクの機能は理解できますが、マスクが必要な理由がわかりません。ビット 0 以外のビットにジャンクが存在する可能性があるためでしょうか。私の知る限り、ビット0のみが使用されているのに、なぜそれをマスクする必要があるのですか?

0 投票する
0 に答える
484 参照

svn - 不要なファイルをフィルタリングする Subversion pre-commit フック (ほとんどが quartus および nios によって生成されます)

svnserveで使用される pre-commit フックが、拡張子のリストに基づいてファイルを「フィルタリング」できる方法はあるのだろうか。"%APPDATA%/subversion/config"のように、Quartus および Nios プロジェクト用の *.cdf *.sof *.elf などの独自の追加パターンを使用して、グローバル無視リストに類似したリストを用意しました。私たちの主な目的は、コミット中に不要なファイルを除外してスペースを節約することです。つまり、「svn status」によって表示されないようにすることです。

Google で多くの検索を行いましたが、満足のいく解決策が見つかりませんでした。私が現在持っているアプローチの 1 つは、Windows バッチ ファイルを作成して、Subversion クライアント側のグローバル無視リストを自動的に有効にし、独自のリストに置き換えることです。問題は明らかです。単一のクライアントでしか機能しません。このフィルタリングをグローバルに適用したい場合は、リポジトリを使用するすべてのクライアントがバッチ ファイルを実行する必要があります。誰もが Windows プラットフォームを使用しているわけではないことは言うまでもありません。

私が見つけた次のアプローチは、svn:ignoreプロパティを再帰的に変更して、各パターンをグローバルに無視できるようにすることでした。繰り返しますが、この方法にはクライアント側の操作が必要であり、維持するのは簡単ではありません。リポジトリ内の現在のディレクトリにのみ適用されます。つまり、新しいディレクトリをインポートすると、無視リストは適用されません。

Python で pre-commit フックを作成しましたが、ログ メッセージの長さとコミットされるファイルのサイズをチェックするだけです。私の理解では、pre-commit フックはトランザクションに変更を加えることは想定されていません。そうしないと、クライアント側の作業キャッシュが一貫性を欠いて使用できなくなり、理解できるからです。フックは次の 2 つのことを行います。

  1. (exit 1) コードでチェックが失敗した場合、コミットを拒否します

  2. コミットをACCEPTして、トランザクションがリポジトリのリビジョンになるようにします

私が最初に考えたのは、このトランザクション内のファイルをフィルタリングする必要がある場合、コミットを拒否することでした。しかし、私の同僚は、プロジェクトを再構築するためにどのファイル拡張子が必要でないか見当がつかないことに加えて、それだけ多くのファイルを自分で管理するのは面倒だと言いました。

クライアント側の操作を伴わずに、フィルタリングのプロセスを自動化する方法が必要だと今でも感じています。今私が考えているのは、次の 2 つの pre-commit フックです。

  1. コミットを拒否し、新しく追加されたプロジェクト プロパティを変更して特定のパターンを無視します (svn:ignore のように)

  2. コミットを受け入れ、不要なファイル トランザクションを無視し、どのファイルが無視されたかをユーザーに通知し、クライアント側の作業キャッシュをリポジトリと一致させるように管理します。

オプション 1 よりもはるかに難しいように見えますが、オプション 2 をお勧めします。

さらに、どのファイルを Quartus II および Nios プロジェクト専用のバージョンに配置する必要があるかを提案してください。つまり、これらのファイルをチェックアウトした直後にプロジェクト全体を再構築できます。私が持っている現在のリストは次のとおりです: .vhd .v .qpf .qsf .bsf

0 投票する
4 に答える
8330 参照

c - Nios 2「ハローワールド」?

Nios 2 Altera DE2 ボードで複雑なプロジェクトを実行することができました。そこでは、入力と出力を使用してアセンブリと C コードでタイマーを作成しました。Nios 2 IDE を使用すると、プロジェクトを DE2 FPGA にダウンロードでき、クロックは期待どおりに動作します。しかし、プログラミング モデルのすべてを理解しているわけではなく、基本的な Hello World の例と IDE に付属する診断の例も理解しようとしています。

Hello World の例はまさに

しかし、これを「Nios 2 ハードウェアとして」コンパイルして実行すると、Hello World が IDE の標準出力に出力されるだけで、ダウンロードしてボード上で実行されることはありません。ボード上で実行されない場合、例のポイントは何ですか? もしそうなら、例がコンパイルされて実行されるので、何か間違ったことをしましたか? BSD エディタを何かに設定する必要がありますか?

アップデート

まったく機能していません。BSP エディタでさまざまな組み合わせを試しましたが、どれも機能しません。プロジェクトを「Nios II ハードウェア」として実行しようとすると、IDE でプロジェクトがボードにダウンロードされていると表示されていても、ボードでは何も起こりません。なぜ簡単なことは難しいのですか?UX はひどいものであり、推測することは科学的ではありません。

ここに画像の説明を入力

0 投票する
3 に答える
6614 参照

vhdl - FPGA での日付と時刻のコンパイル

VHDL で C-Sourcecode-Macros に似たものを使用__DATE____TIME__ て、FPGA でコンパイル時間を一種のバージョン タイムスタンプとして利用できるようにすることはできますか?

>>>VHDLへの新規参入者<<<として、ハードコードされた日付をFPGAレジスタに入れる次の既存のコードを変更したいと思います。コンパイルする前に値を調整することを常に覚えておく必要があります。これが自動的に行われると、より簡単になります。時間/分/秒も含めることはできますか?

0 投票する
4 に答える
1718 参照

c - OSの一部をアセンブリで書かなければならないのはなぜですか?

私の mini os のスケジューラーはアセンブリーで書かれていますが、なぜだろうと思います。この命令は C コンパイラで生成できないことがわかりましたeret。これは、Nios 以外のプラットフォームや x86 および/または MIPS アーキテクチャに一般化できるものですか? os の一部は常にアセンブリで記述されていると考えているため、システム プログラマがオペレーティング システムを記述するためにアセンブリを知らなければならない理由を探しています。eret割り込み後にプログラムを元の状態に戻すような特定のアセンブリ命令を生成できない C コンパイラの組み込みの制限がある場合はどうなりますか?

0 投票する
1 に答える
187 参照

c - このアルゴリズムを開発するにはどうすればよいですか?

pollkey()ミリ秒ごとに呼び出す必要があり、毎秒tick(&timeloc)呼び出す必要があり、スレッド ライブラリがありません。明らかな方法はスレッドで行うことですが、両方の更新を実行する方法についてアドバイスが必要なようです。私が試しているコードは

しかし、上記が 100% 正しいとは思いません。プログラム全体は、

遅延用のサブルーチンを作成しましたが、これは変更しないと思います:

ティックファイルは

そして、1秒の遅延があるティックファイルにあります。結果を達成するためのより正しい方法を考えられますか?

0 投票する
1 に答える
1219 参照

c - C でのポーリングと Nios 2 のアセンブリ

pollkey 関数を 1 ミリ秒に 1 回呼び出し、時間変数 (timeloc) を 1 秒に 1 回インクリメントしたいと考えています。遅延サブルーチンに a を追加すればうまくいくと思いますが、call pollkeyなぜうまくいかないのですか?

上記はCで実行しました

毎秒ポーリングする場合、ポーリングは機能しますが、ミリ秒ごとにポーリングしたいのですが、それができると思う唯一の方法は、dely サブルーチンから pollkey を呼び出すことですが、それを行っても何も起こらないようです。手伝って頂けますか?前にどうしたらいいのか聞いてみたところ、アセンブリを変更すればいいのかと思っていたところ、Cでしか答えがありませんでした。

このアルゴリズムを開発するにはどうすればよいですか?

アップデート

brの代わりに使用した方がはるかに良い結果が得られているcallので、違いを確認する必要があります。これは私が使用しているもので、よりうまく機能します:

唯一の問題は、時計が速すぎることです。

アップデート

モジュロ1000を数秒間破るカウンターを導入することで解決したと思います: