0

私はザイリンクスZynqアプリケーションにPetalinuxを使用しています。私はカーネルドライバ開発を初めて行っています。デバイスツリーからの情報でプラットフォームデバイスを登録する

AXI FIFOインターフェイス用のプラットフォームドライバ用のカーネルモジュールを作成しました。デバイスは、cat /proc/iomemで予約された正しいメモリスペースを見ることができるので、デバイスツリーから.of_match_tableを使って認識されているようです。

私は、ドライバ名XXXを検索する場合、私は

./lib/modules/4.4.0-xilinx/extra/xxx.ko 
./sys/bus/platform/drivers/xxx 
./sys/module/xxx 
./sys/module/xxx/drivers/platform:xxx 

を取得し、私は/sys/bus/platform/devices/43c00000.axi_xxxxの下でデバイスを見つけましたが、まだそれにアクセスしたり、/dev/の下でそれを見ることができません。

  • デバイスを登録してユーザースペースアプリから開くことができますか?

  • メモリを割り当ててから、platform_device_register(pdev)を使用して新しいデバイスを登録する必要がありますか?あなたが作成したデバイスファイルを取得するためのフレームワークでデバイスを登録する必要があり

おかげ

答えて

0

あなたのケースにmiscdeviceを登録することをお勧めします。文字デバイスを登録するだけです。

あなたのプローブで
static struct miscdevice miscdev; 

static ssize_t myaxi_read(struct file *file, char __user *buf, 
       size_t sz, loff_t *ppos) 
{ 
    // Do something 

} 

static ssize_t myaxi_write(struct file *file, const char __user *buf, 
        size_t sz, loff_t *ppos) 
{ 
    // Do something 
} 

static const struct file_operations myaxi_fops = { 
    .owner = THIS_MODULE, 
    .write = myaxi_write, 
    .read = myaxi_read, 
}; 

miscdev.minor = MISC_DYNAMIC_MINOR; 
miscdev.name = "myaxi"; 
miscdev.fops = &myaxi_fops; 
misc_register(&miscdev); 

あなたはhttp://free-electrons.com/doc/training/linux-kernel/linux-kernel-slides.pdf

+0

おかげでのLinuxカーネルドライバの開発とデバイスモデルの詳細を読むことができ、これは助け - あなたはおそらく[リンク]を参照しています( http://free-electrons.com/doc/training/linux-kernel/linux-kernel-slides.pdf)。私はこれをさらに発展させます。 – gavenant

+0

確かに、リンクを修正しました –

関連する問題