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

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

3天内不再提示

嵌入式Linux调试变得更容易

星星科技指导员 来源:嵌入式计算设计 作者:Mohammed Billoo 2022-07-04 09:15 次阅读

调试嵌入式 Linux 非常复杂,即使是最有经验的嵌入式系统开发人员也面临许多挑战。但是,专门支持嵌入式 Linux 的可视化跟踪诊断工具可以大大简化这项工作。

我的任务是开发一个定制的 Linux 驱动程序来使用外部设备流式传输的数据。虽然 Linux 内核有一些原生机制来确保驱动程序的功能是正确的,但调试和评估性能远非简单。这就是为什么我决定测试新的跟踪工具(例如支持嵌入式 Linux 的 Tracealyzer)是否以及如何帮助我,从分析驱动程序和中断处理程序,到检查用户空间应用程序和编译器选项。

我将跟踪工具与基于 Yocto 的 Linux 发行版一起使用,首先在板支持包上构建自定义层以启用开源LTTng库。这为作为 Linux 系统(包括内核)的一部分执行驱动程序提供了许多有价值的观点。它还让我对驱动程序有了更全面的了解,以确保没有性能瓶颈或确定任何瓶颈的原因。

诊断跟踪工具还可以帮助发现 IRQ 处理程序中的性能问题,而无需使用可怕的 printk 语句。就我而言,它发现需要通过 I2C 总线确认设备中断以防止抖动。如果不使用跟踪工具,这个隐藏的错误直到发布前不久移除无关的 printk 调用时才会被发现或显现出来。该工具还揭示了在中断处理程序中包含 printk 的严重影响。使用跟踪工具有效地避免了在后期修改驱动程序的需要,这会导致大量的延误和成本。

使用跟踪工具,我还能够测试我的假设,即设置进程的 CPU 亲和性将如何影响其性能。分析正常和高强度条件下不同执行元素之间的交互,显示了 Linux 内核的尽力而为算法。这确定了 Linux 内核调度程序和 iperf 代码库的某些区域以供进一步调查。

在评估用户空间性能时,跟踪工具可以更加强大。像大多数嵌入式软件开发人员一样,我开发针对 Linux 系统的用户空间应用程序。将跟踪工具的输出与 LTTng 跟踪点结合起来提供了一种宝贵的方法来帮助我确定我的应用程序的执行情况、识别任何异常行为并提供高级时序统计信息。然后,我可以使用该工具进一步解决任何计时问题并提高应用程序的性能。

我还发现跟踪工具和 LTTng 库的结合非常强大,可以帮助我快速了解某些编译器选项对执行浮点计算的用户空间应用程序性能的影响。通常,这种分析是在应用程序完成但应用程序性能不佳时进行的,并且可能需要很多时间。在开发过程中使用该工具来验证软件时序帮助我避免了对性能的影响。

总而言之,我发现 Tracealyzer 等跟踪工具可以成为发现隐藏错误和优化嵌入式 Linux 系统性能的强大元素。

诸如用于自上而下探索性分析的高级概述等功能,包括进程交互、进程分叉、CPU 使用率、RAM 使用率、I/O 使用率、文件使用率、状态机和用户定义的指标,提供了宝贵且直观的跟踪视图,用于显示细节,在响应性和清晰度方面可扩展到大型 Linux 跟踪。当通过可定制的事件解释适应特定用例时,任何用户定义的数据集(例如间隔和状态机)都可以显示在高度可配置的视图中。最后,使用开源 LTTng 库打开了广泛的功能来探索嵌入式 Linux 设计的各个方面,从驱动程序和中断处理程序到用户空间应用程序和编译器选项。在开发过程中使用这种组合不仅可以提高可见性,而且可以在过程的早期解决问题。从我经验丰富的开发人员的角度来看,这避免了隐藏的错误并节省了项目后期的时间和成本。

pYYBAGLCP1yAF4lgAACnzn1_cNE933.png

图1。在评估自定义 Linux 内核(如图)时,将开源 LTTng 库与跟踪工具结合使用可以揭示性能问题。

poYBAGLCP2WAOCuXAAGPdbbHYkA704.png

图 2:此垂直跟踪视图使用垂直时间线显示事件流。它从顶部开始,时间向下增长。每列代表系统中的单个执行上下文——通常是任务或中断处理程序——列中的矩形显示特定任务何时运行。水平标签(左)标记记录的软件事件。该图是完全响应的,因此放大可以显示更多细节。

审核编辑:郭婷

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

    关注

    5056

    文章

    18955

    浏览量

    301686
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10798

    浏览量

    210710
  • Linux
    +关注

    关注

    87

    文章

    11196

    浏览量

    208673
收藏 人收藏

    评论

    相关推荐

    【北京迅为】i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植篇第六十九章uboot移植

    【北京迅为】i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植篇第六十九章uboot移植
    的头像 发表于 10-22 14:46 405次阅读
    【北京迅为】i.mx8mm<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>开发指南第四篇 <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系统移植篇第六十九章uboot移植

    嵌入式系统的未来趋势有哪些?

    会更加模块化和集成化,允许容易的硬件和软件的切换和升级。这会提高系统的可维护性和可扩展性,会使得系统能够适应不断在变化的应用需求。 5. 生态可持续性与环保材料 在嵌入式系统的设计以及在制造过程中
    发表于 09-12 15:42

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序开发等多个方面。以下是嵌入式Linux开发的基本步骤,以及每个步骤的说明。 硬件选择 在开始
    的头像 发表于 09-02 09:11 334次阅读

    嵌入式linux开发板怎么操作

    嵌入式Linux开发板是一种基于Linux操作系统的嵌入式系统开发平台。它通常包括一个处理器、内存、存储器、输入/输出接口等硬件组件,以及一个基于L
    的头像 发表于 09-02 09:09 301次阅读

    嵌入式linux开发板芯片的工作原理

    嵌入式Linux开发板是一种基于Linux操作系统的嵌入式系统开发平台,它广泛应用于工业控制、智能家居、智能交通、医疗设备等领域。 嵌入式
    的头像 发表于 09-02 09:07 296次阅读

    【出版发行】嵌入式系统原理与开发——基于RISC-V和Linux系统

    【出版发行】嵌入式系统原理与开发——基于RISC-V和Linux系统
    的头像 发表于 07-26 08:36 236次阅读
    【出版发行】<b class='flag-5'>嵌入式</b>系统原理与开发——基于RISC-V和<b class='flag-5'>Linux</b>系统

    专家力荐|《嵌入式系统原理与开发——基于RISC-V和Linux系统》新书发售

    当前,嵌入式系统已成为智能设备的核心之一,RISC-V+Linux的开源力量为嵌入式系统注入强大的创新动力。作为中国RISC-V软硬件生态领导者,赛昉科技与业界专家合作推出《嵌入式系统
    的头像 发表于 07-24 08:20 471次阅读
    专家力荐|《<b class='flag-5'>嵌入式</b>系统原理与开发——基于RISC-V和<b class='flag-5'>Linux</b>系统》新书发售

    如何提升嵌入式编程能力?

    :掌握嵌入式系统的基本原理,包括中断、并发、实时操作、低功耗设计等。 3. 实践编程:通过实际编写和测试代码来提高技能。从简单的LED闪烁程序开始,逐步过渡到复杂的项目,如定时器PWM应用、串口、IIC
    发表于 06-21 10:01

    嵌入式软件开发应该掌握哪些知识?

    知识点学习 熟悉 Linux 的基本使用对于嵌入式软件开发至关重要。包括文件系统的管理、用户权限的控制、软件包管理等。嵌入式开发人员需要能够在 Linux 环境下进行开发、
    发表于 02-19 11:23

    嵌入式Linux开发的三种方式

    嵌入式Linux开发主要有三种方式:裸机开发、SDK开发和驱动开发。
    的头像 发表于 01-22 14:22 892次阅读

    嵌入式自学好书推荐

    令、编辑器VI、编译器GCC、调试器GDB以及Make项目管理工具、Shell和Makefile脚本编写等知识,并搭建嵌入式开发环境。推荐书籍:《Linux从入门到精通》。 无论从就业市场还是技术发展的角度来看,
    发表于 01-11 15:13

    什么是嵌入式系统?嵌入式系统的具体应用

    嵌入式,一般是指嵌入式系统。用于控制、监视或者辅助操作机器和设备的装置。
    的头像 发表于 12-20 13:33 2328次阅读

    IAR嵌入式解决方案发布全新版本

    软件开发领域实现了显著进展,引入了一系列增强功能,例如在Linux上进行先进的云调试和仿真。这次更新还包括Arm虚拟硬件(AVH)的集成和针对Linux的增强的IAR C-SPY调试
    的头像 发表于 12-08 15:17 749次阅读

    嵌入式开发为什么需要输出调试信息?

    嵌入式开发为什么需要输出调试信息? 因为输出调试信息是嵌入式开发中一项非常重要的实践,它有助于保证软件的可靠性、稳定性和性能,也是故障排查的关键工具之一。
    发表于 11-28 16:46

    嵌入式Linux应用程序开发详解-第2章

    电子发烧友网站提供《嵌入式Linux应用程序开发详解-第2章.pdf》资料免费下载
    发表于 11-16 11:18 0次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>应用程序开发详解-第2章