能否为安卓手机开发并运行设备驱动程序?

3
我有一部安卓手机Galaxy S3,希望为它开发一个USB设备驱动程序。我已经编写了一个简单的驱动程序,它是与Galaxy S3 Linux内核一起编译的。但是我没有root权限,无法执行“insmod”命令。
是否可能为安卓手机开发设备驱动程序?
此外,驱动程序源代码是一个典型的字符设备驱动程序示例,具有open(),close(),read(),write()函数。
错误消息如下:
  1. insmod:权限被拒绝
    (没有root权限)

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


描述您想从驱动程序中获取的信息。提供有关您的简单驱动程序和错误信息的详细信息。在当前主题上添加标签,说明您编写驱动程序的语言。 - b1_
有人告诉我Android Host API(http://developer.android.com/guide/topics/connectivity/usb/host.html)的相关内容。 - Joel
也许Galaxy S3可以使用Android Host API。 - Joel
有人告诉我如何解锁引导加载程序。 - Joel
1个回答

3
是的,只要你拥有以下条件,就可以为任何安卓手机开发设备驱动程序: - 能够访问该特定手机的Linux内核源代码。 - 在设备上有root权限。
需要访问内核源代码以便能够构建针对该特定内核的内核模块。需要root权限才能加载内核模块。
关于安卓手机的USB主机支持,某些手机已经在内核中内置了USB主机支持,因此支持USB主机模式。但是需要使用正确的USB电缆连接外部设备。
此外,为了解决错误:

insmod: invalid module format

你可能需要尝试使用--force-vermagic标志,例如:
insmod --force-vermagic <module.ko>

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接