当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]新型Linux开发工具应对下一代嵌入式系统设计挑战

Linux 如今已在嵌入式实时操作系统(RTOS)领域占有一席之地。那些过去需要商用或自创及维护的 RTOS 应用正越来越多被 Linux 平台所取代。每家公司这样做的理由可能不尽相同,但共同的因素是:1)得到操作系统源代码的可能性;2)大量的设备驱动程序以及通信栈;3)精通 Linux 的软件工程师团队正日益壮大;4)从产品材料成本中减去操作系统版税部分能带来显而易见的成本优势;5)现在半导体供应商们为基于其硬件参考平台的系统级芯片(SoC)、工具链和参考发布提供了一个 Linux 端口。

为了充分利用 Linux 操作系统,原始设备制造商(OEM)可选择与商用 Linux 供应商合作,或在内部增添工程能力。这两种模式都已被证明是成功的,但是每种做法都需各自的成本。

不管 OEM 如何选择,他们的工程师所使用的典型调试模型都是相同的:基于 GDB(GNU Debugger)的客户服务器环境。如图1所示,它描述了在调试目标时,附加并运行在每个 Linux 进程中的 GDBSERVER 例示。每个 GDBSERVER 都通过一个以太网端口与主机通信。

另外,需要特别注意的是,采用这种调试方法,标准 Linux内核被替换成一种“静态”版本。仅有少数例外,所有通过 KGDB的目标调试通信都被限制在 RS232 串行链路。


图1: 标准 Linux 调试模型。

这种方法给开发人员带来了另一个挑战,即要使用 Linux内核的测试版(instrumented version)。虽然这是可接受的默认Linux调试环境,但这种方法有一些很明确的局限性。例如,采用多进程组成的应用,需要多个 GDBSERVER 运行于有限的目标存储器上。这可能影响被调试目标的性能,在一些情况下目标性能可降低50%以上。

即使在所有的内核工具和通信通道均可用的最佳情形下,仍有一些区域的代码在这个调试范例下难以到达。图2中说明的“问题”区域给内核和应用程序开发人员提出了更多挑战。这些区域包括每个进程下大量的线程,以及代码独立和数据位置独立的内核可加载模块。尽管对于熟练的开发人员来说,有可能利用现有技术合成一个环境,来满足这些区域的调试需要,但是这种环境对用户非常不友好,且在负载下无法扩展。


图 2: “问题”区域。

接下来我们看看在Linux 内核可加载模块的例子中,模块加载时间调用的初始化程序由哪些部分组成。目前的调试范例表明加载了这些模块,然后利用调试器对其代码和数据偏移进行调整(手动和自动)。但是,这时模块的初始化代码已经执行了,无法在代码所在区域对问题进行调试。另一个使用情形涉及共享库,这经常无法由 GDBSERVER 或其他类似程序很好地处理。即使存在这些问题,许多工程师仍在采用 printf(用户空间)和 printk(内核空间)作为主要调试帮助。一些调试“工具”带来新的软件问题或可能掩盖现有的问题。

[!--empirenews.page--]Arriba Debugger全面解决嵌入式Linux调试问题

Arriba Debugger从一开始就计划为调试嵌入式 Linux 提供全面方案。VMON2取代了GDBSERVER 和 KGDB,是一种运行于嵌入式 Linux 目标的、动态可加载、基于需求的调试代理。通过与主机上的 Arriba Debugger 通信,从用户级线程到静态内核,VMON2 可实现 Linux 目标完全可视性。VMON2的存储器占位面积很小,即使在加载时,它对运行系统的性能影响也几乎无法觉察。VMON2 在目标上的空间小于 250KB,能通过单以太网连接到目标平台进行端到端的调试。


图3: Arriba 解决方案。

问题 1 – 可加载模块

通过 Arriba Debugger,当某一特性的内核模块加载到目标时,VMON2 可进行配置,并向主机发送信号。接到这个信号后,Arriba Debugger 会自动且正确地加载各自模块的符号信息,并对模块初始化功能的入口点进行位置控制。现在,用户可以通过高速以太网连接对有问题的模块进行充分调试控制。与传统Linux内核和模块的调试不同,VMON2不预先占用内核,这对于以多数据和媒体为中心的应用而言非常关键。

问题 2 – 多进程调试;父/子进程

在许多情况下,Linux 应用程序开发人员需要创建包括多进程的应用。这样的进程最初始于应用初始化程序中的一个父进程。一个常见的挑战是考虑设置子进程断点、并最终在子进程创建并运行时,满足这些断点的需求。这听起来也许很简单,但对现有的嵌入式或非嵌入式 Linux 调试来说尚未获得支持。作为一个变通办法,开发人员经常在由一个最初设为“真”变量选通的无限循环子进程中,人工插入用于测试的代码。这有助于将 GDBSERVER 这样的调试工具连接到有问题的子进程,将选通变量值变为“假”来解除循环并恢复调试。

问题 3 – 调试内核驱动程序、共享库…甚至已发布的产品内核

根据应用的范围和宽度,Linux 调试的“问题区域”范围可能涉及很广。Arriba Debugger 为将来可能发生的问题提供了一个彻底的解决方案。编程人员和现场应用工程师需要能诊断和修复那些出现在产品中,并已被部署到现场的缺陷。在这种情况下,目标平台取决于严格限制的调试和通信接入。作为可加载模块,VMON2 可进行配置来启动已经部署的系统,因此,它能够以极少的入侵有效调试并诊断系统。

Navigator集成元件套件(ICS)

MIPS 科技新发布了 MIPS Navigator集成元件套件(ICS)。Arriba Linux Debugger作为 MIPS Navigator ICS 的一个插件程序现可直接从 MIPS 科技获得。这种无缝集成是 MIPS 科技和 Viosoft 公司之间合作的结果。

MIPS Navigator ICS中是一个功能丰富的Eclipse CDT环境,是专为MIPS架构定制的。另外,MIPS Navigator ICS 还包含最新的基于GNU的MIPS工具链CodeSourcery SG++,以及全部开发代码必需的预期功能。MIPS Navigator ICS还集成了对所有MIPS科技的处理器IP的支持,包括PDTrace和EJTAG探针技术。

此外,开发人员还可利用另一款新的分析工具Arriba Linux Event Analyzer(LEA),它也是MIPS Navigator ICS的一个插件程序。这款工具可捕捉发生在目标中的所有Linux事件,根据时间顺序用图表显示事件。Arriba LEA收集并提供大量关于Linux系统的信息,包括进程和线程间的上下文切换、信号和共用运行时间。LEA的存储器占位面积小,几乎不影响CPU周期,因此对于自主开发和现场服务而言都是理想的性能分析和调试工具。


图4: Linux Event Analyzer (LEA) ICS视图。

图4显示了一个LEA屏幕显示的例子。LEA可以检测外部事件延迟、响应时间,甚至是运行中的系统所出现的每个事件负载。该信息也可通过“原始”格式显示,易于导入Microsoft Excel进行其他后处理和分析。

终端用户的应用各不相同,同一组织内的每个开发人员或团队可能采用LEA系统的不同方面。这就需要开放端分析工具具有高度可定制的设计能力。通过创建和配置各自插入LEA的内核模块,开发人员可轻易且迅速地对其应用和系统进行观察。LEA采用与VMON2相同的测试技术(instrumentation technology),这意味着不需要调试补丁或对Linux内核进行专门编译。

Arriba Linux Debugger、Arriba LEA 和 MIPS Navigator ICS 的组合为MIPS开发人员提供了一个全面而强大的Linux开发环境,有助于缩短客户产品上市时间,同时使开发人员能够实现优秀的代码质量。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭