#linux-kernel #raspberry-pi4
#linux-ядро #raspberry-pi4
Вопрос:
Я хочу создать свой собственный драйвер протокола для моей платы spi, изготовленной на заказ. Платформа, на которую я хочу ее подключить, — это raspberry Pi4 с arm32. Я хочу динамически загружать его с помощью дерева наложенных устройств. Я могу создать файл драйвера, но следующее неясно:
- Где именно должен быть размещен драйвер? Я попробовал /lib/modules/5.4.79-v7, /lib/modules/5.4.79-v7/build
- Я сделал в config.txt вводим dtoverlays= driver.ko и помещаем dtbo в /boot/overlays. Правильно ли это?
- Может ли драйвер загружаться во время выполнения без второй перезагрузки после того, как я поместил файл наложения в нужную папку.
- Загружается ли драйвер сначала, если вызывается функция «spi_new_device», или это можно сделать таким образом?
Если я вызываю sudo insmod .ko, драйвер загружается с:
rpi4: loading out-of-tree module taints kernel.
Функция проверки еще не вызвана.
Комментарии:
1.
make modules_install INSTALL_MOD_PATH=...
разместит его там, где это правильно. Инициализация модуля и проверка устройства — это две отдельные независимые операции (конечно, последняя не может быть выполнена без инициализации драйвера).2. Вы знаете, где? Переменная INSTALL_MOD_PATH не установлена.
Ответ №1:
- Где именно должен быть размещен драйвер? Я попробовал /lib/modules/5.4.79-v7, /lib/modules/5.4.79-v7/build
Ответ: драйвер помещается в /lib/modules/5.4.79-v7/extra, если это дополнительный модуль и сборка с ним.
make -C /lib/modules/`uname -r`/build M=$PWD modules_install
- Я сделал в config.txt вводим dtoverlays= driver.ko и помещаем dtbo в /boot/overlays. Правильно ли это?
Ответ: Это можно сделать таким образом с помощью rpi.
- Может ли драйвер загружаться во время выполнения без второй перезагрузки после того, как я поместил файл наложения в нужную папку.
Ответ: Если драйвер установлен в extra, он не загружается. Также он не загружается после перезагрузки. Драйвер должен быть загружен с помощью «modprobe», но без расширения «.ko». Modprobe ищет драйвер в lib / modules.