本申请属于嵌入式软件开发,具体涉及一种嵌入式软件调试方法及装置。
背景技术:
1、目前,嵌入式程序运行在嵌入式芯片上,但开发调试工具都在通用计算机上。由于目标机和开发机的芯片及环境差异极大,需要做交叉编译,通常需要将嵌入式程序下载到目标机运行和调试。
2、在实践中发现,现有的芯片设计厂家会开发或者委托开发与芯片对应的仿真器,仿真器能够与主机端口(串口或usb口)建立连接,主机上安装有调试软件。调试软件能够通过预先设定的协议(jtag或bmd等)与仿真器通讯,达到跟踪控制的目的,实现调试功能。然而,这种嵌入式软件调试方式需要开发仿真器,存在着硬件成本高的问题。
3、针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
1、为此,本申请提供一种嵌入式软件调试方法及装置,有助于降低硬件成本,提高调试精准度。
2、为实现以上目的,本申请采用如下技术方案:
3、第一方面,本申请提供一种嵌入式软件调试方法,所述方法包括:
4、基于开发环境提供的插件接口,开发目标芯片对应的目标插件;其中,所述目标插件通过所述插件接口与所述开发环境进行数据交互,所述目标插件通过socket接口连接目标设备;其中,所述目标设备至少包括:模拟协处理器;
5、响应于所述开发环境已进入调试状态、且所述目标插件接收到嵌入式软件调试指令,通过所述模拟协处理器获取调试命令接口代码;
6、根据所述调试命令接口代码对应的命令类型,进行调试数据处理,得到调试处理结果;
7、将所述调试处理结果返回所述目标插件,以通过所述目标插件将所述数据处理结果返回给所述开发环境。
8、进一步地,所述方法还包括:
9、基于所述目标插件中的调试数据处理类别,同步更新所述目标插件中的数据标志位;其中,所述调试数据处理类别至少包括数据输入和数据输出。
10、进一步地,在通过所述模拟协处理器获取调试命令接口代码之前,所述方法还包括:
11、通过所述目标插件配置寄存器。
12、进一步地,通过所述目标插件配置寄存器,包括:
13、在所述目标插件中定义虚拟寄存器组;
14、对于所述虚拟寄存器组中的每个虚拟寄存器,通过所述目标插件设置该虚拟寄存器的虚拟地址对应的触发函数;
15、其中,所述触发函数用于对该虚拟寄存器的虚拟地址中的数据进行读写。
16、进一步地,所述方法还包括:
17、通过所述目标插件,将预设的二进制镜像文件写入指定地址空间;
18、响应于接收到针对所述预设的二进制镜像文件的加载指令,确定所述目标插件接收到所述嵌入式软件调试指令。
19、进一步地,所述方法还包括:
20、通过所述目标插件提供的修改指令,将休眠代码修改为空操作。
21、第二方面,本申请提供一种嵌入式软件调试装置,所述装置包括目标插件以及模拟协处理器;其中,所述目标插件为基于开发环境提供的插件接口开发的、与目标芯片对应的插件,所述目标插件通过所述插件接口与所述开发环境进行数据交互,所述目标插件通过socket接口连接目标设备;其中,所述目标设备至少包括:所述模拟协处理器;
22、所述模拟协处理器,用于响应于所述开发环境已进入调试状态、且所述目标插件接收到嵌入式软件调试指令,获取调试命令接口代码;
23、所述模拟协处理器,还用于根据所述调试命令接口代码对应的命令类型,进行调试数据处理,得到调试处理结果;
24、所述模拟协处理器,还用于将所述调试处理结果返回所述目标插件,以通过所述目标插件将所述数据处理结果返回给所述开发环境。
25、进一步地,所述目标插件还用于:
26、基于所述目标插件中的调试数据处理类别,同步更新所述目标插件中的数据标志位;其中,所述调试数据处理类别至少包括数据输入和数据输出。
27、进一步地,所述目标插件还用于:
28、在通过所述模拟协处理器获取调试命令接口代码之前,通过所述目标插件配置寄存器。
29、进一步地,所述目标插件具体用于:
30、在所述目标插件中定义虚拟寄存器组;
31、对于所述虚拟寄存器组中的每个虚拟寄存器,通过所述目标插件设置该虚拟寄存器的虚拟地址对应的触发函数;
32、其中,所述触发函数用于对该虚拟寄存器的虚拟地址中的数据进行读写。
33、进一步地,所述目标插件还用于:
34、将预设的二进制镜像文件写入指定地址空间;
35、响应于接收到针对所述预设的二进制镜像文件的加载指令,确定所述目标插件接收到所述嵌入式软件调试指令。
36、进一步地,所述目标插件还用于:
37、通过所述目标插件提供的修改指令,将休眠代码修改为空操作。
38、第三方面,本申请提供一种电子设备,包括:
39、至少一个处理器;以及
40、与所述至少一个处理器通信连接的存储器;其中,
41、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面所述的方法。
42、第四方面,本申请提供一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行第一方面所述的方法。
43、第五方面,本申请提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现第一方面所述的方法。
44、本申请采用以上技术方案,至少具备以下有益效果:
45、通过本申请,基于开发环境提供的插件接口,开发目标芯片对应的目标插件;其中,所述目标插件通过所述插件接口与所述开发环境进行数据交互,所述目标插件通过socket接口连接目标设备;其中,所述目标设备至少包括:模拟协处理器;响应于所述开发环境已进入调试状态、且所述目标插件接收到嵌入式软件调试指令,通过所述模拟协处理器获取调试命令接口代码;根据所述调试命令接口代码对应的命令类型,进行调试数据处理,得到调试处理结果;将所述调试处理结果返回所述目标插件,以通过所述目标插件将所述数据处理结果返回给所述开发环境。通过本申请,基于目标插件和模拟协处理器实现软件仿真调试,无需额外开发仿真器,有助于降低硬件成本,并且无需修改源码,实现最大程度反映嵌入式芯片实际运行情况,从而提高调试精准度。
46、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
1.一种嵌入式软件调试方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,在通过所述模拟协处理器获取调试命令接口代码之前,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,通过所述目标插件配置寄存器,包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
7.一种嵌入式软件调试装置,其特征在于,所述装置包括目标插件以及模拟协处理器;其中,所述目标插件为基于开发环境提供的插件接口开发的、与目标芯片对应的插件,所述目标插件通过所述插件接口与所述开发环境进行数据交互,所述目标插件通过socket接口连接目标设备;其中,所述目标设备至少包括:所述模拟协处理器;
8.根据权利要求7所述的装置,其特征在于,所述目标插件还用于:
9.根据权利要求7所述的装置,其特征在于,所述目标插件还用于:
10.根据权利要求9所述的装置,其特征在于,所述目标插件具体用于: