双控制器的数据传输方法转让专利

申请号 : CN201610200959.9

文献号 : CN107291645B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 许恒嘉陈光兆

申请人 : 昆达电脑科技(昆山)有限公司神云科技股份有限公司

摘要 :

本发明提供一种双控制器的数据传输方法,其包括以下步骤:侦测插入状态脚位的电信号获取第一控制器与第二控制器的插入状态;若侦测到已插入,则侦测第二脚位的电信号获取第一控制器与第二控制器的心跳信号,以用来得知对方是否正常运作或是否当机;若侦测到心跳信号是正常的,则侦测位置侦测脚位的电信号获取第一控制器与第二控制器的位置状态;根据位置状态的侦测结果决定第一控制器与第二控制器之一为传送方,另一为接收方,传送方传送第一封包时,接收方等待接收第一封包,当接收方接收到第一封包后,接收方会结合自身的信息进行数据整合并将整合后的第二封包回传至传送方,再由传送方接收第二封包;并不断重复传送与接收的动作,直至收到停止传送讯息。

权利要求 :

1.一种双控制器的数据传输方法,其用于实现第一控制器与第二控制器内的数据同步,第一控制器与第二控制器位于同一个IIC bus上,且第一控制器上的第一GPIO连接接口与第二控制器的第二GPIO连接接口通过若干组连接线连接,其中,第一组连接线分别连接第一控制器与第二控制器的插入状态脚位,第二组连接线分别连接第一控制器与第二控制器的第二脚位,第三组连接线分别连接第一控制器与第二控制器的位置侦测脚位;其特征在于包括以下步骤:步骤S10:侦测插入状态脚位的电信号获取第一控制器与第二控制器的插入状态;若侦测到已插入,则执行步骤S20;否则,结束流程;

步骤S20:侦测第二脚位的电信号获取第一控制器与第二控制器的心跳信号,以用来得知对方是否正常运作或是否当机;若侦测到心跳信号是正常的,则执行步骤S30;否则,结束流程;

步骤S30:侦测位置侦测脚位的电信号获取第一控制器与第二控制器的位置状态;

步骤S40:根据位置状态的侦测结果决定第一控制器与第二控制器之一为传送方,另一为接收方,传送方传送第一封包时,接收方等待接收第一封包,此时传送方扮演IIC master,当接收方接收到第一封包后,此时则改由接收方扮演IIC master,接收方会将第一封包结合自身的信息进行数据整合并将整合后的第二封包回传至传送方,再由传送方接收到第二封包;

步骤S50:是否收到停止传送讯息,若是,则结束流程;若否,则重复步骤S40。

2.根据权利要求1所述的双控制器的数据传输方法,其特征在于:所述若干组连接线为IIC bus。

3.根据权利要求1所述的双控制器的数据传输方法,其特征在于:第一封包与第二封包包括header、data、checksum。

4.根据权利要求3所述的双控制器的数据传输方法,其特征在于:第一封包的header包含的封包种类信息为ping,而第二封包的header包含的封包种类信息为pong。

说明书 :

双控制器的数据传输方法

【技术领域】

[0001] 本发明涉及一种双控制器的数据传输方法,尤指一种可避免读写失败的双控制器的数据传输方法。【背景技术】
[0002] 在储存装置产品中(如:Just Bunch of Disks,JBOD),若有冗余(redundant)的设计,就会有两个控制器的数据与状态需互相交换的需求,而最常采用的方式便是将两个控制器透过一组对接的IIC接口做数据交换,例如控制器的系统环境信息、电压值、硬盘剩余空间、以及硬盘配置信息的数据。一般而言,一条IIC bus上可以挂多个IIC装置。这些IIC装置有的是IIC master,其余的则是IIC slave。运作方式就是由IIC master向IIC slave做读写的动作。然而在一条IIC bus上,若有多个IIC master同时对同一个IIC slave做读写的动作时,就有可能造成读写失败。IIC protocol本身虽有设计避免这种状况的机制,但是各家chip vendor的实作不一定有100%达到IIC protocol的要求,而又不一定可以做出相对应的调校。【发明内容】
[0003] 本发明的主要目的在于提供一种可避免读写失败的双控制器的数据传输方法。
[0004] 本发明提供一种双控制器的数据传输方法,其用于实现第一控制器与第二控制器内的数据同步,且第一控制器上的第一GPIO连接接口与第二控制器的第二GPIO连接接口通过若干组连接线连接,其中,第一组连接线分别连接第一控制器与第二控制器的插入状态脚位,第二组连接线分别连接第一控制器与第二控制器的第二脚位,第三组连接线分别连接第一控制器与第二控制器的位置侦测脚位;且双控制器的数据传输方法包括以下步骤:
[0005] 步骤S10:侦测插入状态脚位的电信号获取第一控制器与第二控制器的插入状态;若侦测到已插入,则执行步骤S20;否则,结束流程;
[0006] 步骤S20:侦测第二脚位的电信号获取第一控制器与第二控制器的心跳信号,以用来得知对方是否正常运作或是否当机;若侦测到心跳信号是正常的,则执行步骤S30;否则,结束流程;
[0007] 步骤S30:侦测位置侦测脚位的电信号获取第一控制器与第二控制器的位置状态;
[0008] 步骤S40:根据位置状态的侦测结果决定第一控制器与第二控制器之一为传送方,另一为接收方,传送方传送第一封包时,接收方等待接收第一封包,当接收方接收到第一封包后,接收方会结合自身的信息进行数据整合并将整合后的第二封包回传至传送方,再由传送方接收第二封包;
[0009] 步骤S50:是否收到停止传送讯息,若是,则结束流程;若否,则重复步骤S40。
[0010] 特别地,所述若干组连接线为IIC bus。
[0011] 特别地,第一封包与第二封包包括header、data、checksum。
[0012] 特别地,第一封包的header包含的封包种类信息为ping,而第二封包的header包含的封包种类信息为pong。
[0013] 与现有技术相比较,本发明双控制器的数据传输方法让同一个IIC bus上,同一时间,第一控制器与第二控制器之一为传送方,另一为接收方,每个控制器都必须经历「先传出一第一封包,并接收一回复的第二封包」的循环,才能再次进入下一个「传出,再接收」的循环,传出与接收动作有序进行,从而避免读写失败。【附图说明】
[0014] 图1为整合型装置的示意图。
[0015] 图2为双控制器的连接架构图。
[0016] 图3为本发明双控制器的数据传输方法的流程图。【具体实施方式】
[0017] 请参阅图1-3所示,本发明双控制器的数据传输方法应用于一整合型装置10中,所述整合型装置10中设有第一部件11与第二部件12。第一控制器40设于第一部件11上,第一控制器50设于第一部件11上,且第一控制器40上的第一GPIO连接接口与第二控制器50的第二GPIO连接接口通过若干组连接线连接,其中,第一组连接线分别连接第一控制器40与第二控制器50的插入状态脚位,第二组连接线分别连接第一控制器40与第二控制器50的第二脚位,第三组连接线分别连接第一控制器40与第二控制器50的位置侦测脚位;于本实施例中,若干组连接线为IIC bus。通过本发明双控制器的数据传输方法,实现第一控制器40与第二控制器50内的工作数据与工作状态的同步。于本实施例中,第一控制器40与第二控制器50为一SAS扩展器(SAS Expander)。第一控制器40与第二控制器50之间所传递的工作数据(信息)为一装配版本信息(MFG Version Info)、一串行地址(SAS Address)、一物理层配置数据(PHY Config Data)、一物理层连接信息(PHY Connector Info)、一系统环境信息、一电压值、一硬盘剩余空间、一硬盘配置信息;第一控制器40与第二控制器50之间所传递的工作状态包括SAS cable是否有插上,温度是否过高,风扇转速,是否所有的组件都有安装。
[0018] 本发明双控制器的数据传输方法包括以下步骤:
[0019] 步骤S10:侦测插入状态脚位的电信号获取第一控制器40与第二控制器50的插入状态;若侦测到已插入,则执行步骤S20;否则,结束流程;
[0020] 步骤S20:侦测第二脚位的电信号获取第一控制器40与第二控制器50的心跳信号,以用来得知对方是否正常运作或是否当机;若侦测到心跳信号是正常的,则执行步骤S30;否则,结束流程;
[0021] 步骤S30:侦测位置侦测脚位的电信号获取第一控制器40与第二控制器50的位置状态;
[0022] 步骤S40:根据位置状态的侦测结果决定第一控制器40与第二控制器50之一为传送方,另一为接收方,传送方传送第一封包时,接收方等待接收第一封包,当接收方接收到第一封包后,接收方会结合自身的信息进行数据整合并将整合后的第二封包回传至传送方,再由传送方接收第二封包(PONG包);
[0023] 步骤S50:是否收到停止传送讯息,若是,则结束流程;若否,则重复步骤S40。
[0024] 于本实施例中,第一封包与第二封包的格式可以自定义,即,是指封包要传送的那些数据可依各项目的需求而定;第一封包与第二封包包括「header」「data」「checksum」,其中,「checksum」是指校验信息,校验信息是为了防止数据在传送过程中有毁损。若有毁损会直接丢掉,不会要求对方重送。且第一封包的header包含「封包种类信息」为「ping」,而第二封包的header包含「封包种类信息」为「pong」。
[0025] 假设第一控制器40为传送方,第二控制器50为接收方,PING-PONG机制下每一个循环下的完整流程如下所示:
[0026] 第一控制器40传送第一封包(PING包)时,第二控制器50等待接收第一封包(PING包),当第二控制器50接收到第一封包(PING包)后,第二控制器50会结合自身的信息进行数据整合并将整合后的第二封包(PONG包)回传至第一控制器40,再由第一控制器40接收第二封包(PONG包);
[0027] 当一个循环完成后,会进入下一个循环,以此类推。
[0028] 于本实施例中,可将第一控制器40第二控制器50视为同时为IIC master与IIC slave,当第一控制器40扮演IIC master,送资料给第二控制器50(IIC slave)后,第二控制器50才又扮演IIC master,把资料送给第一控制器40(IIC slave),进而避免同一个IIC bus上有2个IIC master,造成资料传送失败的状况发生。
[0029] 本发明双控制器的数据传输方法让同一个IIC bus上,同一时间,第一控制器与第二控制器之一为传送方,另一为接收方,每个控制器都必须经历「先传出一第一封包(PING包),并接收一回复的第二封包(PONG包)」的循环,才能再次进入下一个「传出,再接收」的循环,传出与接收动作有序进行,从而避免读写失败。因此,在有redundant设计的系统中,即使控制器的状态随时都在改变,这些变化可藉由ping-pong模式的peer-to-peer数据交换机制,告知另一个控制器,透过本发明的机制,两个控制器都可以得到对方最新的数据与状态。
[0030] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。