Sparcv8监控软件中总线协议无关通信方法

文档序号:7683642阅读:187来源:国知局
专利名称:Sparc v8监控软件中总线协议无关通信方法
技术领域
本发明涉及一种总线协议无关的通信方法,尤其涉及在采用SPARC V8处理器的目标机和采用PC机的宿主机之间实现总线协议无关的通信方法。
背景技术
对于嵌入式系统开发来说,监控软件在嵌入式系统的调试与应用过程中具有重要的作用。一般监控软件的运行模式是在宿主机上运行一个控制台,在目标机上运行一个代理软件,通过命令解析模块把信息或数据传送到目标。代理和控制台之间的信息交换需要用到通信总线,根据总线种类不同,通信协议也是不一样的,因此信息交换过程中完成的数据交换和命令交换需要根据通信协议的不同制定不同的信息交换协议,这样才能通过上位机去控制下位机的运行。目前的作法是基于一种特定的总线,命令交互过程与总线协议密切相关,这种一对一的通信方式不支持多种通信总线,需要根据总线类型的不同制定不同的通信协议和数据传输格式。目前的通信结构如图1所示。SPARC V8 (Scalable Processor Architecture V8) ^ SUN Microsystems
纪80年代提出的一种开放性的32位RISC处理器体系结构。SPARC V8作为一种通用的处理器,应用于多种不同的环境。以SPARC V8为处理器的目标机和宿主机之间的通信总线有多种,因此,监控软件所涉及的目标机和宿主机之间的通信协议必须适应多种总线的通信要求,而目前一对一的总线通信方式限制了嵌入式系统开发的广泛适应性。

发明内容
为了适应各种类型的通信总线要求,提高系统开发效率,需要一种通用的与具体通信端口无关的通信协议,从而在不用改变数据结构情况下达到适应不同通信协议的目的。本发明提供一种总线协议无关的通信方法,用于在宿主机与目标机之间建立与具体通信端口无关的命令驱动式通信协议;所述宿主机包括文件管理与数据传送模块、协议命令处理模块和各种总线通信处理模块,其中文件管理与数据传送模块主要完成对文件的管理操作和对界面交互功能的识别与管理,协议命令处理模块用于通信命令和数据的发送与接收;所述目标机包括命令执行与数据传送模块、命令解析模块和各种总线通信处理模块,其中命令执行与数据传送模块用于在宿主机的控制下,将数据传送到目标机的指定区域,或将目标机指定区域的数据传给宿主机,命令解析模块用于完成各种通信协议命令的解析、执行;其特征在于所述宿主机还包括设置在协议命令处理模块与各种总线通信处理模块之间的通信管理模块,所述目标机还包括设置在命令解析模块与各种总线通信处理模块之间的通信管理模块,所述通信管理模块设置了四个缓冲区,分别为命令执行缓冲区、命令接收缓冲区、数据执行缓冲区、数据接收缓冲区,并对具体的通信端口进行管理;其中,所述目标机的通信管理模块解析通信命令的过程如下
3
(1)首先对目标机做初始化,并初始化所有通信端口和缓冲区,转步骤O),进入通信端口选择过程;(2)在解析通信命令之前,首先对通信端口进行识别,通信时采用自动识别方法选择通信端口,系统复位后假定所有通信通道都可能作为通信端口 ;如果需要接收串行数据, 则按照预先设定的通道顺序查询各端口,首先查到数据的端口将被选择为临时端口 ;如果从临时端口接收到一个正确的命令,则认为收到该命令的通信通道就是当前选择的通信通道,并将当前通道选择标志送给通信通道选择标志,完成通信通道的选择;(3)识别到可用通信端口后,执行命令解析过程;按照协议约定,宿主机送来的信息包分为缓冲命令包,立即命令包和数据命令包三种,命令包类型由所接收信息包的第一个字符确定;如果是缓冲命令包则执行步骤G),数据命令包执行步骤(5),立即命令包执行步骤(6),其他转步骤(7);(4)接收到缓冲命令包后,首先判断命令长度和校验和是否正确,如果正确则将接收到的数据暂存到命令接收缓冲区,当宿主机通过校验命令确认目标机正确接收了缓冲命令后,再将其切换到命令执行缓冲区,并设置命令执行缓冲区状态为命令就绪状态后转步骤⑵;(5)接收到数据命令包后,将接收到的数据暂存到数据接收缓冲区,当宿主机通过校验命令确认目标机正确接收了该包数据后,设置数据接收缓冲区状态为数据就绪状态后转步骤(7);通过一个命令将其切换到数据执行缓冲区,供缓冲命令执行时使用;(6)接收到立即命令包后,根据命令包类型执行不同的功能命令,同时给宿主机回送一个应答包,并转步骤(7);如果接收的是执行缓冲区中命令的命令,则执行命令缓冲区中存储的缓冲命令,缓冲命令实现的功能包括擦除FLASH,上传程序或数据,下载目标内存的数据,或转移到指定地址去执行程序,执行完毕后转步骤(7);(7)结束本次通信命令解析过程,转步骤(2)。特别地,所述宿主机采用PC机,所述目标机采用SPARC V8处理器为CPU。采用本发明的总线协议无关的通信方法可以任意选择一种通信总线,同时在目标机和宿主机之间建立一种层次化的中间层,即一种虚拟通信协议,该协议采取一种命令应答方式,命令处理与总线通信相互隔离,使得命令的扩展更加方便。对于通信端口来说,命令协议可以自动解析使用哪种端口进行通信,同时可以屏蔽不同通信接口之间的差异性, 在宿主机与目标机之间建立与具体通信端口无关的命令驱动式通信协议,同时支持通信命令及串行通信接口的扩展。


图1是现有技术的目标机与宿主机之间的通信结构图。图2是协议传输的简要框图。图3是本发明的监控软件的总体构成与分层框图。图4是本发明的缓冲区数据流方向示意图。图5是本发明的目标机解析通信命令的运行过程图。
具体实施方式
本实施方式的目标机采用SPARC V8处理器为CPU,宿主机采用PC机,通过155 总线、串行通信总线(UART)、CAN、SPI或SPACEWIRE等总线,对目标机的内存数据或程序进行上传加载和下载回传,控制目标机的程序执行流程。宿主机与目标机之间的命令、数据、 状态应答均采用协议包形式进行传送。通常情况下,总是由PC机首先向目标机发送一个命令包,目标机在正确收到命令包后,根据协议向PC机回送相应的状态应答包。图2是协议传输的简要框图。选择使用何种总线建立宿主机和目标机之间的通信,对于目标机来说是透明的, 并且这种总线是可以变化的,只要符合接口需要就可以。本发明的具体做法是任意选择一种通信总线,同时在目标机和宿主机之间建立一种层次化的中间层,即一种虚拟通信协议, 该协议采取一种命令应答方式,命令处理与总线通信相互隔离,这样可以使得命令的扩展更加方便。对于通信端口来说,通信协议可以自动解析使用哪种端口进行通信,同时可以屏蔽不同通信接口之间的差异性,在宿主机与目标机之间建立与具体通信端口无关的命令驱动式通信协议,同时支持通信命令及串行通信接口的扩展。协议实现时主要由三部分组成运行在PC机上的控制台软件(V8_Loader)、目标上运行的代理软件(V8_Agent)及通信接口协议(CP)三部分组成,这三部分组成整个协议的监控软件。宿主机(PC)上运行V8_Loader以完成通信接口选择、文件管理、数据打包等功能,并按照通信协议与代理软件进行通信,完成数据上下传;代理软件运行在以V8处理器为CPU的目标机上,完成各种通信协议命令的解析、执行,在控制台软件的控制下,将数据传送到目标机的指定区域,或将目标机指定区域的数据传给控制台软件;通信接口协议规定了控制台软件和代理软件之间的通信格式及命令功能与格式。监控软件采用协议约束的分层实现方法和模块化设计方法,图3给出了监控软件的总体构成与分层框图。宿主机包括文件管理与数据传送模块、协议命令处理模块、通信管理模块和各种总线通信处理模块,主要完成通信接口选择、文件管理、数据打包等功能,并按照通信协议与目标机进行通信,完成数据上下传。其中文件管理与数据传送模块主要完成对文件的管理操作(包括文件的长短设置、文件的起始位置边界对齐、通信端口的打开与关闭操作等),和对界面交互功能的识别与管理,协议命令处理模块用于通信命令和数据的发送与接收。底层通信管理模块对具体的通信端口进行管理,是整个协议的核心组成部分,一般的通信管理直接是命令解析模块与底层的总线协议直接进行通信,不经过通信管理模块。本发明的作法是在命令解析模块与直接的总线协议之间设置通信管理模块,通信管理模块相当于一个格式变换的缓冲区,在扩展不同的总线协议时,只要遵从缓冲区的数据交互规范,数据直接存储到缓冲区即可,从而可以满足不同的总线通信协议,实际的缓冲区对于上层的命令解析模块和底层的总线通信处理模块来说是透明的。所述通信管理模块设置了四个缓冲区,分别为命令执行缓冲区、命令接收缓冲区、数据执行缓冲区、数据接收缓冲区,并对具体的通信端口进行管理。底层的各种通信总线可以直接发送数据到通信管理层,通信管理层通过对数据重组组成新的数据格式,直接提供给上层的模块使用,因此通信管理模块起到承上启下的作用。目标机包括命令执行与数据传送模块、命令解析模块、通信管理模块和各种总线通信处理模块。目标机中的命令执行与数据传送模块的主要作用是在宿主机的控制下,将数据传送到目标机的指定区域,或将目标机指定区域的数据传给宿主机;命令解析模块从通信层获取命令,主要是完成各种通信协议命令的解析、执行;通信管理模块中设置的缓冲区可以是实际物理存在的,也可以是逻辑上虚拟的,虚拟的缓冲区利用起来更方便,便于管理。通信管理模块按照字节顺序向命令解析模块提供协议包的数据流,命令解析模块将底层的通信管理模块看作是一个虚拟的串行通信接口,按规定的字节顺序从其中接收和发送协议包。图4是通信管理模块与底层的总线通信处理模块和上层的命令解析模块之间的数据流方向示意图。从图中可以看出,该协议实现了一种多层次的协议与接口,将底层通信协议与顶层的命令处理隔离开来,使得监控软件从功能与通信的物理接口两个方面都很容易进行扩展,并且互不影响。为了便于管理,对协议命令进行了分类管理,把协议命令为分三种类型立即命令、缓冲命令和数据命令。这样做的目的是因为监控软件对于不同的命令反应在时效性是不一样的。对于立即命令来说命令是实时的,需要马上进行执行,信息量短;缓冲命令用于对可延时命令进行延时管理,主要是对数据包进行管理;数据命令主要用于对大量数据进行数据包装等。PC机的上行协议包提供上下传的功能命令,分为缓冲命令包、立即命令包和数据包三类(a)缓冲命令包,主要提供上下传的功能命令,上传后先存在目标机的缓冲区中, 待PC机发送执行命令后才执行;目标机执行完成后,只将执行结果存储在命令缓冲区中, 并不向PC机回送任何状态信息,只在PC机使用查询命令时,才将缓冲区中的状态信息作为查询命令的应答包送给PC机。(b)立即命令包,提供目标机的控制、状态查询等功能,上传后会立即执行,目标机也会在执行完成后立即回送一个状态应答包。(c)数据包,主要是用来向目标机注入功能命令的数据块,目标机接收后不回送任何应答,只是将数据放在一个缓冲区中,并根据校验结果设置数据缓冲区的状态。目标机的下行协议包分为状态应答包和数据包两种(a)状态应答包是对来自PC机的立即命令的响应。对于立即命令,目标机在命令校验正确后会立即执行该命令,根据命令要求回送相应的状态应答包。(b)数据包是功能命令的数据块。PC机负责校验数据包的正确性,若不正确时,可通过重新启动缓冲命令的执行来重新获取。不论上行还是下行,所有包的格式均如下前导字符,长度,包内容,校验字节其中前导字符为一个ASCII字符,占用一个字节;长度可为字节,也可为字,表示了包内容的字节数;包内容为命令或数据,长度可变;校验字节是前导字符、长度、包内容按字节异或的结果。在协议包传送过程中,所有内容均按字节传送,16位字先传送低字节,后传送高字节;32位双字,则按最低字节、次低字节、次高字节、最高字节的顺序传送。下面介绍PC机的功能命令。缓冲命令是实际的功能命令。目标机收到后并不立即执行,而是校验正确后,将命令暂存到接收缓冲区,待PC机发出缓冲区切换命令后,再装入执行缓冲区,等PC机发出执行命令后才执行。缓冲命令可以包括擦除命令、上传命令、下传命令、转移命令等,根据需要可以添加不同的功能命令。其中擦除命令是指擦除FLASH中指定区域,或将指定RAM区域填为全0,因为 SPARCV8处理器可以挂接不同类型的存储器,包括PROGRAM ROM(FLASH)、SRAM、DRAM等。擦除的起始地址必须在最小可擦除块的边界对齐;实现时,若不满足边界对齐,可通过下传命令先将多余的数据下载到PC机,待擦除完成后,再上传固化。上传命令是将当前执行数据缓冲区中的数据传送到指定区域,如果使用的V8处理器是32位的,那么上传数据的目标地址须在32位边界对齐,上传的数据长度必须为4的整数倍,如若不能满足要求,则可通过下传命令先将多余的数据下载到PC机,与要上传的数据拼接好再上传。下载命令是将目标机存储器中指定区域的数据下传到PC机,可以指定下载的数据长度,起始地址可以是目标机存储器的任何位置。转移命令可以强制目标机转移到指定地址执行程序,同时转移地址必须是32位双字。命令类型的格式见表1。表格 1
缓冲区命令类型命令含义命令长度(B 代表字节)命令内容擦除命令擦除FLASH指定区域9B ', SA, LN, SA 和 LN 为 32 位双字’ 分别表示擦除的起始地址和长度上传命令将当前执行数据缓冲区中的数据传送到指定区域9B'U',SA,LN, SA和LN为32位双字,分别表示上传数据的0标地址和长度下载命令将目标机存储器中指定区域的数据下传到PC机9B'D',SA,LN, SA和LN为32位双字’分别表示下传数据的起始地址和长度转移命令强制目标机转移到指定地址执行程序5B'J',DA, DA为32位双字,表示H标机的转移地址数据命令用来向目标机的接收数据缓冲区注入一个数据块。目标机上应当实现一个执行数据缓冲区和一个接收数据缓冲区。执行数据缓冲区是缓冲命令执行时的数据,而新收到的数据块总是放入当前的接收数据缓冲区,PC机可通过切换命令实现接收数据缓冲区与执行数据缓冲区的切换。每个数据缓冲区应当包括一个状态指示器,表示数据是否已经得到应用、数据接收是否正确。立即命令是PC机对目标机实现控制与状态查询的直接命令。目标机收到此类命令,只要校验正确就立即执行,并根据要求向PC机回送规定的响应包。若校验不正确,目标机将放弃信息包,不做任何响应。若目标机在接收命令中出现丢失字符的现象,PC机可通过发送无效字节来强迫目标机退出命令接收状态,当然也可以利用超时处理。立即命令的类型包括很多种,具体使用中可以根据需要添加和扩展,立即命令的详细说明见表2。表格权利要求
1.一种总线协议无关的通信方法,用于在宿主机与目标机之间建立与具体通信端口无关的命令驱动式通信协议;所述宿主机包括文件管理与数据传送模块、协议命令处理模块和各种总线通信处理模块,其中文件管理与数据传送模块主要完成对文件的管理操作和对界面交互功能的识别与管理,协议命令处理模块用于通信命令和数据的发送与接收;所述目标机包括命令执行与数据传送模块、命令解析模块和各种总线通信处理模块,其中命令执行与数据传送模块用于在宿主机的控制下,将数据传送到目标机的指定区域,或将目标机指定区域的数据传给宿主机,命令解析模块用于完成各种通信协议命令的解析、执行;其特征在于所述宿主机还包括设置在协议命令处理模块与各种总线通信处理模块之间的通信管理模块,所述目标机还包括设置在命令解析模块与各种总线通信处理模块之间的通信管理模块,所述通信管理模块设置了四个缓冲区,分别为命令执行缓冲区、命令接收缓冲区、数据执行缓冲区、数据接收缓冲区,并对具体的通信端口进行管理;其中,所述目标机的通信管理模块解析通信命令的过程如下(1)首先对目标机做初始化,并初始化所有通信端口和缓冲区,转步骤0),进入通信端口选择过程;(2)在解析通信命令之前,首先对通信端口进行识别,通信时采用自动识别方法选择通信端口,系统复位后假定所有通信通道都可能作为通信端口 ;如果需要接收串行数据,则按照预先设定的通道顺序查询各端口,首先查到数据的端口将被选择为临时端口 ;如果从临时端口接收到一个正确的命令,则认为收到该命令的通信通道就是当前选择的通信通道, 并将当前通道选择标志送给通信通道选择标志,完成通信通道的选择;(3)识别到可用通信端口后,执行命令解析过程;按照协议约定,宿主机送来的信息包分为缓冲命令包,立即命令包和数据命令包三种,命令包类型由所接收信息包的第一个字符确定;如果是缓冲命令包则执行步骤G),数据命令包执行步骤(5),立即命令包执行步骤(6),其他转步骤(7);(4)接收到缓冲命令包后,首先判断命令长度和校验和是否正确,如果正确则将接收到的数据暂存到命令接收缓冲区,当宿主机通过校验命令确认目标机正确接收了缓冲命令后,再将其切换到命令执行缓冲区,并设置命令执行缓冲区状态为命令就绪状态后转步骤 (7);(5)接收到数据命令包后,将接收到的数据暂存到数据接收缓冲区,当宿主机通过校验命令确认目标机正确接收了该包数据后,设置数据接收缓冲区状态为数据就绪状态后转步骤(7);通过一个命令将其切换到数据执行缓冲区,供缓冲命令执行时使用;(6)接收到立即命令包后,根据命令包类型执行不同的功能命令,同时给宿主机回送一个应答包,并转步骤(7);如果接收的是执行缓冲区中命令的命令,则执行命令缓冲区中存储的缓冲命令,缓冲命令实现的功能包括擦除FLASH,上传程序或数据,下载目标内存的数据,或转移到指定地址去执行程序,执行完毕后转步骤(7);(7)结束本次通信命令解析过程,转步骤O)。
2.根据权利要求1所述的总线协议无关的通信方法,其特征在于所述宿主机采用PC 机,所述目标机采用SPARC V8处理器为CPU。
全文摘要
一种总线协议无关的通信方法,用于在宿主机与目标机之间建立与具体通信端口无关的命令驱动式通信协议;所述宿主机包括文件管理与数据传送模块、协议命令处理模块和各种总线通信处理模块;所述目标机包括命令执行与数据传送模块、命令解析模块和各种总线通信处理模块;其特征在于所述宿主机还包括设置在协议命令处理模块与各种总线通信处理模块之间的通信管理模块,所述目标机还包括设置在命令解析模块与各种总线通信处理模块之间的通信管理模块,所述通信管理模块设置了四个缓冲区,分别为命令执行缓冲区、命令接收缓冲区、数据执行缓冲区、数据接收缓冲区,并对具体的通信端口进行管理。
文档编号H04L29/06GK102215230SQ20111014688
公开日2011年10月12日 申请日期2011年6月2日 优先权日2011年6月2日
发明者丁瑞, 关永, 尚媛园, 张伟功, 张永祥, 朱晓燕, 荣金叶, 辛明瑞, 邱庆林 申请人:首都师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1