Я разрабатываю PowerPC 405, встроенный в FPGA Virtex4 с ядром Linux 2.6.33.Связать существующую структуру устройства Linux с файлом устройства
До сих пор я писал драйверы для устройств платформы, реализованных в FPGA в виде загружаемых модулей ядра. Устройства регистрируются с использованием файла Open Open Firmware Device Tree. Чтобы создать файл устройства, я использую функции OF, чтобы получить узел устройства, а затем зарегистрировать новый miscdevice
, который затем автоматически регистрирует номер младшего устройства и создает для него файл устройства. Это также создает device
, встроенный в miscdevice
(то есть miscdevice.this_device
)
Проблема Теперь мне нужно выполнить операции DMA. Я попытался вызвать функцию dma_alloc_coherent()
, используя miscdevice.this_device
, но это устройство не связано ни с одной шиной и всегда возвращает ошибку. Я сделал кое-что, и оказалось, что struct of_device
также имеет встроенный в него struct device
(то есть of_device.dev
). Когда я попытался использовать это с dma_alloc_coherent()
, он работал отлично.
Итак, теперь у меня есть две разные структуры struct device
, одна для управления файлом персонального устройства и одна для управления базовыми системными вызовами Open Firmware, транзакциями шины и DMA. Разумеется, эти устройства не связаны друг с другом в sysf.
Вопрос в том, можно ли как-то запросить создать файл устройства для структуры device
, который я получаю с уровня OF, а не создавать новое устройство с API-интерфейсом Misc? Таким образом, все будет связано с одной структурой device
.
Не будет ли это ядро Linux 2.6.33? –
@PeterL. Да спасибо. Исправлена! –
Как насчет регистрации символьного устройства под '/ dev /' с помощью 'register_chrdev()' и с использованием существующего 'of_device.dev' для всего остального? ... – TheCodeArtist