現在、私はBeagleBone BlackをUbuntuで使用しています。私はSIGIOを聞き、その行のデータを取得するためにread()を実行するcプログラムを作成しました。私のインターネット調査といくつかの本を見てみると、この方法は非常に効率的ではないようです。なぜなら、Signal割り込みをリスニングするループを使用することはコンテキスト切り替えが大量であるためです(このI/SIGIOが少なくとも1秒間に4回トリガし、これは非同期です)。ハードウェア割り込みを使用して、そのデータをラインから取り出してレジスタに入れて、直接メモリアクセスを使用してユーザーからアクセスできるようにすることが推奨されています。ですから、どのようにこれを行うかについてもっと詳しい情報を得ることができるのはどこにあるのでしょうか。このトピックに関する多くの情報を見つけることができますが、OSの中でどのように割り込みやシグナルかなり税金がかかります。Linux、I/O上でハードウェア割り込みを使用してダイレクトメモリアクセスを介してユーザーアクセス可能領域にデータを配置
-1
A
答えて
0
タイミングとレイテンシに懸念がある場合は、おそらくリアルタイムシステムを使用する必要があります。
ビーグルボーンブラックは、幸いなことに、そのSOCにリアルタイム処理コア(PRU(Programmable real-time units))があります。 PRUの概念が初めての方は、hereを開始してから、PRUの必要性と目的を理解したら、同じWebサイトに開始するためのチュートリアルがあります。
remoteproc、rpmsg、のような最新のソフトウェアサポートでは、PRUは作業を理解した後はかなり簡単に使用できます。
関連する問題
- 1. Linuxスケジューラはハードウェア割り込みを認識していますか(スケジューラジッタ)
- 2. javascript/DOMを使用してブラウザウィンドウの表示可能領域の中心にダイアログボックスを配置
- 3. アプリケーションレイアウトコントロールを使用してOneUI .lotusBanner領域にグラフィックを配置する方法
- 4. スタック領域としてメモリ領域を使用しますか?
- 5. 角度領域を使用して画像領域を選択
- 6. 「不可能な」nullがJava IOを使用して読み込みファイルを返しました
- 7. TRAP、ソフトウェア割り込みとハードウェア割り込みの違いは?
- 8. Linux Userspace sysfsを使用したGPIO割り込み
- 9. 配列を使用して追加領域を追加する
- 10. 関心領域opencvを使用して
- 11. ベクトル用に大量の領域を割り当てる
- 12. ポリゴンクリッピング:「視認可能」領域のみ
- 13. iOSタップ可能領域で
- 14. 算術オーバーフローのハードウェア割り込み?
- 15. 可視領域の位置
- 16. Boto3(Python)で使用可能な領域をリストする方法
- 17. Linuxユーザ空間から16550A UARTハードウェアFIFO割り込みレベルを設定する
- 18. ListView - 実際に使用可能な領域を集計する
- 19. (Swift 2.1)MKMapViewで可視領域の注釈を読み込む
- 20. 同期データ取得のためのハードウェア割り込み
- 21. Drupalで領域にプログラムを割り当てる7
- 22. x86ハードウェア割り込みがqemuで動作しません
- 23. Arduino/ESP8266割り込みを使用してサンプルを取る
- 24. PhpStormは折りたたみ可能なコード領域(Visual Studioスタイルの領域)を定義できますか?
- 25. 割り込みベースのUART IOのマスター
- 26. jQuery img relテキスト配置を別の領域に配置
- 27. 親を介してデータを読み込んで、パイプを使用して子に送信
- 28. 生成されたビットマップをベクター描画可能領域の代わりにAPI 21以上で使用する
- 29. interruptPiを使用して割り込みとlcdを同時に使用する
- 30. Linuxの割り込みレイテンシー
「外部リソースを求める」と投票しました。正式には正しかったが、実際にはあなたの質問はあまりにも広すぎる。 Linuxがどのように機能しているか、ハードウェア、ドライバ、特権アクセス、並行性などに関する基礎的な調査をもっと多く行う必要があります。犯行はありませんが、最初に自分のことを学び、研究するという強い要求があります。 – Olaf
トピックを自分自身で最初に知るために、人々を推し進めることについてのあなたの積極性に感謝します。しかし、私はそれをかなり研究しましたが、私が見つけたものはすべて理論です。 peoleがハードウェア割り込みを使用し、DMAを使用して他の場所にデータをプッシュできるコードの実際の例は見つかりません。 –
"コードの実際の例は見つかりません..."申し訳ありませんが、それはできません! Linuxはオープンソースであり、すべてのソースは無料で入手できます。割り込みとDMAを使用するカーネルソースにドライバが1つもないことを本当に伝えたいですか? – Olaf