还未设置个性签名
成为VIP会员 享9项特权: 开通会员

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

审核编辑:郭婷

  • 嵌入式
    +关注

    关注

    3716

    文章

    15005

    浏览量

    261789
  • cpu
    cpu
    +关注

    关注

    68

    文章

    7043

    浏览量

    196287
  • Linux
    +关注

    关注

    75

    文章

    7733

    浏览量

    197137
收藏 人收藏

    评论

    相关推荐

    Linux下BMP图片缩放

    MP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Wi....
    的头像 嵌入式技术 发表于 08-18 17:14 136次 阅读
    Linux下BMP图片缩放

    Linux下BMP图片截图

    MP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Wi....
    的头像 嵌入式技术 发表于 08-18 17:09 95次 阅读

    内存的基本概念以及操作系统的内存管理算法

    本文主要介绍内存的基本概念以及操作系统的内存管理算法。
    的头像 MCU开发加油站 发表于 08-18 15:52 63次 阅读

    Keil软件的开发应用流程分享

    代码没有错误,就可以单步或连续模拟运行调试、观察运行结果。Keil C51内建了一个仿真CPU来模拟....
    的头像 冬至配饺子 发表于 08-18 14:35 187次 阅读
    Keil软件的开发应用流程分享

    飞腾荣获 “2022年度中国优秀技术支持团队”

    8月17日,由全球电子技术领域领先的媒体集团 ASPENCORE 举办的 “2022年度中国 IC ....
    的头像 Phytium飞腾 发表于 08-18 14:23 113次 阅读

    Linux内存映射与页表详解

    我们通常所说的内存容量,指的是物理内存,只有内核才可以直接访问物理内存,进程并不可以。
    发表于 08-18 12:30 79次 阅读

    嵌入式软件架构的设计中分类整理

    最近项目有点多,总结一下目前接触的软件架构中的几个分类,个人拙见,大家可以相互学习。
    的头像 嵌入式应用开发 发表于 08-18 11:47 174次 阅读
    嵌入式软件架构的设计中分类整理

    数据中心将进入完全可编程时代

    GPU(默认为GPGPU),一方面其数以千计的引擎可编程能力不错,可以覆盖非常多的领域。也因为CUD....
    的头像 倩倩 发表于 08-18 11:00 125次 阅读

    嵌入式应用层开发学习曲线

    通过大量编程实例重点学习C语言的高级编程知识,包括函数与程序结构、指针、数组、常用算法、库函数的使用....
    的头像 倩倩 发表于 08-18 09:52 183次 阅读

    芯来科技打造基于RISC-V的创新发展新方向

    此次融资前,芯来科技不断推动RISC-V CPU IP的国产化应用落地进程,全系列产品已经成熟稳定地....
    的头像 芯来科技 发表于 08-18 09:48 116次 阅读

    求助,CH573F的USB有linux下基于libusb进行通信的Demo示例吗?

    请教下CH573F的USB有linux下基于libusb进行通信的Demo示例吗   ...
    发表于 08-18 07:59 56次 阅读

    浅析Linux系统中的内存管理

    内核代码和数据结构存放在一组保留的页框中,这些页框所含的页从不动态分配或者交换到内存中。
    的头像 冬至配饺子 发表于 08-17 16:27 241次 阅读
    浅析Linux系统中的内存管理

    赛灵思发现了阻碍SmartNIC普及的三大因素

    超大规模用户和 CSP 的第二个要求是可组合性。这是一种将新功能块动态插入到收发包处理流水线中的功能....
    的头像 FPGA之家 发表于 08-17 16:06 64次 阅读

    ARM的Fast Model的图形化编辑工具System Canvas与DS-5能方便的集成到一起吗

    我想咨询一下System Canvas tool问题: 1、它会快速创建一个CPU Model. 比如创建一个4 cores' CA53: (1) 它如何与第三...
    发表于 08-17 15:57 818次 阅读

    Hi3559AV100 Hickory套件 进行双系统 Linux(big-little)+A53UP(Huawei LiteOS) 烧录出现 无法挂载根文件系统

    通过Hitool烧录 hihope_uboot.bin 后, 使用tftp2emmc命令进行以下网口烧录: tftp2emmc 0x0 u-boot-hi3559av100.bin tftp...
    发表于 08-17 15:49 327次 阅读

    迅为RK3588开发板Linux安卓12瑞芯微ARM核心板人工智能工业AI主板

    RK3588 是一款低功耗、高性能的处理器,适用于基于 arm 的 PC 和 Edge 计算设备、个人 移动互联网设备等数字多媒体应用,采...
    发表于 08-17 14:56 311次 阅读

    基于RT-Thread和RA6M4实现samba服务移动网盘

    本文详细介绍了基于RT-Thread操作系统和RA6M4处理器,如何移植和适配samba服务。同时,....
    的头像 嵌入式物联网开发 发表于 08-17 12:53 182次 阅读
    基于RT-Thread和RA6M4实现samba服务移动网盘

    用于嵌入式系统引导的闪存设备比较

      总之,虽然 SLC NAND、eMMC 和 UFS 的每比特成本较低,但 NOR 闪存器件仍然是....
    发表于 08-17 11:57 74次 阅读
    用于嵌入式系统引导的闪存设备比较

    I2C3挂载wm8960音频芯片

    OKMX8MM-C开发板预留了I2C3和SAI引脚接口,分别位于P18和P7插针引脚上,板载音频芯片挂载到了I2C2和SAI2。今...
    发表于 08-17 11:41 693次 阅读

    使嵌入式存储容错

      容错冗余 RAID 存储与可靠的工业级 SSD 驱动器(如 SLC 或 iSLC 级 SSD)相....
    的头像 星星科技指导员 发表于 08-17 10:35 90次 阅读

    小数据时代嵌入式工程师面临新挑战

      嵌入式数据安全带来的核心工程挑战与功能安全带来的挑战基本相同。这些问题可以通过适当的知识、风险评....
    的头像 星星科技指导员 发表于 08-17 10:07 61次 阅读

    加固改进增强了内存模块设计

      尽管对加固型嵌入式设备的需求不断增加,但内存模块供应商继续进行技术进步和相关的制造改进,以满足 ....
    的头像 星星科技指导员 发表于 08-17 09:46 218次 阅读
    加固改进增强了内存模块设计

    下一代内存技术

      RRAM 在短期内成为闪存继任者的障碍是每比特成本。闪存是一种非常便宜的制造技术。Yu 说,3D....
    的头像 星星科技指导员 发表于 08-17 09:42 200次 阅读

    了解SSD应用程序类别可简化选择正确的存储解决方案

      嵌入式工业基础设施应用存储需求的多样化和分散性促使 OEM 评估多种选项以匹配其各自的系统需求。....
    的头像 星星科技指导员 发表于 08-17 09:37 113次 阅读

    工业SATA闪存选项

      嵌入式设计可接受的最终外形尺寸是工业 2.5 英寸 SATA SSD。如果您需要大量存储并且您的....
    的头像 星星科技指导员 发表于 08-17 09:31 147次 阅读

    开放式加速标准如何推动安全关键型发展

      嵌入式产品中越来越多地使用计算、视觉和推理加速的集成带来了重大的新商机,Khronos 正在开发....
    的头像 星星科技指导员 发表于 08-17 09:21 47次 阅读
    开放式加速标准如何推动安全关键型发展

    关于Linux字符设备基本类型

    字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。....
    的头像 FPGA之家 发表于 08-17 09:04 58次 阅读

    容器进程调度时是该优先考虑CPU资源还是内存资源

    当然实际中 k8s 的调度策略不是这么简单的,系统默认的 kube-scheduler 调度器外还有....
    的头像 冬至配饺子 发表于 08-16 18:20 212次 阅读

    RT-Thread系统实战之在系统调试利器

    前言 得力于 msh 我们可以在 rt-thread 运行的时候执行一些内置命令,查看系统运行状态。 但是对于一个嵌入式开发工程师,有这...
    发表于 08-16 15:15 1123次 阅读

    导致微控制器中断延迟的原因

    RTOS 还需要暂时禁用可以调用 API 函数的中断。一些 RTOS 禁用所有中断,有效地恶化了所有....
    发表于 08-16 14:13 77次 阅读
    导致微控制器中断延迟的原因

    AVR32 MCU上的ABDAC外设音频播放设计

    ABDAC 可以连接到设备上的 DMA 控制器。在将数据从 RAM 中的缓冲区传输到 ABDAC 时....
    发表于 08-16 11:36 136次 阅读
    AVR32 MCU上的ABDAC外设音频播放设计

    使用双SD卡数据存储策略提高工业系统的可靠性

      这一切都可以通过编程方式完成,并且可以完全配置以满足应用程序的需求。例如,通过设置关机和看门狗时....
    的头像 星星科技指导员 发表于 08-16 11:30 52次 阅读

    用于深度学习推理的高性能工具包

      推理引擎用于部署应用程序。使用部署管理器,您可以通过将模型、IR 文件、应用程序和相关依赖项组装....
    的头像 星星科技指导员 发表于 08-16 11:27 46次 阅读
    用于深度学习推理的高性能工具包

    linux下BMP图片旋转

    MP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Wi....
    的头像 嵌入式技术 发表于 08-16 11:27 61次 阅读
    linux下BMP图片旋转

    Linux下BMP图片添加水印

    BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种W....
    的头像 嵌入式技术 发表于 08-16 11:20 64次 阅读
    Linux下BMP图片添加水印

    在Python中评估不同嵌入式算法的性能

      其次,如果在嵌入式系统上运行多个应用程序,这些其他应用程序可能会破坏目标应用程序,这也会增加算法....
    的头像 星星科技指导员 发表于 08-16 11:12 41次 阅读
    在Python中评估不同嵌入式算法的性能

    通过RX MCU和CPU相结合提高电机控制效率

    RX600 内核具有符合 IEE-754 标准的单精度 32 位浮点单元。FPU 紧密连接到共享相同....
    发表于 08-16 10:41 70次 阅读
    通过RX MCU和CPU相结合提高电机控制效率

    COM-HPC集成IPMI以提高边缘服务器的QoS

      OpenBMC 是用于服务器、架顶式交换机、RAID 设备和其他设备的管理控制器的 Linux ....
    的头像 星星科技指导员 发表于 08-16 10:18 39次 阅读
    COM-HPC集成IPMI以提高边缘服务器的QoS

    Pantavisor Linux为系统带来容器可移植性和敏捷性

      Pantavisor Linux 将您的固件、操作系统、网络和板级支持包 (BSP) 容器化,使....
    的头像 星星科技指导员 发表于 08-16 09:52 50次 阅读

    8点PyTorch提速技巧总结

    CPU的话尽量看主频比较高的,缓存比较大的,核心数也是比较重要的参数。显卡尽可能选现存比较大的,这样....
    发表于 08-16 09:50 67次 阅读

    嵌入式Linux调试变得更容易

      诸如用于自上而下探索性分析的高级概述等功能,包括进程交互、进程分叉、CPU 使用率、RAM 使用....
    发表于 08-16 09:48 75次 阅读
    嵌入式Linux调试变得更容易

    开源、可重用的软件堆栈支持CbM的实时处理和算法开发

      最终配置是直接云选项,每个平台直接访问互联网并将测量推送到云端。由于 CN0549 在 Linu....
    的头像 星星科技指导员 发表于 08-16 09:40 360次 阅读
    开源、可重用的软件堆栈支持CbM的实时处理和算法开发

    为什么Linux服务器需要文件压缩

      本文提供了 Linux 文件压缩至关重要的原因。这种技术在组织中起着至关重要的作用,尤其是那些处....
    的头像 星星科技指导员 发表于 08-16 09:27 33次 阅读

    释放边缘工作负载整合的全部潜力

      由于 5G 技术和 10+ GbE 网络,实时处理在触觉互联网环境中变得越来越重要,因此开发人员....
    的头像 星星科技指导员 发表于 08-16 09:19 60次 阅读

    关于单片机与嵌入式、操作系统与RTOS之间的那些事!

    乍一听,和我们的直觉有矛盾啊:那么高大上的设备,其中的控制逻辑一定很复杂,不用嵌入式系统怎么来完成那....
    发表于 08-16 09:18 105次 阅读

    嵌入式Linux上的以太网TSN简介

      引导加载程序是系统上电后运行的第一个代码,它处理基本的硬件初始化,并从嵌入式 Linux 系统中....
    发表于 08-16 09:14 57次 阅读
    嵌入式Linux上的以太网TSN简介

    linux下gdb安装与使用简介

    GDB,又称GNU调试器,是用来帮助调试我们程序的工具。gdb可以设置断点、查看变量、堆栈空间的值、....
    的头像 嵌入式技术 发表于 08-16 09:03 186次 阅读
    linux下gdb安装与使用简介

    Pauline通用软盘阅读器/模拟器

    描述 Pauline,通用软盘阅读器/模拟器 该设备可以检测它所连接的软盘驱动器类型,尝试修复软盘的故障扇区并对其进行备份!它...
    发表于 08-16 06:02 240次 阅读

    使用加速WEKA加速机器学习模型

    最后,我们使用了 HIGGS 数据集 ,其中包含有关原子加速器运动学特性的数据。希格斯数据集的前 5....
    的头像 星星科技指导员 发表于 08-15 17:27 170次 阅读
    使用加速WEKA加速机器学习模型

    如何使用Eclipse玩转STM32(上)

    在嵌入式开发中,我们比较熟悉的是像Keil,IAR这些IDE(Integrated Developm....
    发表于 08-15 17:16 48次 阅读
    如何使用Eclipse玩转STM32(上)

    使用MineDojo构建具有一般能力的人工智能代理

      该关联分数可以作为奖励信号提供,以指导强化学习代理完成任务。对于示例任务“剪一只羊以获得羊毛”,....
    的头像 星星科技指导员 发表于 08-15 17:10 113次 阅读

    电子系统设计的模块化

      开发人员现在可以访问面向云的软件模块和工具,这些模块和工具可轻松与常见的网络堆栈和 RTOS 实....
    的头像 星星科技指导员 发表于 08-15 16:57 105次 阅读

    语音编解码器如何适应MEMS麦克风

      为了简化开发,CML 提供了 HAT 板 EV6550DHAT,这意味着 CMX655D 编解码....
    的头像 星星科技指导员 发表于 08-15 16:51 178次 阅读
    语音编解码器如何适应MEMS麦克风

    如何在基于Arm的设备上运行游戏AI呢

    在本系列的第 2 部分中,我们展示了游戏 AI 代理是如何设计的。我们还展示了为 Dr Arm 的 Boss Battle 演示生成的神经网络...
    发表于 08-15 15:43 746次 阅读

    简述基于HTTP协议实现WebClient软件包的工作原理

    工作原理 WebClient 软件包主要用于在嵌入式设备上实现 HTTP 协议,软件包的主要工作原理基于 HTTP 协议实现,如下图...
    发表于 08-15 14:27 301次 阅读

    TMS320VC5501 定点数字信号处理器

    TMS320VC5501(5501)定点数字信号处理器(DSP)基于TMS320C55x™DSP生成CPU处理器内核。 C55x™DSP架构通过增加并行性和全面关注降低功耗来实现高性能和低功耗。 CPU支持内部总线结构,该结构由一个程序总线,三个数据读总线,两个数据写总线以及专用于外设和DMA活动的附加总线组成。这些总线能够在一个周期内执行最多三次数据读取和两次数据写入。并行,DMA控制器可以独立于CPU活动执行数据传输。 C55x™CPU提供两个乘法累加(MAC)单元,每个单元能够进行17位×17位乘法运算。单循环。额外的16位ALU支持中央40位算术/逻辑单元(ALU)。 ALU的使用受指令集控制,提供优化并行活动和功耗的能力。这些资源在C55x CPU的地址单元(AU)和数据单元(DU)中进行管理。 C55x DSP代支持可变字节宽度指令集,以提高代码密度。指令单元(IU)从内部或外部存储器执行32位程序提取,并为程序单元(PU)排队指令。程序单元解码指令,将任务指向AU和DU资源,并管理完全受保护的管道。预测分支功能可避免执行条件指令时的管道刷新。 5501外设...
    发表于 10-09 14:55 544次 阅读
    TMS320VC5501 定点数字信号处理器

    AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)

    TI AM437x高性能处理器基于ARM Cortex-A9内核。 这些处理器通过3D图形加速得到增强,可实现丰富的图形用户界面,还配备了协处理器,用于进行确定性实时处理(包括EtherCAT,PROFIBUS,EnDat等工业通信协议)。该器件支持高级操作系统(HLOS)。基于Linux的® 可从TI免费获取。其它HLOS可从TI的设计网络和生态系统合作伙伴处获取。 这些器件支持对采用较低性能ARM内核的系统升级,并提供更新外设,包括QSPI-NOR和LPDDR2等存储器选项。 这些处理器包含功能方框图中显示的子系统,并且后跟相应的“说明”中添加了更多信息说明。 处理器子系统基于ARM Cortex-A9内核,PowerVR SGX™图形加速器子系统提供3D图形加速功能以支持显示和高级用户界面。 可编程实时单元子系统和工业通信子系统(PRU-ICSS与ARM内核分离,允许单独操作和计时,以实现更高的效率和灵活性.PRU-ICSS支持更多外设接口和EtherCAT,PROFINET,EtherNet /IP,PROFIBUS,以太网Powerlink,Sercos,EnDat等...
    发表于 09-25 11:51 706次 阅读
    AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)