2017-09-19 10 views
0

私には、外部MCUアプリケーション用のLinuxドライバがあります。ドライバとMCUは、独自のプロトコルを使用してバスを介して通信します。Linuxカーネルとuserspace/MCU間でコードを共有

私は、カーネルモジュールとMCUの間でプロトコル機能のプログラムコードを共有したいと思いますが、カーネル用のlibをビルドすることはできないので、今のところ私の唯一のアイデアはコードを "できるだけカーネルとして"そして、プラットフォーム間で.cファイル全体をコピーするだけです。

他の方法はありますか?私はこれをやりたい最初の人にはなりません。

私はIPCのメカニズムではなくコードの再利用について話しています。

ありがとうございます!

+1

IPCのようなデータ交換メカニズムやJSONのような質問には答えられませんでしたか?私はMCUとカーネルの間でCコードを共有したいと言っていたことを理解していませんでしたか? – LethalProgrammer

+0

カーネル構築プロセスを使用して外部コンパイルされたオブジェクトを使用する唯一の方法は、*出荷された*ファイルです。しかし、私が理解する限り、それらのファイルはコードだけを運ぶことはできず、データのみを運ぶことはできません。だから、 '可能な限りカーネルとしてコードを書いてください。そして、プラットフォーム間で.cファイル全体をコピーするだけです。そのようなコードは、カーネル構築プロセスがプリコンパイルされたコードを受け入れるかもしれない場合でも必要となります。これは、スペースではなく、単一のコンパイルだけを減らします。 – Tsyvarev

+0

あなたは[ソースコード](https://en.wikipedia.org/wiki/Source_code)だけを共有することができ、多分それを共有するべきではありません。一般的に、可能であれば、カーネルコードをコーディングしないでください。あなたの質問は広すぎます。それを編集してより多くの詳細とコンテキストを与える必要があります。どのようなドライバー、あなたは何のプロトコルを思いついていますか? [MCU](https://en.wikipedia.org/wiki/Multipoint_control_unit)とは何ですか? –

答えて

0

ハードウェアの抽象化を必要とするため、プロトコルを実装するコードはハードウェア固有の詳細を必要としないようにできるだけ汎用である必要があります。 このプロトコルを実装するファイルには、init、exit、read、write、interruptのような機能があります。ハードウェア実装そのもの(gpio、memory、bus)は、init関数の呼び出し時に登録された関数ポインタを介してアクセスできます。 @smbearのようにディレクトリ構造を設定することができます

関連する問題