虚拟ECU:基于SkyEye的TRACE32嵌入式调试

2024-04-13 00:52

本文主要是介绍虚拟ECU:基于SkyEye的TRACE32嵌入式调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随着通信技术、智能终端、云计算等基础支撑技术的发展,嵌入式软件功能的丰富程度日益上升,已不再局限于21世纪初的基础功能,在航空航天、工业控制、医疗设备、消费电子、汽车电子、信息家电、网络通信等领域得到大规模应用,为加快经济发展、提升生活便利水平、提高工作效率起到促进作用。​

与之相对应的挑战也接踵而至:伴随着功能的丰富与拓展,嵌入式软件规模逐渐扩大,但因其偏向私域、定制化的特点,导致嵌入式软件的开发缺乏统一规范,很大概率存在一定缺陷。一旦涉及航空航天、汽车等安全关键领域,这些可能存在的缺陷就会对人身、财产安全方面带来极大威胁。

为什么嵌入式软件相较普通应用软件更易存在缺陷?

最根本的原因是,嵌入式软件需要依赖真实硬件才能运行,那么在软件开发初期,硬件资源未生产调试完成之前,软件开发处于盲盒状态,极大地增加了软件开发的不确定性。可以说,在嵌入式软件开发的初期阶段,不具备调试的条件。

要解决这一问题并不难,时至今日,仿真已在众多领域得到了广泛应用,对嵌入式软件而言也是如此,甚至更为有利,因为实物调试对嵌入式软件而言的风险实在太高:

1. 烧录风险:在硬件资源比较充裕的情况下,嵌入式软件的功能开发与验证需要不断重复完成烧录调试,而烧录本身具有一定的风险性和不确定性。烧录失败可能导致集成在板卡上的存储设备失效。由于独立更换存储设备的成本较高,最终结果往往是板卡整体报废,甚至会导致设备的损坏,带来不必要的财产损失。

2. 环境风险:嵌入式软件的实物调试依赖硬件环境,因此外界环境的影响,如静电、水等不确定因素很可能会引起硬件损坏,导致调试工作无法顺利进行,进而影响工期与交付、上市时间。

3. 场景限制:嵌入式软件的调试存在特定场景无法验证的问题,如太空射线导致的设备失灵。根据国内外对航天故障的统计结果,40%左右的故障源自太空辐射:1993年8月21日,美国五颗卫星同时失效,原因是使用的同一批定时器芯片均因宇宙射线辐照而失效;1994年,我国发射的“风云二号”气象卫星的失控也是由于一块超大规模集成电路(Very Large Scale Integration, VLSI)芯片受到空间辐射影响而失效。

由此可见,对于嵌入式软件而言,仿真不光能够实现测试“左移”,还能有效规避上述风险,将问题扼杀在初期阶段,保证嵌入式软件不受场景限制地完成开发与调试。这种优势对于当前电动化、智能化、网联化的全球汽车发展方向而言无疑更为契合。

当前汽车行业对仿真的应用主要集中在对汽车ECU,也就是“行车大脑”的虚拟仿真。下文将介绍应用于汽车ECU的基于天目全数字实时仿真软件SkyEye的TRACE32调试,SkyEye负责提供汽车虚拟ECU的搭建平台,结合TRACE32即可实现嵌入式仿真调试。

*SkyEye:天目全数字实时仿真软件SkyEye是一款国内自主研发、自主可控的嵌入式仿真软件,支持多种处理器架构,如 ARM、DSP、PowerPC、SPARC、X86、MIPS、Tricore等。同时支持多种国产操作系统的调试运行,如天脉、锐华、翼辉、RT-Thread等,支持Linux系统、Android系统调试运行。

*TRACE32:嵌入式系统调试工具,主要用于对微处理器、微控制器和数字信号处理器(DSP)等嵌入式系统进行调试和分析,提供了代码调试、系统状态监控、性能分析、系统控制、多核调试等多种功能。

▲基于SkyEye的TRACE32调试架构图

功能:

SkyEye与TRACE32结合可实现多种高安全高可靠的嵌入式软件研发目的,通常包含以下几种:

  • 嵌入式软件开发:SkyEye用于仿真硬件,TRACE32用于代码调试和验证。通过单步执行、断点设置、变量监视等功能,开发人员可以快速定位代码中的问题,确保软件的正确性和稳定性。

  • 仿真硬件调试和验证:通过查看寄存器状态、观察信号波形等,开发人员可以分析硬件的工作状态和问题,并及时进行修复和优化。

  • 性能分析和优化:支持跟踪程序的执行路径、记录函数调用时间等,帮助开发人员分析程序的性能瓶颈并进行优化,提高系统的响应速度和效率。

  • 多核系统调试:SkyEye支持多核嵌入式系统,TRACE32调试器可以同时调试多个核心的代码和状态,帮助开发人员理解多核系统的协同工作和通信机制,确保系统的稳定性和可靠性。

  • 系统集成测试:帮助开发人员在集成测试阶段进行系统级调试和验证。通过模拟外部环境、仿真外部设备等功能,开发人员可以模拟各种场景下的系统行为,并验证系统的功能和性能。

优势:

SkyEye与TRACE32的结合具有下列优势:

  • 系统结构简单:TRACE32与SkyEye都是功能独立的软件,包含丰富的接口设计,通过简单的配置即可实现两款软件的协同工作,一个页面即可完成软件对接配置。

  • 功能易于操作:TRACE32作为上位机软件,SkyEye作为下位机仿真软件,通过配置连通后,在TRACE32中可对SkyEye仿真环境进行调试,调试过程可视化,操作简单。

  • 结果响应及时:SkyEye虚拟ECU可实现真实ECU的1:1仿真,通过TRACE32可快速查看结果,使仿真调试工作不会感知到虚拟设备的存在,达到与真实ECU一样的处理结果。

  • 集成测试便捷:SkyEye支持多种处理器仿真,可通过TRACE32同时调试不同的仿真设备,构建起集成测试环境,实现联合测试效果。

总结

SkyEye虚拟ECU与TRACE32的完美结合能够为汽车等安全关键领域的用户有效降低软件研发成本,并为增效、保质量保驾护航。可以大胆预测,该方案具备为用户至少节省35%调试时间、减少50%测试成本、缩短66%产品上市时间的能力。

这篇关于虚拟ECU:基于SkyEye的TRACE32嵌入式调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/898710

相关文章

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virtual disk”问题

《VMWare报错“指定的文件不是虚拟磁盘“或“Thefilespecifiedisnotavirtualdisk”问题》文章描述了如何修复VMware虚拟机中出现的“指定的文件不是虚拟... 目录VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virt

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的