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

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

3天内不再提示

如何有效使用RISC-V的跟踪技术

半导体芯科技SiSC ? 来源:半导体芯科技SiSC ? 作者:半导体芯科技SiS ? 2023-08-29 11:07 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:IAR

嵌入式软件开发中,利用完整的应用跟踪,可为开发人员分析其产品行为提供无限的可能性。通过对应用程序的全面了解,他们可以跟踪每一条指令,看看他们的应用程序是否按照预期运行,或者是否出现错误或漏洞。那么,如何才能最大化地利用现有可用的RISC-V跟踪呢?

什么是跟踪?

与传统的通过设置断点、printf等进行调试相比,跟踪更像是在不打扰的情况下观察你的应用程序。基本上,开发人员可以在不干扰程序的情况下观察整个程序的工作情况。跟踪包括完整的指令执行流程(不需要printf也不需要UART),一旦跟踪数据被捕获,你可以快速追溯,并隔离异常和硬故障。

这使得寻找那些罕见的、依赖于执行顺序的漏洞变得更加容易,因为这提供了一串线索:程序执行是怎么样的,按什么顺序执行的。这使开发人员能够准确地了解它们是如何以及为什么总是会停在一串特殊的代码上。你可以迅速发现异常和硬故障,进而发现那些罕见的、依赖于执行顺序的错误。如果没有跟踪,当你的程序出现崩溃,就很难重现实际发生的情况。

然而,跟踪不仅仅是为了发现错误。跟踪还可以进行代码剖析、代码覆盖等,你可以实时了解你的设备的行为。性能和覆盖率监测是强大的功能,当你有跟踪功能时,就可以实现这些强大的功能。如果你的带宽够宽,甚至可以将实时跟踪流整合到你的调试器中。

RISC-V的跟踪技术

RISC-V组织的主要关注点之一是为RISC-V制定标准化的规范。对所有RISC-V成员开放的各种工作小组,目前正专注于开发制定这些规范。其中一个例子是处理器跟踪工作组,该工作组在2020年2月批准发布了处理器跟踪规范。另一个例子是Nexus跟踪小组,该小组致力于研究如何使用Nexus IEEE-ISTO 5001?标准针对RISC-V内核定义的跟踪技术。

这类工作将持续进行,因为必须考虑跟踪标准的所有方面。其中,包括跟踪控制的输出格式。最低的目标是与更成熟的架构的现有标准看齐。如果RISC-V跟踪规范做得好,它将使现有的跟踪查看器、硬件跟踪探头和跟踪分析工具易于采用。目前已经有一些实现的方案,但RISC-V架构应该在从物联网到服务器的每个设备中都有跟踪,即使是简单、标准的跟踪也比完全没有跟踪好。

wKgaomTtYOWAUbz5AASeX8Y1Pl0560.jpg

图1 来自一个RISC-V设备的跟踪

看清每条指令

软件开发工具中集成对跟踪的支持增强了日常的代码开发/调试。跟踪应该是设计人员日常环境中固有的一部分,而不应该是事后分析的东西。因此,你可以写代码并运行,看看是如何到达当前的执行点的。通过快速追溯、隔离异常和硬故障的功能,你可以直接迭代并获得良好的代码质量。你还可以找到依赖于执行顺序的漏洞,并找到可以与你的程序流程相关联的功耗测量值。所有这些分析也可以在具有挑战性和复杂依赖性的多核环境下进行。

在寻找一个漏洞时,翻阅捕获的跟踪的难度无异于大海捞针。在短短几秒钟的执行时间里,可以产生数以亿计的指令。因此,极为重要的是,规范将提供足够的触发器,以便能够将捕获限制在特定区域。先进的导航和搜索功能是必不可少的,如果你的编译器/调试器工具提供该功能,则可以使用跟踪触发器将跟踪数据限制在你需要的范围内。

为什么需要跟踪?

在设备中植入跟踪单元,让你有可能在产品运行时进行非侵入性的跟踪。因为即使添加非常底层的调试打印输出,也会改变应用程序的时间,并掩盖其真实行为。

有许多方法可以捕捉和获得从设备中输出的跟踪数据:

l 顺序排列

- 足够的PC采样跟踪(对统计代码剖析研究有好处)

- 轻型仪器、实时操作系统(RTOS)监控、变量跟踪等

- 配备优秀的探针,有可能达到几兆字节/秒的速度

l 高速并行接口(4至16位的双边接口)

- 捕获一切(时钟速度可以很高)

- 通过控制流转移时留下的信息进行跟踪

- 为你执行的每一条指令提供保证

- 指令执行过程信息实时存储在调试器探针上

l RAM缓冲区

- 要么是小的专用RAM,要么与系统内存共享

- 即使是4KB的跟踪RAM也能提供足够的功能,真正发挥作用

l 高速排列

- 速度为10Gbits/s或更高

- 主要适用于较大的、复杂的系统

l 通过功能接口进行跟踪(USB3.0提供了超高带宽!)

- 使用案例有限——对小型物联网设备来说不是一个选择

调试异常情况

通过在日常工作中使用跟踪,你可以真实看到应用程序是如何运行的。你可以检查程序流,直到一个特定的状态,如应用程序崩溃,然后使用跟踪数据来定位问题的起源。

异常或未处理的故障可以由指针问题、非法指令或数据中止引起。通常,当这种情况发生时,你的堆栈(和函数调用信息)会被毁掉,但通过跟踪,你可以获得完整的应用程序历史记录。跟踪数据对于定位那些显现不规则且零星发生的编程错误也很有用。这可以帮助发现价值“百万美元”的漏洞。

硬件和软件工具的集成

获得尽可能高质量的代码的最佳方法是将跟踪分析能力整合到你的日常开发环境中。如果你能在每次部署变化时验证程序时序和正确性,那么将复杂的漏洞推给后期系统验证甚至客户的风险就会大大降低。最好的解决方案是拥有像跟踪调试探针这样的硬件工具,它可以在你的集成开发环境中与软件工具无缝协作。例如,IAR提供跟踪探头I-jet Trace,它与完整的C/C++编译器和调试器工具链IAR Embedded Workbench完全集成。

I-jet Trace解锁了IAR Embedded Workbench 集成开发环境中的一些高级功能。在图2中,你可以看到几个高级视图功能的例子,上面是时间轴,下面是代码堆栈。这显示的是运行中的程序正在进行复杂的函数调用,并且中断也在同步触发。蓝色部分显示的是数据跟踪,这样你就可以获得仪表化的显示,并看到RTOS的切换等。下面的详细图显示了启动代码的运行情况——有复杂的调用,还有一些较长和较短的函数,甚至还有一个工具提示来优化其中一个调用的代码。

wKgZomTtYOaAD3DZAATwGdQHBrY669.jpg

图2 结合调用堆栈和中断以及变量记录的时间轴实例

代码质量

但是,跟踪不仅仅是为了发现漏洞。它还可以帮助你监控你的应用程序——它是否按照预期运行?集成性能监控是使用跟踪的主要好处之一,因为它可以帮助你了解应用程序执行时间都花在哪里了,是否受到中断风暴的影响,是否有时反应不够快等等。

代码覆盖率也是一个可以用跟踪实现的功能(图3展示了它在IAR Embedded Workbench中的样子)。这可以用来证明代码至少被运行过一次,查找出未运行的代码,显示测试的缺陷等等。功能安全认证强烈建议将代码覆盖率作为提高质量的一个手段。静态代码分析工具是对跟踪分析器一个很好的补充。这可以确保代码符合特定行业的标准和最佳编程实践。除了覆盖率,该工具还可以收集每个单独指令的执行次数。例如,有些指令块被执行了4次,有些被执行了12次。很明显,没有被覆盖的代码执行了0次。

wKgaomTtYOeARIkaAAOCrXDTxjk961.jpg

图3 跟踪也可以审查代码覆盖率

总结

跟踪提供了各种有益的数据源,如收集数据或协助开发人员将信息过滤成实际的知识和见解。用不同的跟踪查看器进行可视化和分析,可以创建一个产品如何运行及其动态行为的真实描述,为开发人员提供必要的信息,以跟踪那些很难,甚至不可能通过其他手段捕捉的复杂漏洞。通过在日常开发中加入跟踪,开发人员可以加速软件开发过程,提高软件质量。

审核编辑 黄宇

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

    关注

    0

    文章

    10

    浏览量

    3263
  • RISC-V
    +关注

    关注

    46

    文章

    2633

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    UltraSoC宣布提供业界首款RISC-V处理器跟踪IP产品

    领先的嵌入式分析技术开发商UltraSoC日前宣布:其RISC-V处理器跟踪解决方案开始全面供货,这是业界首款商用RISC-V处理器跟踪IP
    的头像 发表于 02-09 10:26 ?8119次阅读

    rIsc-v的缺的是什么?

    能与RISC-V的起步较晚、生态系统支持不足等因素有关。为了进一步提高市场份额和认可度,RISC-V需要不断加强自身的技术实力和生态建设。 4. 技术挑战
    发表于 07-29 17:18

    RISC-V MCU技术

    嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器
    发表于 01-19 11:50

    为什么选择RISC-V

    RISC-V是一种开放式ISA(指令集体系结构),为处理器体系结构的创新开创了新纪元。RISC-V基金会由325多家成员公司组成。这是该技术的主要优势。软件架构师/固件工程师/软件开发
    发表于 07-27 17:38

    RISC-V架构

    导体核心技术自主可控的强烈愿望,有望伴随着国内MCU产品的国产替代进程引领全球发展脚步。  中长期看,RISC-V内核具备向智能驾驶、航空航天、AI超算等中高端场景渗透的潜力。跟踪RISC-V
    发表于 04-03 15:29

    2023 RISC-V中国峰会:RISC-V深圳技术分享会(同期会议)

    本届峰会将以“RISC-V生态共建”为主题,结合当下全球新形势,把握全球新时机,呈现RISC-V全球新观点、新趋势。 由电子发烧友主办的RISC-V技术分享会(深圳站)将于8月26
    发表于 08-15 17:27

    UltraSoC宣布推出业界首款支持RISC-V的处理器跟踪技术

    英国剑桥—2017年7月3日—领先的嵌入式分析技术开发商UltraSoC日前宣布:公司已经开发出处理器跟踪技术,可支持基于开源RISC-V架构的产品。UltraSoC公司已经为处理器
    发表于 07-03 16:14 ?983次阅读

    RISC-V规范的演进 RISC-V何时爆发?

    RISC-V的关注度越来越高,开源的理念也正在被越来越多的开发者和公司接受。对于尚不成熟的RISC-V而言,无论是规范和技术的演进还是生态的建设,还有人才和专利都还有不小挑战。2021年RIS
    的头像 发表于 02-11 10:10 ?3644次阅读

    RISC-V的调试标准及跟踪技术

    本文主要详细介绍了RISC-V的调试标准以及RISC-V跟踪技术,感兴趣的小伙伴跟小编一起了解一下吧。
    的头像 发表于 06-23 17:19 ?3290次阅读
    <b class='flag-5'>RISC-V</b>的调试标准及<b class='flag-5'>跟踪</b><b class='flag-5'>技术</b>

    RISC-VRISC-V AI的未来(特邀讲座)

    主题演讲:RISC-VRISC-V AI的未来(特邀讲座)ppt分享
    发表于 07-14 17:15 ?18次下载

    RISC-V调试和完善的跟踪解决方案

    RISC-V调试和完善的跟踪解决方案ppt分享
    发表于 07-14 17:15 ?2次下载

    RISC-V设计支持工具,支持RISC-V技术的基础

    RISC-V设计支持工具,支持RISC-V技术的基础 ppt分享
    发表于 07-14 17:15 ?22次下载

    什么是RISC-VRISC-V的关键技术

    RISC-V不仅仅是一个流行语;它建立在坚实的技术基础之上,使其有别于其他指令集架构 (ISA)。RISC-V的核心是基于精简指令集计算(RISC)原则,强调效率和性能。
    发表于 03-26 09:34 ?5279次阅读

    解锁RISC-V技术力量丨曹英杰:RISC-V与大模型探索

    4月12日,第二期“大家来谈芯|解锁RISC-V技术力量”在上海临港新片区顶科永久会址举办,本期沙龙聚焦RISC-V技术,围绕AI时代的RISC-V
    的头像 发表于 04-16 08:16 ?1364次阅读
    解锁<b class='flag-5'>RISC-V</b><b class='flag-5'>技术</b>力量丨曹英杰:<b class='flag-5'>RISC-V</b>与大模型探索

    RISC-V Summit China 2024 青稞RISC-V+接口PHY,赋能RISC-V高效落地

    沁恒在历届峰会上分享RISC-V在MCU领域的创新成果,和大家共同见证了本土RISC-V产业的成长。早在第一届RISC-V中国峰会上,沁恒就公开了青稞RISC-V系列量产芯片的关键
    的头像 发表于 08-30 18:18 ?2539次阅读
    <b class='flag-5'>RISC-V</b> Summit China 2024  青稞<b class='flag-5'>RISC-V</b>+接口PHY,赋能<b class='flag-5'>RISC-V</b>高效落地