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

审核编辑:郭婷

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

    关注

    5188

    文章

    20172

    浏览量

    329246
  • Android
    +关注

    关注

    12

    文章

    3988

    浏览量

    133163
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1094

    浏览量

    51235
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【教程】必看!手把手教你调试Codesys与西门子平台的Profinet网络​

    验证。1.1STEP7-MicroWINSMART平台使用STEP7-MicroWINSMART平台调试ProfinetIO时,需先借助S7-200PLC才可进
    的头像 发表于 09-18 19:33 1498次阅读
    【教程】必看!手把手教你<b class='flag-5'>调试</b>Codesys与西门子<b class='flag-5'>平台</b>的Profinet网络​

    CYBT-213043-EVAL上调试不稳定怎么解决?

    “Attach_KitProg3_Miniprog4”按钮开始调试。 如上述 pdf 文件中所述,我可以单击 “暂停”,断点就会挂在
    发表于 07-02 06:06

    ArkUI-XAndroid平台动态化开发指南

    本文介绍如何在Android平台进行ArkUI-X动态化开发,包括动态化目录规则及约束。 适用场景 动态化主要包括两个典型场景: 场景1:框架动态化,为了降低应用ROM体积占用,及满足动态升级框架
    发表于 06-15 23:33

    ArkUI-XAndroid上使用Fragment开发指南

    本文介绍将ArkUI框架的UIAbility跨平台部署至Android平台Fragment的使用说明,实现Android原生Fragment和ArkUI跨
    发表于 06-12 22:42

    ArkUI-X平台差异化

    : 1.自身业务逻辑不同平台本来就有差异; 2.OpenHarmony上调用了不支持跨平台的API,这就需要在OpenHarmony上仍然调用对应API,其他
    发表于 06-10 23:08

    ArkUI-X与Android消息通信

    平台与ArkUI交互,ArkUI侧具体用法请参考Bridge API,Android侧参考BridgePlugin。 创建平台桥接 1.ArkUI侧创建
    发表于 06-08 22:15

    ArkUI-X跨平台框架接入指南

    的IDE编辑器进行开发和调试; ArkUI-X支持Android/iOS平台真机和模拟器上运行调试
    发表于 05-18 18:21

    何为变频调速系统的基频以上调速?

    。变频器将电源的交流电转换成直流电,再通过PWM控制器(或其他调制方式)将直流电转换成变频的交流电,从而实现对电机转速的精确控制。基频以上调速时,由于电动机不能超过额定电压运行,因此定子电压保持不变,而电源频率则继
    的头像 发表于 04-23 17:12 1038次阅读
    何为变频调速系统的基频以<b class='flag-5'>上调</b>速?

    Arm助力开发者加速迁移至Arm架构云平台 Arm云迁移资源分享

    随着基于 Arm 架构的云实例日益扩展,越来越多的用户正从传统平台迁移至 Arm 平台上。
    的头像 发表于 04-09 18:23 1046次阅读

    揭秘Chrome DevTools:从原理到自定义调试工具

    引言 Chrome DevTools 是前端开发者的必备工具,不仅可以用于调试 Chrome 网页,还支持 Android WebView、 Roma (跨平台开发框架) 安卓&鸿蒙端 等平台
    的头像 发表于 03-04 14:49 1237次阅读
    揭秘Chrome DevTools:从原理到自定义<b class='flag-5'>调试</b>工具

    GD-LINK无法KEIL上调试怎么解决?

    芯片:GD32F303RCT6 调试器:GD-LINK 调试软件:KEIL V5 (5.29) 问题:开始调试后,程序从SystemInit直接进入HardFault中断,程序无法运行。 启动文件
    发表于 02-27 08:24

    Cadence Verisium Debug:统一调试平台,加速SoC设计

    Cadence的统一调试平台Verisium Debug,为从IP到SoC级别的复杂设计提供了全面的调试解决方案。该平台集成了多种调试功能,
    的头像 发表于 02-17 11:10 1295次阅读

    瑞芯微开发板/主板Android调试串口配置为普通串口方法

    ​本文介绍瑞芯微开发板/主板Android调试串口配置为普通串口方法,不同板型找到对应文件修改,修改的方法相通。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立
    的头像 发表于 02-11 11:57 1604次阅读
    瑞芯微开发板/主板<b class='flag-5'>Android</b><b class='flag-5'>调试</b>串口配置为普通串口方法

    迅为RK3562开发板Android源码定制开发-uboot开发

    1.1 uboot 开发 Uboot 源码是 v2017.09 版本。目前平台上已经支持 RK 所有主流在售芯片。支持的功能主要有:  支持 RK Android 固件启动;  支持
    发表于 02-07 11:12

    Exynos4412开发板上调试TVP5151,接口是摄像头接口,预览时没有全屏,而且预览图像是黑白的,为什么?

    Exynos4412开发板上调试TVP5151,接口是摄像头接口,预览时没有全屏,而且预览图像是黑白的,没有颜色,请问有遇到过此问题吗?是系统侧的问题,还是TVP5151端输出格式不对,谢谢!
    发表于 01-10 08:00