Можно ли разработать и запустить драйвер устройства для телефона Android?

У меня есть Galaxy S3, который является телефоном для Android. Я хочу разработать драйвер устройства USB для него. Поэтому я сделал простой драйвер, скомпилированный с ядром Galaxy S3 Linux. Но я не могу выполнить команду "insmod" без разрешения root.

Можно ли разработать драйвер устройства для телефона Android?

Кроме того, исходный код драйвера - это типичный образец драйвера устройства с символами, в котором есть функции open(), close(), read(), write().

И сообщение об ошибке:

  1. insmod: в доступе отказано
    (не имеют прав root)

  2. insmod: неверный формат модуля
    (У вас есть права root для "рутирования". Я думаю, что ядро ​​было изменено из-за "рутирования". И драйвер устройства скомпилирован с оригинальным ядром Galaxy S3 Linux, выпущенным samsung.)

1 ответ

Решение

Да, возможно разработать драйвер устройства для любого телефона Android, если у вас есть:
- доступ к источнику ядра Linux для этого конкретного телефона.
- иметь доступ к корневой оболочке на устройстве.

Доступ к исходному тексту ядра необходим для того, чтобы можно было построить модуль ядра для этого конкретного ядра. Корневая оболочка требуется для insmod модуля ядра.

Что касается поддержки USB-хоста на телефонах Android, некоторые телефоны имеют встроенную в ядро ​​поддержку USB-хоста и будут поддерживать режим USB-хоста. Но для подключения периферийных устройств нужны соответствующие USB-кабели.

Также, чтобы преодолеть ошибку,

insmod: неверный формат модуля

вы можете попробовать использовать флаг --force-vermagic следующим образом:

insmod --force-vermagic <module.ko>

Как вы правильно догадались, это на самом деле ошибка из-за несоответствия номеров версий между ядром, запущенным на устройстве, и ядром, из которого построен модуль. Подробнее здесь.

Другие вопросы по тегам