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

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

3天内不再提示

在硬件/软件接口调试

星星科技指导员 来源:嵌入式计算设计 作者:Frank Schirrmeister, 2022-06-19 07:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

虽然硬件/软件接口的设计问题已经讨论了 10 年的大部分时间,但当今应用程序驱动设计中软件内容的增加已经给这些问题带来了新的紧迫性——特别是软件对硬件和高效分区的依赖。过去,软件开发人员使用连接到原型板的嵌入式软件调试器以独立于硬件的“外围盲区”方式执行调试任务。这提供了对处理器的深入了解,但几乎没有关于周围外围设备和片上互连结构的信息。相比之下,硬件开发人员专注于寄存器和片上系统 (SoC) 互连中的低级效应,这些效应每年都变得越来越复杂。

在考虑调试挑战时,必须评估片上和系统内效应。在开发阶段需要进行片上调试,以确保芯片本身正常工作。系统内效应与芯片在其环境中的行为方式有关。如果要在芯片开发期间考虑影响,则调试系统内影响需要对环境进行复杂建模,或者在芯片可用后控制实际环境。

图 1 显示了一个典型的基于 ARM 内核的 SoC,其处理器子系统包含各种处理器,这些处理器通过连贯的结构连接到芯片的其余部分。SoC 还包含用于 3D 图形、数字信号处理、专用专用硬件加速器、低速外设和高速接口的定制应用特定组件。调试挑战包括同步调试多个内核、确保 IP 块集成正常工作、调试 AMBA 4 AXI 一致性扩展 (ACE) 协议等协议,以及调试整个芯片互连。

图 1:典型的基于 ARM 内核的 SoC 存在调试挑战,例如同步调试多个内核。

pYYBAGKsS0aAPlW3AAP8HBXdvdE081.png

相比之下,图 2 在其系统环境中显示了相同的 SoC。SoC 和实际系统外围设备之间的连接建立在 PCB 上,并且通常基于 DigRF、MIPIUSB 等标准。现在,调试挑战从片上区域转移到芯片在其环境中的行为方式。例如,图形引擎生成的帧是否被外部显示器正确显示?各种片外和系统内效应需要与片上效应一起考虑,因为它们通常会驱动图形内容和控制。

图 2:系统环境中的 SoC 对芯片在其环境中的行为方式提出了调试挑战。

poYBAGKsS0-AJdbTAAU1c-4qO8U543.png

硬件/软件集成和调试方法

在开发流程中,设计团队使用多种技术来实现软件调试和硬件/软件集成。

一旦所有芯片都可用并集成后,硬件团队通常会构建有限数量的原型板,以便软件开发人员可以开始在设备上构建他们的代码。在产品发布并激增后,这些原型板通常被称为开发套件。它们以实时速度运行并且完全准确。调试器通过 JTAG(边界扫描)接口连接到这些板。这种类型的软件调试非常普遍且易于理解,但也有其挑战,因为对硬件深度的访问受限于实现的片上仪器的级别。

将集成到板上的基于 FPGA 的芯片原型可以在硅片之前几个月提供。这些原型在数十 MHz 范围内运行,硬件精确,并且通常只有在稳定的寄存器传输语言 (RTL) 代码可用后才能使用。它们允许有限的调试功能。与软件调试器的连接通常通过 JTAG 建立,但设计人员可以使用调试信息增强 RTL,以启用硬件/软件调试和分析。根据原型,可以将芯片连接到环境;经常需要使用速度适配器,或者需要降低环境速度以匹配原型速度。

硬件仿真器甚至可以在设计流程的早期使用,它们在 MHz 速度范围内执行正在开发的芯片或其子集。它们提供快速启动(与基于 FPGA 的原型设计相比,后者需要对实现硬件的代码进行更多修改)和更好的硬件/软件调试,因为硬件仿真器的很大一部分专用于调试和控制设计。然而,当今仿真器的大小和价格限制了它们被大量软件开发人员复制的能力。

RTL 仿真是第一个可以满足精确硬件和软件的执行环境。它提供了出色的硬件调试能力,但由于它运行在 KHz 范围内,它在软件开发和软硬件集成方面的适用性非常有限。RTL 专注于硬件验证,传统上仅用于非常低级的裸机软件开发。鉴于现代片上和片外接口的复杂性,商业验证 IP(提供预定义的测试模式以检查接口正确性)可以在片上和系统内使用。

使用不太准确的抽象硬件模型,正在开发的虚拟芯片平台可以高速运行,有时在硅片之前 9-12 个月就可以使用。它们使用 GNU 调试器 (GDB) 和周期精确调试接口 (CADI) 等标准接口提供出色的软件调试功能,以将软件调试器连接到虚拟化硬件。以后可以在板级使用相同的软件调试器。根据建模工作,整个芯片及其环境可用于片上和系统内的高级硬件/软件调试。

最后,软件开发工具包 (SDK) 通常是最早可用的开发平台。像 Apple iPhone SDK 或 Android SDK 这样的 SDK 使许多软件开发人员能够为非常抽象的硬件编写代码,因此无法调试。在 SDK 上开发的代码通常需要重新编译才能在实际设备上运行,这与前面提到的虚拟原型和其他引擎不同,后者加载 .elf 文件并运行相同的二进制代码,然后在硬件目标上执行。

跨执行引擎进行调试

电子制造商越来越多地跨多个内核分发软件,以保持在复杂设计的功率范围内。因此,多核调试已成为更大的挑战。多核设计的完全同步的异构软件调试非常适合在所有软件组件和硬件本身中设置断点,然后允许检查状态、堆栈、软件中的变量和硬件中的寄存器。

使用原型板,即使不是不可能,也很困难。如果断点触发了一个处理器的软件并导致其停止,则所有其他处理器继续执行,从而改变断点发生的环境状态。相比之下,使用虚拟原型,所有参与元素(即所有处理器和硬件模块)都可以在断点发生时准确停止,从而实现高效的硬件/软件调试。

此外,当开发人员在实际硬件或老一代虚拟原型上工作时,他们会看到各种不同步的调试器窗口。现代虚拟原型允许用户通过抽象层有效地集成来自不同供应商的处理器模型,从而在单一、统一的环境中实现完全同步的调试和分析。

另一个在实际开发板上难以分析的影响是根据硬件所处的状态而必须停止软件。在仿真器、RTL 模拟器和虚拟原型的世界中,硬件调试是先进的,两者硬件和软件可以根据表示硬件内状态或状态转换的断点有效地停止 - 例如达到特定的计数器值或通过总线发送的特定事务。

每当涉及基于软件的硬件执行时,软件调试也可以与不同硬件抽象级别的混合有效地同步。这在衍生项目开始时很有价值,因为新的硬件组件在事务级别作为高度抽象的模型可用,而不是在 RTL 上实现的硬件。

全面了解硬件/软件

现代软件的复杂性及其对执行它的硬件的依赖性使得延迟调试和硬件/软件集成,直到所有芯片都可用并集成到 PCB 上是不可行的。芯片和系统开发团队可以使用多个执行引擎,但这些引擎的开发和调试软件能力差异很大。图 3 显示了之前介绍的芯片和电路板与引擎相结合以执行正在开发的芯片以及与硬件/软件调试的连接。

图 3:结合 SoC 和电路板的硬件/软件执行引擎在芯片开发过程中执行芯片。

poYBAGKsS1iAQqVzAATjsala9JE667.png

Debug 有几个层次,通常构建在 Eclipse 等集成开发环境 (IDE) 上。用户需要调试实际硬件、操作系统之外的裸机软件执行、硬件和软件的结合以及整个系统的性能。

随着不同引擎和新一代软件调试器的混合组合,该行业正在接近一个时代,在这个时代,软件开发人员可以比以往任何时候都更早地在设计周期中获得软件和硬件的完整程序员视图。

作者:Frank Schirrmeister,Michael (Mac) McNamara,Larry Melling,Neeti Bhatnagar

审核编辑:郭婷

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

    关注

    68

    文章

    20152

    浏览量

    247324
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9501

    浏览量

    388822
  • 寄存器
    +关注

    关注

    31

    文章

    5590

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    单片机系统硬件调试方法

    单片机的系统硬件调试,通常有静态调试和动态调试两种不同,前者是通过目测、万能表测试、加电检查、联机检查的方法,加电于样机之前.对样机的型号
    发表于 12-03 06:10

    调试器无法连接的排查方法

    硬件检查: 确认 SWD 接线:SWCLK、SWDIO、GND 连接正确(VCC 可选)。 目标板供电正常(3.3V),调试器与板共地。 BOOT0 引脚接地(从 Flash 启动)。 软件配置
    发表于 11-18 06:15

    【EASY EAI】基于瑞芯微RV1126B的ADB调试

    和EASYEAINano-TB连接起来,相关硬件接口如下图所示。注意:如果已经切换成【USB3.0模式】(参考文章《硬件外设接口(软件组件)
    的头像 发表于 11-05 17:30 1833次阅读
    【EASY EAI】基于瑞芯微RV1126B的ADB<b class='flag-5'>调试</b>

    硬件融合拼接器与软件融合拼接的区别?

    硬件融合拼接器和软件融合拼接是两种不同的图像拼接技术,它们实现方式、效果和应用场景等方面存在一些区别。 1、实现方式 硬件融合拼接器通常是通过硬件
    的头像 发表于 09-28 14:33 316次阅读

    AMD Vivado ChipScope助力硬件调试

    许多硬件问题只有整个集成系统实时运行的过程中才会显现出来。AMD Vivado ChipScope 提供了一套完整的调试流程,可在系统运行期间最大限度提升对可编程逻辑的观测能力,助力设计调试
    的头像 发表于 09-05 17:08 917次阅读

    AS32X601系列MCU硬件最小系统设计与调试方案探析

    嵌入式系统领域,MCU(微控制单元)作为核心部件,其硬件最小系统设计的合理性与调试的有效性直接决定了整个系统的稳定性与可靠性。凭借其卓越的性能和丰富的功能,广泛应用于各类电子设备中。本文以国科安芯
    的头像 发表于 07-22 13:46 414次阅读

    单板布局空闲受限,TC397的OCDS1和DAP 2个接口 是否可以只留DAP接口来进行调试和烧录软件

    您好,单板布局空闲受限,TC397的OCDS1和DAP 2个接口 是否可以只留DAP接口来进行调试和烧录软件
    发表于 07-14 07:27

    解锁CAN接口开发高效路径!五个核心要点一次讲透

    高效开发CAN接口,关键在于把握协议基础、硬件适配、错误管理、性能优化与调试五大核心要点。下面将逐一剖析每个环节的技术细节与实践方法,助力开发者快速突破难点,实现可靠通信。 Air7
    的头像 发表于 06-23 16:08 1002次阅读
    解锁CAN<b class='flag-5'>接口</b>开发高效路径!五个核心要点一次讲透

    普源示波器MSO5074嵌入式系统联合调试中的高效实践

    一、引言:嵌入式系统调试的挑战与示波器的必要性 嵌入式系统作为核心控制单元广泛应用于汽车、医疗设备、工业自动化等领域,其开发涉及硬件设计、软件编程及实时调试等多个环节。传统的
    的头像 发表于 06-20 13:45 467次阅读
    普源示波器MSO5074<b class='flag-5'>在</b>嵌入式系统联合<b class='flag-5'>调试</b>中的高效实践

    硬件调试:JLink 驱动配置与调试技巧

    摘要: 本文深入探讨了 JLink 调试嵌入式系统硬件调试中的应用,详细阐述了 JLink 驱动配置的方法以及硬件
    的头像 发表于 06-12 23:20 1278次阅读
    <b class='flag-5'>硬件</b><b class='flag-5'>调试</b>:JLink 驱动配置与<b class='flag-5'>调试</b>技巧

    mimxrt1170_evk调试hello_world出现硬件传输错误怎么解决?

    我按照视频 cm7 中调试hello_world示例,我的链接服务器正在运行, debug prove 的 FW 也是最新的。 但是我仍然收到这个错误。 16:status-poll 中的目标
    发表于 03-25 07:31

    软件芯片设计中有什么作用

      本文主要介绍软件芯片设计中的作用 芯片设计中,软件扮演着非常重要的角色,它不仅帮助芯片设计验证和调试,还在芯片的实际应用过程中提供了
    的头像 发表于 02-09 09:43 1429次阅读

    Dali通信系统的调试指南

    的是要完全理解Dali通信系统的架构。这包括了解其硬件组件、软件模块、协议栈以及它们之间的交互方式。 2. 准备调试环境 硬件连接 :确保所有硬件
    的头像 发表于 01-10 10:47 1691次阅读

    RAID 5 硬件软件 RAID 的区别

    RAID 5硬件RAID与软件RAID之间存在显著的差异,这些差异主要体现在实现方式、性能、数据安全性、灵活性以及成本等方面。 一、实现方式 硬件RAID : 依赖于专用的硬件RAID
    的头像 发表于 12-27 18:05 1863次阅读

    单片机Debug与仿真区别

    是指在软件硬件开发过程中,通过特定的工具和技术来查找、诊断和修复错误的过程。单片机开发中,Debug通常涉及到以下几个方面: 硬件调试
    的头像 发表于 12-19 09:47 1423次阅读