Можно ли разработать и запустить драйвер устройства для телефона Android?
У меня есть Galaxy S3, который является телефоном для Android. Я хочу разработать драйвер устройства USB для него. Поэтому я сделал простой драйвер, скомпилированный с ядром Galaxy S3 Linux. Но я не могу выполнить команду "insmod" без разрешения root.
Можно ли разработать драйвер устройства для телефона Android?
Кроме того, исходный код драйвера - это типичный образец драйвера устройства с символами, в котором есть функции open(), close(), read(), write().
И сообщение об ошибке:
insmod: в доступе отказано
(не имеют прав root)insmod: неверный формат модуля
(У вас есть права root для "рутирования". Я думаю, что ядро было изменено из-за "рутирования". И драйвер устройства скомпилирован с оригинальным ядром Galaxy S3 Linux, выпущенным samsung.)
1 ответ
Да, возможно разработать драйвер устройства для любого телефона Android, если у вас есть:
- доступ к источнику ядра Linux для этого конкретного телефона.
- иметь доступ к корневой оболочке на устройстве.
Доступ к исходному тексту ядра необходим для того, чтобы можно было построить модуль ядра для этого конкретного ядра. Корневая оболочка требуется для insmod модуля ядра.
Что касается поддержки USB-хоста на телефонах Android, некоторые телефоны имеют встроенную в ядро поддержку USB-хоста и будут поддерживать режим USB-хоста. Но для подключения периферийных устройств нужны соответствующие USB-кабели.
Также, чтобы преодолеть ошибку,
insmod: неверный формат модуля
вы можете попробовать использовать флаг --force-vermagic следующим образом:
insmod --force-vermagic <module.ko>
Как вы правильно догадались, это на самом деле ошибка из-за несоответствия номеров версий между ядром, запущенным на устройстве, и ядром, из которого построен модуль. Подробнее здесь.