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

审核编辑:郭婷

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

    关注

    5083

    文章

    19133

    浏览量

    305616
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10871

    浏览量

    211950
  • Linux
    +关注

    关注

    87

    文章

    11310

    浏览量

    209662
收藏 人收藏

    评论

    相关推荐

    ARM架构嵌入式主板特点

    嵌入式主板可以理解为嵌入在设备中用于控制和数据处理的CPU板,也就是设备的“大脑”。当主板嵌入到设备中,当然对主板的体积和功耗会有严格的要求(嵌入
    的头像 发表于 12-31 16:03 149次阅读
    ARM架构<b class='flag-5'>嵌入式</b>主板特点

    新手怎么学嵌入式?

    的基础上增加了面向对象编程的特性,有助于编写复杂的嵌入式程序。 3. 学习硬件知识 嵌入式技术与硬件紧密相关,因此你需要了解一些基本的硬件知识。比如微控制器(MCU)、微处理器(MPU)的工作原理,了解
    发表于 12-12 10:51

    掌握调试技巧是攻克嵌入式学习难点的关键

    就来说说嵌入式开发常见问题解决方法。 一、问题复现 稳定复现问题才能正确的对问题进行定位、解决以及验证。一般来说,越容易复现的问题越容易解决。 1.1 模拟复现条件 有的问题存在于特定的条件下,只需要模拟出现问题的条件即
    的头像 发表于 11-18 11:10 416次阅读
    掌握<b class='flag-5'>调试</b>技巧是攻克<b class='flag-5'>嵌入式</b>学习难点的关键

    什么是嵌入式操作系统?

    的战斗机。 FreeRTOS:它适合那些资源有限的小型设备,就像小巧的瑞士军刀。 QNX:它以安全和可靠著称,很多汽车和工业系统都用它,可以说是EOS中的沃尔沃。 Linux:虽然它不是专门为嵌入式
    发表于 11-08 15:07

    嵌入式 Linux 操作系统配置

    随着物联网(IoT)和智能设备的快速发展,嵌入式系统在各个领域扮演着越来越重要的角色。Linux因其开源、灵活和稳定的特性,成为嵌入式系统的首选操作系统。 1. 硬件选择 在配置嵌入式
    的头像 发表于 11-06 10:22 428次阅读

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

    【北京迅为】i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植篇第六十九章uboot移植
    的头像 发表于 10-22 14:46 650次阅读
    【北京迅为】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 506次阅读

    嵌入式linux开发板怎么操作

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

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

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

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

    【出版发行】嵌入式系统原理与开发——基于RISC-V和Linux系统
    的头像 发表于 07-26 08:36 337次阅读
    【出版发行】<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 620次阅读
    专家力荐|《<b class='flag-5'>嵌入式</b>系统原理与开发——基于RISC-V和<b class='flag-5'>Linux</b>系统》新书发售

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

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

    嵌入式Linux开发的三种方式

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

    嵌入式自学好书推荐

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