System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请属于故障定位,具体涉及一种硬件错误的定位方法、装置及系统。
技术介绍
1、在嵌入式系统开发过程中,arm cortex-m(advanced risc machine,微处理器)系列的mcu(microcontroller unit,微控制器)因其高效、低功耗的特性得到了广泛应用。然而,在mcu开发和应用的过程中,硬件错误(hardfault)时常发生,导致mcu的应用系统异常。
2、目前,硬件错误的定位方法大多需要在微控制器的安装现场进行,导致定位效率较低。
技术实现思路
1、专利技术目的:本申请提供一种硬件错误的定位方法,用于解决硬件错误的定位方法大多需要在微控制器的安装现场进行,导致定位效率较低的问题;本申请的另一目的在于提供一种硬件错误的定位装置;本申请的又一目的在于提供一种硬件错误的定位系统。
2、技术方案,本申请提供了一种硬件错误的定位方法,应用于客户端,所述定位方法包括:
3、响应于微控制器发生硬件错误,获取第一寄存器信息,所述第一寄存器信息用于表征所述微控制器发生硬件错误时的寄存器信息;
4、从所述第一寄存器信息中获取链接寄存器的错误值;
5、基于所述错误值从所述第一寄存器信息中确定目标指针以及所述目标指针对应的目标值;
6、在所述目标指针对应的子信息中,基于所述目标值确定目标地址,所述目标地址用于表征所述链接寄存器的正确值;
7、获取预先存储的映射符号表,所述映射符号表用于表
8、将所述映射符号表中所述目标地址对应的函数确定为故障函数,所述故障函数用于定位所述微控制器的硬件错误。
9、在一些实施例中,所述目标指针为主栈指针或者进程栈指针;所述基于所述错误值从所述第一寄存器信息中确定目标指针,包括:
10、响应于所述错误值为第一预设值,将所述主栈指针选定为所述目标指针;
11、响应于所述错误值为第二预设值,将所述进程栈指针选定为所述目标指针。
12、在一些实施例中,所述响应于微控制器发生硬件错误,获取第一寄存器信息,包括:
13、获取所述微控制器的第二寄存器信息,所述第二寄存器信息用于表征所述微控制器发生故障时的寄存器信息;
14、响应于所述第二寄存器信息满足硬件错误发生条件,将所述第二寄存器信息确定为所述第一寄存器信息。
15、在一些实施例中,确定所述第二寄存器信息满足硬件错误发生条件,包括:
16、基于所述第二寄存器信息,确定错误确认寄存器的故障上访位状态;
17、响应于所述故障上访位状态为有效状态,遍历所述第二寄存器信息;
18、响应于所述第二寄存器信息中包括中断返回值,确定所述第二寄存器信息满足所述硬件错误发生条件。
19、在一些实施例中,获取所述微控制器的第二寄存器信息,包括:
20、获取所述微控制器发生故障时的故障消息;
21、向所述微控制器发送查询指令;
22、获取所述微控制器发送的所述第二寄存器信息,所述第二寄存器信息是所述微控制器响应于所述查询指令从闪存中读取的。
23、在一些实施例中,所述第一预设值被配置为xxxxxxxxf9,所述第二预设值被配置为xxxxxxxxfd或者xxxxxxxxed。
24、在一些实施例中,将所述映射符号表中所述目标地址对应的函数确定为故障函数之后,所述定位方法还包括:
25、分析所述故障函数的源代码,确定非法指针;
26、基于所述非法指针,修复所述源代码;
27、运行修复后的所述源代码,响应于所述源代码未运行故障函数,确认所述源代码修复成功。
28、相应的,本申请还提供一种硬件错误的定位装置,配置于客户端,所述定位装置包括:
29、第一获取单元,被配置为响应于微控制器发生硬件错误,获取第一寄存器信息,所述第一寄存器信息用于表征所述微控制器发生硬件错误时的寄存器信息;
30、第二获取单元,被配置为从所述第一寄存器信息中获取链接寄存器的错误值;
31、第一确定单元,被配置为基于所述错误值从所述第一寄存器信息中确定目标指针以及所述目标指针对应的目标值;
32、第二确定单元,被配置为在所述目标指针对应的子信息中,基于所述目标值确定目标地址,所述目标地址用于表征所述链接寄存器的正确值;
33、第三获取单元,被配置为获取预先存储的映射符号表,所述映射符号表用于表示地址与函数之间的映射关系;
34、第三确定单元,被配置为将所述映射符号表中所述目标地址对应的函数确定为故障函数,所述故障函数用于定位所述微控制器的硬件错误。
35、相应的,本申请还提供一种硬件错误的定位系统,所述定位系统包括:
36、故障捕获模块,所述故障捕获模块配置于微控制器,所述故障捕获模块被配置为响应于所述微控制器发生硬件错误,存储第一寄存器信息,所述第一寄存器信息用于表征所述微控制器发生硬件错误时的寄存器信息;
37、客户端,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;其中,所述处理器执行所述计算机程序时可用于执行如上述实施例中任一项所述的硬件错误的定位方法的步骤;
38、云服务器,与所述故障捕获模块、所述客户端通信连接;
39、通信模块,被配置为实现所述故障捕获模块与所述客户端之间、所述故障捕获模块与所述云服务器之间、以及所述客户端与所述云服务器之间的通信连接。
40、在一些实施例中,所述故障捕获模块中设置闪存,所述故障捕获模块还被配置为执行以下步骤:
41、响应于所述微控制器发生故障,运行故障函数;
42、获取主栈指针对应的子信息和目标值,以及进程栈指针对应的子信息和目标值;
43、将所述子信息和所述目标值作为起始地址,将预设长度的第二寄存器信息存储于所述闪存。
44、有益效果:与现有技术相比,本申请实施例提供的一种硬件错误的定位方法,应用于客户端,定位方法包括:响应于微控制器发生硬件错误,获取第一寄存器信息,第一寄存器信息用于表征微控制器发生硬件错误时的寄存器信息;从第一寄存器信息中获取链接寄存器的错误值;基于错误值从第一寄存器信息中确定目标指针以及目标指针对应的目标值;在目标指针对应的子信息中,基于目标值确定目标地址,目标地址用于表征链接寄存器的正确值;获取预先存储的映射符号表,映射符号表用于表示地址与函数之间的映射关系;将映射符号表中目标地址对应的函数确定为故障函数,故障函数用于定位微控制器的硬件错误。如此,通过获取发生硬件故障时的第一寄存器信息,并对第一寄存器信息进行远程分析,实现对微处理器硬件错误的远程定位,提高故障定位的准确率和效率。
45、可以理解的是,与现有技术相比,本申请实施例提本文档来自技高网...
【技术保护点】
1.一种硬件错误的定位方法,其特征在于,应用于客户端,所述定位方法包括:
2.根据权利要求1所述的硬件错误的定位方法,其特征在于,所述目标指针为主栈指针或者进程栈指针;所述基于所述错误值从所述第一寄存器信息中确定目标指针,包括:
3.根据权利要求1所述的硬件错误的定位方法,其特征在于,所述响应于微控制器发生硬件错误,获取第一寄存器信息,包括:
4.根据权利要求3所述的硬件错误的定位方法,其特征在于,确定所述第二寄存器信息满足硬件错误发生条件,包括:
5.根据权利要求3所述的硬件错误的定位方法,其特征在于,获取所述微控制器的第二寄存器信息,包括:
6.根据权利要求2所述的硬件错误的定位方法,其特征在于,所述第一预设值被配置为xxxxxxxxF9,所述第二预设值被配置为xxxxxxxxFD或xxxxxxxxED。
7.根据权利要求1所述的硬件错误的定位方法,其特征在于,将所述映射符号表中所述目标地址对应的函数确定为故障函数之后,所述定位方法还包括:
8.一种硬件错误的定位装置,其特征在于,配置于客户端
9.一种硬件错误的定位系统,其特征在于,所述定位系统包括:
10.根据权利要求9所述的硬件错误的定位系统,其特征在于,所述故障捕获模块中设置闪存,所述故障捕获模块还被配置为执行以下步骤:
...【技术特征摘要】
1.一种硬件错误的定位方法,其特征在于,应用于客户端,所述定位方法包括:
2.根据权利要求1所述的硬件错误的定位方法,其特征在于,所述目标指针为主栈指针或者进程栈指针;所述基于所述错误值从所述第一寄存器信息中确定目标指针,包括:
3.根据权利要求1所述的硬件错误的定位方法,其特征在于,所述响应于微控制器发生硬件错误,获取第一寄存器信息,包括:
4.根据权利要求3所述的硬件错误的定位方法,其特征在于,确定所述第二寄存器信息满足硬件错误发生条件,包括:
5.根据权利要求3所述的硬件错误的定位方法,其特征在于,获取所述微控制器的第二寄存器信息,包括:
6...
【专利技术属性】
技术研发人员:崔亚飞,谢品勋,黄顺,胡运平,
申请(专利权)人:深圳市欣旺达能源科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。