3

我有一部 Android 手机 Galaxy S3。我想为它开发一个 USB 设备驱动程序。所以我做了一个简单的驱动程序,用 Galaxy S3 Linux Kernel 编译。但是没有root权限我不能执行'insmod'命令。

是否可以为安卓手机开发设备驱动程序?

此外,驱动程序源代码是典型的字符设备驱动程序示例,具有 open()、close()、read()、write() 函数。

错误消息是:

  1. insmod:权限被拒绝
    (没有root权限)

  2. insmod:无效的模块格式
    (通过'rooting'获得root权限。我认为内核因'rooting'而改变。并且使用三星发布的原始Galaxy S3 Linux Kernel编译的设备驱动程序。)

4

1 回答 1

3

是的,只要您具备以下条件,就可以为任何 Android 手机开发设备驱动程序:
- 访问该特定手机的 linux 内核源代码。
- 可以访问设备上的 root shell。

需要访问内核源代码,以便可以针对该特定内核构建内核模块。安装内核模块需要 root shell。

关于 android 手机上的 USB 主机支持,某些手机在内核中内置了 USB 主机支持,并将支持 USB 主机模式。但是需要有合适的 USB 电缆来连接外围设备。

也为了克服错误,

insmod:无效的模块格式

您可能想尝试以下--force-vermagic标志:

insmod --force-vermagic <module.ko>

正如您正确猜测的那样,这实际上是由于设备上运行的内核与构建模块的内核之间的版本号不匹配而导致的错误。更多细节在这里

于 2012-08-02T18:14:45.520 回答