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