硬件访问

Hardware Access

我一直喜欢便宜的智能手机(50 美元),因为我可以用很少的钱拥有一个功能强大的系统,里面有很多传感器和类似的东西。所以我想知道是否可以在不使用非常有限的 android APIs 的情况下使用硬件,然后在低级别对其进行编程,当然是使用 root。特别是我想看看 LTE 模块是如何工作的,并尝试完全控制它,Android API 不允许它做太多事情。

更新:我正在使用一种叫做 libhybris 的东西,它是一个允许在 Linux.

中使用 android 驱动程序 blob 的包装器

有点问题

硬件制造商实际上就是这样做的。

考虑到 Android 是 Linux much like other distributions。 制造商开发硬件,然后编译一个位于其之上的版本 Android。每个 Android 编译都是专门针对硬件量身定制的,并配备了驱动程序,使主要 OS 能够访问不同的硬件功能。

例如,一些桌子会调整 Android OS 以不支持蜂窝通信,因为他们决定削减成本并交付没有蜂窝模块的平板电脑。

从这里你有 2 个选择:

  1. 破解特定硬件并了解 OS 如何与硬件通信。
  2. 查找发布 some/all 其 Android OS 代码的硬件制造商。这是一种更简单的方法,因为您可以为该特定设备学习和扩展 Android OS。 第二种方式的一个例子是索尼 AOSP 允许对某些索尼设备进行低级别访问。

此外,总有 Android NDK 可以让您更底层地访问 Android 但您仍然受到 KIT API 的限制,所以不知道对你有没有帮助。

phone 的第一层软件是引导加载程序。它告诉处理器将哪个分区加载到内存中以执行内核。这是通常由于超出本站范围的贪婪企业原因而被制造商阻止的级别。

phone的第二层是linux内核。生根是获得根用户访问该层的过程。 Root 是有权对设备执行任何操作的主要管理员用户帐户。访问这一层就是大多数人所说的生根。内核的很大一部分是用 C 编写的,其他部分是用 C++ 编写的。在这个级别发生的事情是所有魔法所在。对于大多数 phone 来说,这是调制解调器代码所在的位置。与此对话通常可以通过串行命令来完成。传感器也在此级别进行编程,并通过驱动程序进行通信。读取传感器数据通常不需要 Root 访问权限,通常只是权限问题。

下一层是 android 操作系统,java 实例 运行 位于其之上,后者依次执行 android 操作系统。这是大多数用户会看到的部分,主要是用 java 编写的。实际上,您可以 运行 此级别的任何类型的用户界面。

android 个应用的简要视图。

android api 为 java 开发人员提供了一种编写 "apps" 与内核通信并访问 phone 不同部分的方法'硬件。这些应用程序也可以使用 C++ 编写。直到最近才 google 将 c++ 集成到 android studio 中,但最常见且仍然最有效的方法是使用 QT 框架。

我正在使用一种叫做 libhybris 的东西,它是一个允许在 Linux.

中使用 android 驱动程序 blob 的包装器