Android内核模块的编译与普通Linux内核的编译稍有不同
1.下载android内核
#如果git需要使用代理可以使用如下命令
export https_proxy="http://192.168.1.105:8087"
git clone https://android.googlesource.com/kernel/goldfish.git
上面得到的是主线上的内核源代码,现在我们需要适用于模拟器用的内核,因此,我们需要checkout goldfish版本:
cd goldfish
git branch -a //查看branch
git checkout remotes/origin/android-goldfish-3.4
2.下载交叉编译工具
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6
设置环境变量
export PATH=$PATH:/home/alan/workspace/arm_toolchain/arm-eabi-4.6/bin
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-
3、现在是要得到android的内核编译参数的配置文件的时候了,该文件需要从已经安装好的android的模拟器
配置文件在模拟器的"/proc/config.gz"目录,pull出来,解压,将config文件改名为.config,拷贝到内核代码goldfish目录下。
这是在goldfish目录下make,可编译内核
http://source.android.com/source/building-kernels.html
下面讲解编译内核模块
1.在内核源码drives目录下添加hello目录,内含hello.c Kconfig Makefile文件
hello.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init (void)
{
printk("hello linux kernel\n");
return 0;
}
static void hello_exit (void)
{
printk("bye..lwave from the kernel\n");
}
module_init(hello_init);
module_exit(hello_exit);
Kconfig
config HELLO
tristate "Helllo module test created by lz"
default m
help
test for adding driver to menuconfig
Makefile
KERNELDIR :=/home/alan/workspace/android_kernel/goldfish
PWD :=$(shell pwd)
ARCH=arm
CROSS_COMPILE=arm-eabi-
CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)ld
obj-$(CONFIG_HELLO) +=hello.o
1.通过给下面的Kconfig文件再加上下面的代码,可使hello项出现在配置菜单中:
(1)在arch/arm/Kconfig文件中 menu "Device Drivers" endmenu之间添加 source "drivers/hello/Kconfig"(这个文件好像没有menu "Device Drivers" endmenu,要自己写)
既
menu "Device Drivers"
source "drivers/hello/Kconfig"
endmenu
(2)在drivers/Kconfig文件中 menu "Device Drivers" endmenu之间添加 source "drivers/hello/Kconfig"
2.修改Drivers目录下的Makefile文件,添加如下行:
obj-$(CONFIG_HELLO) += hello/
当CONFIG_HELLO为y或m时,使系统能找到hello驱动的makefile
以上过程完成便将hello模块添加至内核menuconfig菜单,
注意格式与上下文保持一致
这是在goldfish目录下make,则模块在
drivers/hello/目录的hello.ko
分享到:
相关推荐
编译Android内核需要从Git平台上获取官方的开源内核源代码。这通常涉及到使用Git的基本操作,如克隆、切换分支等。熟悉Git的分支管理和基本的编译原理对于编译过程至关重要。 **5. DC调光** DC调光是一种屏幕亮度...
本文将详细介绍如何编译Android内核,包括所需的工具链下载、内核源码获取、环境配置等关键步骤。 #### 二、准备工作 在开始编译Android内核之前,需要准备以下几项: 1. **交叉编译工具链**:Android内核运行于...
首先,编译Android内核需要准备一个合适的开发环境。这通常包括安装Linux发行版(如Ubuntu),设置交叉编译工具链,获取Android源代码,并确保系统中安装了必要的依赖库。例如,GCC编译器、Git版本控制系统、Make...
交叉编译Android内核的过程通常包括以下几个步骤: 1. 获取内核源码:从Android开源项目(AOSP)仓库或设备制造商提供的源码中获取。 2. 配置内核:使用 `make menuconfig` 或 `make xconfig` 命令,根据设备需求...
### Android内核编译方法详解 #### 一、引言 随着移动互联网的发展,Android操作系统逐渐成为智能手机领域的主导系统之一。对于开发者而言,了解并掌握Android内核的编译方法至关重要,这不仅能帮助他们更好地理解...
- **Android特定配置**:Android系统有其特殊的内核配置项,如Android调试桥(ADB)支持、Android内核模块等,需要在配置中开启。 在提供的资源中,“编译内核详细配置.pdf”很可能是对整个内核编译过程的详尽指南...
书中会详细介绍Android内核的定制过程,包括如何根据特定设备的需求调整内核配置,以及如何编译和安装内核模块。此外,还会涉及驱动程序开发,这是Android内核剖析中的关键部分,因为设备驱动程序是使硬件功能得以...
Android内核剖析涉及的知识点众多,具体包括以下几个重要部分: 1. Android内核基础 Android系统基于Linux内核,而Linux内核是开源操作系统的核心,负责管理硬件资源,提供各种系统服务。Android内核剖析首先会介绍...
### Android内核的简单分析 #### 一、概述 Android作为一个全球范围内广泛应用的移动操作系统,其内核基于Linux-2.6.25版本,并且所有源代码均已开放。这为开发者提供了极大的便利,便于他们深入研究Android内核...
在Linux下编译生成的.ko(Kernel Object)文件就是Linux内核模块,它们是可加载的二进制代码,可以通过insmod、modprobe等命令进行插入或移除。 1. **IIC协议**: - IIC协议是一种同步串行通信协议,由Philips公司...
- **构建环境**:为了编译Android内核,需要设置合适的交叉编译环境,包括工具链、编译选项等。 - **配置脚本**:通过`make menuconfig`命令,开发者可以根据需求选择内核功能并进行定制。 - **编译过程**:执行`...
首先,要进行Android内核编译,你需要有一个完整的Android源代码环境,这通常包括Linux开发环境、Git仓库克隆的Android源码以及必要的编译工具链。确保安装了GCC、make、ncurses、Python等基础工具,同时还需要...
8. 编译和部署:掌握如何在开发环境中编译Android内核,以及如何将编译好的内核部署到目标设备上,包括使用fastboot、adb等工具进行内核的下载、安装和调试。 9. 驱动与框架层交互:了解Android驱动程序如何与系统...
8. **源码阅读与编译**:了解如何获取Android源码、配置编译环境,以及如何编译和定制Android内核,是深入学习的必备技能。 通过阅读《Android内核剖析》,读者可以全面掌握Android内核的工作原理,从而在实际开发...
此外,了解设备的硬件特性、内核模块以及驱动程序的工作原理也是非常重要的。通过编译不同的内核,开发者可以探索硬件潜力,实现个性化的系统优化,或者解决特定设备的问题。 总之,这个资源为那些希望深入Android...
在Android系统中,底层开发主要涉及的是Android内核和硬件驱动程序的开发,这是一个至关重要的领域,因为它直接决定了系统的性能、稳定性和兼容性。本文将深入探讨Android底层开发中的关键知识点,包括内核架构、...