0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在基于ARM的设计上调试Android平台

星星科技指导员 来源:嵌入式计算设计 作者:Achim Nohl 2022-06-22 11:04 次阅读

如果不触及 Android 软件堆栈的内部,就无法在新设备上启动 Android。虽然 Java 应用层在很大程度上保持不变,但必须在 Java 原生层、硬件适配层以及底层 Linux 内核及其驱动程序中完成工作。此外,特定于设备的服务和应用程序需要与 Android 的其余部分一起集成和测试。

在软件堆栈中的所有这些层之间垂直集成设备功能是一个相当大的挑战。在单层中隔离和调试一个软件模块可能很困难;更重要的是,任何调试框架都不支持跨所有层调试多个交互模块,因此需要耐心和许多 printf 跟踪消息。

为了解决这个问题,CoWare 开发了适用于 Android 的 Virtual ARM 开发板,它提供了一个 Android 感知的调试和分析框架,支持确定性和连续的自上而下的调试方法。Android 意识首先通过检测和跟踪 ARM Linux 操作系统上下文(如中断处理程序、内核线程、驱动程序和用户空间进程)的能力而引人注目。立即观察进程调度的能力可以洞察整个系统行为。

例如,图 1 显示了设备从深度睡眠挂起模式恢复后系统死锁的在线上下文跟踪。当设备唤醒但未对任何按键或触摸屏做出反应时,系统陷入软件中断 (swi) 处理程序和 Android 的输入设备读取器进程 (InputDeviceRead) 之间的死锁。通过这种分析,很明显没有其他重要进程(例如窗口管理器)用于处理按键操作。

图 1:在线上下文跟踪显示设备从深度睡眠挂起模式唤醒后出现系统死锁。

pYYBAGKyhtmAKlueAAST-3qeqrY494.png

支持自上而下的调试流程,每个过程都可以在功能上进一步研究到指令级。甚至可以跟踪内存访问,从而可以有效地分析软件堆栈中各层的行为。

图 2 说明了 Android 输入设备读取器进程与内核软件中断之间的函数级交互。识别实际执行的代码有助于隔离大型第三方软件代码库中需要开发人员注意的位置,并演示软件如何跨各个层进行交互。在图 2 中,观察 Android 中间件函数 read_notify 如何触发内核软件中断 swi。

图 2:调试 Android 用户空间和 Linux 内核之间的差距展示了软件堆栈中跨层的行为。

poYBAGKyhuSAbQgcAAcKFUlts5Y684.png

分析解决方案集成了 Android 和 Linux 中存在的日志记录和跟踪功能。无需对软件的任何部分进行检测或更改,Android 记录器和内核调试消息就会与之前引入的跟踪一起被捕获和可视化。这样,开发人员可以继续使用那些具有附加值的工具,即所有日志和跟踪都同步,并且可以轻松地与流程和软件功能相关联,如图 3 所示。

图 3:开发人员可以可视化 Android 记录器和内核调试消息以及之前引入的跟踪。

pYYBAGKyhuyAGZmeAAalhULqiak481.png

请注意,Android 日志并没有与重要的内核调试消息分开,查看这些消息不再需要工作的用户空间应用程序(例如 dmesg 或 logcat)。当系统损坏并且查看器应用程序或调试桥不再运行时,通常需要访问跟踪。一个示例是引导的早期阶段或与深度睡眠模式之间的转换。该分析解决方案通过虚拟平台提供的非侵入式控制和检查功能直接从嵌入式软件中捕获跟踪。

虚拟 ARM 开发板和工具通过强大的系统级分析工具补充了现有的 Android 开发环境。该板可与使用 Android 调试桥的 Google Eclipse SDK 等工具配合使用。RealView Debugger (RVD)、Lauterbach 或 Data Display Debugger (DDD) 等最先进的调试器可以使用板作为目标而不是硬件来执行嵌入式软件调试(参见图 4)。

这种高水平的可见性以及非侵入式检查和可控性使调试 Android 成为一项更加简化和可预测的任务。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4982

    文章

    18286

    浏览量

    288479
  • Android
    +关注

    关注

    12

    文章

    3851

    浏览量

    125642
  • SDK
    SDK
    +关注

    关注

    3

    文章

    966

    浏览量

    44708
收藏 人收藏

    评论

    相关推荐

    ARM Cortex-A53嵌入式开发平台Android手册

    电子发烧友网站提供《ARM Cortex-A53嵌入式开发平台Android手册.pdf》资料免费下载
    发表于 04-28 15:10 0次下载

    fpga能焊接口转换板上调试吗?

    fpga能焊接口转换板上调试吗?对pcb走线要求高吗? 不高的话,直接焊接在转接板上,引出的线接面包板上的元器件做实验了。
    发表于 02-06 22:59

    如何在Keil uVision3 IDE中基于ARM开发板调试和运行程序

    本应用笔记介绍如何在Keil uVision3 IDE中基于ARM的开发板上调试和运行程序。 与更传统的JTAG协议转换器(如多ICE)不同,本文重点介绍了使用带有JTAG编程加密狗的H-JTAG
    发表于 08-29 06:21

    ARM调试器手动配置

    本工作簿的目的是使用ARM Development Studio的平台配置编辑器(PCE)为给定目标手动创建平台配置。 对于大多数目标,您可以通过使用PCE执行目标自动检测来自动创建平台
    发表于 08-28 06:39

    如何使用ARM Development Studio调试MCIMX8M-EVK板上运行的简单程序

    本教程中,您将学习如何使用ARM Development Studio调试MCIMX8M-EVK板上运行的简单程序。 通过完成一系列基本任务,您将了解
    发表于 08-28 06:20

    如何向ARM DS-5 Development Studio添加新的固定虚拟平台

    视图,使您能够访问硅片之前很久就测试和调试软件。 使用模型平台配置编辑器,可以轻松地DS-5中导入、连接和调试模型。
    发表于 08-24 08:05

    Arm图形分析器1.0版入门指南

    此教程描述如何使用 Arm 图形分析器来捕捉使用马里 GPU 的 Android 设备运行的可调试应用程序的图形痕迹。 您也可以观看此教程的视频: 您开始
    发表于 08-24 08:04

    使用Arm NN API指南Android上实现神经风格的转移

    本指南中,我们将向您展示如何使用ARM NN API构建一个样式转换Android应用程序。 要阅读本指南,您需要以下资源: ·运行Android 9或更高版本的
    发表于 08-11 06:18

    如何使用Arm Compiler 6构建Hello World

    Virtual上调试站台 本Arm®DS-5 Development Studio教程介绍了一个基本的Hello World C程序。它将是 如果您想在Armv8平台上进行裸机软件开发,这将非常有用,并显示
    发表于 08-08 07:41

    Armv8-A上调试器的使用指南

    们,以及使用它们可能产生的后果。本指南使用Arm Development Studio、Arm Compiler 6和GNU编译器集合(GCC)来说明这些 概念。 本指南的末尾,您将了解: •加载
    发表于 08-02 09:11

    78K0/KF2Demo Board Campaign Board 用于 NEC QB-78K0MINI 片上调试仿真器的演示板

    78K0/KF2 Demo Board Campaign Board 用于 NEC QB-78K0MINI 片上调试仿真器的演示板
    发表于 06-28 20:42 0次下载
    78K0/KF2Demo Board Campaign Board 用于 NEC QB-78K0MINI 片<b class='flag-5'>上调试</b>仿真器的演示板

    MINICUBE2设置手册 带编程功能的片上调试仿真器

    MINICUBE2 设置手册 带编程功能的片上调试仿真器
    发表于 06-26 19:17 0次下载
    MINICUBE2设置手册 带编程功能的片<b class='flag-5'>上调试</b>仿真器

    如何将memtool集成到i.MX8MM Android 12平台中?

    Memtool 是一个有用的调试工具,可以读/写一些 i.MX 寄存器。Linux 默认支持,Android 不支持。 本文介绍如何将 memtool 集成到 i.MX8MM Android 12
    发表于 05-16 06:56

    78K0/KF2Demo Board Campaign Board 用于 NEC QB-78K0MINI 片上调试仿真器的演示板

    78K0/KF2 Demo Board Campaign Board 用于 NEC QB-78K0MINI 片上调试仿真器的演示板
    发表于 05-11 20:18 0次下载
    78K0/KF2Demo Board Campaign Board 用于 NEC QB-78K0MINI 片<b class='flag-5'>上调试</b>仿真器的演示板

    MINICUBE2设置手册 带编程功能的片上调试仿真器

    MINICUBE2 设置手册 带编程功能的片上调试仿真器
    发表于 05-05 19:26 0次下载
    MINICUBE2设置手册 带编程功能的片<b class='flag-5'>上调试</b>仿真器