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 成为一项更加简化和可预测的任务。

审核编辑:郭婷

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

    关注

    5082

    文章

    19123

    浏览量

    305113
  • Android
    +关注

    关注

    12

    文章

    3936

    浏览量

    127395
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1036

    浏览量

    45930
收藏 人收藏

    评论

    相关推荐

    Arm推出GitHub平台AI工具

    专为 GitHub Copilot 设计的 Arm 扩展程序,可加速从云到边缘侧基于 Arm 平台的开发。
    的头像 发表于 11-01 13:50 290次阅读

    PLC远程编程调试平台是什么

    、灵活的管理需求。为此,PLC远程编程调试平台应运而生,为工业自动化带来了革命性的变革。 PLC远程编程调试平台的定义 PLC远程编程调试
    的头像 发表于 10-08 14:26 215次阅读
    PLC远程编程<b class='flag-5'>调试</b><b class='flag-5'>平台</b>是什么

    丢掉数据线,你还会调试Android设备吗?

    ADB(AndroidDebugBridge)作为Android开发中非常重要的工具,开发者可以使用ADB设备电脑上对Android设备进行安装
    的头像 发表于 08-14 17:09 374次阅读
    丢掉数据线,你还会<b class='flag-5'>调试</b><b class='flag-5'>Android</b>设备吗?

    如何在服务器上调试本地FPGA板卡

    联合开发或者跑多策略工程的时候,一般都使用多核的服务器进行FPGA设计。这个时候如果板卡在本地电脑上应该怎么进行调试呢? 今天就简单讲讲《如何在服务器上调试本地FPGA板卡
    发表于 07-31 17:36

    Android案例分享,基于瑞芯微RK3568国产平台

    SDK:Rockchip_Android13_SDK_Release   硬件平台介绍 创龙科技TL3568-EVM是一款基于瑞芯微RK3568J/RK3568B2处理器设计的四核ARM Cortex-A55国产工业评估板
    的头像 发表于 06-20 10:04 669次阅读
    <b class='flag-5'>Android</b>案例分享,基于瑞芯微RK3568国产<b class='flag-5'>平台</b>!

    鸿蒙ArkUI-X跨语言调用说明:【平台桥接开发指南(Android)】

    平台桥接用于客户端(ArkUI)和平台Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法
    的头像 发表于 05-25 16:26 695次阅读
    鸿蒙ArkUI-X跨语言调用说明:【<b class='flag-5'>平台</b>桥接开发指南(<b class='flag-5'>Android</b>)】

    鸿蒙ArkUI-X跨平台开发:【bility开发说明(Android平台)】

    本文介绍将ArkUI框架扩展到Android平台所需要的必要的类及其使用说明,开发者基于OpenHarmony,可复用大部分的应用代码(生命周期等)并可以部署到Android平台,降低
    的头像 发表于 05-21 10:54 956次阅读
    鸿蒙ArkUI-X跨<b class='flag-5'>平台</b>开发:【bility开发说明(<b class='flag-5'>Android</b><b class='flag-5'>平台</b>)】

    美银上调高通目标价至180美元

    美银上调高通目标价至180美元 基于人工智能的推动和手机市场的持续复苏;美银证券上调高通的目标价,由173美元上调至180美元,维持“买入”评级。
    的头像 发表于 05-08 17:26 423次阅读

    freertos启用IAR自带插件调试时不能查看队列信息怎么解决?

    IAR平台上调试freertos,想利用IAR自带的freertos插件进行调试,但是只能看task的信息,不能看队列信息显示
    发表于 05-07 06:54

    谷歌明年6月停用Google Fit API,转用Android Health平台

    自 2022 年起,谷歌加大了对 Android Health 平台的投入力度,以期实现平台统一性以及简化开发流程。公告指出,谷歌正逐步将 Fit 开发服务纳入 Android Hea
    的头像 发表于 05-06 11:27 504次阅读

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

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

    FunASR语音大模型Arm Neoverse平台上的优化实践流程

    Arm 架构服务器领域发展势头前景看好。目前已有许多头部云服务提供商和服务器制造商推出了基于 Arm Neoverse 平台的服务器产品
    的头像 发表于 02-22 13:41 2535次阅读
    FunASR语音大模型<b class='flag-5'>在</b><b class='flag-5'>Arm</b> Neoverse<b class='flag-5'>平台</b>上的优化实践流程

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

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

    Android、iOS、鸿蒙多平台框架ArkUI-X

    Android、iOS、鸿蒙多个平台上提供生动而流畅的用户界面体验。 一、配套关系 表1 版本软件和平台配套关系 目标平台 项目编译使用OS SDK版本 备注 OpenHarmony
    的头像 发表于 01-31 14:52 1794次阅读
    跨<b class='flag-5'>Android</b>、iOS、鸿蒙多<b class='flag-5'>平台</b>框架ArkUI-X

    arm三个寄存器gdb调试时的作用

    arm三个寄存器gdb调试时作用  ARM是一种广泛使用的微处理器架构,它广泛应用于移动设备、嵌入式系统和其他高性能计算设备。当我们使用
    的头像 发表于 01-31 10:44 980次阅读