0

我使用Petalinux作爲Xilinx Zynq應用程序,而我是內核驅動程序開發的新手。使用來自設備樹的信息註冊平臺設備

我爲AXI FIFO接口的平臺驅動程序創建了一個內核模塊。這些設備似乎可以使用.of_match_table從設備樹中識別,因爲我可以看到使用cat /proc/iomem保留的正確內存空間。

如果我搜索驅動程序名稱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); 

你可以閱讀更多關於Linux內核驅動程序的開發,並在http://free-electrons.com/doc/training/linux-kernel/linux-kernel-slides.pdf設備模型

+0

謝謝,這幫助 - 你可能指的是[鏈接]( http://free-electrons.com/doc/training/linux-kernel/linux-kernel-slides.pdf)。我將在此基礎上進一步構建。 – gavenant

+0

當然,我糾正了鏈接 –