如何向android添加内核驱动模块

如何向android添加内核驱动模块,第1张

1,同目录下的makefile,如

#

# Makefile for industrial I/O Magnetometer sensors

#

obj-$(CONFIG_SENSORS_AK8975)+= ak8975.o

obj-$(CONFIG_SENSORS_HMC5843)+= hmc5843.o

2,同目录下的kconfig

#

# Magnetometer sensors

#

comment "Magnetometer sensors"

config SENSORS_AK8975

tristate "Asahi Kasei AK8975 3-Axis Magnetometer"

depends on I2C

help

Say yes here to build support for Asahi Kasei AK8975 3-Axis

Magnetometer.

To compile this driver as a module, choose M here: the module

will be called ak8975.

3,总的config(配置变量为Y)

各项目配置文件的位置不同,

coffee:kernel/arch/arm/configs/M7023Q-debug-perf_defconfig

juice:common/customer/configs

配置信息如下:

# CONFIG_CFG80211 is not set

CONFIG_EXPERIMENTAL=y

CONFIG_LOCALVERSION="$(KERNEL_LOCAL_VERSION)-perf"

CONFIG_SWAP=y

CONFIG_ZRAM=m

CONFIG_SYSVIPC=y

CONFIG_SENSORS_AK8975=y

......

查看变量是否在编译时配置成功:

out/target/product/m7023q/obj/KERNEL_OBJ/include/generated/Autoconf.h

查找CONFIG_SENSORS_AK8975

若在编译时有配置成功,将找到这一行:

#define CONFIG_SENSORS_AK8975 1

4、修改板级文件:

4.0及后续项目统一在:kernel/arch/arm/mach-msm/board-qrd7627a.c

注意juice中,很多配置(如tp)写在kernel/arch/arm/mach-msm/board-msm7627a-io.c

在代码中增加新模块的内容,应该有两处,第一处设置函数和结构体,第二处实际调用,注意引用上述第3步新增的编译开关将代码限制起来。

这些内容大多可以拷贝其它模块,但是名字要和driver中的相同,注意要改的地方除了名字之外,还有中断脚和I2C脚。其中固定模块的中断脚大部分时候不会改变(如tp就是int:48,reset:26),除非板子的datasheet特别注明才需要改变。但是I2C脚是会随着slaver device的改变而改变的,需要查清楚。

配置platform_data:

一般需要初始化一个xxx_platform_data结构体(这个结构体的声明应该让驱动文件可视,probe中才知道去读某个platformdata.yyy),并在i2c_board_info结构体中用.platform_data指向它,然后这个i2c_board_info将在板级文件中被注册(作为函数i2c_register_board_info()的参数)。而这个.platform_data很有可能在驱动的probe函数中调用到,例如:

static struct msg2133_ts_platform_data msg2133_platformdata= {

.irq = 0,

.reset = GPIO_TP_RESET,

}

static struct i2c_board_info i2c_info_msg2133_dpt = {

I2C_BOARD_INFO("msg2133", 0x27),

.platform_data = &msg2133_platformdata,

}

i2c_info_msg2133_dpt.platform_data->irq = gpio_to_irq(GPIO_TP_INT)//结构体初始化的时候只能以常量赋值,因为此处需要做GPIO到irq的映射,所以要在此处赋值。

i2c_register_board_info(MSM_GSBI1_QUP_I2C_BUS_ID, &i2c_info_msg2133_dpt, 1)

在驱动的probe中:pdata =client->dev.platform_data

...... = pdata.yyy......//(msg2133_ts_platform_data在该文件中可见)

刷手机内核步骤准备:

1、首先要做好准备工作,确保手机已经安装好驱动,将所有需要的东西都放好位置;

2、将手机关机,按住音量上键不放同时还要将手机连接到电脑上,等待蓝灯常亮(新安装驱动第一次会运行系统会先安装驱动,在插一遍),放手,蓝灯不可以灭或者手机是充电模式,然后检查驱动;

刷手机内核

1、手机蓝灯连接好以后回到电脑上win7系统(XP系统直接右击鼠标进DOS命令)安住键盘shift键不放,鼠标移动到fastboo文件夹上右击鼠标,移动到在此处打开命令窗口,点击进CMD命令

2、在出现的命令窗口中输入刷内核命令:fastboot flash boot ics8.elf,然后按回车键,这时会有一个进程;

3、到这里大家回到fastboot就OK了,拔掉USB线开机,当指示灯亮并震动时按住住音量上键不放可以进Recovery模式。

Recovery主界面中英文:

1、reboot system now 重启手机(刷机完毕选择此项就能重新启动系统);

2、install zip from SDcard 从SDcard上安装zip升级包(可以执行任意名称的zip(ROM)包,不限制ROM包名称);

3、wipe data/factory reset 清除用户数据并恢复出厂设置(刷机前必须执行的选项);

4、wipe cache partition 清除系统缓存(刷机前执行)(系统出问题也可尝试此选项,一般能够解决);

5、backup and restore 备份和还原系统(目前不支持);

6、mounts and storage 挂载和存储选项(目前支持USB挂载)。

关于安卓系统内核问题,其实只要有点常识的基本都会。那么大家知道安卓手机如何刷内核呢?下面一起来看看!

   刷手机内核必须要用到的东西:

首先确保,你已经安装好了驱动,把所有东西都放好位置!

1:手机关机,按住音量上键不放同时插入USB,等待蓝灯常亮(新安装驱动第一次会运行系统会先安装驱动,在插一遍),放手,蓝灯不可以灭或是变充电模式,这样请检查你安装的驱动!

2:手机蓝灯连接好了,回到电脑上win7系统(XP系统直接右击鼠标进DOS命令)安住键盘shift键不放,鼠标移动到fastboo文件夹上右击鼠标,移动到 在此处打开命令窗口 点击进CMD命令

3:手动输入刷内核命令:fastboot flash boot ics8.elf 回车,这是会有一个进程跑完。

回到fastboot就OK了,拔掉USB线,开机 当腰带灯亮震动按住音量上键不放可以进Recovery,以下是刷机教程请看清楚后开始刷机不懂请加我们群,随时为您解答!

   Recovery主界面中英文对照说明:

1---reboot system now 重启手机(刷机完毕选择此项就能重新启动系统)

2---install zip from SDcard 从SDcard上安装zip升级包(可以执行任意名称的zip(ROM)包,不限制ROM包名称)

3---wipe data/factory reset 清除用户数据并恢复出厂设置(刷机前必须执行的选项)

4---wipe cache partition 清除系统缓存(刷机前执行)(系统出问题也可尝试此选项,一般能够解决)

5---backup and restore 备份和还原系统(目前不支持)

6---mounts and storage 挂载和存储选项(目前支持USB挂载)

音量上和下键可以当做选择键,电源键位确定键,下面的`返回键可以返回上页!双wipe(就是上面的3-4步)在执行第2步进去选择ROM刷机即可,有兴趣的朋友不妨去试试吧,刷内核其实相当简单。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11587902.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存