現在、カスタム プロトコル用の gpio ベースのカーネル モジュールを開発しています。プロトコルの要件に従って、データ、クロック、およびイネーブル信号を gpio を介して出力デバイスに送信する必要があります。このデータは 16 ビットです。新しいデータを送信するには、イネーブル信号が最初にハイになります。その後、データはクロックの負エッジ (High から Low) ごとに 1 ビットずつ送信されます。16 ビットすべてを送信した後、クロック信号が停止し、イネーブル信号が Low になります。
私はこのプロトコルを FriendlyARM mini2440 で開発しました。その時、私はタイマーの 1 つを使用し、その irq をセットアップしました。そのサービス ルーチンで、データを 1 ビットずつ送信しました。
私は現在、ラズベリーパイで同じことをしています。BCM2825 のデータシートを読みましたが、4 つのシステム タイマーがあると書かれています。しかし、Rpi フォーラムを検索すると、Rpi はシステム タイマー 0、2、および 3 を使用していることがわかりました。Rpiでシステムタイマーを設定する方法がわかりませんでした。カーネルモジュールで使用した人はいますか? それから助けてください。
カーネル モジュールを作成する代わりに、Linux カーネルに xenomai パッチを適用すると、定期的なタイマーをセットアップし、タイマー割り込みルーチンを介してデータを送信するのは簡単な作業になりますか?
助言がありますか?前もって感謝します。