3

AndroidフォンであるGalaxy S3を持っています。そのための USB デバイス ドライバーを開発したいと考えています。そこで、Galaxy S3 Linux Kernel でコンパイルされた単純なドライバーを作成しました。しかし、root 権限がないと 'insmod' コマンドを実行できません。

Androidフォン用のデバイスドライバを開発することは可能ですか?

また、ドライバーのソース コードは、open()、close()、read()、write() 関数を含む典型的なキャラクター デバイス ドライバーのサンプルです。

エラーメッセージは次のとおりです。

  1. insmod: 権限が拒否されました
    (ルート権限がありません)

  2. insmod: 無効なモジュール形式
    (「ルート化」によってルート権限を持っています。「ルート化」によってカーネルが変更されたと思います。また、samsung によってリリースされたオリジナルの Galaxy S3 Linux カーネルでコンパイルされたデバイス ドライバ。)

4

1 に答える 1

3

はい。次の条件を満たしている限り、任意のAndroid電話用のデバイスドライバーを開発できます
。-その特定の電話のLinuxカーネルソースへのアクセス。
-デバイスのルートシェルにアクセスできます。

その特定のカーネルに対してカーネルモジュールを構築できるようにするには、カーネルソースへのアクセスが必要です。kernel-moduleをinsmodするには、ルートシェルが必要です。

AndroidフォンでのUSBホストのサポートに関して、特定の電話にはカーネルにUSBホストサポートが組み込まれており、USBホストモードをサポートします。ただし、周辺機器を接続するには、適切なUSBケーブルが必要です。

また、エラーを克服するために、

insmod:無効なモジュール形式

次のように--force-vermagicフラグを試してみてください。

insmod --force-vermagic <module.ko>

ご想像のとおり、実際には、デバイスで実行されているカーネルとモジュールが構築されているカーネルとの間のバージョン番号の不一致によるエラーです。詳細はこちら

于 2012-08-02T18:14:45.520 に答える