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

发布者:EE小广播最新更新时间:2023-08-28 来源: EEWORLD作者: IAR关键字:RISC-V  跟踪技术  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架构应该在从物联网到服务器的每个设备中都有跟踪,即使是简单、标准的跟踪也比完全没有跟踪好。

 

image.png

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


看清每条指令


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


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


为什么需要跟踪?


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


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


 顺序排列


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

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

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


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


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

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

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

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


 RAM缓冲区


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

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


 高速排列


- 速度为10Gbits/s或更高

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


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


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


调试异常情况


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


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


硬件和软件工具的集成


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


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

 

image.png

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


代码质量


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


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


image.png 

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


总结


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


关键字:RISC-V  跟踪技术  IAR 引用地址:如何有效使用RISC-V的跟踪技术

上一篇:米尔芯驰D9超强国产CPU,能跑安卓、Linux、RTOS
下一篇:六核国产CPU,米尔自主可控、安全可信的高性能显控核心板开发板

推荐阅读最新更新时间:2024-11-06 10:21

IAR for STM8重定向printf
#include stdio.h int fputc(int ch, FILE *f)//STM8S105,printf函数重定向 { while (!(UART2- SR&0x80)); UART2- DR=ch; return ch; } 同时需要修改IAR的Projec t- Options - General Options - Library Configuration中的Library 项由 Normal 改为 Full 。
[单片机]
Keil IAR - Cortex M3 调试问题及解决方法(2)
最近又用stm32 和 lm3s 做点协议栈等,把一些调试心得写出来吧,本文可是原创,转载请注明出处。 芯片是stm32f103 stm32f107 lm3s9790 lm3s9b90, 开发环境是 keil mdk 4.22 iar arm 6.30. 1 stm32 官方库的更新 并不向下完全兼容,其中有他们家的新的芯片不断推出有关。 使用库,本人想做了个模板, 可以使用keil 和iar 使用,像官方库一样,只是它文件管理不方便。 项目的配置可以抄袭官方的配置,就行了。 注意: c 语言代码文件可以完全移植,但是汇编文件如 启动文件却不同,因为编译器不同,而且,官方库升级后,启动文件和底层文件发生了很大
[单片机]
Keil <font color='red'>IAR</font> - Cortex M3 调试问题及解决方法(2)
IAR 与先楫半导体达成战略合作,全面支持先楫半导体高性能RISC-V MCU开发
(中国|上海)2023年6月14日 - 在Embedded World China首届展会举办期间,嵌入式开发软件和服务的全球领导者 IAR 与国产领先高性能MCU厂商先楫半导体(HPMicro)共同宣布达成战略合作协议: IAR 最新的 Embedded Workbench for RISC-V 版本将全面支持先楫HPM6000高性能RISC-V MCU系列,这是IAR 首次支持高性能通用RISC-V MCU产品系列。 IAR为先楫半导体的创新产品提供全面的开发工具支持,包括代码编辑、编译、调试等功能,帮助开发人员充分利用先楫半导体高性能RISC-V MCU的潜力。 先楫半导体是一家致力于高性能嵌入式解决方案的半导体公
[嵌入式]
<font color='red'>IAR</font> 与先楫半导体达成战略合作,全面支持先楫半导体高性能<font color='red'>RISC-V</font> MCU开发
荷兰某医院采用RFID技术跟踪静脉注射泵
【提要】Tergooi医院是荷兰北部一家占地28.4万平方米的医疗中心,新近采用Wi-FiRFID技术跟踪注射泵位置。 Tergooi 医院新近采用Wi-Fi RFID技术跟踪注射泵位置。 设备的整合和安装由Ship2Save公司负责,这是一家RFID解决方案供应商,他们与colePolytechnique科技大学合作(位于蒙特利尔),采用Aeroscout公司的资产跟踪标签,用于监视跟踪医院所有静脉注射泵的使用和位置。 Tergooi医院的技术部主任JohnBrakenhoff认识到医疗器械跟踪对医院的价值,他说:“像注射泵,心电图,病床这样的医疗器械必须有效配置到各个科室,使病人得到快速有效的治疗。医生在
[安防电子]
基于Keil MDK-ARM 和 IAR EWARM进行仿真打印的配置
1写在前面 很多初学者习惯使用软件仿真,应该是很多人都知道的一款仿真软件。 以前开发板相对较贵,且快递不方便,使用仿真软件可以理解。现在便宜的STM32开发板就十几块,还用仿真软件,我不是很理解。 有经验的人都知道,仿真和实际运行情况很多时候都不一样,相信不用我说,大家都明白。 因此,我个人不是很推荐大家仿真,本文内容可能存在纰漏,仅限个人学习。 下面讲述基于Keil MDK-ARM 和 IAR EWARM进行仿真打印的配置。 2Keil仿真打印配置 Keil MDK-ARM不能仿真,原因出在仿真参数出现了问题: 修改这两处参数为:DARMSTM.DLL -pSTM32F103ZE 基于前面使用STM32CubeMX生成工
[单片机]
基于Keil MDK-ARM 和 <font color='red'>IAR</font> EWARM进行仿真打印的配置
IAR Systems发布支持Freescale ColdFire微处理器的集成开发工具套件
IAR YellowSuite for ColdFire微处理器集成了设计流程中所有必需的开发工具,从项目初始就致力于提高设计流程效率,最大可能地缩短开发时间。这套开发工具包含:IAR Embedded Workbench集成开发环境;IAR visualSTATE建模工具;IAR PowerPac 实时操作系统、 文件系统以及配套中间件;IAR KickStart Kit开发套件。 IAR Systems的产品总监Mats Ullstrm表示:“与Freescale战略合作,在现有的产品线上增加ColdFire开发套件,是IAR Systems的一个里程碑。我们相信对Flexis QE128系列与IAR YellowSuite配
[嵌入式]
iar下的stm32启动代码分析
使用的芯片是 STM32F103VET,编译器使用 IAR ARM V5.5 设置头文件查找路径,例如: $PROJ_DIR$.. $PROJ_DIR$......LibrariesCMSISCM3CoreSupport $PROJ_DIR$......LibrariesCMSISCM3DeviceSupportSTSTM32F10x $PROJ_DIR$......LibrariesSTM32F10x_StdPeriph_Driverinc 预定义的symbol 为,HD为high desity 的意思 USE_STDPERIPH_DRIVER STM32F10X_HD 有两个符号是系统默认的,看名字就应该知道什么了
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved