掌桥专利:专业的专利平台
掌桥专利
首页

应用程序的调试方法及装置

文献发布时间:2023-06-19 09:54:18


应用程序的调试方法及装置

技术领域

本申请实施例涉及计算机技术领域,特别涉及一种应用程序的调试方法及装置。

背景技术

目前,诸如手机、PC(personal computer,个人电脑)外围、遥控器、汽车电子设备、工业马达等设备的控制,都由设备中的MCU(Micro Controller Unit,微控制单元)实现,MCU又称为单片微型计算机或者单片机,是一种芯片级的处理器。生产的MCU产品中烧录有Bootloader(引导加载程序)和Application(应用程序),Bootloader负责应用程序的启动和刷新,Application负责实现产品的实际功能,且Application的运行依赖于Bootloader。在MCU产品生产之前,需要对Application进行调试,或者在对Application升级之前,也需要对Application进行调试。

在相关技术中,计算机设备获取Bootloader的源文件和Application的源文件。对Bootloader的源文件进行编译,得到烧录文件B和调试文件B,对Application的源文件进行编译,得到烧录文件A和调试文件A。将烧录文件B或调试文件B烧录到与计算机设备连接的MCU上,再将调试文件A烧录到该MCU上。之后,当接收到调试指令时,计算机设备控制MCU运行烧录的调试文件A,以调试应用程序。其中,在将文件烧录至MCU时,首先需要对MCU的部分内存空间执行一次擦除操作,然后再将文件写入到该内存空间中。

由于相关技术中,在调试Application的情况下,需要两次烧录,第二次烧录过程中,可能会超范围误擦和/或超范围误写,将烧录的烧录文件B或调试文件B误擦和/或误写一部分,导致烧录的数据出错,因此,在两次烧录之后,需要人工检查烧录的数据的正确性,而人工检查的效率低下,且易出错,导致调试效率低下。

发明内容

本申请实施例提供了一种应用程序的调试方法及装置,在基于Bootloader调试Application时,烧录的数据不易出错,且无需人工检查,有效提高了调试效率。所述技术方案如下:

一方面,提供了一种应用程序的调试方法,所述方法包括:

当接收到针对应用程序Application工程的编译指令时,根据第一烧录文件和所述Application工程的工程文件,确定目标工程文件,所述第一烧录文件是指引导加载程序Bootloader的烧录文件,所述目标工程文件包含所述Bootloader的运行相关数据和所述Application的调试相关数据;

对所述目标工程文件进行编译,得到目标调试文件;

将所述目标调试文件烧录至微控制单元MCU上,以对所述Application进行调试。

可选地,所述根据第一烧录文件和所述Application工程的工程文件,确定目标工程文件,包括:

根据第一烧录文件,确定第一源码文件;

将所述第一源码文件与所述Application工程的工程文件合并,得到所述目标工程文件。

可选地,所述根据第一烧录文件,确定第一源码文件之前,还包括:

根据所述第一烧录文件的文件路径,将所述第一烧录文件复制到所述Application工程的第一目录下;

所述根据第一烧录文件,确定第一源码文件,包括:

通过格式转换工具,将复制到所述第一目录下的第一烧录文件转换为所述第一源码文件。

可选地,所述Application工程对应第一内存空间,所述第一源码文件对应第二内存空间,所述第一内存空间和所述第二内存空间不同。

可选地,所述Application工程的工程文件存放在所述Application工程的待编译目录下;

所述将所述第一源码文件与所述Application工程的工程文件合并,得到目标工程文件,包括:

将所述第一目录下的第一源码文件复制到所述待编译目录下;

将所述待编译目录下的第一源码文件和所述Application工程的工程文件作为所述目标工程文件。

可选地,所述将所述第一目录下的第一源码文件复制到所述待编译目录下之后,还包括:

删除所述第一目录下的第一烧录文件和第一源码文件。

可选地,所述格式转换工具为HexView工具。

可选地,所述当接收到关于应用程序Application工程的编译指令时,根据第一烧录文件和所述Application工程的工程文件,确定目标工程文件之前,还包括:

当接收到关于所述Bootloader工程的编译指令时,对所述Bootloader工程的工程文件进行编译,得到所述第一烧录文件,所述Bootloader工程的工程文件包括多个源文件。

另一方面,提供了一种应用程序的调试装置,所述装置包括:

确定模块,用于当接收到针对应用程序Application工程的编译指令时,根据第一烧录文件和所述Application工程的工程文件,确定目标工程文件,所述第一烧录文件是指引导加载程序Bootloader的烧录文件,所述目标工程文件包含所述Bootloader的运行相关数据和所述Application的调试相关数据;

第一编译模块,用于对所述目标工程文件进行编译,得到目标调试文件;

调试模块,用于将所述目标调试文件烧录至微控制单元MCU上,以对所述Application进行调试。

可选地,所述确定模块包括:

确定单元,用于根据第一烧录文件,确定第一源码文件;

源码合并单元,用于将所述第一源码文件与所述Application工程的工程文件合并,得到所述目标工程文件。

可选地,所述确定模块还包括:

复制单元,用于根据所述第一烧录文件的文件路径,将所述第一烧录文件复制到所述Application工程的第一目录下;

所述确定单元包括:

转换子单元,用于通过格式转换工具,将复制到所述第一目录下的第一烧录文件转换为所述第一源码文件。

可选地,所述Application工程对应第一内存空间,所述第一源码文件对应第二内存空间,所述第一内存空间和所述第二内存空间不同。

可选地,所述Application工程的工程文件存放在所述Application工程的待编译目录下;

所述源码合并单元包括:

复制子单元,用于将所述第一目录下的第一源码文件复制到所述待编译目录下;

确定子单元,用于将所述待编译目录下的第一源码文件和所述Application工程的工程文件作为所述目标工程文件。

可选地,所述源码合并单元还包括:

删除子单元,用于删除所述第一目录下的第一烧录文件和第一源码文件。

可选地,所述格式转换工具为HexView工具。

可选地,所述装置还包括:

第二编译模块,用于当接收到关于所述Bootloader工程的编译指令时,对所述Bootloader工程的工程文件进行编译,得到所述第一烧录文件,所述Bootloader工程的工程文件包括多个源文件。

另一方面,提供了一种计算机设备,所述计算机设备包括处理器、通信接口、存储器和通信总线,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,所述存储器用于存放计算机程序,所述处理器用于执行所述存储器上所存放的程序,以实现上述所述应用程序的调试方法的步骤。

另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述所述应用程序的调试方法的步骤。

另一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的应用程序的调试方法的步骤。

本申请实施例提供的技术方案至少可以带来以下有益效果:

在本申请实施例中,需要对Application进行调试时,先在Application工程中,自动根据Bootloader的烧录文件和Application工程的工程文件编译得到目标调试文件,之后通过一次烧录将目标调试文件烧录至MCU上,也即本方案仅需一次烧录,即可以实现对Application进行调试,这样不会出现误擦和误写的问题,也就保证了烧录的数据的正确性,无需人工检查,整个过程操作简单,提高了调试效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种应用程序的调试方法所涉及的系统架构图;

图2是本申请实施例提供的一种应用程序的调试方法的流程图;

图3是本申请实施例提供的一种得到目标调试文件的方法流程图;

图4是本申请实施例提供的另一种得到目标调试文件的方法流程图;

图5是本申请实施例提供的一种应用程序的调试装置的结构示意图;

图6是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

为了便于对本申请实施例的理解,首先对本申请实施例涉及的部分术语进行解释说明。

MCU:微控制单元,又称单片微型计算机(Single Chip Micro Computer)或者单片机,是把CPU(Central Process Unit,中央处理器)的频率与规格做适当缩减,并将内存(memory)、计数器(timer)、USB(Universal Serial Bus,通用串行总线)、A/D转换(Analogto Digital Converter,模数转换)等周边接口,甚至LCD(Liquid Crystal Display,液晶显示器)驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。

刷新:通过程序编程指令,修改程序内容的动作。

Bootloader:引导加载程序,在MCU中负责启动和刷新Application的程序,在本申请实施例中可以将Bootloader简写为BLD。

Application:应用程序,在MCU中负责运行产品实际功能的程序,在本申请实施例中可以将Application简写为APP。

Hex:一种程序编译后的二进制可执行程序文件格式,Intel标准文件,文件后缀名.hex。

S19:一种程序编译后的二进制可执行程序文件格式,Motorola标准,文件后缀名.s19。

IDE:集成开发环境(Integrated Development Environment)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具,集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。

烧录文件:一种由IDE将源码编译后,仅可用于芯片(硬件)运行程序的二进制文件,一般为Hex格式或者S19格式。

调试文件:一种由IDE将源码编译后,生成包含程序运行过程信息的文件,不仅能使芯片运行,还能让IDE在线控制芯片运行以调试程序,控制包括设置程序断点、观察/修改变量等等。调试文件除包含烧录文件的数据之外,还包括输出给调试器的调试信息。一般有AXF格式、LMF格式或者ELF格式。

工程:基于IDE建立的软件开发调试环境。

HexView:一款二进制文件处理工具,能够处理hex/s19格式的文件,在本申请实施例中可以将HexView简写为HexV。

批处理:Batch,也称为批处理脚本,批处理是一种简化的脚本语言,用于对某对象进行批量的处理,可应用于DOS(Disk Operating System,磁盘操作系统)和Windows系统中。

脚本:Script,是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。

MCU是一种芯片级的处理器,被广泛应用于各种电子设备中,例如手机、遥控器、汽车电子设备、工业马达等。在MCU中烧录Bootloader和Application,以通过Bootloader启动和刷新应用程序,通过Application实现产品的实际功能,例如控制车灯、按键等。而在生产MCU之前,或者在对Application升级(如增加新功能)之前等情况下,均需要对Application进行调试,通过本申请实施例提供的应用程序的调试方法来对Application进行调试,能够简化用户操作,保证烧录的数据不会出错,无需用户检查烧录的数据的正确性,提高调试效率。

接下来对本申请实施例提供的应用程序的调试方法所涉及的系统架构进行介绍。

图1是本申请实施例提供的一种应用程序的调试方法所涉及的系统架构图。参见图1,该系统架构包括计算机设备101和MCU102,MCU102以有线的方式连接计算机设备101以互相传输数据。

计算机设备101上安装有IDE,开发人员可以通过连接计算机设备101的输入设备(如键盘、鼠标等)在IDE中建立工程,并在工程中编写工程文件,如分别建立Bootloader工程和Application工程,并在Bootloader工程中编写Bootloader工程的工程文件,在Application工程中编写Application工程的工程文件。计算机设备101还用于接收针对工程的编译指令,在接收到编译指令之后,通过IDE对工程文件进行编译,得到烧录文件和调试文件。计算机设备101还用于将根据本申请实施例提供的应用程序的调试方法得到的目标调试文件烧录至MCU102上,通过IDE中的调试器接收调试指令,控制MCU运行目标调试文件,以对Application进行调试。

MCU102用于接收计算机设备101传输的目标调试文件,将目标调试文件烧写至MCU102中,MCU102还用于接收计算机设备101中IDE的调试指令,并根据调试指令运行目标调试文件,以实现对Application的调试。

在本申请实施例中,计算机设备101为台式电脑、笔记本电脑、平板电脑、手机等能够连接MCU102,且能够与用户交互的设备,MCU102为各种类型的单片机等。

接下来对本申请实施例提供的应用程序的调试方法进行详细的解释说明。

图2是本申请实施例提供的一种应用程序的调试方法的流程图。请参考图2,该方法包括如下步骤。

步骤201:当接收到针对应用程序APP工程的编译指令时,根据第一烧录文件和APP工程的工程文件,确定目标工程文件,第一烧录文件是指引导加载程序BLD的烧录文件,目标工程文件包含BLD的运行相关数据和APP的调试相关数据。

在本申请实施例中,计算机设备上安装有IDE,IDE是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具,集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。开发人员可以通过连接计算机设备的输入设备(如键盘、鼠标等)在IDE中通过代码编辑器、图像用户界面等工具建立工程,并在工程中编写工程文件,对于IDE中建立的任一个工程,计算机设备通过IDE中的编译器接收针对工程的编译指令,在接收到编译指令之后,通过编译器对工程文件进行编译,可以得到一个烧录文件和一个调试文件。将调试文件烧录至与计算机设备连接的MCU上之后,通过IDE中的调试器接收开发人员的调试指令,根据调试指令控制MCU运行烧录的调试文件,实现程序调试。

在本申请实施例中,开发人员通过计算机设备在IDE中分别建立Bootloader工程和Application工程,并分别在Bootloader工程中编写源码得到Bootloader工程的工程文件,在Application工程中编写源码得到Application工程的工程文件,工程文件为包含源码的源文件,Bootloader工程的工程文件包括多个源文件,Application工程的工程文件也包括多个源文件。

计算机设备在通过IDE中的编译器对Application工程进行编译之前,先通过IDE中的编译器对Bootloader工程进行编译,也即当接收到关于Bootloader工程的编译指令时,对Bootloader工程的工程文件进行编译,得到第一烧录文件,第一烧录文件即Bootloader的烧录文件。

示例性地,开发人员通过鼠标点击计算机设备上显示的IDE编译控件,以触发关于Bootloader工程的编译指令,计算机设备接收到该编译指令之后,对Bootloader工程的工程文件进行编译,得到Bootloader的烧录文件和调试文件。需要说明的是,在本申请实施例中,由于后续不需要Bootloader的调试文件,因此可以将编译得到的Bootloader的调试文件删除,或者不处理即可。或者Bootloader的调试文件可以烧录至MCU上,用于调试Bootloader。

在本申请实施例中,第一烧录文件包含Bootloader的运行相关数据,第一烧录文件的文件格式为.hex或者.s19。

可选地,在本申请实施例中,对于Bootloader工程的代码编写、编译、调试等,也可以在其他计算机设备上实现,开发人员通过其他计算机设备上的IDE建立Bootloader工程、编写代码以及点击编译,其他计算机设备对Bootloader工程的工程文件编译之后得到第一烧录文件,通过U盘等工具从其他计算机设备将第一烧录文件拷贝到上述用于编译Application工程的计算机设备上,或者其他计算机设备将第一烧录文件发送到用于编译Application工程的计算机设备上。

计算机设备在得到第一烧录文件之后,在通过IDE中的编译器接收到关于Application工程的编译指令时,根据第一烧录文件和Application工程的工程文件,确定目标工程文件。

在本申请实施例中,通过编译之前将源码合并的方式,得到目标工程文件。也即是,计算机设备根据第一烧录文件,确定第一源码文件,之后,将第一源码文件与Application工程的工程文件合并,得到目标工程文件。

在本申请实施例中,计算机设备通过格式转换工具将第一烧录文件转换为第一源码文件。

可选地,格式转换工具为HexView工具,第一源码文件的格式为.c。

示例性地,计算机设备通过HexView工具将.hex或.s19格式的第一烧录文件转换为.c格式的第一源码文件,第一源码文件为C数组文件。

在本申请实施例中,为了实现自动化以简化用户操作,提高调试效率,开发人员可以通过计算机设备在IDE中创建第一目录,用于存放第一烧录文件和第一源码文件。

计算机设备在根据第一烧录文件,确定第一源码文件之前,根据第一烧录文件的文件路径,将第一烧录文件复制到Application工程的第一目录下,之后通过格式转换工具,将复制到第一目录下的第一烧录文件转换为第一源码文件。

需要说明的是,开发人员通过IDE在Application工程中,存储第一烧录文件的文件路径,以建立第一烧录文件和Application工程的相对路径,计算机设备在检测到针对Application工程的编译指令时,自动根据Application工程中存储的第一烧录文件的文件路径,将第一烧录文件复制到Application工程的第一目录下。

由于在MCU中,需要保证Bootloader和Application使用内存资源的绝对独立性,因此,需要限定Bootloader对应的内存空间和Application对应的内存空间,也即分别限定Bootloader和Application对应的运行内存地址范围,保证Bootloader和Application对应的运行内存地址范围绝对对立。

在本申请实施例中,在建立Application工程时,设置Application工程对应第一内存空间,在建立Bootloader工程时,设置Bootloader工程对应第二内存空间,并在Application工程中存储Bootloader工程对应的第二内存空间,在通过HexView工具将第一烧录文件转换成第一源码文件时,获取Bootloader工程对应的第二内存空间,并将第二内存空间作为第一源码文件对应的内存空间。也即是,在本申请实施例中,Application工程对应第一内存空间,第一源码文件对应第二内存空间,第一内存空间和第二内存空间不同。

由上述可知,在本申请实施例中通过全局限定的方式,限定Application工程对应的内存空间,也即是,在Application工程中全局限定Application工程对应第一内存空间,这样Application工程的工程文件均对应第一内存空间,也即全局限定的内存空间作用于Application工程中除局部限定之外的所有文件。通过局部限定的方式,在Application工程中局部限定第一源码文件对应的内存空间,可以理解为第一源码文件为Application工程中的特殊文件,第一源码文件虽然在Application工程中,但是通过局部限定的方式,使第一源码文件对应的内存空间与Application工程对应的内存空间不同,局部限定的内存空间仅作用于第一源码文件。

示例性地,通过设置Application工程的全局参数来全局限定Application工程对应的内存空间(内存地址范围)为0x20000000-0x20004000,全局参数作用于Application工程中除局部限定之外的所有文件。通过标签的形式局部限定第一源码文件对应的内存空间,在转换得到的第一源码文件中通过标签的形式指定第二内存空间,第一源码文件中包括一个开始标签和一个结束标签,开始标签位于代码最前面,表示从这里开始的代码对应第二内存空间,结束标签位于代码最后面,表示到这里为止之前的代码对应第二内存空间,其中,开始标签中包含第二内存空间的信息,例如开始标签为“HG00203B5D4H3D7”,其中“00”表示第二内存空间的起始地址,“20”表示第二内存空间的结束地址。

在本申请实施例中,Application工程的工程文件存放在Application工程的待编译目录下,在得到第一源码文件之后,计算机设备自动将第一目录下的第一源码文件复制到待编译目录下,将待编译目录下的第一源码文件和Application工程的工程文件作为目标工程文件。也即是,计算机设备通过源码合并的方式,得到目标工程文件。

可选地,将第一目录下的第一源码文件复制到待编译目录下之后,计算机设备删除第一目录下的第一烧录文件和第一源码文件。也即是,在本申请实施例中,第一目录中的第一烧录文件和第一源码文件为临时文件,在使用之后,可以选择删除。

可选地,在本申请实施例中,为了便于管理工程以及实施自动化方案,开发人员通过计算机设备将HexView工具也存放在第一目录下,便于将第一目录下的第一烧录文件转换成第一源码文件。当然,HexView工具也可以存放在Application工程中的其他目录下。

可选地,在本申请实施例中,第一目录可以称为UserTool目录。

需要说明的是,前述根据第一烧录文件,确定第一源码文件,并将第一源码文件与Application工程的工程文件合并,得到目标工程文件的过程,可以通过编译前的批处理脚本自动完成。在本申请实施例中,开发人员可以通过计算机设备在IDE中的Application工程中设置编译前自动执行批处理脚本,当接收到关于Application工程的编译指令时,IDE自动触发运行批处理脚本,完成将第一烧录文件转换成第一源码文件,并将第一源码文件复制到Application工程的待编译目录下的步骤。

另外,由于第一烧录文件(hex/s19)中可能存在空行等,因此,在通过HexView工具将第一烧录文件转换为第一源码文件的过程中,先通过HexView工具对第一烧录文件进行FF填充,以将第一烧录文件中的空行用FF进行填充,再通过HexView工具将填充好FF的第一烧录文件转换为第一源码文件,以保证转换过程不出错,且不会缺失数据,保证转换之后得到的第一源码文件的数据正确。

通过以上过程,计算机设备得到待编译的目标工程文件,目标工程文件包含Bootloader的运行相关数据和Application的调试相关数据。

步骤202:对目标工程文件进行编译,得到目标调试文件。

在本申请实施例中,计算机设备在得到目标工程文件之后,对目标工程文件进行编译,得到目标调试文件。

需要说明的是,从计算机设备在接收到关于Application工程的编译指令开始,到得到目标调试文件的过程,是全自动化的过程,无需开发人员繁琐的操作即可完成。也即是,通过编译前的批处理脚本和HexView工具以实施自动化方案。

另外,对目标工程文件进行编译之后,还能得到一个包含Bootloader的运行相关数据和Application的运行相关数据的烧录文件,可以称为第二烧录文件。

步骤203:将目标调试文件烧录至微控制单元MCU上,以对APP进行调试。

在本申请实施例中,计算机设备在得到目标调试文件之后,在接收到开发人员的烧录指令时,将目标调试文件烧录至MCU上,并根据IDE中调试器接收到的调试指令,控制MCU运行目标调试文件来调试Application。例如,计算机设备通过调试器将调试指令发送给MCU,MCU根据调试指令运行目标调试文件。

示例性地,开发人员可以通过IDE设置程序断点、修改变量等,生成调试指令,以调试Application。例如,开发人员通过鼠标点击IDE中显示的目标调试文件的程序中间一行代码,以该行代码处设置一个程序断点,之后点击调试按键生成调试指令,调试指令携带该程序断点的信息,调试器将调试指令发送给MCU,MCU根据调试指令开始运行目标调试文件,并在运行到程序断点对应的一行代码时候停止运行,在计算机设备上显示运行到程序断点时,程序中当前各个变量的值,开发人员可以查看变量、修改变量等。

需要说明的是,由上述可知,计算机设备在对目标工程文件编译之后,还能得到第二烧录文件,如果在对Application调试之后,确定目标调试文件性能良好,没有需要改善的地方,也即确定不需要修改Application工程的源码,那么就可以通过一次烧录将第二烧录文件烧录至MCU上,投入使用,也即通过烧录有第二烧录文件的MCU可以控制电子设备的运行以及实现产品功能。

也即是,本方案在解决调试Application时两次烧录带来的各种问题的同时,还能够解决在生产MCU或者升级MCU中Bootloader时两次烧录(先烧录Bootloader的烧录文件,再烧录Application的烧录文件)带来的问题,也即是本方案还提供了一种烧录文件合并的方案,通过本方案得到包含Bootloader的运行相关数据和Application的运行相关数据的烧录文件,以通过一次烧录得到可运行Bootloader和Application的MCU,提高生产或升级MCU时的烧录效率以及保证烧录的数据的正确性。

需要说明的是,由前述可知,调试文件的格式有AXF格式、LMF格式或者ELF格式,这些格式均没有对应公开的标准,文件格式差异大,且没有可以直接合并调试文件的工具,也即目前直接合并调试文件的方案难以实施。而如果后续有关于调试文件的格式的公开标准,保证文件格式的规范化,且随着计算机技术的发展,出现可以直接合并调试文件的工具,那么也可以将Bootloader的调试文件和Application的调试文件直接通过工具合并,后续通过一次烧录实现对Application的调试,一次烧录不会产生误擦或误写的问题,烧录的数据不易出错,无需人工检查,有效提高调试效率。

而在当前直接合并调试文件的方案难以实施的情况下,本方案提供的是一种通用的解决方案,不受调试文件格式差异的影响,不受编译环境的影响,不受编译工具的影响,使Application在线调试与Bootloader在线调试的操作步骤和方法保持一致,也即Bootloader在线调试的操作步骤中仅需一次烧录过程(烧录Bootloader的调试文件),Application在线调试也只需一次烧录过程(烧录目标调试文件),降低了Application在线调试的操作复杂度,提高了在线调试效率。

图3是本申请实施例提供的一种得到目标调试文件的方法流程图,结合图3对本申请实施例提供的应用程序的调试方法中得到目标调试文件的方法再次进行解释说明。参见图3,在Bootloader(BLD)工程中,对Bootloader工程的工程文件(源码)进行编译,得到第一烧录文件(B.hex或B.s19)和第一调试文件(B’),在Application(APP)工程中,通过HexView(HexV)工具将B.hex或B.s19转换为第一源码文件(B.c),将B.c与APP工程的工程文件(源码)合并,得到目标工程文件(AB源码),对目标工程文件进行编译,得到第二烧录文件(AB.hex或AB.s19)和目标调试文件(AB’)。

结合IDE对上述得到目标调试文件的过程再次进行说明。图4是本申请实施例提供的另一种得到目标调试文件的方法流程图。参见图4,开发人员在APP工程中,点击IDE中的编译控件,触发计算机设备执行APP IDE编译,首先调用编译前的批处理脚本,通过批处理脚本完成第一烧录文件(假设为B.hex)转换为第一源码文件(B.c),并将B.c复制到APP工程的待编译目录下,以合并源码,然后执行对APP工程中待编译目录下的文件(包括B.c)的编译,得到目标调试文件和第二烧录文件(合并的烧录文件)。

其中,调用编译前的批处理脚本的过程,主要包括将B.hex复制到第一目录(可称为临时目录)下,调用HexView(HexV)工具对B.hex进行FF填充,调用HexView工具将填充FF后的B.hex转换成B.c,将B.c复制到APP工程的待编译目录下,删除临时文件,临时文件包括第一目录下的第一烧录文件和第一源码文件。

由以上实施例以及图3和图4的相关介绍可知,本方案通过将烧录文件(hex/s19格式)转换成源码文件(c格式),以便完成编译前的源码合并,且转换为第一源码文件便于局部限定内存地址范围,保证内存空间的独立性。另外,通过批处理脚本和HexView工具实现编译前自动完成源码合并,得到目标调试文件,无需繁琐操作即可实施自动化实施方案。

本方案可以应用于需要基于Bootloader调试Application的各种情况,例如,新开发一款MCU时,升级一款MCU的Application时,升级一款MCU的Bootloader对Application产生一定影响时,都需要调试Application,通过本申请实施例提供的通用方案,提高Application的调试效率。

可选地,在其他一些实施例中,将Bootloader工程的工程文件(源码)和Application工程的工程文件(源码)合并,并对合并后的所有文件进行编译,得到一个调试文件和一个烧录文件,将得到的调试文件作为目标调试文件,得到的烧录文件作为第二烧录文件,这样也可以实现一次烧录过程来调试Application的目的。例如,将Bootloader工程的工程文件复制到Application工程的待编译目录下,以合并源码,并在Application工程中对合并后的所有文件进行编译,得到目标调试文件。或者,将Application工程的工程文件复制到Bootloader工程的待编译目录下,以合并源码,并在Bootloader工程中对合并后的所有文件进行编译,得到目标调试文件。

在这种方案中,假设将Bootloader工程的工程文件复制到Application工程的待编译目录下,以合并源码,并在Application工程中对合并后的所有文件进行编译,那么需要在Application工程中局部限定Bootloader工程的工程文件包括的每个源文件对应的内存地址范围,如果后续Bootloader工程的工程文件有新编写的源文件,那么需要再指定新增的源文件对应的内存地址范围。同理,假设将Application工程的工程文件复制到Bootloader工程的待编译目录下,以合并源码,并在Bootloader工程中对合并后的所有文件进行编译,那么需要在Bootloader工程中局部限定Application工程的工程文件包括的每个源文件对应的内存地址范围,对于Application工程中新增的源文件,也需要再指定新增的源文件对于的内存地址范围。

本申请实施例前述介绍的将第一烧录文件转第一源码文件,再通过源码合并的方式得到目标调试文件的方法,仅需局部限定一次第一烧录文件对应的内存空间即可,操作简单,方案利于开发人员实施。

在本申请实施例中,需要对Application进行调试时,先在Application工程中,自动根据Bootloader的烧录文件和Application工程的工程文件编译得到目标调试文件,之后通过一次烧录将目标调试文件烧录至MCU上,也即本方案仅需一次烧录,即可以实现对Application进行调试,这样不会出现误擦和误写的问题,也就保证了烧录的数据的正确性,无需人工检查,整个过程操作简单,提高了调试效率。

图5是本申请实施例提供的一种应用程序的调试装置500的结构示意图,该应用程序的调试装置500可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部。请参考图5,该装置500包括:确定模块501、第一编译模块502和调试模块503。

确定模块501,用于当接收到针对Application工程的编译指令时,根据第一烧录文件和Application工程的工程文件,确定目标工程文件,第一烧录文件是指Bootloader的烧录文件,目标工程文件包含Bootloader的运行相关数据和Application的调试相关数据;

第一编译模块502,用于对目标工程文件进行编译,得到目标调试文件;

调试模块503,用于将目标调试文件烧录至MCU上,以对Application进行调试。

可选地,确定模块501包括:

确定单元,用于根据第一烧录文件,确定第一源码文件;

源码合并单元,用于将第一源码文件与Application工程的工程文件合并,得到目标工程文件。

可选地,确定模块501还包括:

复制单元,用于根据第一烧录文件的文件路径,将第一烧录文件复制到Application工程的第一目录下;

确定单元包括:

转换子单元,用于通过格式转换工具,将复制到第一目录下的第一烧录文件转换为第一源码文件。

可选地,Application工程对应第一内存空间,第一源码文件对应第二内存空间,第一内存空间和第二内存空间不同。

可选地,Application工程的工程文件存放在Application工程的待编译目录下;

源码合并单元包括:

复制子单元,用于将第一目录下的第一源码文件复制到待编译目录下;

确定子单元,用于将待编译目录下的第一源码文件和Application工程的工程文件作为目标工程文件。

可选地,源码合并单元还包括:

删除子单元,用于删除第一目录下的第一烧录文件和第一源码文件。

可选地,格式转换工具为HexView工具。

可选地,该装置500还包括:

第二编译模块,用于当接收到关于Bootloader工程的编译指令时,对Bootloader工程的工程文件进行编译,得到第一烧录文件,Bootloader工程的工程文件包括多个源文件。

在本申请实施例中,需要对Application进行调试时,先在Application工程中,自动根据Bootloader的烧录文件和Application工程的工程文件编译得到目标调试文件,之后通过一次烧录将目标调试文件烧录至MCU上,也即本方案仅需一次烧录,即可以实现对Application进行调试,这样不会出现误擦和误写的问题,也就保证了烧录的数据的正确性,无需人工检查,整个过程操作简单,提高了调试效率。

需要说明的是:上述实施例提供的应用程序的调试装置在调试应用程序时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用程序的调试装置与应用程序的调试方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图6是本申请实施例提供的一种计算机设备600的结构框图。该计算机设备600可以是智能手机、平板电脑、笔记本电脑或台式电脑等。

通常,计算机设备600包括有:处理器601和存储器602。

处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的应用程序的调试方法。

在一些实施例中,计算机设备600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、显示屏605、摄像头组件606、音频电路607、定位组件608和电源609中的至少一种。

外围设备接口603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它计算机设备进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请实施例对此不加以限定。

显示屏605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置在计算机设备600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在计算机设备600的不同表面或呈折叠设计;在另一些实施例中,显示屏605可以是柔性显示屏,设置在计算机设备600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。

摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在计算机设备的前面板,后置摄像头设置在计算机设备的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在计算机设备600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。

定位组件608用于定位计算机设备600的当前地理位置,以实现导航或LBS(Location Based Service,基于位置的服务)。定位组件608可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。

电源609用于为计算机设备600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。

在一些实施例中,计算机设备600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。

加速度传感器611可以检测以计算机设备600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器612可以检测计算机设备600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对计算机设备600的3D动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器613可以设置在计算机设备600的侧边框和/或显示屏605的下层。当压力传感器613设置在计算机设备600的侧边框时,可以检测用户对计算机设备600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在显示屏605的下层时,由处理器601根据用户对显示屏605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置在计算机设备600的正面、背面或侧面。当计算机设备600上设置有物理按键或厂商Logo时,指纹传感器614可以与物理按键或厂商Logo集成在一起。

光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制显示屏605的显示亮度。具体地,当环境光强度较高时,调高显示屏605的显示亮度;当环境光强度较低时,调低显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。

接近传感器616,也称距离传感器,通常设置在计算机设备600的前面板。接近传感器616用于采集用户与计算机设备600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与计算机设备600的正面之间的距离逐渐变小时,由处理器601控制显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与计算机设备600的正面之间的距离逐渐变大时,由处理器601控制显示屏605从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图6中示出的结构并不构成对计算机设备600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

在一些实施例中,还提供了一种计算机可读存储介质,该存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中应用程序的调试方法的步骤。例如,所述计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。

值得注意的是,本申请实施例提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。

应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。所述计算机指令可以存储在上述计算机可读存储介质中。

也即是,在一些实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的应用程序的调试方法的步骤。

应当理解的是,本文提及的“至少一个”是指一个或多个,“多个”是指两个或两个以上。在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。

以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 应用程序的调试方法、调试工具及调试装置
  • 用于应用程序的调试方法、调试装置及介质
技术分类

06120112345841