あなたの質問を理解できれば、この記事はあなたが探しているもののように聞こえます。この記事のタイトルは「ユーザー空間のデバイス ドライバー」です。
抜粋
<ブロック引用>UIO ドライバー
Linux は、ユーザー空間ベースのデバイス ドライバーを開発するための標準 UIO (ユーザー I/O) フレームワークを提供します。 UIO フレームワークは、次の 2 つの重要なタスクを実行する小さなカーネル空間コンポーネントを定義します:
- a.デバイスのメモリ領域をユーザー空間に示します。
- b.デバイス割り込みを登録し、ユーザー空間に割り込み指示を提供します。
次に、カーネル空間の UIO コンポーネントが、/dev/uioXX などの一連の sysfs エントリを介してデバイスを公開します。ユーザー空間コンポーネントは、これらのエントリを検索し、デバイス アドレス範囲を読み取り、それらをユーザー空間メモリにマップします。
ユーザー空間コンポーネントは、デバイスからの I/O を含むすべてのデバイス管理タスクを実行できます。ただし、割り込みの場合は、デバイス エントリでブロッキング read() を実行する必要があります。これにより、カーネル コンポーネントがユーザー空間アプリケーションをスリープ状態にし、割り込みを受信するとウェイクアップします。
これまでに行ったことがないので、これ以上のガイダンスを提供することはできませんが、あなたの探求に役立つかもしれないと考えました.
@RBerteig と同じ考え方で、BeagleBone Black には Programmable Real-Time Unit (PRU) 32 ビット マイクロコントローラーが含まれています。
これらを最大限に活用する巨大なコミュニティがあるようには見えません。これに適したコンパイラがあるかどうかさえわかりません。 SBC とマイクロコントローラーまたはマイクロコントローラー ボードのアセンブリに対する利点は、PRU コードをメイン ARM から取得できることと、共有メモリが非常に便利であることです。
これを使用したとは言えませんし、BeagleBone Black でいくつかの例を実行したとは言えませんが、この質問で表明されたニーズは、これらのニーズを持つ開発者を黒人で Pi から離れている。