我有一部 Galaxy S3,它是一款安卓手机。我想为它开发一个 USB 设备驱动程序。 所以我制作了一个使用 Galaxy S3 Linux 内核编译的简单驱动程序。但是我不能在没有 root 权限的情况下执行 'insmod' 命令。
是否可以为Android手机开发设备驱动程序?
此外,驱动源代码是典型的字符设备驱动示例,具有open()、close()、read()、write()函数。
错误信息是:
insmod:权限被拒绝
(没有root权限)insmod: 模块格式无效
(通过'rooting'获得root权限。我认为内核因为'rooting'而被更改。并且设备驱动程序使用三星发布的原始Galaxy S3 Linux内核编译。)
最佳答案
是的,可以为任何 Android 手机开发设备驱动程序,只要您拥有:
- 访问特定手机的 Linux 内核源代码。
- 可以访问设备上的 root shell。
需要访问内核源代码,以便可以针对该特定内核构建内核模块。需要根 shell 来插入内核模块。
关于 Android 手机上的 USB 主机支持,某些手机在内核中内置了 USB 主机支持,并将支持 USB 主机模式。但是需要有 proper USB-cables连接外围设备。
还要克服错误,
insmod: invalid module format
您可能想尝试使用 --force-vermagic 标志,如下所示:
insmod --force-vermagic <module.ko>
正如您猜对的那样,这实际上是由于设备上运行的内核与构建模块所针对的内核之间的版本号不匹配而导致的错误。 更多详情 here .
关于android - 是否可以为 Android 手机开发和运行设备驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11624491/