本发明涉及软件跟踪技术,具体而言,涉及一种实时系统的软件分析系统与方法。
背景技术:
在汽车电子领域里,对于时间片调度的实时嵌入式软件系统,尤其是功能复杂的系统,任务调度顺序、执行时间、以及最坏情况软件的执行时间,在软件开发阶段成为了必不可少的调试内容。但是传统的集成开发环境(ide,integrateddevelopmentenvironment)能够提供的调试方法,比如打断点、监视rom、ram、反汇编、观察寄存器、堆栈解析,并不包含调用顺序、执行时间的测量。
基于此,现有技术,某些调试工具的厂商提供了包含对调用顺序、执行时间的测量功能,但是需要购买昂贵的仿真器和配套的上位机软件,利用仿真器代替原有的微处理器,进行软件执行顺序跟踪与执行时间的测量。仿真器在测试的过程中代替原有的微处理器,通常不能兼容不同厂商的微处理器,在产品升级换代中,需要重新购买与新微处理器相应的仿真器,会花费额外的人力成本和设备成本。
上述利用仿真器代替原有的微处理器,进行软件执行顺序跟踪与执行时间的测量,一方面,仿真器价格昂贵;另一方面,仿真器在不同的处理器平台上无法通用。例如,平台a需要对应的仿真器a,如果换到平台b,则需要对应的仿真器b,仿真器a则无法再使用。此外,平台更换时,需要设置测试环境,则需要人员的培训和学习来了解和适应新的或不同的平台,人力成本高。
技术实现要素:
针对现有技术中存在的问题,本发明的主要目的在于提供一种实时系统的软件分析系统及方法,提供了在实时系统的开发中,任务、中断处理执行的时序(任务调度),执行时间,以及最大软件负载时的执行时间的跟踪、测量方法。
根据本发明的一个方面,提供了一种实时系统的软件分析系统,用于对包括处理器的目标板进行监视和性能分析。所述软件分析系统包括电性连接的监视器及监视分析模块,目标板的输出端口与监视器的端口连接。监视器的端口包括i/o接口和/或can接口,监视器的端口类型可被监视分析模块设置为与目标板输出端口匹配。监视器用于加载时间戳、存储目标板的跟踪数据,并周期地上传跟踪数据至监视分析模块。监视分析模块用于输入目标板的软件任务清单、设置监视器端口、生成并嵌入可实时跟踪目标板任务的跟踪模块至目标板软件,及分析目标板的跟踪数据得出目标板任务执行顺序和/执行时间。
作为一种可选的实现方案,所述监视器包括接口模块、存储模块和用于加载时间戳的时钟模块。所述接口模块的端口类型可更改地与目标板输出端口匹配;存储模块用于存储目标板的跟踪数据,并周期地上传跟踪数据至监视分析模块;所述跟踪数据包括目标板跟踪信息和加载的时间戳。
作为一种可选的实现方案,所述监视分析模块包括任务输入模块、端口设置模块、跟踪模块、嵌入模块及分析模块;其中,任务输入模块用于输入目标板的软件任务清单。
作为一种可选的实现方案,所述端口设置模块用于配置监视器用何种接口监视目标板数据,生成固件,并可以将接口配置烧写固件到监视器中。
作为一种可选的实现方案,所述端口设置模块还用于自定义can消息id和消息格式。
作为一种可选的实现方案,所述跟踪模块为根据接口配置、软件任务清单、自定义信息生成的跟踪包,且该跟踪包在调试过程中嵌入至目标板;所述嵌入模块用于提供跟踪模块嵌入的目标板软件的方式,包括在任务的入口加入与此任务对应的打印函数;在任务的出口加入与此任务对应的打印函数;以及编译、加载和运行目标板的可执行文件。
作为一种可选的实现方案,所述分析模块用于根据跟踪数据,绘制目标板的软件任务调用顺序,执行时间直方图,并提供每个任务的统计数据。
作为一种可选的实现方案,所述统计数据包括每个任何的最大、最小执行时间,平均执行时间,执行周期,以及在整个统计任务中的百分比中的一项或多项。
作为一种可选的实现方案,所述跟踪模块包括目标板的处理器需要完成的任务列表及定义和处理器跟踪驱动单元,其中处理器跟踪驱动单元包括目标板的处理器i/o口或者can接口的初始化模块和对处理器i/o口或者can接口的输出模块。
根据本发明的另一个方面,提供了一种实时系统的软件分析方法,其适用于上述的软件分析系统。该方法包括:
输入目标板的软件任务清单;
配置监视器的端口类型和自定义信息;
根据接口配置、软件任务清单、自定义信息生成跟踪模块;
将跟踪模块嵌入至目标板软件,并编译、加载和运行目标板的可执行文件;
从目标板接收跟踪信息,并对跟踪信息加载绝对时间戳,从而形成包括跟踪信息和时间戳的跟踪数据;
存储包括跟踪信息和时间戳的跟踪数据;
周期性地上传跟踪数据;以及
根据跟踪数据进行分析,获取目标板的软件任务调用顺序,执行时间直方图,并提供每个任务的统计数据。
在本发明的可选技术方案中,通过将监视器接口自定义,可以实现软件分析系统与不同目标板相适配,而避免了现有技术中仿真器仅能适配相同型号或相同厂家产品的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明较佳实施例的实时系统的软件分析系统的模块图;
图2是根据本发明较佳实施例的实时系统的软件分析系统的连接图;
图3是根据本发明较佳实施例的监视器接口定义表;
图4是根据本发明较佳实施例的i/o口定义编码格式表;及
图5是根据本发明较佳实施例的实时系统的软件分析方法的流程图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本发明提供一种实时系统的软件分析系统与方法,其提供了在实时系统的开发中,任务、中断处理执行的时序(任务调度),执行时间,以及最大软件负载时的执行时间的跟踪、测量方法。该软件监视系统和方法在硬件上与微处理器类型无关。
如图1及图2所示,所述软件分析系统用于对目标板30进行监视和性能分析,其中,目标板30为待测产品,即软件分析系统的监视和分析对象。本实施例中,目标板30为汽车中具有微处理器的所有实时系统,例如为安全气囊控制器。
所述软件分析系统包括监视器10及监视分析模块20。所述监视器10与监视分析模块20电性连接,例如通过usb接口连接。目标板30的输出端口与监视器10的端口连接。其中,监视器10的端口包括i/o接口和/或can接口,并且监视器10的端口类型可被监视分析模块20设置为与目标板10输出端口匹配。监视器10用于加载时间戳、存储目标板30的跟踪数据,并周期地上传跟踪数据至监视分析模块20。监视分析模块20用于输入目标板30的软件任务清单、设置监视器端口、生成并嵌入可实时跟踪目标板任务的跟踪模块至目标板软件,及分析目标板的跟踪数据得出目标板任务执行顺序和/执行时间。
具体地,监视器10具有存储、定时功能,其包括接口模块12、存储模块14和时钟模块16。接口模块12至少包括用于连接目标板30的若干i/o口及至少一个can接口。接口模块12的端口类型与目标板30的输出端口匹配,具体而言,本实施例中,接口模块12的端口定义可以更改,并生成固件,还可以重复刷写,以决定匹配目标板30何种输出端口。
其中,接口模块12可以根据被调试的目标板硬件需求在i/o口和can之间选择性定义。优选地,选择i/o口。可选用最少1个、最多8个的i/o口进行并行编码输出,用户可以通过监视分析模块20自定义哪些i/o口被选用。此外,也可以选择can,用户可以通过监视分析模块20自定义can消息id和消息格式。在一个实施例中,例如选用8个i/o口和一个标准can接口,则监视器10的接口模块12可以被定义为如图3表格所示的格式,但本发明不以此为限,接口模块12的定义可以根据被调试的目标板硬件需求来更改。
存储模块14用于存储目标板30的跟踪数据,并周期地上传跟踪数据至监视分析模块20。所述目标板30的跟踪数据包括目标板跟踪信息和加载的时间戳,时钟模块16用于对目标板跟踪信息加载绝对时间戳。
监视分析模块20例如为一台作为上位机的电脑,其提供上位机监视分析软件。监视分析模块20包括任务输入模块21、端口设置模块23、跟踪模块25、嵌入模块27及分析模块29。其中,任务输入模块21用于输入目标板30的软件任务清单,该任务输入模块21为键盘、鼠标、触摸屏等输入装置中的一种或多种。
端口设置模块23用于配置监视器10用何种接口监视目标板数据,生成固件,并可以将接口配置烧写固件到监视器10中,端口设置模块23还用于自定义can消息id和消息格式。
跟踪模块25为根据接口配置、软件任务清单、自定义信息生成的跟踪包,且该跟踪包在调试过程中嵌入至目标板30。本实施例中,跟踪模块25为包含c文件、h文件的c语言跟踪包。
嵌入模块27用于提供跟踪模块25嵌入的目标板软件的方式,包括在任务的入口加入与此任务对应的打印函数;在任务的出口加入与此任务对应的打印函数;以及编译、加载和运行目标板30的可执行文件。
分析模块29用于根据跟踪数据,绘制目标板30的软件任务调用顺序,执行时间直方图,并提供每个任务的统计数据,该统计数据包括每个任何的最大、最小执行时间,平均执行时间,执行周期,在整个统计任务中的百分比等数据中的一项或多项。
具体地,跟踪模块25的软件结构包括以下两方面的定义:
1)目标板30的处理器需要完成的任务列表及定义。
本实施例中,提供数字化的任务名称:如task0=0,task1=1,task2=2,task3=3,taskn=n。
2)处理器跟踪驱动单元。
处理器跟踪驱动单元包括目标板30的处理器i/o口或者can接口的初始化模块和对处理器i/o口或者can接口的输出模块。
其中,目标板30的处理器i/o口或者can接口的初始化模块需要使用者提供对处理器i/o口或者can接口的初始化,用于在目标板初始化阶段的初始化跟踪功能,本实施例中,例如通过提供函数task_trace_init()来实现。
处理器i/o口或者can接口的输出模块需要使用者提供对处理器i/o口或者can接口的输出操作,用于在目标板在执行任务时,在任务的入口进行跟踪数据输出。本实施例中,例如通过提供函数task_trace_entry_print(taskn)来实现此功能。此外,处理器i/o口或者can接口的输出模块还用于在目标板在执行任务时,在任务的出口进行跟踪数据输出。本实施例中,例如通过提供函数task_trace_exit_print(taskn)来实现此功能。
在本实施例中,以图4所示的i/o口定义编码格式表为例进行说明。如task0=0,需要在i/o口或者can消息里发出0x00(任务入口),或者0x01(任务出口);如task1=1,需要在i/o口或者can消息里发出0x02(任务入口),或者0x03(任务出口);如task2=2,需要在i/o口或者can消息里发出0x04(任务入口),或者0x05(任务出口)。
对于can消息定义,则把图4中的的编码输入can消息中,can消息id用户自定义,例如一条can总线可以连接多个目标板,则分别定义每个目标板对应的can消息id。
另一方面,基于上述软件分析系统,本发明进一步提供一种实时系统的软件分析方法。请参考图5所示,图5为本实施例所述的实时系统的软件分析方法流程图。所述软件分析方法包括如下步骤:
任务输入模块21输入目标板30的软件任务清单;
端口设置模块23配置监视器10用何种接口监视目标板数据,生成固件,并将接口配置烧写固件到监视器10中;必要时,端口设置模块23进一步自定义can消息id和消息格式;
跟踪模块25根据接口配置、软件任务清单、自定义信息生成跟踪包;
嵌入模块27将跟踪模块25嵌入至目标板软件,并编译、加载和运行目标板30的可执行文件;将跟踪模块25嵌入至目标板软件进一步包括子步骤:在目标板的初始化阶段初始化跟踪模块,在任务的入口加入与此任务对应的打印函数;以及在任务的出口加入与此任务对应的打印函数;
监视器10从目标板30接收跟踪信息,并对跟踪信息加载绝对时间戳,从而形成包括跟踪信息和时间戳的跟踪数据;
监视器10存储包括跟踪信息和时间戳的跟踪数据;
监视器10周期性地上跟踪试数据至监视分析模块20;
监视分析模块20的分析模块29根据跟踪数据进行分析,绘制目标板30的软件任务调用顺序,执行时间直方图,并提供每个任务的统计数据,该统计数据包括每个任务的最大、最小执行时间,平均执行时间,执行周期,在整个统计任务中的百分比等数据中的一项或多项。
综上所述,可以总结出,本发明提供一种实时系统的软件分析方法,其包括如下步骤:
s1:输入目标板的软件任务清单;
s2:配置监视器的端口类型和自定义信息;
s3:根据接口配置、软件任务清单、自定义信息生成跟踪模块;
s4:将跟踪模块嵌入至目标板软件,并编译、加载和运行目标板的可执行文件;
s5:从目标板接收跟踪信息,并对跟踪信息加载绝对时间戳,从而形成包括调试信息和时间戳的跟踪数据;
s6:存储包括跟踪信息和时间戳的跟踪数据;
s7:周期性地上传跟踪数据;以及
s8:根据跟踪数据进行分析,获取目标板的软件任务调用顺序,执行时间直方图,并提供每个任务的统计数据。
相对于现有技术,本发明的有益效果是:
1)通过将监视器10的接口自定义,可以实现软件分析系统与不同目标板30相适配,而避免了现有技术中仿真器仅能适配相同型号或相同厂家产品的问题;
2)可以实时跟踪目标板30的处理任务执行情况,并获取包括执行时序、执行时间等在内的数据,提高调试流程的效率和精度。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。