基于硬件系统的串口可靠传输方法及装置的制作方法

文档序号:7854138阅读:143来源:国知局
专利名称:基于硬件系统的串口可靠传输方法及装置的制作方法
技术领域
本发明涉及通信接口的传输技术,特别是涉及基于硬件系统的串口可靠传输方法及装置。
背景技术
UART (Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种常见的通讯接口装置。这种接口的历史可追溯到计算机尚未诞生之前,但时至今日仍存在于各种专用设备、个人计算机、嵌入式系统当中。通用异步收发传输器是基·于字符传输的,例如需要发送由若干字符组成一个数据包,则先发送BYTE0、BYTE1最后到BYTEn。在传输每个字符时,由物理层的协议规范定义了起始位、数据位、结束位、校验位,用于保证单个字符可靠传输。在实际应用中,只传输一个字符数据很少见。通常的应用是传输由几十甚至更多字符组成的数据包。在大多数的嵌入式系统,核心部分通常只有一个8位或16的MCU0 MCU的软件系统由一个不断执行应用事务的大循环以及几个中断事务组成。中断事务的优先级比大循环执行的应用事务要高。中断事务包括串口中断接收事务,还有定时器中断事务、外部中断事务等等。如果串口中断事务时间耗费过长,会引起其他中断事务丢失以及应用事务的执行,系统实时性差。对于应用层的服务模式是服务方等待请求方的请求;请求方发送请求命令;月艮务方接收请求命令并处理;服务方返回应答。传统技术当中,这种服务模式的实现方法是自定义固定帧同步机制。即请求方与服务方所有的数据交互都是基于自定义数据帧进行,数据帧的长度是定长的。也就是说每次数据交换单元是一个定长帧。请求方把请求命令进行一层帧封装,再通过串口按字符依次发送出去;服务方依次接收到字符并缓存在缓冲区,同时计算字符数量,当达到了预先定义好的数量后,取出这个数据帧做进一步处理并返回应答。因为物理层的串口发送是基于字符的,所以对于定长帧则需要多次启动物理层串口进行传输。相应地,因为物理层的串口接收也是基于字符的,所以接收方也需多次启动物理层进行接收,将接收到的字符放入缓冲区。由于这种方法对每个数据帧都是定长的,对于某些含字节较少的数据(例如控制信号),会造成空间和时间上的浪费,使用起来显得不够灵活。

发明内容
基于此,有必要针对上述问题,提供一种基于硬件系统的串口可靠传输方法及装置,能够提供一种串口传输可变帧的机制,节省传输带宽的空间及时间。—种基于硬件系统的串口可靠传输方法,包括读取缓冲存储器的数据,并写入缓冲区,释放串口中断业务;根据预设字段,在所述缓冲区的数据中查找可变长数据帧;解释该可变长数据帧,接收可变长数据帧内的有效信息。相应地,一种基于硬件系统的串口可靠传输装置,包括
数据转移单元,用于读取缓冲存储器的数据,并写入缓冲区;与所述数据转移单元相连的串口控制单元,用于释放串口中断业务;与所述数据转移单元相连的数据帧查找单元,用于根据预设字段,在所述缓冲区的数据中查找可变长数据帧;与所述数据帧查找单元相连的信息解释单元,用于解释该可变长数据帧,接收可变长数据帧内的有效信息。实施本发明,具有如下有益效果本发明提供了一种串口中断业务的快速处理机制,在读取缓冲存储器的数据,并写入缓冲区之后,马上释放串口中断业务,在后台对缓冲区的数据进行处理,避免中断业务占用时间过长而带来的其它中断业务的丢失、业务传输数据的丢失以及影响系统实时性等问题。另外,与传统固定长度帧的方式不同,本发明提供的可变长数据帧能够节省传输带宽和处理时间,进一步提高了系统的灵活性。


图I为本发明一种基于硬件系统的串口可靠传输方法的流程图;图2为本发明一种基于硬件系统的串口可靠传输方法的第一实施例流程图;图3为本发明一种基于硬件系统的串口可靠传输方法的第二实施例流程图;图4为本发明的第二实施例的状态转移图;图5为本发明一种基于硬件系统的串口可靠传输装置的示意图;图6为本发明一种基于硬件系统的串口可靠传输装置的第一实施例示意图;图7为本发明一种基于硬件系统的串口可靠传输装置的第二实施例示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。图I为本发明一种基于硬件系统的串口可靠传输方法的流程图,包括SlOl :读取缓冲存储器的数据,并写入缓冲区,释放串口中断业务;S102 :根据预设字段,在所述缓冲区的数据中查找可变长数据帧;S103 :解释该可变长数据帧,接收可变长数据帧内的有效信息。串口数据接收采用中断事务方式,这种方式具有很好的实时性。因为中断事务在嵌入式系统中具有最高的优先级。当系统使能多个中断源时,设置串口接收中断具有最高的优先级。无论当前系统处于处理什么事务,当串口接收中断发生时,系统会跳转到串口接收中断处理程序执行。读取硬件缓冲区的内容,将读取到的数据放入自定义的缓冲区。与传统技术不同,本发明并非等到解释完这些数据再释放串口中断业务。由于该串口中断业务具有最高的优先级,且其中断时间不宜过长,故此,本发明将串口接收存储在缓冲存储器中的数据转移到缓冲区当中,交由后台串口接收处理程序进行处理。在数据写入缓冲区之后,马上释放串口中断业务,以便提高系统的实时性。串口数据处理程序从缓冲区找出一个可变长数据帧。查找过程中,串口数据处理程序首先判断缓冲区是否有数据,如果有数据,再进行预设字段的查找。预设字段可由一个或几个特殊的字节组成,以方便适合处理程序的查找。当找到可变长数据帧后,解释该可变长数据帧,接收可变长数据帧内的有效信息。其中,解释的方式可依据可变长数据帧的自定义信号格式。简单举例,可变长数据帧的信号格式可以为“预设字段+有效信息”,则解释时,只需提取预设字段之间的信息即为有效信息。由于使用了可变长数据帧,信号格式中的有效信息并非固定长度,对于某些只传输几个字节的数据来说,本发明能够节省传输带宽空间以及节约传输时间。需要补充说明的是,上述自定义的信号格式并非唯一,在下述图2的实施例当中,本发明还定义了一种优选的信号格式。所有基于本发明思想的类似格式变换,均应属于本发明的保护范围。图2为本发明一种基于硬件系统的串口可靠传输方法的第一实施例流程图。与图I相比,图2定义了一种优选的信号格式,并基于此对本发明的实施方式做进一步的改进。该信号格式定义的可变长数据帧的字段构成为同步位、帧长度、有效信息(payload)。S201 :读取缓冲存储器的数据,并写入缓冲区,释放串口中断业务;S202:所述可变长数据帧的预设字段包括同步位、帧长度和有效信息,在所述缓冲区的数据中查找同步位字段;S203 :当查找成功,根据所述帧长度字段提取所述可变长数据帧;S204 :解释该可变长数据帧,接收可变长数据帧内的有效信息。所述同步位用于定义可变长数据帧的起始位,同步位后面的帧长度代表了该数据帧有效信息有多长。根据数据帧长度来判断后续有多少字节都是属于该数据帧的有效内容。数据帧长度字节后面紧跟着的是该数据帧的有效信息。有效信息是该数据帧真正有效的内容。系统依此接收到传输的数据内容。上述“预设字段”采用同步位予以实现,可以便于查找可变长数据帧。所述帧长度有助于确认该可变数据帧的长度,确保串口信息的可靠传输。当查找到的帧长度不符合预设规定,则丢弃该可变长数据帧,查找下一个同步位字段。其中,该预设规定可以是,在帧长度的数据范围内还包括同步位所自定义的特殊字符,则显然,该可变长数据帧传输出错,需要丢弃。同理,本发明不排除其它利用帧长度检验信息可靠性的规定。图3为本发明一种基于硬件系统的串口可靠传输方法的第二实施例流程图。与图2相比,图3进一步定义了一种更优信号格式,并基于此对本发明的实施方式做进一步的改进。该信号格式定义的可变长数据帧的字段构成为同步位、帧长度、有效信息(payload)和校验位。与前述实施例不同,本实施的有效信息后面还包括校验位字段,程序可以据此来判断接收到的该数据帧是否有错误。进一步地,若没有错误,在程序对接收数据处理完毕后,返回相应的应答包通知对方,则对方也可以据此获知此次发送的信息无误。S301 :读取缓冲存储器的数据,并写入缓冲区,释放串口中断业务;S302:所述可变长数据帧的预设字段包括同步位、帧长度、有效信息和校验位,在所述缓冲区的数据中查找同步位字段;判断是否查找成功,“是”则转入步骤S303 ;“否”则转入步骤S308 ;S303 :当查找成功,根据所述帧长度字段提取所述可变长数据帧;S304 :根据所述同步位、所述帧长度和所述有效信息的字段,计算该可变长数据帧的校验和;
S305:将所述校验和与所述校验位的数据进行比较,判断所述可变长数据帧接收正常;判断是否正常接收,“是”则转入步骤S306 ;“否”则转入步骤S308 ;S306 :接收可变长数据帧内的有效信息;判断是否数据末端,“是”则转入步骤S307 ;“否”则返回步骤S302 ;S307 :根据业务指令对所有的有效信息进行处理,再启动串口中断业务,返回应答包;S308 :丢弃该可变长数据帧,查找下一个同步位字段。
在计算机系统的多任务里,中断事务具有最高的优先级。所以通常把对实时性要求很高的事务放在中断处理程序里完成。串口数据接收也是采用中断事务处理方式实现。处理过程耗费的时间越短越好,避免因为在处理过程又一个串口接收数据的到来而导致数据丢失的情况。控制器(CPU/MCU)响应串口接收中断,进入处理程序,读取串口模块的硬件缓冲区的数据,写入一个自定义的缓冲区中,马上退出,释放串口中断业务。优选地,本实施例的缓冲区采用环形缓冲区予以实现,它的应用很广泛,它是一个先进先出的循环缓冲区。环形缓冲区通常有一个读指针和一个写指针。读指针指向当前缓冲区可读的数据,写指针指向当前缓冲区可写的数据。环形缓冲区初始化时,读指针和写指针都指向缓冲区的首端。读用户首先判断缓冲区中是否有数据可读,如果有数据可读,那么读指针的指向数据读出来并且读指针指向下一个位置。最后判断读指针是否指向缓冲区末端的下一个位置,如果是这样,那么读指针重新指向缓冲区的首端。写入用户首先判断缓冲区是否满出,如果还有数据可写入,那么将数据写入写指针指向的位置并且写指针指向下一个位置。最后判断写指针是否指向缓冲区的末端下一个位置,如果是这样,那么将写指针重新指向缓冲区的首端。因为只有串口数据接收处理程序会修改写指针,所以写入过程不需加互斥锁,提高了接收处理速度。串口数据接收处理程序将串口模块硬件缓冲区的数据读取出来,写入环形缓冲区后,立刻退出。做好下一次中断接收准备。如前面所述,串口数据接收是在中断事务实现的,这种处理方式提高接收实时性,不会导致数据丢失的情况。数据处理过程从环形缓冲区读取数据,找出可变长的数据帧。这个过程要耗费比较多的时间,所以不能放在中断事务实现。串口接收程序轮询环形缓冲区的内容,将数据读取出来并提取一条完整的可变长帧。查找可变长的数据帧过程也是一个状态机变换的过程。一个可变长的数据帧由以下数据格式组成同步位、帧长度、有效信息(payload)、校验位。如下表所示
同步位帧长度有效信息校验位帧长度字段代表了该数据帧有效信息的实际长度,因此,不同的帧长度该数据帧的有效信息长度是不同的。根据可变长数据帧的四个字段,引入一种具有以下四种状态的有限状态机进行分析状态A、状态B、状态C、状态D。如图4所示。图4为本发明的第二实施例的状态转移图。各个状态描述如下表所示
权利要求
1.一种基于硬件系统的串口可靠传输方法,其特征在于,包括 读取缓冲存储器的数据,并写入缓冲区,释放串口中断业务; 根据预设字段,在所述缓冲区的数据中查找可变长数据帧; 解释该可变长数据帧,接收可变长数据帧内的有效信息。
2.根据权利要求I所述的基于硬件系统的串口可靠传输方法,其特征在于,所述可变长数据帧的预设字段包括同步位、帧长度和有效信息,根据预设字段,在所述缓冲区的数据中查找可变长数据帧的步骤,包括 在所述缓冲区的数据中查找同步位字段; 当查找成功,根据所述帧长度字段提取所述可变长数据帧。
3.根据权利要求2所述的基于硬件系统的串口可靠传输方法,其特征在于,所述可变长数据帧的预设字段还包括校验位,解释该可变长数据帧的步骤,包括 根据所述同步位、所述帧长度和所述有效信息的字段,计算该可变长数据帧的校验和; 将所述校验和与所述校验位的数据进行比较,判断所述可变长数据帧接收正常。
4.根据权利要求2或3所述的基于硬件系统的串口可靠传输方法,其特征在于 当查找到的帧长度不符合预设规定,或者当解释所述可变长数据帧的过程中出现异常,则丢弃该可变长数据帧,查找下一个同步位字段。
5.根据权利要求I至4任一项所述的基于硬件系统的串口可靠传输方法,其特征在于,接收可变长数据帧内的有效信息的步骤之后,还包括 判断当前指针指向所述缓冲区的数据末端,根据业务指令对所有的有效信息进行处理,再启动串口中断业务,返回应答包; 当所述当前指针不是指向所述缓冲区的数据末端时,查找下一个同步位字段。
6.一种基于硬件系统的串口可靠传输装置,其特征在于,包括 数据转移单元,用于读取缓冲存储器的数据,并写入缓冲区; 与所述数据转移单元相连的串口控制单元,用于释放串口中断业务; 与所述数据转移单元相连的数据帧查找单元,用于根据预设字段,在所述缓冲区的数据中查找可变长数据帧; 与所述数据帧查找单元相连的信息解释单元,用于解释该可变长数据帧,接收可变长数据帧内的有效信息。
7.根据权利要求6所述的基于硬件系统的串口可靠传输装置,其特征在于,所述数据中贞查找单元,包括 同步位获取单元,用于在所述缓冲区的数据中查找同步位字段; 与所述同步位获取单元相连的数据帧提取单元,用于根据所述帧长度字段提取所述可变长数据帧。
8.根据权利要求7所述的基于硬件系统的串口可靠传输装置,其特征在于,所述信息解释单元,包括 校验计算单元,用于根据所述同步位、所述帧长度和所述有效信息的字段,计算该可变长数据帧的校验和; 与所述校验计算单元相连的比较判断单元,用于将所述校验和与所述校验位的数据进行比较,判断所述可变长数据帧接收正常; 与所述比较判断单元相连的信息接收单元,用于接收可变长数据帧内的有效信息。
9.根据权利要求7或8所述的基于硬件系统的串口可靠传输装置,其特征在于,还包括 与所述数据帧提取单元、所述比较判断单元分别相连的异常处理单元,用于在查找到的帧长度不符合预设规定,或者在解释所述可变长数据帧的过程中出现异常的情况下,丢弃该可变长数据帧,查找下一个同步位字段。
10.根据权利要求6至9任一项所述的基于硬件系统的串口可靠传输装置,其特征在于,还包括 与所述信息解释单元、数据帧查找单元分别相连的接收完整单元,用于判断当前指针指向所述缓冲区的数据末端;所述数据帧查找单元,还用于在所述当前指针不是指向所述缓冲区的数据末端时,查找下一个同步位字段; 与所述接收完整单元相连的命令执行单元,用于根据业务指令对所有的有效信息进行处理; 与所述命令执行单元、所述串口控制单元分别相连的数据应答单元,用于返回应答包;其中,所述串口控制单元还用于启动串口中断业务。
全文摘要
本发明公开了基于硬件系统的串口可靠传输方法及装置。该方法包括读取缓冲存储器的数据,并写入缓冲区,释放串口中断业务;根据预设字段,在所述缓冲区的数据中查找可变长数据帧;解释该可变长数据帧,接收可变长数据帧内的有效信息。采用本发明,可以提供了一种串口中断业务的快速处理机制,在读取缓冲存储器的数据,并写入缓冲区之后,马上释放串口中断业务,在后台对缓冲区的数据进行处理,避免中断业务占用时间过长而带来的其它中断业务的丢失、业务传输数据的丢失以及影响系统实时性等问题。
文档编号H04L1/00GK102724122SQ20121020907
公开日2012年10月10日 申请日期2012年6月21日 优先权日2012年6月21日
发明者何常, 艾君锐, 陈昶 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1