当前位置: 首页 > news >正文

ADB 在嵌入式 Linux 系统调试中的应用

ADB 在嵌入式 Linux 系统调试中的应用

1. 概述

ADB下载链接
ADB官方概述

ADB 全称 Android Debug Bridge,直译过来就是 Android 调试桥, 它是一个通用的命令行工具。Adb 作为 Android设备与 PC 端连接的一个桥梁, 它可以让开发者通过网络或 USB 与Android设备进行通信, 其核心功能是建立 主机与目标设备之间的高效通信通道

随着 adb的普及,不仅仅是Android 设备,在嵌入式开发中,很多 Linux 设备也同样支持 adb 调试,例如 Rockchip 平台 Linux 设备。

ADB在实际开发中被广泛用于:

  • 系统调试与维护

  • 文件传输与部署

  • 应用远程运行与调试

  • 端口转发和网络诊断

相较于传统的串口、SSH 等方式,ADB 具有 部署简单、功能集中、跨平台支持良好 等优势,尤其在 Android 系统衍生的嵌入式平台中表现突出。


2. 架构原理

ADB 的架构基于 客户端-服务器-守护进程 (Client-Server-Daemon) 模式。
整体架构由三部分组成:

  1. ADB Client

    • 位于开发主机,主要由 adb 命令行工具实现。

    • 负责接收开发者输入的调试指令,并通过本地 socket 与 ADB Server 交互。

  2. ADB Server

    • 运行在开发主机后台,默认监听 localhost:5037

    • 负责管理主机与多个设备的连接,并将 Client 的请求转发至对应设备。

    • 同时负责 USB/IP 连接的建立与维持。

  3. ADB Daemon (adbd)

    • 运行在目标嵌入式 Linux 设备上。

    • 接收来自 ADB Server 的指令,调用底层接口执行,并返回结果。

数据流向如下:

[adb client] ⇆ [adb server:5037] ⇆ [USB/TCP/IP] ⇆ [adbd on device]

这种设计保证了多设备并行调试的能力,也使得开发者可以在不同的传输层(USB 或 TCP/IP)下保持统一的操作接口。


3. 在嵌入式 Linux 上的实现

3.1 获取与编译 adbd

在嵌入式 Linux 平台上运行 ADB 需要目标设备具备 adbd 守护进程。实现方式主要有两种:

  • 直接使用 AOSP 提供的 adbd

    • 从 Android Open Source Project 源码中提取并交叉编译。

    • 适合资源相对充足的嵌入式设备。

  • 使用轻量化移植版本

    • 例如社区维护的 android-tools,提供了裁剪后的 adbdadb

    • 适合资源受限的 IoT 或工业控制类设备。

3.2 启动与连接

  • 设备端启动 adbd

    ./adbd &

    通常以后台守护进程方式运行。

  • 主机端检测设备

    adb devices

    可通过 USB 或 TCP/IP 建立连接,例如:

    adb connect <device-ip>:5555

3.3 权限与配置

  • 主机端 (Linux)
    需配置 udev 规则以允许非 root 用户访问 USB 设备。

  • 设备端
    若使用 TCP 模式,需要确保防火墙允许 5555 端口通信,并确认 adbd 运行在合适权限下(通常为 root 或具有 shell 权限)。


4. 常用调试命令

4.1 设备管理

adb devices             # 列出已连接设备
adb connect <ip:port>   # 通过 TCP/IP 连接设备
adb disconnect <ip>     # 断开 TCP/IP 连接

4.2 远程 Shell

adb shell               # 进入交互式 shell
adb shell <command>     # 执行单条命令

4.3 文件传输

adb push local remote   # 主机 → 设备
adb pull remote local   # 设备 → 主机

4.4 端口映射

adb forward tcp:6000 tcp:6000   # 主机端口映射至设备
adb reverse tcp:7000 tcp:7000   # 设备端口反向映射至主机

4.5 系统日志

adb logcat              # 输出系统日志 (需设备支持)
adb shell dmesg         # 查看内核日志

5. 应用场景

  1. 固件与应用部署
    使用 adb push 快速传输可执行文件或脚本,无需额外配置 FTP/TFTP 服务。

  2. 远程调试
    结合 adb shell gdbserver 与端口转发功能,可以在主机上进行交叉调试。

  3. 系统诊断
    借助 adb shelladb logcat/dmesg 快速获取系统运行状态和日志信息。

  4. 网络受限场景
    在没有 SSH 服务或串口接口的设备中,ADB 通过 USB 即可完成绝大多数调试任务。

http://www.dtcms.com/a/389230.html

相关文章:

  • 7HTMLCSS高级
  • 玩游戏/用设计软件提示d3dcompiler_47.dll缺失怎么修复?5步快速定位问题,高效修复不踩坑
  • HTML应用指南:利用GET请求获取全国宝马授权经销商门店位置信息
  • 《Java网络编程》第一章:基本网络概念
  • Python内存机制全解析:从基础到高级应用
  • Ubuntu24修改ssh端口
  • hadoop实现一个序列化案例
  • DBG数据库加密网关实现mySQL敏感数据动态脱敏与加密全攻略
  • 解决 Vue SPA 刷新导致 404 的问题
  • 大型语言模型 (LLMs) 的演进历程:从架构革命到智能涌现
  • 大语言模型为什么要叫【模型】
  • 教程上新丨ACL机器翻译大赛30个语种摘冠,腾讯Hunyuan-MT-7B支持33种语言翻译
  • 《C++程序设计》笔记
  • NVR接入录像回放平台EasyCVR海康设备视频平台视频监控系统常见故障与排查全解析
  • 半导体制造常提到的Fan-Out晶圆级封装是什么?
  • Qt 系统相关 - 文件
  • P2242 公路维修问题
  • 安装wsl
  • 牛客多校04C :Computational Geometry Problem(p-Dyck路计数)
  • CMake+visual studio 2022 +qt6 , 从Linux平台移植到windows下平台开发
  • 大模型系列——Playwright MCP 可以复用 Chrome 登录态了
  • 三星S25 Edge 与iPhone 17 Air:最新对比
  • 电脑怎么连接wifi?【图文详解】笔记本电脑怎么连接无线wifi?笔记本电脑连不上wifi怎么办?
  • 设计模式-代理模式详解
  • 怎样让AI图生3D更加高质高效
  • Java 集合框架 Set 接口:实现类的底层数据结构与核心特点
  • 【大模型】使用Qwen-VL大模型进行验证码识别的完整指南
  • 深度学习体系化入门:从理论到实践的完整框架
  • 餐饮行业系统集成分享:OMS 订单数据推送ERP 核算
  • 深入剖析OpenHarmony ClearPlay DRM驱动:从HDI接口到动态加载的完整实现路径