3

ここに問題があります: PIO の 2 つのピン (1 クロック、1 データ) を介していくつかのハードウェアをプログラムする必要があります。タイミングの制約は厳しく、クロック サイクル タイムは 10ms です。もちろん、これはすべて、非常に高レベルのサービス (CAN バス、TCP/IP) を維持しながら行います。ダウンストリーム ユニットも、入力として構成された PIO ピンをハイにアサートすることによって ACK を返します。したがって、このループは読み取りと書き込みの両方を行う必要があります。シリアル ストリームで 16 ビットを送信する必要があります。

この種のことを行うための確立された方法はありますか、それとも単にハードウェア担当者に PIC などを追加してもらう必要がありますか。

この段階では、RTAI 拡張のような風変わりなものは避けたいと思います。私は一度、ユーザーモード IO への参照を見たことがあります。これは、割り込み駆動型ドライバーの可能性を暗示していましたが、それを見失っていました。

どんな指針も歓迎します。

4

1 に答える 1

0

私の経験では、最も簡単な方法はカーネル ドライバーを作成することです。もちろん、1 クロック、1 データは i2c のように聞こえますが (10ms サイクルは i2c よりもはるかに遅いように聞こえます)、Coldfire 用のビットバンギング i2c ドライバーが既に存在していない場合です。i2c でなくても、出発点として i2c-adap-mcf_gpio を使用できる場合があります。

10 ミリ秒のサイクルであるという点で、実際には幸運です。デフォルトのカーネル ティックは 10 ミリ秒です (必要に応じて調整できます)。したがって、適切なカーネル スリープ機能を使用できるはずです。

(これはすべて、使用しているカーネルにも依存します。簡単なユーザーモード I/O は、2.6 カーネルでかなり簡単に利用できます。2.4 カーネルには機能がありますが、より多くの作業が必要になる場合があります。)

于 2010-09-04T15:29:10.610 に答える