双控制器的数据传输方法与流程

文档序号:12034534阅读:398来源:国知局
双控制器的数据传输方法与流程

本发明涉及一种双控制器的数据传输方法,尤指一种可避免读写失败的双控制器的数据传输方法。



背景技术:

在储存装置产品中(如:justbunchofdisks,jbod),若有冗余(redundant)的设计,就会有两个控制器的数据与状态需互相交换的需求,而最常采用的方式便是将两个控制器透过一组对接的iic接口做数据交换,例如控制器的系统环境信息、电压值、硬盘剩余空间、以及硬盘配置信息的数据。一般而言,一条iicbus上可以挂多个iic装置。这些iic装置有的是iicmaster,其余的则是iicslave。运作方式就是由iicmaster向iicslave做读写的动作。然而在一条iicbus上,若有多个iicmaster同时对同一个iicslave做读写的动作时,就有可能造成读写失败。iicprotocol本身虽有设计避免这种状况的机制,但是各家chipvendor的实作不一定有100%达到iicprotocol的要求,而又不一定可以做出相对应的调校。



技术实现要素:

本发明的主要目的在于提供一种可避免读写失败的双控制器的数据传输方法。

本发明提供一种双控制器的数据传输方法,其用于实现第一控制器与第二控制器内的数据同步,且第一控制器上的第一gpio连接接口与第二控制器的第二gpio连接接口通过若干组连接线连接,其中,第一组连接线分别连接第一控制器与第二控制器的插入状态脚位,第二组连接线分别连接第一控制器与第二控制器的第二脚位,第三组连接线分别连接第一控制器与第二控制器的位置侦测脚位;且双控制器的数据传输方法包括以下步骤:

步骤s10:侦测插入状态脚位的电信号获取第一控制器与第二控制器的插入状态;若侦测到已插入,则执行步骤s20;否则,结束流程;

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

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

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

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

特别地,所述若干组连接线为iicbus。

特别地,第一封包与第二封包包括header、data、checksum。

特别地,第一封包的header包含的封包种类信息为ping,而第二封包的header包含的封包种类信息为pong。

与现有技术相比较,本发明双控制器的数据传输方法让同一个iicbus上,同一时间,第一控制器与第二控制器之一为传送方,另一为接收方,每个控制器都必须经历「先传出一第一封包,并接收一回复的第二封包」的循环,才能再次进入下一个「传出,再接收」的循环,传出与接收动作有序进行,从而避免读写失败。

【附图说明】

图1为整合型装置的示意图。

图2为双控制器的连接架构图。

图3为本发明双控制器的数据传输方法的流程图。

【具体实施方式】

请参阅图1-3所示,本发明双控制器的数据传输方法应用于一整合型装置10中,所述整合型装置10中设有第一部件11与第二部件12。第一控制器40设于第一部件11上,第一控制器50设于第一部件11上,且第一控制器40上的第一gpio连接接口与第二控制器50的第二gpio连接接口通过若干组连接线连接,其中,第一组连接线分别连接第一控制器40与第二控制器50的插入状态脚位,第二组连接线分别连接第一控制器40与第二控制器50的第二脚位,第三组连接线分别连接第一控制器40与第二控制器50的位置侦测脚位;于本实施例中,若干组连接线为iicbus。通过本发明双控制器的数据传输方法,实现第一控制器40与第二控制器50内的工作数据与工作状态的同步。于本实施例中,第一控制器40与第二控制器50为一sas扩展器(sasexpander)。第一控制器40与第二控制器50之间所传递的工作数据(信息)为一装配版本信息(mfgversioninfo)、一串行地址(sasaddress)、一物理层配置数据(phyconfigdata)、一物理层连接信息(phyconnectorinfo)、一系统环境信息、一电压值、一硬盘剩余空间、一硬盘配置信息;第一控制器40与第二控制器50之间所传递的工作状态包括sascable是否有插上,温度是否过高,风扇转速,是否所有的组件都有安装。

本发明双控制器的数据传输方法包括以下步骤:

步骤s10:侦测插入状态脚位的电信号获取第一控制器40与第二控制器50的插入状态;若侦测到已插入,则执行步骤s20;否则,结束流程;

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

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

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

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

于本实施例中,第一封包与第二封包的格式可以自定义,即,是指封包要传送的那些数据可依各项目的需求而定;第一封包与第二封包包括「header」「data」「checksum」,其中,「checksum」是指校验信息,校验信息是为了防止数据在传送过程中有毁损。若有毁损会直接丢掉,不会要求对方重送。且第一封包的header包含「封包种类信息」为「ping」,而第二封包的header包含「封包种类信息」为「pong」。

假设第一控制器40为传送方,第二控制器50为接收方,ping-pong机制下每一个循环下的完整流程如下所示:

第一控制器40传送第一封包(ping包)时,第二控制器50等待接收第一封包(ping包),当第二控制器50接收到第一封包(ping包)后,第二控制器50会结合自身的信息进行数据整合并将整合后的第二封包(pong包)回传至第一控制器40,再由第一控制器40接收第二封包(pong包);

当一个循环完成后,会进入下一个循环,以此类推。

于本实施例中,可將第一控制器40第二控制器50視為同時為iicmaster與iicslave,當第一控制器40扮演iicmaster,送資料給第二控制器50(iicslave)後,第二控制器50才又扮演iicmaster,把資料送給第一控制器40(iicslave),進而避免同一個iicbus上有2個iicmaster,造成資料傳送失敗的狀況發生。

本发明双控制器的数据传输方法让同一个iicbus上,同一时间,第一控制器与第二控制器之一为传送方,另一为接收方,每个控制器都必须经历「先传出一第一封包(ping包),并接收一回复的第二封包(pong包)」的循环,才能再次进入下一个「传出,再接收」的循环,传出与接收动作有序进行,从而避免读写失败。因此,在有redundant设计的系统中,即使控制器的状态随时都在改变,这些变化可藉由ping-pong模式的peer-to-peer数据交换机制,告知另一个控制器,透过本发明的机制,两个控制器都可以得到对方最新的数据与状态。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1