一种处理同步at指令的方法及装置的制作方法

文档序号:7550578阅读:238来源:国知局
专利名称:一种处理同步at指令的方法及装置的制作方法
技术领域
本发明涉及通信领域,特别涉及一种处理同步AT指令的方法及装置。
背景技术
在传统2G/3G模块应用中,通常需要外挂一个MCU(Micro Control Unit,微控制单兀)和 memory。物理上通过 UART (Universal AsynchronousReceiver/Transmitter,通用异步接收/发送装置)接口或者USB (Universal SerialBus,通用串行总线)接口等串口进行通信,外部MCU通过串口发送AT指令到2G/3G模块,达到控制和获取2G/3G模块状态,实现上网,打电话,发短信等应用目标。由于模块处理AT指令需要时间,当用户发送完AT指令后,一般情况下不会马上返回处理结果,只会返回简单的状态,如AT指令的参数检查是否准确,AT指令是否能够下发到Modem里等信息,而不是实际处理结果。如图1所示是传统应用中异步AT指令处理的流程图:S102、MCU 端发送 AT 指令;S104、模块端返回处理状态;S106、MCU端继续执行接下来的其他代码,该代码与AT指令无关;S108、模块端执行AT指令;S110、当Module端的AT指令处理完成,通过串口把AT的响应告诉MCU端;S112、MCU端解析该AT响应,MCU端收到后会比较字串解析AT响应,以获得相关AT指令的处理结果。所有的AT响应在MCU端都是在同一个回调中处理,由于AT响应没有头信息,那么MCU端的代码只能通过比较字符串来判断收到的响应到底是哪条AT响应。基本每条AT响应在上报完具体内容后,基本都会同时上报OK或者ERROR,用以表明AT响应的状态。那就会遇到问题,收到的OK或者ERROR到底是对应着哪条AT指令的响应呢?只能靠MCU端维系复杂的状态机来区分。结合这些情况,我们很容易看到现有技术存在以下缺点:DMCU端只能靠比较字符串来判断响应对应于哪条AT指令。2)MCU端的AT响应解析中,需要维系复杂的状态机,才能解析到同一条类似“0K”或“ERROR”响应到底对应哪条AT响应。3)调试维护麻烦,与AT指令发送顺序息息相关,代码的耦合度过高。

发明内容
本发明的特征和优点在下文的描述中部分地陈述,或者可从该描述显而易见,或者可通过实践本发明而学习。为克服现有技术的问题,本发明提供一种处理同步AT指令的方法和装置,以降低MCU端AT响应代码的耦合度。
本发明解决上述技术问题所采用的技术方案如下:根据本发明的一个方面,本发明提供的一种处理同步AT指令的方法包括以下步骤:A、MCU端某一任务获得AT资源的锁权限;B、向模块端发送AT指令;C、接收模块端发送的AT响应;D、释放AT资源的锁权限。优选地,上述步骤A具体为:启用同步锁控制同一时刻只有一个任务获得锁权限。优选地,上述步骤B具体为:通过串口向模块端发送一个AT指令的命令包。优选地,上述步骤B和步骤C之间还包括资源等待及任务调度的步骤,具体为:Cl、判断模块端的AT响应是否完成;C2、如果完成,转入步骤D ;如果没有完成,调用OS层的调度机制运行其他任务;C3、其他任务处理完成,转入步骤Cl。优选地,上述方法之后还包括以下步骤:AT响应以获得AT指令的处理结果。根据本发明的另一个方面,本发明提供的一种处理AT指令的装置包括同步锁、发送模块和接收模块,其中:同步锁用于任务队列中的任务获取和释放AT资源的锁权限;发送模块用于获得AT资源的锁权限的任务向模块端发送AT指令;接收模块用于接收模块端发送的AT响应。优选地,上述装置还包括资源等待及任务调度模块,该模块用于判断模块端的AT响应是否完成,当判断出没有完成时,调用OS层的调度机制,执行其他任务。优选地,上述装置还包括解析模块,资源等待及任务调度模块,该模块用于解析AT响应以获得AT指令的处理结果。根据本发明的实施例,通过启用同步锁,当一个任务获得了该锁,其他任务此刻无法再发送AT指令,从而保证多个任务可以发送AT指令,但某一时刻只有I个任务发送AT指令,AT响应与AT发送顺序无关,不易出错,AT响应具有确定性,易调试,易维护,易扩展,提高了代码的模块化,降低MCU端AT响应代码的耦合度。通过阅读说明书,本领域普通技术人员将更好地了解这些技术方案的特征和内容。


此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是传统的异步AT指令处理流程图;图2是本发明实施例提供的一种处理同步AT指令的方法流程图;图3是本发明优选实施例提供的一种资源等待及任务调度流程图;图4是本发明实施例提供的一种处理同步AT指令的装置模块结构图。
具体实施例方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图2所示为本发明实施例提供的一种处理AT指令的方法流程图;该方法包括:S202、获得AT资源的锁权限;具体来说,本步骤中通过启用同步锁来控制锁权限,锁是指OS里用以保护临界资源的锁,是按照任务队列的顺序,只有当前面一个获得锁的任务释放了锁资源,后面的任务才能获得锁资源。只有在获得此同步锁的前提下,才能向模块端发送AT指令,这样当一个任务获得了该锁,其他任务此时是无法再发送AT指令了。用以保证某一时刻只有I个任务在发送AT指令。S204、发送AT指令到模块端;本步骤发送AT指令跟之前异步处理模式下相同:向UART或者USB发送一个AT指令的命令包,用以告诉模块端需要处理哪条AT指令。S206、接收模块端发送的AT响应;当模块端发送的AT指令处理完成,会通过串口把AT响应告诉MCU端。S208、释放AT资源的锁权限。优选地,为了能够同步AT处理过程,即每发一次AT指令,调用等待函数,当等待函数返回,此时也就得到了模块的AT响应。在步骤S204和步骤S206之间还包括资源等待及任务调度的步骤,具体为:Cl、判断模块端的AT响应是否完成;C2、如果AT响应完成,执行S206 ;如果没有完成,调用OS层的调度机制运行其他任务;C3、其他任务处理完成,执行Cl。这样当AT响应没有完成时,可以让出CPU资源,给其他任务执行的机会,其他任务此时可以执行相应代码。优选地,为了获得AT指令的处理结果,上述方法之后还包括:E、该任务解析AT响应,获得AT指令的处理结果。由于AT响应对应的AT指令关系确定,本步骤中直接解析AT响应,而不再需要判断该AT响应是针对哪个AT指令的了。根据本发明的实施例,通过启用同步锁,当一个任务获得了该锁,其他任务此刻无法再发送AT指令,从而保证多个任务可以发送AT指令,但某一时刻只有I个任务发送AT指令,AT响应与AT发送顺序无关,不易出错,AT响应具有确定性,易调试,易维护,易扩展,提高了代码的模块化,降低MCU端AT响应代码的耦合度。如图3所示是本发明优选实施例提供的一种资源等待及任务调度流程图,以taskl已发送AT指令为例:S302、taskl 已发送 AT 指令;S304、判断模块端Al是否处理完成,如果处理完成,执行步骤S314,否则执行步骤S306 ;
S306、保存该taskl上下文(现场),比如R14等寄存器现场,用于其他任务执行完毕后返回到该现场;S308、从就绪任务队列中选择一个合适的task2执行,直接恢复选定task2的上下文,比如赋值R14到PC;S310、task2任务执行完成后,如果taskl还不能执行,可以继续执行其他任务(如task3),直到taskl可以执行为止;S312、恢复到taskl的上下文;S314、执行taskl接下来的代码。如图4所示是本发明实施例提供的一种处理同步AT指令的装置模块结构图,该装置包括同步锁402、发送模块404和接收模块406,其中:同步锁402用于获取和释放AT资源的锁权限;发送模块404用于获取AT资源的锁权限的任务向模块端发送AT指令;接收模块406用于接收模块端发送的AT响应。优选地,为了能够使用同步AT模式,当调用发送AT指令的函数后,函数调用返回的时候就已经得到了模块的AT响应,本发明实施例的装置还包括资源等待及任务调度模块405,该模块用于判断模块端的AT响应是否完成,当判断出没有完成时,调用OS层的调度机制,执行其他任务。优选地,为了获得AT指令处理结果,本发明实施例的装置解析模块,该模块用于解析AT响应以获得AT指令的处理结果。通过本发明的实施例,通过启用同步锁402控制某一时刻只有I个任务发送AT指令,AT响应与AT发送顺序无关,不易出错,AT响应具有确定性,易调试,易维护,易扩展,提高了代码的模块化,降低MCU端AT响应代码的耦合度。上述说明示出并描述了本发明的优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
权利要求
1.一种处理同步AT指令的方法,其特征在于,所述方法包括以下步骤: A、MCU端的某一任务获得AT资源的锁权限; B、向模块端发送AT指令; C、接收模块端发送的AT响应; D、释放AT资源的锁权限。
2.根据权利要求1所述的方法,其特征在于,所述步骤A具体为:启用同步锁控制同一时刻只有一个任务获得锁权限。
3.根据权利要求1所述的方法,其特征在于,所述步骤B具体为:通过串口向模块端发送一个AT指令的命令包。
4.根据权利要求3所述的方法,其特征在于,所述串口包括:UART接口或USB接口。
5.根据权利要求1所述的方法,其特征在于,在所述步骤B和所述步骤C之间还包括资源等待及任务调度的步骤,具体为: Cl、判断模块端的AT响应是否完成; C2、如果完成,转入步骤D ;如果没有完成,调用OS层的调度机制运行其他任务; C3、其他任务处理完成,转入步骤Cl。
6.根据权利要求1-5任意一项权利要求所述的方法,其特征在于,所述步骤D之后包括以下步骤: E、所述任务解析所述AT响应,获得所述AT指令的处理结果。
7.—种处理同步AT指令的装置,其特征在于,所述装置包括:同步锁、发送模块和接收模块,其中: 所述同步锁用于任务队列中的任务获取和释放AT资源的锁权限; 所述发送模块用于所述获得AT资源的锁权限的任务向模块端发送AT指令; 所述接收模块用于接收模块端发送的AT响应。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括资源等待及任务调度模块,用于判断模块端的AT响应是否完成,当判断出没有完成时,调用OS层的调度机制,执行其他任务。
9.根据权利要求7或8所述的装置,其特征在于,所述装置还包括解析模块,所述解析模块用于所述任务解析所述AT响应,获得所述AT指令的处理结果。
全文摘要
本发明公开了一种处理同步AT指令的方法和装置,应用于通信领域,该方法包括以下步骤MCU端的某一任务获得AT资源的锁权限后,向模块端发送AT指令;接收到模块端发送的AT响应后,释放AT资源的锁权限。本发明实施例的方法和装置通过启用同步锁控制,多个任务可以发送AT指令,但同一时刻只有1个任务发送AT指令,AT响应与AT指令的发送顺序无关,不易出错,AT响应具有确定性,易调试,易维护,易扩展,提高了代码的模块化,降低MCU端AT响应代码的耦合度。
文档编号H04M1/725GK103118181SQ20131001773
公开日2013年5月22日 申请日期2013年1月17日 优先权日2013年1月17日
发明者刘建伟 申请人:深圳市中兴移动通信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1