首页> 中国专利> 指令执行方法、指令执行装置、电子设备及存储介质

指令执行方法、指令执行装置、电子设备及存储介质

摘要

本发明实施例涉及数据处理领域,公开了一种指令执行方法、指令执行装置、电子设备及存储介质。指令执行方法包括:响应于AT指令,判断AT指令是否为用户动态指令库中的AT指令;用户动态指令库为预先加载的指令库,用户动态指令库中包括AT指令和AT指令处理函数;若确定是,调用用户动态指令库中与AT指令对应的AT指令处理函数;若确定不是,调用默认指令库中与AT指令对应的AT指令处理函数。本申请实施例提供的技术方案可以减少了厂商的开发工作量。

著录项

  • 公开/公告号CN113254075A

    专利类型发明专利

  • 公开/公告日2021-08-13

    原文格式PDF

  • 申请/专利权人 上海移远通信技术股份有限公司;

    申请/专利号CN202110644357.3

  • 发明设计人 匡昌胜;郑雷;

    申请日2021-06-09

  • 分类号G06F9/30(20060101);

  • 代理机构31260 上海晨皓知识产权代理事务所(普通合伙);

  • 代理人成丽杰

  • 地址 200233 上海市徐汇区虹漕路25-1号二层193室

  • 入库时间 2023-06-19 12:13:22

说明书

技术领域

本发明实施例涉及数据处理领域,特别涉及一种指令执行方法、指令执行装置、电子设备及存储介质。

背景技术

AT指令是外部设备和高通模组交互的一种方式。AT指令是以AT开始的字符串,由外部设备通过串口或者USB口发送给高通模组。高通模组处理完毕后,再返回结果给外部设备。无论AT指令执行成功与否,都有对应的响应。

然而,现在的方案中,若一些客户有自身的AT指令需求,只能把需求传递给原始设备制造商(Original Equipment Manufacturer,OEM),OEM厂商再根据客户需求进行开发。对于OEM厂商来说,不同的客户可能有不同的AT指令需求,开发工作量大并难以维护。而且有些AT指令依赖于客户的应用实现,OEM厂商无法实现。

发明内容

本发明实施例的目的在于提供一种指令执行方法、指令执行装置、电子设备及存储介质,可以减少了厂商的开发工作量。

为解决上述技术问题,第一方面,本发明实施例提供了一种指令执行方法,包括:响应于AT指令,判断AT指令是否为用户动态指令库中的AT指令;用户动态指令库为预先加载的指令库,用户动态指令库中包括AT指令和AT指令处理函数;若确定是,调用用户动态指令库中与AT指令对应的AT指令处理函数;若确定不是,调用默认指令库中与AT指令对应的AT指令处理函数。

第二方面,本发明实施例提供了一种指令执行装置,包括:判断模块、第一处理模块和第二处理模块;判断模块用于响应于AT指令,判断AT指令是否为用户动态指令库中的AT指令;用户动态指令库中包括AT指令和AT指令处理函数;第一处理模块用于在确定AT指令是用户动态指令库中的AT指令后,调用用户动态指令库中与AT指令对应的AT指令处理函数;第二处理模块用于在确定AT指令不是用户动态指令库中的AT指令后,调用默认指令库中与AT指令对应的AT指令处理函数。

第三方面,本发明实施例提供了一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上述实施例提及的指令执行方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,实现上述实施例提及的指令执行方法。

本发明实施例提供的一种指令执行方法、指令执行装置、电子设备及存储介质,由于高通模组中预先加载有用户动态指令库,用户动态指令库中存储有用户定义的AT指令和AT指令处理函数,当高通模组接收到用户定义的AT指令时,可以对该AT指令进行处理。这使得用户在需要增加AT指令时,只需要在用户动态指令库中增加AT指令即可,相对于通知厂商开发,更为便捷,减少了用户等待时间,减少了厂商的开发工作量。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是本申请实施例中指令执行方法的流程图;

图2是本申请又一个实施例中指令执行方法的流程图;

图3是本申请另一个实施例中指令执行方法的流程图;

图4是本申请再一个实施例中指令执行方法的流程图;

图5是本申请实施例中指令执行装置的结构示意图;

图6是本申请实施例中电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。

高通模组的AT指令处理类型分类两类,一类在基带芯片(Baseband Processor,BP)中处理,一类在应用芯片(ApplicationProcessor,AP)中处理,AP中处理AT指令的服务程序是ATFWD。ATFWD启动后,会向BP注册支持的AT指令。BP收到AT指令后,先查询是否是BP可以处理的AT指令,如果是,则处理,如果不是,查询是否是AP注册的AT指令,如果是,将AT指令转发给AP的ATFWD服务程序处理。若需要根据高通模组的应用场景,增加AT指令,则需要与OEM沟通,将需求告知OEM,由OEM进行开发,使高通模组支持增加的AT指令。这导致OEM开发工作量大并难以维护,且有些AT指令OEM无法实现。

本申请实施例中,如图1所示的指令执行方法,包括如下步骤。

步骤101:响应于AT指令,判断AT指令是否为用户动态指令库中的AT指令。其中,用户动态指令库为预先加载的指令库,用户动态指令库中包括AT指令和AT指令处理函数。若确定是,执行步骤102,若确定不是,执行步骤103。

步骤102:调用用户动态指令库中与AT指令对应的AT指令处理函数。

步骤103:调用默认指令库中与AT指令对应的AT指令处理函数。

本申请实施例中,由于高通模组中预先加载有用户动态指令库,用户动态指令库中存储有用户定义的AT指令和AT指令处理函数,当高通模组接收到用户定义的AT指令时,可以对该AT指令进行处理。这使得用户在需要增加AT指令时,只需要在用户动态指令库中增加AT指令即可,相对于通知厂商开发,更为便捷,减少了用户等待时间,减少了厂商的开发工作量。

在一个实施例中,在响应于AT指令之前,指令执行方法还包括:加载包含用户动态指令库的插件。本申请中,基于插件的方式对高通模组中的AT指令进行扩展,不涉及高通模组的原始程序,因此,用户可以在没有ATFWD源码的情况下,开发AT指令。由于用户实现的AT指令和厂商实现的AT指令分开,减少了两者实现的AT指令之间发生冲突的情况。

需要说明的是,本领域技术人员可以理解,还可以通过其他方式将用户动态指令库加载至高通模组,本实施例仅为举例说明。

可选择的,用户动态指令库中还包括用于指示设置上报函数的操作函数;在加载包含用户动态指令库的插件之后,指令执行方法还包括:通过调用操作函数,将上报函数设置在用户动态指令库中,以供用户动态指令库调用所述上报函数进行非请求结果码(Unsolicited Result Code,URC)上报。具体地,由于用户动态指令库没法直接调用ATFWD里面的函数,通过操作函数,把上报函数设置到用户动态指令库中。用户动态指令库可以定义一个变量,保存这个函数,用户动态指令库就可以调用上报函数。用户通过定义上报函数,发送自己定义的URC。

需要说明的是,本领域技术人员可以理解,实际应用中,可以根据需要设置上报函数,以使上报函数对不同的事件进行上报,本实施例不对上报的事件进行限制。

在一个实施例中,指令执行方法应用于高通模组的应用芯片,高通模组包括应用芯片和基带芯片。在响应于AT指令之前,指令执行方法还包括:向高通模组的基带芯片注册用户动态指令库和默认指令库中的AT指令;其中,基带芯片在接收到AT指令后,若确定AT指令为应用芯片注册的AT指令,将AT指令发送至应用芯片。具体地,高通模组的基带芯片收到AT指令后,先查询该AT指令是否是基带芯片可以处理的AT指令。如果是基带芯片可以处理的AT指令,则基带芯片处理该AT指令。如果不是基带芯片可以处理的AT指令,查询是否是应用芯片注册的AT指令(即用户动态指令库和默认指令库中的AT指令)。如果是应用芯片注册的AT指令,基带芯片将AT指令转发给应用芯片。应用芯片判断AT指令是否为用户动态指令库中的AT指令;若确定是,调用用户动态指令库中与AT指令对应的AT指令处理函数;若确定不是,调用默认指令库中与AT指令对应的AT指令处理函数。的ATFWD服务程序处理。该实施例中,将向基带芯片注册用户动态指令库中的AT指令,使得基带芯片能够获知用户动态指令库中存储的AT指令,进而在接收到该类AT指令时,将该类AT指令转发至应用芯片,以便应用芯片对用户定义的AT指令进行处理。

在一个实施例中,用户动态指令库中还包括获取AT指令列表函数。在向高通模组的基带芯片注册用户动态指令库和默认指令库中的AT指令之前,指令执行方法还包括:调用获取AT指令列表函数,以获取用户动态指令库中的AT指令列表。具体地,用户动态指令库中至少包括获取AT指令列表函数,以便高通模组通过调用该函数获取用户定义的AT指令列表。

可选择的,在调用用户动态指令库中与AT指令对应的AT指令处理函数之后,或者,在调用默认指令库中与AT指令对应的AT指令处理函数之后,指令执行方法还包括:向基带芯片返回AT指令的处理结果。具体地,高通模组的应用芯片在调用AT指令对应的AT指令处理函数后,返回处理结果至基带芯片,以便基带芯片获知AT指令处理结果,执行后续操作。例如,若基带芯片在预设时间内未接收到AT指令的处理结果,则发出报警信息。如,发出错误信息,告知用户高通模组无法处理该AT指令。

需要说明的是,本领域技术人员可以理解,基带芯片还可以进行其他操作,本实施例仅为举例说明。

可选择的,用户动态指令库中还包括初始化函数;在加载包含用户动态指令库的插件之后,指令执行方法还包括:调用初始化函数,以执行初始化函数中的初始化操作。具体地,初始化函数中定义有用户需要进行的初始化操作的相关代码。在包括用户动态指令库的插件被加载后,初始化函数被调用。其中,在插件加载的生命周期,该初始化函数被调用一次。

需要说明的是,本领域技术人员可以理解,用户可以需要,把初始化操作的逻辑放在初始化函数中,以便按照定义的逻辑执行相关的初始化操作,本实施例不做限制。

可选择的,应用芯片中的ATFWD向基带芯片发起创建通信通道请求,以创建基带芯片和应用芯片之间的通信通道,使得基带芯片在接收到应用芯片注册的AT指令时,可以通过该通信通道,将AT指令传输至应用芯片。

以上各实施例可以相互结合相互引用,例如下面是各实施例结合后的例子,然并不以此为限;各实施例在不矛盾的前提下可以任意结合成为一个新的实施例。

在一个实施例中,如图2所示的指令执行方法应用于高通模组的应用芯片,高通模组包括应用芯片和基带芯片。指令执行方法包括如下步骤。

步骤201:加载包含用户动态指令库的插件。

步骤202:向高通模组的基带芯片注册用户动态指令库和默认指令库中的AT指令。其中,基带芯片在接收到AT指令后,若确定AT指令为应用芯片注册的AT指令,将AT指令发送至应用芯片。

步骤203:判断是否接收到AT指令。若确定是,执行步骤204,若确定不是,继续等待AT指令,即继续执行步骤203。

步骤204:响应于AT指令,判断AT指令是否为用户动态指令库中的AT指令。其中,用户动态指令库为预先加载的指令库,用户动态指令库中包括AT指令和AT指令处理函数。若确定是,执行步骤205,若确定不是,执行步骤206。

步骤205:调用用户动态指令库中与AT指令对应的AT指令处理函数。

步骤206:调用默认指令库中与AT指令对应的AT指令处理函数。

在一个实施例中,如图3所示的指令执行方法应用于高通模组的应用芯片,高通模组包括应用芯片和基带芯片。指令执行方法包括如下步骤。

步骤301:加载包含用户动态指令库的插件,通过调用操作函数,将上报函数设置在用户动态指令库中。

具体地,通过调用操作函数,将上报函数设置在用户动态指令库中,以供用户动态指令库调用上报函数进行非请求结果码URC上报。

步骤302:向高通模组的基带芯片注册用户动态指令库和默认指令库中的AT指令。其中,基带芯片在接收到AT指令后,若确定AT指令为应用芯片注册的AT指令,将AT指令发送至应用芯片。

步骤303:判断是否接收到AT指令。若确定是,执行步骤304,若确定不是,继续等待AT指令,即继续执行步骤303。

步骤304:响应于AT指令,判断AT指令是否为用户动态指令库中的AT指令。其中,用户动态指令库为预先加载的指令库,用户动态指令库中包括AT指令和AT指令处理函数。若确定是,执行步骤305,若确定不是,执行步骤306。

步骤305:调用用户动态指令库中与AT指令对应的AT指令处理函数。之后执行步骤307。

步骤306:调用默认指令库中与AT指令对应的AT指令处理函数。

在一个实施例中,如图4所示的指令执行方法应用于高通模组的应用芯片,高通模组包括应用芯片和基带芯片。指令执行方法包括如下步骤。

步骤401:加载包含用户动态指令库的插件。

具体地,应用芯片中包括ATFWD程序和用户实现的用户动态指令库。其中,ATFWD程序是操作系统Linux中AT指令的处理程序,使用基于插件的方式对应用芯片进行扩展。用户实现的用户动态指令库可以是由客户编译生成的动态数据库。用户动态指令库中实现了几个固定名称和类型的函数,包括初始化函数、获取AT指令列表函数、AT指令处理函数和操作函数。ATFWD使用dlopen()函数动态加载用户动态指令库,并使用dlsysm系统库函数获取用户动态指令库中的函数,加载到ATFWD程序中。其中,dlopen()是一个计算机函数,功能是以指定模式打开指定的动态链接库文件,并返回一个句柄给dlsysm()的调用进程。

步骤402:调用初始化函数,以执行初始化函数中的初始化操作。

步骤403:向高通模组的基带芯片注册用户动态指令库和默认指令库中的AT指令。其中,基带芯片在接收到AT指令后,若确定AT指令为应用芯片注册的AT指令,将AT指令发送至应用芯片。

步骤404:是否接收到AT指令。若确定是,执行步骤405,否则,继续等待AT指令,即继续执行步骤404。

步骤405:响应于AT指令,判断AT指令是否为用户动态指令库中的AT指令。其中,用户动态指令库为预先加载的指令库,用户动态指令库中包括AT指令和AT指令处理函数。若确定是,执行步骤406,若确定不是,执行步骤407。

步骤406:调用用户动态指令库中与AT指令对应的AT指令处理函数。之后执行步骤408。

步骤407:调用默认指令库中与AT指令对应的AT指令处理函数。

步骤408:向基带芯片返回AT指令的处理结果。

具体地,应用芯片的ATFWD程序收到AT指令后,首选查找用户实现的用户动态指令库是否支持该AT指令。如果支持,则调用用户动态指令库的AT指令处理函数,处理完成后,将结果返回给基带芯片。如果不是,则调用ATFWD程序中对应的AT指令处理函数,处理完成后,将结果返回给基带芯片。

可选择的,应用芯片在执行图4所示的指令执行方法的流程中,通过调用操作函数,将上报函数设置在用户动态指令库中,以供用户动态指令库调用上报函数进行URC上报。

在一个实施例中,用户实现的用户动态指令库中固定名称和类型的函数范例如下:

typedef struct{

char*cmd;

ql_cu_at_handler_f*handler;

}ql_cu_at_def_t;

int ql_cu_at_init(void);

ql_cu_at_def_t*ql_cu_at_get_list(void);

int ql_cu_at_set_urc_handler(ql_cu_at_send_urc_f*func);

上述函数范例为用户实现的AT指令的数据结构形式。用户在插件里把要实现的AT指定定义为这种结构的数组,ATFWD通过获取AT指令列表函数(如名称为ql_cu_at_get_list的函数)获取到这个数组。其中,char*cmd为AT指令名称,ATFWD程序根据这个名称判断AT指令是在插件里实现的还是ATFWD里面实现;ql_cu_at_handler_f*handler为AT指令处理函数,定义的AT指令被执行时候,会调用该函数;ql_cu_at_def_t是自定义的结构体名称,也可以定义为其他名称,此处仅为举例;int ql_cu_at_init(void)表示初始化函数,这个函数在插件加载后会被执行,用户可以把一些初始化操作放到这个函数中执行;ql_cu_at_def_t*ql_cu_at_get_list(void)表示获取所有客户定义的AT指令列表,被ATFWD程序调用;int ql_cu_at_set_urc_handler(ql_cu_at_send_urc_f*func)表示上报函数,如果用户的插件里需要发送URC,可以调用这个函数返回的发送URC的函数。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本申请实施例还提供一种指令执行装置,如图5所示,包括:判断模块501、第一处理模块502和第二处理模块503。判断模块501用于响应于AT指令,判断AT指令是否为用户动态指令库中的AT指令;用户动态指令库中包括AT指令和AT指令处理函数。第一处理模块502用于在确定AT指令是用户动态指令库中的AT指令后,调用用户动态指令库中与AT指令对应的AT指令处理函数。第二处理模块503用于在确定AT指令不是用户动态指令库中的AT指令后,调用默认指令库中与AT指令对应的AT指令处理函数。

不难发现,本实施例为与上述方法实施例相对应的系统实施例,本实施例可与上述方法实施例互相配合实施。上述方法实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在上述方法实施例中。

值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。

本申请实施例还提供一种电子设备,如图6所示,包括:至少一个处理器601;以及与至少一个处理器601通信连接的存储器602;其中,存储器存储有可被至少一个处理器601执行的指令,指令被至少一个处理器601执行,以使至少一个处理器601能够执行上述方法实施例。

其中,存储器602和处理器601采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器601和存储器602的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器601处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器601。

处理器601负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器602可以被用于存储处理器601在执行操作时所使用的数据。

本申请实施例还提供一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施例是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号