一种基于CAN通讯的软件调试方法及系统技术方案

技术编号:35818602 阅读:15 留言:0更新日期:2022-12-03 13:43
本发明专利技术公开了一种基于CAN通讯的软件调试方法及系统,涉及嵌入式软件调试技术领域,该方法包括基于对跟踪对象管理的需求,按跟踪对象的类型定义多个全局结构体对象数组,且每个对象均包括调试命令参数、对象类型参数、跟踪对象编号和对象值;定义用以控制调试代码执行的CAN信号指令,软件基于接收的CAN信号指令实现调试代码的启动或关闭;进行输出信号、调试类别、CAN信号指令处理函数句柄和调试函数句柄的定义;在软件需跟踪监控的位置增加调试代码,通过模拟发送定义的CAN信号指令以使软件执行相应调试输出。本发明专利技术能够给开发人员分析排查问题带来极大的便利。排查问题带来极大的便利。排查问题带来极大的便利。

【技术实现步骤摘要】
一种基于CAN通讯的软件调试方法及系统


[0001]本专利技术涉及嵌入式软件调试
,具体涉及一种基于CAN通讯的软件调试方法及系统。

技术介绍

[0002]嵌入式软件开发工作包括软件设计和软件调试,软件调试是验证和解决软件设计与实际要求符合性的过程。在实际开发过程中,软件的调试极为重要,调试的目的不仅仅是调通整个功能需求,还需要进行优化、完善逻辑、完善异常处理,故而调试是软件开发中最为耗时的工作。汽车电子产品嵌入式软件调试常用方法基本分为两类:本机仿真调试和日志调试。
[0003]本机仿真调试是通过专用调试器或仿真器,在IDE(Integrated Development Environment,集成开发环境)或是仿真软件上以debug模式(调试模式)运行,通过设置断点或单步运行等方式排查问题,该调试方式虽然能排查问题,但对于一些偶发的疑难问题无法定位,且在仿真时无法跟踪功能模块执行的全过程,大部分仿真器也无法观测数据对象的实时状态和监测堆栈变量状态,更不能记录程序运行状态,因此该调试方式存在一定的局限性。
[0004]日志调试也是软件开发常用的调试方法,相比本机仿真调试,日志调试能记录程序运行状态和数据变化过程,也是排查疑难杂症最为有效手段。最常见的日志调试就是通过打印串口日志来跟踪软件状态和记录数据。串口日志一般通过uart(串口)外设输出数据流,然后通过串口工具读取日志进而分析问题。然而串口通讯速率较低,每次最多只能传输一个字节的数据,当需要传输大量日志时,日志打印功能将会消耗CPU(中央处理器)过多资源因而影响软件正常逻辑执行,此外,串口输出需要硬件上预留端口,然后配合串口专用工具截取日志,当在没有串口工具或是硬件设计上没有预留出串口时,该调试方法也难实现。

技术实现思路

[0005]针对现有技术中存在的缺陷,本专利技术的目的在于提供一种基于CAN通讯的软件调试方法及系统,能够给开发人员分析排查问题带来极大的便利。
[0006]为达到以上目的,本专利技术提供的一种基于CAN通讯的软件调试方法,具体包括以下步骤:
[0007]基于对跟踪对象管理的需求,按跟踪对象的类型定义多个全局结构体对象数组,且每个对象均包括调试命令参数、对象类型参数、跟踪对象编号和对象值;
[0008]定义用以控制调试代码执行的CAN信号指令,软件基于接收的CAN信号指令实现调试代码的启动或关闭;
[0009]进行输出信号、调试类别、CAN信号指令处理函数句柄和调试函数句柄的定义;
[0010]在软件需跟踪监控的位置增加调试代码,通过模拟发送定义的CAN信号指令以使软件执行相应调试输出。
[0011]在上述技术方案的基础上,
[0012]所述对象数组分别为第一对象数组、第二对象数组和第三对象数组;
[0013]对于无条件执行跟踪对象,所述调试命令参数始终为1,对于条件执行跟踪对象,所述调试命令参数由CAN信号指令确定;
[0014]所述对象类型参数在对跟踪对象进行定义时确定,且确定后不可更改;
[0015]所述跟踪对象编号在每新增一个跟踪对象时,跟踪对象编号的值加1;
[0016]所述对象值为实际跟踪的对象值。
[0017]在上述技术方案的基础上,
[0018]所述CAN信号指令包括调试命令、跟踪对象编号和跟踪对象类型;
[0019]所述调试命令用以指示调试的启动或关闭;
[0020]所述跟踪对象类型包括变量、寄存器和函数;
[0021]所述跟踪对象以类型为单位,每种类型的跟踪对象依次进行编号。
[0022]在上述技术方案的基础上,所述输出信号对应的外发报文包括跟踪对象类型、跟踪对象编号和跟踪对象的对象值。
[0023]在上述技术方案的基础上,
[0024]所述调试类别用以表示在对跟踪对象跟踪时,选择无条件执行调试代码和条件执行调试代码;
[0025]当通过默认启动调试代码跟踪跟踪对象输出的数据流时,该方式为无条件执行调试代码;
[0026]当通过预定义信号指令启动调试代码对跟踪对象跟踪时,该方式为条件执行调试代码。
[0027]在上述技术方案的基础上,所述调试函数句柄具体用于执行以下步骤:
[0028]根据对象类型参数查找第一对象数组、第二对象数组和第三对象数组;
[0029]将对象值传入第一对象数组、第二对象数组或第三对象数组的对象值内;
[0030]对对象类型参数进行判断:
[0031]若对象类型参数的值为0,则表示无条件执行调试代码,将当前跟踪对象的对象类型参数、跟踪对象编号和对象值按定义的信号格式发送一帧BB报文,然后跳出调试函数句柄;
[0032]若对象类型参数的值为1,则表示条件执行调试代码,继续判断当前跟踪对象的调试命令参数,当调试命令参数的值为1时,将当前跟踪对象的对象类型参数、跟踪对象编号和对象值按定义的信号格式发送一帧BB报文,当调试命令参数的值为0时,停止当前跟踪对象的对象类型参数、跟踪对象编号和对象值的发送。
[0033]在上述技术方案的基础上,所述CAN信号指令处理函数句柄用以在CAN信号接收中断里调用。
[0034]在上述技术方案的基础上,当CAN信号指令接收中断时,所述CAN信号指令处理函数句柄具体执行以下步骤:
[0035]根据接收到的对象类型参数,查找CAN信号指令操作的对象数组,若对象类型参数的值为0,则操作对象为第一对象数组,若对象类型参数的值为1,则操作对象为第二对象数组,若对象类型参数的值为2,则操作对象为第三对象数组;
[0036]将接收到的调试命令参数保存在第一对象数组、第二对象数组或第三对象数组的调试命令参数内。
[0037]本专利技术提供的一种基于CAN通讯的软件调试系统,包括:
[0038]第一定义模块,其用于基于对跟踪对象管理的需求,按跟踪对象的类型定义多个全局结构体对象数组,且每个对象均包括调试命令参数、对象类型参数、跟踪对象编号和对象值;
[0039]第二定义模块,其用于定义用以控制调试代码执行的CAN信号指令,软件基于接收的CAN信号指令实现调试代码的启动或关闭;
[0040]第三定义模块,其用于进行输出信号、调试类别、CAN信号指令处理函数句柄和调试函数句柄的定义;
[0041]调试模块,其用于在软件需跟踪监控的位置增加调试代码,通过模拟发送定义的CAN信号指令以使软件执行相应调试输出。
[0042]在上述技术方案的基础上,
[0043]所述对象数组分别为第一对象数组、第二对象数组和第三对象数组;
[0044]对于无条件执行跟踪对象,所述调试命令参数始终为1,对于条件执行跟踪对象,所述调试命令参数由CAN信号指令确定;
[0045]所述对象类型参数在对跟踪对象进行定义时确定,且确定后不可更改;
[0046]所述跟踪对象编号在每新增一个跟踪对象时,跟踪对象编号的值加1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于CAN通讯的软件调试方法,其特征在于,具体包括以下步骤:基于对跟踪对象管理的需求,按跟踪对象的类型定义多个全局结构体对象数组,且每个对象均包括调试命令参数、对象类型参数、跟踪对象编号和对象值;定义用以控制调试代码执行的CAN信号指令,软件基于接收的CAN信号指令实现调试代码的启动或关闭;进行输出信号、调试类别、CAN信号指令处理函数句柄和调试函数句柄的定义;在软件需跟踪监控的位置增加调试代码,通过模拟发送定义的CAN信号指令以使软件执行相应调试输出。2.如权利要求1所述的一种基于CAN通讯的软件调试方法,其特征在于:所述对象数组分别为第一对象数组、第二对象数组和第三对象数组;对于无条件执行跟踪对象,所述调试命令参数始终为1,对于条件执行跟踪对象,所述调试命令参数由CAN信号指令确定;所述对象类型参数在对跟踪对象进行定义时确定,且确定后不可更改;所述跟踪对象编号在每新增一个跟踪对象时,跟踪对象编号的值加1;所述对象值为实际跟踪的对象值。3.如权利要求1所述的一种基于CAN通讯的软件调试方法,其特征在于:所述CAN信号指令包括调试命令、跟踪对象编号和跟踪对象类型;所述调试命令用以指示调试的启动或关闭;所述跟踪对象类型包括变量、寄存器和函数;所述跟踪对象以类型为单位,每种类型的跟踪对象依次进行编号。4.如权利要求3所述的一种基于CAN通讯的软件调试方法,其特征在于:所述输出信号对应的外发报文包括跟踪对象类型、跟踪对象编号和跟踪对象的对象值。5.如权利要求3所述的一种基于CAN通讯的软件调试方法,其特征在于:所述调试类别用以表示在对跟踪对象跟踪时,选择无条件执行调试代码和条件执行调试代码;当通过默认启动调试代码跟踪跟踪对象输出的数据流时,该方式为无条件执行调试代码;当通过预定义信号指令启动调试代码对跟踪对象跟踪时,该方式为条件执行调试代码。6.如权利要求5所述的一种基于CAN通讯的软件调试方法,其特征在于,所述调试函数句柄具体用于执行以下步骤:根据对象类型参数查找第一对象数组、第二对象数组和第三对象数组;将对象值传入第一对象数组、第二对象数组或第三对象数组的对象值内;对对象类型参数进行判断:若对象类型参数的值为0,则表示无条件执行调试代码,将当前跟踪对象的...

【专利技术属性】
技术研发人员:王伟彭刘一何银山
申请(专利权)人:东风电驱动系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1