基于adb工具与printk函数调试Android内核

前言

近期公司有个项目,需要编写Android平台下的传感器i2c驱动,因此调试Android内核是必不可少的手段,本文主要记录利用adb工具与printk函数打印内核消息的方法,以下内容都是自己实践所得的经验和结果,有不妥之处,也希望路过友人及时点拨。

adb工具

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具。网上资源很多,随便下载都可使用。
——配置adb环境变量流程:
前提条件:Win7系统,adb文件路径:D:\Program Files\adt-bundle-windows-x86-20140702\sdk\platform-tools, android文件位置:D:\Program Files\adt-bundle-windows-x86-20140702\sdk\tools

1.进入电脑右键-高级系统设置-环境变量-系统变量中点新建

2.创建名字adb(根据自己命名习惯),然后在变量中输入你adb的位置:D:\Program Files\adt-bundle-windows-x86-20140702\sdk\platform-tools;D:\Program Files\adt-bundle-windows-x86-20140702\sdk\platform-tools,点击确定,保存。

3.找到系统变量中的Path变量,点击编辑,在最后添加“;%adb%”,加入后保存。

4.打开cmd窗口,输入adb,会显示adb所有命令。
解析:如果不配置环境变量,在cmd窗口我们只能进入adb工具路径进行操作,否则我们可以在任何路径下使用adb。

调试环境配置及流程

1、打开cmd,利用adb devices(adb devices -l)查看device连接情况;

2、输入adb shell进入开发板(手机)终端模式,在xshell下使用adb -s xxxxxx shell,其中xxxxxx代表设备,会在上一步显示出来;

3、查看控制台的打印级别:cat /proc/sys/kernel/printk
4 4 1 7——第一个4代表内核默认的打印级别,大于4的打印级别都会在控制台输出,即0-3等级;

4、修改打印级别。echo “新的打印级别 4 1 7” >/proc/sys
/kernel/printk

5、实现在内核源码对应处添加printk信息,通过dmesg命令查看
此处有一个过滤打印查看:dmesg -V | grep “xxxxxx”
xxxxxx一般是printk打印信息里面的部分内容
当然我们也可以将查看的信息打印到某一路径文件下:
dmesg -V | grep “xxxxxx” >D:\kernel.log
若文件不存在,系统会新建产生。

注:除了上述所说的adb工具,我们还需要在pc端安装Android开发板(手机)驱动,可以借助手机助手进行配对(需打开USB DEBUG)