Nexus6p device debug

来源:互联网 发布:凌波城静脉不动的算法 编辑:程序博客网 时间:2024/06/05 05:13

一. 3.10内核编译

1.1 内核下载

将对应版本的nexus5对应的内核全部clone到本地。

git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/msm.git

下载对应的分支的,origin/android-msm-angler-3.10-nougat-hwbinder。

添加驱动替换掉tty和usb里对应的kgdboc.c 和dwc3和gadget里面的文件gadget.c android.c u_serial.c文件。

1.2 内核编译

设置对应的环境变量

将工具集加入到路径中

$ export PATH="AndroidSourceDir"/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/:$PATH

设置目标架构

$ export ARCH=arm64

设置编联合编译方式,不要漏了最后边的“-”

$ CROSS_COMPILE=aarch64-linux-android-

编译

$ make angler_defconfig

在这里会产生一个默认.config文件,需要添加以下内容

1. CONFIG_KGDB=y    CONFIG_KGDB_SERIAL_CONSOLE=y2. CONFIG_MSM_WATCHDOG_V2 = n,如果这个启动了,内核中轮询循环是一个死循环并重启设备。3. CONFIG_FORCE_PAGES=y,如果这个没开启,软断点将不能设置。$ make –j4 

这里写图片描述

1.3 刷机

通过设置TARGET_PREBUILT_KERNEL变量指向Image.gz-deb文件。

$ export TARGET_PREBUILT_KERNEL=./arch/arm64/boot/Image.gz-dtb$ cd <AndoidSourceDir>$ . build/envsetup.sh$ lunch <angler>//选择angler$ make bootimage

之后利用fastboot工具刷入镜像文件

$ adb reboot-bootloader$ fastboot flashall –w

这里写图片描述

二. 远程链接

2. 1远程链接

Ubuntu上运行adb tcpip 6666    adb connect <nexus6p’s ip>:6666    Adb –s “android’ip :6666” shell

进入远程设备,为什么不进入显示设备名字的链接呢,因为需要通过设置enable来使激活tty,但是如果设备连接的话,同发生中断,enable又会被重新初始化为1,所以不能通过设备链接来进行设置。

这里写图片描述

2.2 配置调试设备信息

进入手机shell之后,通过cd进入到usb驱动控制文件夹中

    cd  /sys/class/android_usb/android0/。    echo 0> enable //关闭USB连接    echo tty> f_acm / acm_transports //具体的传输类型    echo acm>functions //启用USB小工具驱动程序上的ACM功能    echo 1> enable //启用USB连接    echo kgdb > f_acm/acm_transports//启用kgdb调试工具

这里写图片描述

进行验证一下,通过在adb shell中使用ls /dev/ttyGS*

这里写图片描述

再者,在ubuntu上面,用ls /dev/ttyACM*

这里写图片描述

Android 和ubuntu通过这两个文件通信。

三.开始调试

3.1ubuntu电脑端

通过运行aarch64-linux-android-gdb vmlinux来进行调试

aarch64-linux-android-gdb vmlinuxtarget remote /dev/ttyACM0

3.2 android手机端

需要通过向sysrq-trigger写入g来进行触发

    echo g > /proc/sysrq-trigger

然后就通过ubuntu进行内核的调试了。

这里写图片描述

原创粉丝点击