我正在构建我的第一个Android映像,我注意到编译一个新内核与使用vanilla linux内核所做的非常相似,所以没问题。
由于完整的Android解决方案由2个部分组成,内核+所谓的“平台”,我即将构建平台并编译代码,问题是我注意到我必须设置一些值对于某些属性,如蓝牙的属性,蓝牙需要这些值才能被识别并简单地工作,我的问题是:我在设置什么? Android下的驱动程序相关架构是什么?
我也无法理解这一点,因为大多数商用手机都有一个不支持模块的内核,所以如果不能从内核以外的位置加载驱动程序,这个东西是如何工作的?
答案 0 :(得分:1)
完整的Android操作系统由三部分组成。 1)官方AOSP源代码。 2)特定于设备的内核。 3)特定设备的专有二进制文件(摄像头,传感器等硬件驱动程序..)。
1)您可以使用repo sync下载的官方AoSP源代码访问链接Start Here
2)设备特定内核 你从设备制造商那里得到它。他们将提供内核的二进制图像。
3)特定于设备的二进制文件 你必须通过连接到你的设备从设备中提取它。你可以谷歌搜索你的设备配置。你可以在github.com上找到各种设备配置,例如Device configuration for lenovo ideapad a1 你会找到extract-files.sh文件。运行这个文件来获取你的驱动程序。这是linux shell脚本,它从设备中提取专有二进制文件。
我希望这会有所帮助。 谢谢。
答案 1 :(得分:0)
This post在Android上有很多很好的信息。 Android中的Linux内核使用由内核加载和维护的驱动程序。您还可以使用内核模块:Building kernel module for Android
在Android下加载驱动程序:
您需要一个开发环境设置来交叉编译Android设备,然后将源代码编译为模块并从命令行将其加载到内核中:
insmod <module>
如果您没有收到错误,则会加载。