我正在開發嵌入在具有Linux內核2.6.33的Virtex4 FPGA中的PowerPC 405。到目前爲止,我一直以內核可加載模塊的形式爲在FPGA中實現的平臺設備編寫驅動程序。設備使用平面打開固件設備樹文件進行註冊。要創建一個設備文件,我使用OF功能獲取設備節點,然後註冊一個新的miscdevice
,然後自動註冊一個次要設備編號併爲我創建設備文件。這也創建嵌入miscdevice
(即miscdevice.this_device
)的device
將現有的Linux設備結構與設備文件相關聯
現在的問題是我需要執行DMA操作。我嘗試使用miscdevice.this_device
調用dma_alloc_coherent()
函數,但該設備未與任何總線關聯,並始終返回錯誤。我做了一些挖掘,結果發現struct of_device
也嵌入了struct device
(即of_device.dev
)。當我嘗試使用dma_alloc_coherent()
時,它工作得很好。
因此,現在我有兩個不同的struct device
結構,一個用於管理我的字符設備文件,另一個用於管理底層Open Firmware系統調用,總線和DMA事務。當然這些設備在sysfs中並沒有相互關聯。
我的問題是,是否有可能以某種方式請求爲我從OF層獲得的device
結構創建設備文件,而不是使用Misc Device API創建新設備?這樣一切都將與單一的device
結構相關聯。
這不就是Linux內核2.6.33嗎? –
@PeterL。是的,謝謝。固定! –
如何在'/ dev /'下使用'register_chrdev()'註冊字符設備,並使用現有的'of_device.dev'作爲其他內容?... – TheCodeArtist