1.
Цитата
В этом вопросе каша.
Почитал методу на ibm. Давайте напишем модуль под /dev; /sys; /proc. Этот модуль вы можете допилить до драйвера. В таком духе.
Поэтому то, что вы написали далее я и не знал.
2.
Цитата
С 3.Х.Х вместо структуры устройства в тексте программы начали описывать устройства в дереве устройств.
Да, сейчас сам описыал в device tree устройство и поэтому не доходило про platform device. Зачем описывать структуру устройства в platform device, если еcть device tree.
3.
Цитата
На самом деле драйверы (о блоковых драйверах мы вообще не говорим) подразделяются на несколько групп. Список этих групп вы найдете в разделе шин: /sys/bus/ Оказалось, что есть такая группа, которую ни к одной шине отнести нельзя. Ее назвали platform.
Platform devices сами по себе не поддаются обнаружению. Т.е. устройство не может сказать "Эй! Я присутствую!" программному обеспечению. Что делать?
Для это была введена виртуальная шина (platform bus). С одной стороны устройства подключаются к такой шине, а с другой - к шине присоединяются драйвера, которые запрашивают устройства с необходимым именем.
Т.е. за это как раз и отвечают эти строки:
Код
// Из device tree
static const struct of_device_id myled_of_match[] = {
{.compatible = "xlnx,myled-1.0"},
{},
};
static struct platform_driver myled_driver = {
.driver = {
.name = DRIVER_NAME,
.owner = THIS_MODULE,
.of_match_table = myled_of_match},
.probe = myled_probe, // Обязательно
.remove = myled_remove,
.shutdown = myled_shutdown
};
Но для PCI и USB там другая картина. Как вы и написали.
4.
Цитата
Можно на все положить и сделать нестандартно, но так профессионалы не будут делать. Сделать доступ к программе (не могу назвать это драйвером) через интерфейс /proc. Но так сделать легко. Как это делать подробно изложено здесь:
https://www.iitg.ac.in/asahu/cs421/books/LKM2.6.pdfТ.е. /proc это не профессионально, но советуете книгу чтобы подробней изучить этот метод. А как тогда делают проффесионалы? Изучать примеры реальных драйверов?
На данный момент успел поковыряться с /proc. Действительно, довольно просто.
Книгу пока быстро полистал, там есть и про /dev и /proc, а дальше пока не смотрел.
Цитата
(не могу назвать это драйвером)
Из-за тогоч то нет переносимости?
Ведь драйвер это прослойка между железом и, в конечном счете, пользователем. Т.е. что надо пользователю? Знать какие есть методы, структуры и т.д. в драйвере, чтобы можно легко было взаимодействовать с железом через свою прогу.
P.S Про размещение топика учту. Толком не мог определить, куда можно задать свой вопрос.