2016-07-29 7 views
-1

現在、私はBeagleBone BlackをUbuntuで使用しています。私はSIGIOを聞き、その行のデータを取得するためにread()を実行するcプログラムを作成しました。私のインターネット調査といくつかの本を見てみると、この方法は非常に効率的ではないようです。なぜなら、Signal割り込みをリスニングするループを使用することはコンテキスト切り替えが大量であるためです(このI/SIGIOが少なくとも1秒間に4回トリガし、これは非同期です)。ハードウェア割り込みを使用して、そのデータをラインから取り出してレジスタに入れて、直接メモリアクセスを使用してユーザーからアクセスできるようにすることが推奨されています。ですから、どのようにこれを行うかについてもっと詳しい情報を得ることができるのはどこにあるのでしょうか。このトピックに関する多くの情報を見つけることができますが、OSの中でどのように割り込みやシグナルかなり税金がかかります。Linux、I/O上でハードウェア割り込みを使用してダイレクトメモリアクセスを介してユーザーアクセス可能領域にデータを配置

+1

「外部リソースを求める」と投票しました。正式には正しかったが、実際にはあなたの質問はあまりにも広すぎる。 Linuxがどのように機能しているか、ハードウェア、ドライバ、特権アクセス、並行性などに関する基礎的な調査をもっと多く行う必要があります。犯行はありませんが、最初に自分のことを学び、研究するという強い要求があります。 – Olaf

+0

トピックを自分自身で最初に知るために、人々を推し進めることについてのあなたの積極性に感謝します。しかし、私はそれをかなり研究しましたが、私が見つけたものはすべて理論です。 peoleがハードウェア割り込みを使用し、DMAを使用して他の場所にデータをプッシュできるコードの実際の例は見つかりません。 –

+0

"コードの実際の例は見つかりません..."申し訳ありませんが、それはできません! Linuxはオープンソースであり、すべてのソースは無料で入手できます。割り込みとDMAを使用するカーネルソースにドライバが1つもないことを本当に伝えたいですか? – Olaf

答えて

0

タイミングとレイテンシに懸念がある場合は、おそらくリアルタイムシステムを使用する必要があります。

ビーグルボーンブラックは、幸いなことに、そのSOCにリアルタイム処理コア(PRU(Programmable real-time units))があります。 PRUの概念が初めての方は、hereを開始してから、PRUの必要性と目的を理解したら、同じWebサイトに開始するためのチュートリアルがあります。

remoteproc、rpmsg、のような最新のソフトウェアサポートでは、PRUは作業を理解した後はかなり簡単に使用できます。

関連する問題