#linux-device-driver #kernel-module #spi #imx8 #spidev
Вопрос:
Я создал определенный драйвер в качестве модуля (m) для Linux, spi-imx от NXP. Тем не менее, Linux проверяет этот драйвер при загрузке. Я изо всех сил пытаюсь выяснить, какой процесс/другой модуль/драйвер запрашивает этот драйвер spi-imx. A depmod
не показывает никаких зависимостей между spi-imx и другими модулями (за исключением подмодуля spidev as).
После некоторых исследований я обнаружил, что Linux автоматически (?) вызывает modprobe при обнаружении нового устройства. Итак, Linux действительно вызывает modprobe, потому что статус ecSPI в дереве устройств «в порядке»? Если да, то как я могу это предотвратить? Я хотел бы динамически загружать spi-imx из приложения пользовательского пространства через modprobe. История этого: сопроцессор использует эту строку SPI параллельно процессу загрузки Linux. Это, конечно, мешает и прерывает использование сопроцессором линии SPI. Когда сопроцессор завершит передачу данных через SPI (также механизм загрузки), он должен передать строку SPI в Linux.
Я очень благодарен за любые советы, ссылки, подсказки и комментарии по этому поводу.
Комментарии:
1. Если устройство присутствует в системе и описано в таблицах встроенного ПО (ACPI, дерево устройств и т. Д.), Linux попытается его перечислить. Ваша проблема в неправильном соединении контактов с афаикой. Вам нужно запросить PIN-коды, чтобы драйвер хост-контроллера SPI не был проверен.
2. Несколько хакерским вариантом было бы занести модуль в черный список в файле /etc/modprobe.d/*.conf, содержащем строку
blacklist spi-imx
. Это предотвратит автоматическую загрузку модуля (устройством, соответствующим одному из его псевдонимов), но его все равно можно загрузить с помощью командmodprobe
илиinsmod
.
Ответ №1:
Большое спасибо за ответы. Как вы, ребята, упомянули, я также обнаружил, что Linux сам проверяет устройство, если оно присутствует («хорошо»).
Одним из возможных решений является полное отключение вызова modprobe с помощью записи типа «установить spi-imx /bin/false» в файле *.conf. Но это делает невозможной загрузку драйвера через modprobe для Linux и для пользовательского пространства.
«черный список spi-imx» внутри файла *.conf, расположенного по адресу /etc/modprobe.d/, позволяет предотвратить проверку драйвера Linux при загрузке. После этого модпроб из пользовательского пространства может успешно загрузить драйвер.
Еще раз спасибо и с наилучшими пожеланиями