1

NIOS II プロセッサとデバイス ツリーに組み込み Linux を使用しています。GPIO 機能は、一度に 1 ビットを読み書きする機能を提供します。一度に 32 ビットすべてを設定または読み取ることによって、アトミックに読み取りまたは書き込みを行いたいファームウェアと PIOS があります。デバイスツリーに適切な互換性が与えられた場合、デバイスを開いてデバイスの読み取りと書き込みを可能にするドライバーが存在するという汎用デバイスドライバーがあるようです。この機能を検索しましたが、ドライバーが見つかりません。1 つはブランチに存在しますが、Linus によって削除されました。

私の質問は、汎用の 32 ビット レジスタ/pio であるデバイスを読み書きする Linux デバイス ツリーの方法は何ですか?

4

1 に答える 1

1

あなたの答えはスカルです

キャラクターデバイスドライバー

デバイスを開いたり閉じたりするには、ファイル操作を使用してキャラクター デバイス ドライバーを作成する必要があります。device の内容を読み取り、書き込み、ioctl、およびコピーします。

static struct file_operations query_fops =
{
    .owner = THIS_MODULE,
    .open = my_open,
    .release = my_close,
    .ioctl = my_ioctl
};

iomem を使用してアドレスをマップし、rawread と rawwrite を使用してそのアドレスを直接読み書きします。次のようにデバイスを作成して登録すると、ユーザー空間からアクセスできるようになります。

register_chrdev (0, DEVICE_NAME, & query_fops);

device_create (dev_class, NULL, MKDEV (dev_major, 0), NULL, DEVICE_NAME);

次に、次のようにユーザー空間からアクセスします。

 fd = open("/dev/mydevice", O_RDWR);

次に、ioctl を使用してユーザー空間から GPIO を操作できます。

ioctl(fd, SET_STATE);
于 2013-05-29T16:42:15.157 に答える