概览
本章介绍如何在主机和目标板上设置ADB(Android调试桥)和GDB(GNU项目调试器)环境。
ADB(Android调试桥)
ADB是一种多功能命令行工具,可以让你与设备进行通信。adb 命令支持多种设备操作,并提供对Unix shell的访问,使你能够在设备上运行各种命令。它是一个客户端-服务器程序,由以下三个组件组成:
客户端:发送指令。客户端运行在你的开发机器上。
守护进程(adbd):在设备上运行命令。守护进程作为后台进程在设备上运行。
服务器:管理客户端和守护进程之间的通信。服务器作为后台进程运行在你的开发机器上。
在主机安装ADB环境
ADB包含在Android SDK Platform-Tools包中,可以从 Adroid Studio SDK build tools 下载。
Windows
在主机上下载ADB。
在主机上安装环境变量。
右键点击
, 然后选择 .编辑 Path ,创建一个新的环境变量并输入ADB路径(
adb.exe
位于platform-tools, 例如D:\adb\aosp-sdk-platform-tool
), 点击保存.
检查主机上的ADB环境。
打开windows命令行, 输入 adb –help, 如果显示了ADB版本和全局选项,则表示主机上的环境设置正常。
Linux
在主机上下载ADB。
将ADB路径导出到shell环境。
export PATH=/xyz/platform-tools/bin:$PATH to .bashrc
在目标板上安装ADB环境
ADB支持TCP/IP和USB协议,您可以通过Wi-Fi或USB线调试目标设备。
USB模式
用USB线连接主机和目标板,并将设备设置为USB模式。
执行
/bin/usb.sh usbd_adb
切换USB模式并在目标板上启动adbd守护进程。$/bin/usb.sh usbd_adb
TCP/IP模式
设置Wi-Fi连接,确保主机和目标板之间的 ping 通畅。
在目标板上启动adbd守护进程。
/bin/adbd &
如何使用ADB
连接ADB
USB模式
在板上执行上述命令后,主机可以使用命令 adb devices 来显示已连接的设备。
TCP/IP模式
使用命令 adb connect 连接目标设备。连接成功后,主机可以使用命令 adb devices 来显示已连接的设备。
$adb connect <board_ip>:5555 $adb devices
ADB命令
在主机上,命令 adb --help
可以显示所有的ADB命令,如下所列。
- adb devices:
显示所有设备的连接状态。
- adb start-server:
启动ADB服务器。
- adb kill-server:
停止ADB服务器。
- adb connect ip:5555:
将设备以TCP/IP模式连接。
- adb push <local> <remote>:
将特定文件从主机推送到设备。
- <local>:
表示存储在主机中的文件位置。
- <remote>:
表示需要推送到板上的目标位置。
示例:
$adb push ~/system/lib/libfoo_bar.so /lib/
- adb pull <remote> <local>:
将特定文件从设备拉取到主机。
- <remote>:
表示需要从板上复制到主机的文件。
- <local>:
表示在主机中存储文件的位置。
示例:
$adb pull /lib/libfoo_bar.so ~/system/lib/
- adb shell:
Windows 命令行或 Linux Shell 可以进入设备命令行。使用 exit 返回到 Windows 命令行或 Linux Shell。
快速启动(fastboot)
fastboot协议是一种通过USB与引导程序进行通信的机制。它旨在将固件下载到Flash存储器中。通常,固件会存储在Flash中,然后加载到RAM以启动系统。fastboot允许用户将固件下载到RAM并重启设备,或者将固件烧录到Flash中。
本节介绍如何使用fastboot将固件下载到目标板的RAM中。
在目标板上安装fastboot环境
要在U-boot中启用fastboot,应为U-Boot启用以下配置。在SDK中,这些配置默认是启用的。
CONFIG_FASTBOOT=y CONFIG_CMD_FASTBOOT=y USB_FUNCTION_FASTBOOT=y CONFIG_USB_FUNCTION_FASTBOOT=y CONFIG_ANDROID_BOOT_IMAGE=y CONFIG_ANDROID_BOOT_IMAGE_CHECK=n CONFIG_ANDROID_IMAGE_HEADER_LENGTH=0x800 CONFIG_FASTBOOT_FLASH_NAND=y CONFIG_FASTBOOT_BUF_ADDR=0x60380000 CONFIG_FASTBOOT_BUF_SIZE=0xF00000 CONFIG_DM_USB_GADGET=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_VENDOR_NUM=0x18D1 CONFIG_USB_GADGET_PRODUCT_NUM=0x4E21 CONFIG_USB_GADGET_MANUFACTURER="realtek" CONFIG_USB_GADGET_DWC2_OTG=y、 CONFIG_USB_GADGET_VBUS_DRAW=200 CONFIG_USB_GADGET_DOWNLOAD=y
在系统启动时及时输入任意内容以进入U-Boot命令行模式。
在主机上安装fastboot环境
从 platform-tools_r34.0.0-windows.zip 下载适用于Windows的fastboot工具并解压,启动一个命令窗口并切换到fastboot程序所在的目录。
如何使用fastboot
在目标板的U-boot上启动fastboot。
=> fastboot usb 0
在主机上启动fastboot客户端,输入命令 fastboot.exe devices ,如果显示以下信息,则fastboot运行成功。
=> fastboot.exe devices 0123456789AB fastboot
继续输入命令 fastboot.exe boot d:kernel.img ,将内核固件加载到RAM中。它将显示如下信息。
=> fastboot.exe boot D:\kernel.img creating boot image... creating boot image - 3596288 bytes Sending 'boot.img' (3512 KB) OKAY [ 0.111s] Booting OKAY [ 0.000s] Finished. Total time: 0.549s
uboot将显示以下日志,表示下载到RAM的状态,并从RAM地址启动。
=> fastboot usb 0 Starting download of 3596288 bytes ........................... downloading of 3596288 bytes finished Booting kernel at 0x60380000... ## Booting kernel from Legacy Image at 60380000 ... Image Name: Linux-5.4.63 Created: 2023-03-08 11:59:51 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3593416 Bytes = 3.4 MiB Load Address: 60388000 Entry Point: 60388000 Verifying Checksum ... OK Loading Kernel Image ……
更多有关fastboot的细节,请参考 Android-specific doc 。