CN106126362B - 一种光模块i2c总线乱时序诊断方法及装置 - Google Patents
一种光模块i2c总线乱时序诊断方法及装置 Download PDFInfo
- Publication number
- CN106126362B CN106126362B CN201610442449.2A CN201610442449A CN106126362B CN 106126362 B CN106126362 B CN 106126362B CN 201610442449 A CN201610442449 A CN 201610442449A CN 106126362 B CN106126362 B CN 106126362B
- Authority
- CN
- China
- Prior art keywords
- optical module
- user
- operating space
- data
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0016—Inter-integrated circuit (I2C)
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
- Optical Communication System (AREA)
Abstract
本发明公开了一种光模块I2C总线乱时序诊断方法及装置,用以识别和记录光模块内部存在的非常规I2C写操作,包括:光模块通过I2C总线接收终端发送的开始时钟信号;开始时钟信号用于指示光模块在用户可操作区写入数据;根据开始时钟信号,检测在非用户可操作区是否存在I2C总线写操作;若存在,设置标识符,用以标记在非用户可操作区存在的I2C总线写操作,并将在非用户可操作区写入的数据存储在指定存储区域。上述方法实现光模块识别非用户可操作区存在不允许的写操作时,记录写入非用户可操作区的数据,以便终端能够基于光模块识别和记录的非用户可操作区存在的写操作,诊断是否因I2C乱时序而导致光模块侧的非常规I2C写操作。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种光模块I2C总线乱时序诊断方法及装置。
背景技术
常见的I2C(Inter-Integrated Circuit,I2C总线)总线通讯架构中,I2C总线在硬件上独立共享总线,通常由一个I2C master设备与多个I2C slave设备分享同一I2C总线,根据协议,不允许两个进程同时占用I2C总线,因此容易出现不同进程之间的资源抢占问题。
当一个I2C master设备与I2C slave设备进行较大的数据通讯时,常用的I2C总线通讯读写模式有连续读模式(图1a),连续写模式(图1b)和连续随机地址读模式(图1c)。
因为I2C写通讯时大部分时序控制权在I2C master设备端,如果出现不同进程的程序协调不当或同一进程调度不当,就会现异常的读写。以一个I2C Master与一个I2Cslave设备的写通讯为例,由于多进程之间相关干扰、共享设备I2C总线不同进程的程序争夺,会产生乱时序,乱时序很导致一个完整的时序不再完整,这时候会出现异常的读写。例如,当在连续读Sequential I2C Read序列的“Start”或“Read”状态位出现错误或I2Cslave设备的具体电气指标差异时,造成I2C通讯的混乱,进而产生I2C乱时序,如Sequential I2C Read序列变成Sequential I2C Write序列,原来的Sequential I2C Read序列中被***一个Sequential I2C Write序列,原来的Equential I2C Read序列变成一个不完整的乱时序。
产生I2C乱时序时,由于I2C乱时序一直在通信,从在造成总线上各种不可预知的情况出现,如在不允许进行写操作的区域写入了数据,或者在一些不允许修改数据的区域被修改了数据,这是设备端不期望出现,并极力避免的。
根据SFF-8472协议,对于一个I2C slave设备,允许进行写操作的区域,如用户可写区A2[128~247],密码输入区A2[123~126],密码设置区A2[119~122]。还有一些区域不允许进行写操作,如果在不允许进行写操作的区域写入数据,则视为非常规的I2C操作行为。
I2C master设备的一个进程A为:读一个I2C slave设备1的A2[110]的读时序;而I2C总线上在传输进程A的读时序的“start”位时,突然被进程B打断,假如此刻进程A的“read”位出现错误,进程A的“read”位变成“write”位,进程A变成了写I2C slave设备1的A2[110]的写时序。假如进程B为:连续读A2[0~95],则进程A在A2[110]的写时序中会***进程B的时序,如图1d所示,进程A的写时序变成一个乱时序,即进程A的“110”位置(图1d中的“MEMORY ADDRESS”右边的偏移地址位置)会被进程B的设备地址“A2”代替(图1d中的“MEMORY ADDRESS”右边的偏移地址位置***了进程B的“--XFP ADDRESS--”),即进程B的“A2”被写入到原进程A的“110”位置,因进程B是连续读模式,因此进程B的偏移地址“0~95”会陆续写入到原进程A的“111~205”位置。进程A原来的读“110”的时序变成了连续写“110~205”的时序,但I2C master设备却不知道原来的进程A变成了一个乱时序,也不知道进程A在I2C slave设备1上的不允许写的区域写入了数据,这样将会对***造成灾难性的后果,例如A2[110].6为光模块的发光控制位,如果这个位置被写入了其他数据,导致光模块由正常发光到突然关断发光,这将会遭到客户投诉的风险。
I2C master设备端通常无法感知是因为自己的时序控制导致了乱时序,I2Cslave设备也不没有动机去识别I2C总线上是否发生了乱时序,而若乱时序导致的这些非常规的I2C写操作继续发生,就会导致整个***崩溃,针对上述问题,现有技术还没有提出一种有效的解决方案。
发明内容
本发明实施例提供一种光模块I2C总线乱时序诊断方法及装置,用以识别和记录光模块内部存在的非常规I2C写操作,以便终端基于光模块识别和记录的非用户可操作区存在的写操作,诊断是否因I2C总线乱时序而导致光模块侧的非常规I2C写操作。
本发明实施例提供一种光模块I2C总线乱时序诊断方法,包括:
光模块通过I2C总线接收终端发送的开始时钟信号;所述开始时钟信号用于指示所述光模块在用户可操作区写入数据;
所述光模块根据所述开始时钟信号,检测在非用户可操作区是否存在I2C总线写操作;
若存在,设置标识符,用以标记在所述非用户可操作区存在的I2C总线写操作,并将在非用户可操作区写入的数据存储在指定存储区域。
本发明实施例提供一种光模块I2C总线乱时序诊断装置,包括:
接收单元,用于通过I2C总线接收终端发送的开始时钟信号;所述开始时钟信号用于指示所述光模块在用户可操作区写入数据;
检测单元,用于根据所述开始时钟信号,检测在非用户可操作区是否存在I2C总线写操作;
处理单元,用于若所述检测单元检测到在非用户可操作区存在I2C总线写操作,则设置标识符,用以标记在所述非用户可操作区存在的I2C总线写操作,并将在所述非用户可操作区写入的数据存储在指定存储区域。
本发明实施例中,光模块作为I2C slave设备,终端作为I2C master设备,为了使光模块识别非用户可操作区是否存在不允许的写操作,以及使终端能够查看到非用户可操作区写入的数据,在光模块中设置一个功能模块,用于执行上述方法流程,即在接收到在用户可操作区写入数据的开始时钟信号时,检测在非用户可操作区是否存在I2C总线写操作;若存在,设置标识符,用以标记在所述非用户可操作区存在的I2C总线写操作,光模块将在非用户可操作区写入的数据存储在指定存储区域。功能模块通过执行上述方法流程,实现光模块识别非用户可操作区是否存在不允许的写操作,以及存在不允许的写操作时,可记录写入非用户可操作区的数据,以便终端能够基于光模块识别和记录的非用户可操作区存在的写操作,诊断是否因I2C乱时序而导致光模块侧的非常规I2C写操作。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1a至1c为现有技术中的三种常用的I2C总线通讯读写模式的结构示意图;
图1d为现有技术中存在进程B抢占进程A导致的进程A的时序为乱时序的示意图;
图2为本发明实施例提供的一种光模块I2C总线乱时序诊断方法的方法流程示意图;
图3为本发明实施例提供的一种光模块I2C乱时序的识别和记录的方法流程示意图;
图4为本发明实施例提供的一种提示终端光模块内部存在非常规的I2C写操作的方法流程示意图;
图5为本发明实施例提供的一种终端查看I2C乱时序数据的方法流程示意图;
图6为本发明实施例提供的一种光模块I2C总线乱时序诊断装置的结构示意图。
具体实施方式
为了使本发明所解决的技术问题、技术方案以及有效果更加清楚明白,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
为了防止I2C总线乱时序对整个***运行的影响,尤其是I2C总线乱时序导致的I2C slave设备一些不允许写操作的区域被写入了数据,对整个***造成的灾难性的影响,本发明实施例提出一种光模块I2C总线乱时序诊断方法,即在接收到在用户可操作区写入数据的开始时钟信号时,检测在非用户可操作区是否存在I2C总线写操作;若存在,设置标识符,用以标记在所述非用户可操作区存在的I2C总线写操作,光模块将在非用户可操作区写入的数据存储在指定存储区域。为了使光模块识别非用户可操作区是否存在不允许的写操作,以及使终端能够查看到非用户可操作区写入的数据,在光模块中设置一个功能模块,用于执行上述方法流程,功能模块通过执行上述方法流程,实现了光模块识别非用户可操作区是否存在不允许的写操作,以及存在不允许的写操作时,可记录写入非用户可操作区的数据,以便终端能够基于光模块识别和记录的非用户可操作区存在的写操作,诊断是否因I2C乱时序而导致光模块侧的非常规I2C写操作。
如图2所示,本发明实施例提供一种光模块I2C总线乱时序诊断方法的主要流程,包括:
步骤A01,光模块通过I2C总线接收终端发送的开始时钟信号;光模块接收到的开始时钟信号用于指示光模块在用户可操作区写入数据;
步骤A02,光模块根据接收到的开始时钟信号,检测在非用户可操作区是否存在I2C总线写操作;
步骤A03,若存在,设置标识符,用以标记在非用户可操作区存在的I2C总线写操作,并将在非用户可操作区写入的数据存储在指定存储区域。
在I2C总线结构中,终端下挂多个光模块,终端是发起操作的设备,光模块是执行操作的设备,终端为I2C master设备,光模块为I2C slave设备,一个I2C master设备与多个I2C slave设备共用同一I2C总线。终端与光模块通过I2C总线进行I2C通信,一个终端通常使用一条串行时钟线SCL对多个光模块进行时钟控制,以及每个光模块分别使用一条串行数据线SDL进行数据传输,光模块根据终端发起的操作和时钟信号进行相应的数据接收。
本发明实施例的光模块可以是SFP(Small Form-factor Pluggables,小型可插拔)、SFP+(Small Form-factor Pluggables Plus,小型可插拔升级版)、XFP(10 GigabitSmall Form Factor Pluggable,10G小型可插拔)系列光模块产品等。正常工作时光模块***终端中,终端通过总线对光模块进行控制。
对于一个I2C slave设备,都有一个用来与I2C master设备进行I2C通信的数据存储区,即光模块用来I2C读写操作的数据存储区,数据存储区一般包括0~255位,每个位占用8bit。根据SFF-8472协议,根据功能的不同,数据存储区又划分为多个区域,密码设置区,密码输入区,用户可写区,页选控制区,数据监控区,待开发区等。根据操作类型,数据存储区还可分为允许I2C写操作的区域和不允许I2C写操作的区域。允许I2C写操作的区域为允许写入终端发送的数据的区域,如用户可写区A2[128~247],密码输入区A2[123~126],密码设置区A2[119~122]。不允许I2C写操作的区域,一般为只读区域,只读区域中的原始数据不允许被修改,如A2[110],A2[115~117],A2[0~109]。“A2”代表一个光模块的设备地址,“[]”内的数字指“MEMORY ADDRESS”,即偏移地址,代表一个进程命令光模块进行I2C写操作的具***置,或者是一个进程命令光模块进行I2C读操作的具***置。如果光模块与终端在进行I2C通信时,产生了乱时序,很可能在不允许I2C写操作的区域写入了数据,这种非常规的I2C写操作是不期望存在的。
上述方法流程,用户可操作区是指允许I2C写操作的区域,非用户可操作区是指不允许I2C写操作的区域。
终端向一个该光模块发起一个操作进程时,向I2C总线发送开始该操作进程的控制时序,包括“START”时钟状态位,标记I2C读操作的“Read”状态位,或者标记I2C写操作的“Write”状态位,以及具体的电气指标等。当终端控制光模块结束这个操作进程时,向I2C总线发送结束该操作进程的控制时序,包括“STOP”时钟状态位等信息。
因此,步骤A01中,在光模块开始执行一个I2C写操作的进程之前,会接收终端通过I2C总线发送的开始时钟信号,开始时钟信号即为时钟状态位中的“START”。光模块根据开始时钟信号,开始在用户可操作区的指定“MEMORY ADDRESS”位置写入终端控制光模块写入的数据。
为了识别出光模块的I2C写操作是否为光模块根据接收的I2C乱时序而进行的写操作,在接收到开始时钟信号之后,检测在非用户可操作区是否存在I2C总线写操作,如果存在,就用标识符来标记在非用户可操作区存在的I2C总线写操作。
具体的,步骤A03中,光模块设置标识符,用以标记在非用户可操作区存在的I2C总线写操作,具体为:用标识符Flag的取值来标记在非用户可操作区是否存在I2C总线写操作,Flag取值为0,标记非用户可操作区不存在I2C总线写操作;Flag取值为非0,标记非用户可操作区存在I2C总线写操作。
更进一步的,为了更清楚的标记光模块存在多少次非常规的I2C总线写操作,可以用Flag的取值用以标记在非用户可操作区存在的I2C总线写操作的累计次数,在检测到在非用户可操作区存在I2C总线写操作时,只需将标识符Flag的取值自增。
例如,在步骤A03之前,Flag的取值为0,光模块从步骤A01接收到该I2C写操作的开始时钟信号,到接收到该I2C写操作的结束时钟信号的期间,若检测到存在在非用户可操作区的I2C总线写操作时,将Flag的取值自增为1。
再例如,在步骤A03之前,Flag的取值为4;光模块从步骤A01接收到该I2C写操作的开始时钟信号,到接收到该I2C写操作的结束时钟信号的期间,若检测到存在在非用户可操作区的I2C总线写操作时,将Flag的取值自增为5。可选的,Flag的取值最大可以为255。
更进一步的,为了让终端能够诊断出光模块存在非常规的I2C写操作,即光模块的非用户可操作区存在I2C总线写操作,在光模块接收到终端发送的针对在用户可操作区写入数据的结束时钟信号时,根据结束时钟信号,将Flag自增后的取值写入到第一偏移地址对应的存储位置。一种可选的实施例中,光模块的第一偏移地址是指A2[115],A2[115]对对应存储位置的数值默认为0,若Flag自增后的取值为1,则将A2[115]对应的存储位置的数值自增为1。这样,终端通过读取光模块A2[115]的值,即可诊断出光模块是否存在非常规的写操作,若A2[115]的值为0,则终端即可诊断出光模块的非用户可操作区不存在I2C总线写操作,A2[115]的值为非0,则终端即可诊断出光模块的非用户可操作区存在I2C总线写操作。
为了使终端诊断出光模块的非用户可操作区存在I2C总线写操作,并能够获取写入非用户可操作区的数据,在光模块检测到非用户可操作区存在I2C总线写操作时,需要将在非用户可操作区写入的数据存储在指定存储区域。
具体的,步骤A03中,光模块检测到非用户可操作区存在I2C总线写操作时,将在非用户可操作区写入的数据存储在指定存储区域,具体为:将在非用户可操作区写入的数据作为I2C总线乱时序数据存储在内存(如RAM)中。
虽然将在非用户可操作区写入的数据作为I2C总线乱时序数据存储在内存中具有存储速率快的特点,但是一旦光模块断电,存储在内存中的数据就会丢失,为了保证光模块断电的情况下也能够使终端读取到在非用户可操作区写入的数据,更进一步的,在光模块接收到终端发送的在用户可操作区写入数据的结束时钟信号时,根据结束时钟信号,将内存中存储的I2C总线乱时序数据转存在闪存中,闪存具有断电数据也不会丢失的特点,这样,当终端需要查看光模块写入非用户可操作区的数据时,直接将闪存中存储的I2C总线乱时序数据加载到指定位置即可。
更进一步的,本发明实施例提供一种实现终端查看光模块指定位置存储的I2C总线乱时序数据的具体实现方式。
光模块接收终端发送的第一显示指令,第一显示指令是终端在确定光模块的非用户可操作区存在I2C总线数据的写操作时发送的,光模块根据第一显示指令,将闪存中存储的I2C总线乱时序数据写入到第二偏移地址对应的第一存储位置,并显示第一存储位置写入的I2C总线乱时序数据。
可选的,终端通过以下方式发送第一显示指令:终端控制光模块在偏移地址A2[127]录入“0xF0”,(通常终端先将“0xF0”转换成二进制,然后通过I2C总线控制光模块在A2[127]写入“0xF0”转换后的二进制数,因A2[127]为页选控制区,光模块监测到A2[127]被写入“0xF0”转换后的二进制数,相当于光模块接收到一个页选命令,这个页选命令即为第一显示指令。光模块根据第一显示指令,并确定A2[115]对应位置的数值为非0,则将闪存中存储的I2C总线乱时序数据加载到指定位置,如A2[0],并显示指定位置加载的数据,使得终端能够查看到I2C总线乱写的数据。
可选的,第二偏移地址可以为A2[0],A2[0]的存储位置的原始数据为光模块的出厂内部信息。终端通过向光模块的页选控制区A2[127]加载不同的页选指令,光模块可以显示A2[0]位置对应的不同数据。
例如,当终端需要查看光模块A2[0]位置的原始数据时,可以向光模块发送第二显示指令,光模块根据终端发送的第二显示指令,显示A2[0]位置的原始数据,如光模块的出厂内部信息。
可选的,终端通过以下方式发送第二显示指令:终端控制光模块在偏移地址A2[127]录入“0x00”对应的二进制数,光模块监测到A2[127]被写入“0x00”转换后的二进制数,相当于光模块接收到显示A2[0]位置对应的原始数据的页选命令,这个页选命令即为第二显示指令。具体实现中,可以预先在终端和光模块中配置这两个页选命令,“0xF0”和“0x00”仅为区别两个不同的页选命令,本发明实施例中也可以配置其他的命令字段作为第一显示指令和第二显示指令,其中,第一显示指令用于指示光模块将闪存中的I2C乱写数据加载到指定位置显示,第二显示指令用于指示光模块显示指定位置的原始数据。
此外,对于本发明提出的I2C乱时序诊断方法,可以有多种实现方式来实现终端发现哪一个光模块内存在非常规的I2C写操作,进而实现终端对I2C乱时序的诊断,终端可通过以下方式确定光模块的非用户可操作区存在I2C总线写操作,具体为:
第一种,终端定时读取光模块的第一偏移地址对应的存储位置的数据,若第一偏移地址对应的存储位置的数据为非0,则确定光模块的非用户可操作区存在I2C总线写操作。
在这种方式中,光模块可以周期性的读取光模块的第一偏移地址对应的存储位置的数据,也可以配置终端周期性的读取光模块的第一偏移地址对应的存储位置的数据。
第二种,在上述步骤A03,光模块用标识符标记非用户可操作区存在的I2C总线写操作之后,光模块向终端发送通知消息,通知终端读取光模块的第一偏移地址对应的存储位置的数据;其中,若终端读取第一偏移地址对应的存储位置的数据为非0,则终端确定光模块的非用户可操作区存在I2C总线写操作。
在上述两种方式中,第一偏移地址为上述实施例中的A2[115],若A2[115]的值为0,则终端即可诊断出光模块的非用户可操作区不存在I2C总线写操作,A2[115]的值为非0,则终端即可诊断出光模块的非用户可操作区存在I2C总线写操作。
本发明实施例中,终端是发起操作的设备,光模块是执行操作的设备。具体的,终端为I2C master设备,光模块为I2C slave设备,一个I2C master设备与多个I2C slave设备共用同一I2C总线。
为了使光模块识别非用户可操作区是否存在不允许的写操作,以及使终端能够查看到非用户可操作区写入的数据,在光模块中设置一个功能模块,用于执行上述方法流程,功能模块通过执行上述方法流程,实现了光模块识别非用户可操作区是否存在不允许的写操作,以及存在不允许的写操作时,可记录写入非用户可操作区的数据,以便终端能够基于光模块识别和记录的非用户可操作区存在的写操作,诊断是否因I2C乱时序而导致光模块侧的非常规I2C写操作。
下面以SFF-8472协议规定的SFP光模块存储区结构为例,对本发明实施例提供的上述光模块I2C乱时序诊断方法流程进行举例说明,本发明实施例提供的光模块I2C乱时序诊断方法流程主要包括I2C乱时序的识别、记录、提示、以及显示。
I2C乱时序的识别和记录的流程,如图3所示,包括:
步骤B1:假如一个光模块通过I2C总线接收在A2[128]写入数据的通信数据,当光模块的I2C写操作的进程开始时,即在光模块接收到“START”开始时钟信号、并未接收到“STOP”结束时钟信号时,开始检测写入数据的偏移地址的位置是否为非用户可操作区,如A2[110],A2[115~117],A2[0~109]。如果是,执行步骤B2,如果否,结束。
步骤B2:在光模块的RAM中记录在非用户可操作区写入的数据;并进入步骤B3;
如果原本需要写在A2[128]的I2C总线数据因I2C总线上的乱时序写入了A[110],将写入非用户可操作区的数据标识为I2C_ERR[110],存储在RAM中。
步骤B3:用非法标识符flag的值自增1;并进入步骤B4;
其中,flag的值表示I2C总线数据被写入非用户可操作区(A2[110],A2[115~117],A2[0~109])的次数;假如步骤B3之前,flag=0,则将flag的值自增1后,flag=1。
步骤B4:光模块接收“STOP”结束时钟信号,并执行步骤B5,否则等待在步骤B3;
步骤B5:光模块的I2C写操作的进程结束,触发MCU处理中断,并进入步骤B6;
若MCU为执行I2C写操作的微处理器,则在接收到“STOP”结束时钟信号,触发MCU处理中断。
步骤B6:将RAM中存储的乱时序数据I2C_ERR[110]保存在闪存Flash中,并进入步骤B7;
保存在Flash中的目的是,避免存在内存中的数据在掉电的时候丢失,而此时将乱时序数据I2C_ERR[110]保存在Flash中以后,即使***掉电后依然可以从Flash中装载乱时序数据I2C_ERR[110]到指定位置,如A0设备地址。
从Flash中装载乱时序数据到指定位置由主设备(终端)触发,主设备输入一个指令,如在A2[127]录入0xF0的指令,从设备(光模块)根据这一指令,将Flash中的乱时序数据转存在指定位置,方便主设备查看或读取。
步骤B7:将标识符flag的取值,赋值给A2[115],然后结束进程。
基于上述步骤,光模块可以继续向终端发起提示信息,提示终端光模块内部存在非常规的I2C写操作,具体流程如图4所示,包括:
步骤C1:检测到A2[115]的值是否为0,若A2[115]的值为非0则,进入步骤C2;若A2[115]的值为0,则结束。
步骤C2:向终端发送通知消息,通知终端光模块内部存在非常规的I2C写操作,提醒终端读取光模块的A2[115]的值,确认光模块内部是否存在非常规的I2C写操作。
在终端通过I2C总线读取光模块的A2[115]的值为非0时,即可确认光模块内部存在非常规的I2C写操作,进而确认I2C总线存在乱时序。
当然,本发明实施例并不限于光模块主动提示终端查看A2[115]的值是否为非0,也可以是终端自己读取光模块的数据时,发现读的数据异常,则查看A2[115]位置的值是否为非0。例如,通常情况下终端读取光模块的工作温度为40度,但是某一次偶然发现读取的数据是零下20度,则认为是读数据异常,触发终端关注A2[115]位置的值是否为非0。
终端为了诊断出导致光模块内部存在非常规的I2C写操作的具体原因,会有需求查看光模块内记录的I2C总线乱时序数据,判断是否因为I2C总线出现的乱时序,才导致了光模块内部存在非常规的I2C写操作。
终端查看I2C乱时序数据的主要流程参见图5,包括:
步骤D1,终端读取A2[115]的值是否为非0,若是,表示出现过I2C乱时序,进入步骤D2,若否结束。
步骤D2:终端向光模块发出一个页选指令,即在A2[127]录入“0xF0”,进入步骤D3;
步骤D3:光模块接收终端发送的页选指令,光模块判断是否在A2[127]录入“0xF0”,若是,进入步骤D4,若否,进入步骤D5;
步骤D4:将Flash中的乱时序数据I2C_ERR[110]加载到A2[0],并显示加载到A2[0]中的I2C_ERR[110]数据。这样,终端就能查看到A2[0]对应位置的I2C_ERR[110]。
步骤D5:加载并显示A2[0]位置对应的光模块的出厂内部信息。
通常终端获取乱时序数据I2C_ERR[110]之后,还会获取光模块的出厂内部信息辅助排查导致光模块内部存在非常规的I2C写操作的具体原因。可选的步骤D4之后,还包括步骤D6~步骤D7。
步骤D6:终端查看到A2[0]对应位置的I2C_ERR[110]之后,向光模块发出第二个页选指令,在A2[127]录入“0x00”,进入步骤D7;
步骤D7,光模块接收终端发送的第二个页选指令,光模块识别出在A2[127]录入“0x00”,返回步骤D5。
针对上述方法流程,本发明实施例还提供一种光模块I2C总线乱时序诊断装置,这些装置的具体内容可参见上述实施例的内容,此处不再累述。
如图6所示,一种光模块I2C总线乱时序诊断装置,该装置为光模块内部设置的一个功能模块,用于执行上述实施例中的方法流程,具体包括:
接收单元601,用于通过I2C总线接收终端发送的开始时钟信号;开始时钟信号用于指示光模块在用户可操作区写入数据;
检测单元602,用于根据开始时钟信号,检测在非用户可操作区是否存在I2C总线写操作;
处理单元603,用于若检测单元检测到在非用户可操作区存在I2C总线写操作,则设置标识符,用以标记在非用户可操作区存在的I2C总线写操作,并将在非用户可操作区写入的数据存储在指定存储区域。
进一步地,标识符为Flag,Flag的取值用以标记在非用户可操作区进行I2C总线写操作的累计次数;
处理单元603用于:将标识符Flag的取值自增;
处理单元603还用于:在光模块接收到终端发送的在用户可操作区写入数据的结束时钟信号时,根据结束时钟信号,将Flag自增后的取值写入到第一偏移地址对应的存储位置。
进一步地,处理单元603用于:将在非用户可操作区写入的数据作为I2C总线乱时序数据存储在内存中;
处理单元603还用于:在光模块接收到终端发送的在用户可操作区写入数据的结束时钟信号时,根据结束时钟信号,将内存中存储的I2C总线乱时序数据转存在闪存中。
进一步地,接收单元601还用于:接收终端发送的第一显示指令,第一显示指令是终端在确定光模块的非用户可操作区存在I2C总线数据的写操作时发送的;
处理单元603还用于:根据第一显示指令,将闪存中存储的I2C总线乱时序数据写入到第二偏移地址对应的第一存储位置,并显示第一存储位置写入的I2C总线乱时序数据。
进一步地,处理单元603还用于:
在设置标识符之后,向终端发送通知消息,通知终端读取光模块的第一偏移地址对应的存储位置的数据;其中,若第一偏移地址对应的存储位置的数据为非0,则确定光模块的非用户可操作区存在I2C总线写操作。
为了使光模块识别非用户可操作区是否存在不允许的写操作,以及使终端能够查看到非用户可操作区写入的数据,在光模块中设置一个功能模块,用于执行上述内容,功能模块通过执行上述内容,实现了光模块识别非用户可操作区是否存在不允许的写操作,以及存在不允许的写操作时,可记录写入非用户可操作区的数据,以便终端能够基于光模块识别和记录的非用户可操作区存在的写操作,诊断是否因I2C乱时序而导致光模块侧的非常规I2C写操作。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种光模块I2C总线乱时序诊断方法,其特征在于,包括:
光模块通过I2C总线接收终端发送的开始时钟信号;所述开始时钟信号用于指示所述光模块在用户可操作区写入数据;
所述光模块根据所述开始时钟信号,检测在非用户可操作区是否存在I2C总线写操作;
若存在,设置标识符,用以标记在所述非用户可操作区存在的I2C总线写操作,并将在非用户可操作区写入的数据存储在指定存储区域。
2.如权利要求1所述的方法,其特征在于,所述标识符为Flag,所述Flag的取值用以标记在非用户可操作区存在的I2C总线写操作的累计次数;
所述设置标识符,包括:将标识符Flag的取值自增;
在所述设置标识符之后,所述方法还包括:
在所述光模块接收到所述终端发送的在所述用户可操作区写入数据的结束时钟信号时,根据所述结束时钟信号,将所述Flag自增后的取值写入到第一偏移地址对应的存储位置。
3.如权利要求1或2所述的方法,其特征在于,将在非用户可操作区写入的数据存储在指定存储区域,包括:
将所述在非用户可操作区写入的数据作为I2C总线乱时序数据存储在内存中;
在所述光模块接收到所述终端发送的在用户可操作区写入数据的结束时钟信号时,根据所述结束时钟信号,将所述内存中存储的所述I2C总线乱时序数据转存在闪存中。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
所述光模块接收所述终端发送的第一显示指令,所述第一显示指令是所述终端在确定所述光模块的非用户可操作区存在I2C总线数据的写操作时发送的;
所述光模块根据所述第一显示指令,将所述闪存中存储的所述I2C总线乱时序数据写入到第二偏移地址对应的第一存储位置,并显示所述第一存储位置写入的所述I2C总线乱时序数据。
5.如权利要求4所述的方法,其特征在于,在设置所述标识符之后,所述方法还包括:
向所述终端发送通知消息,通知所述终端读取所述光模块的第一偏移地址对应的存储位置的数据;
其中,若所述终端读取所述第一偏移地址对应的存储位置的数据为非0,则所述终端确定所述光模块的非用户可操作区存在I2C总线写操作。
6.一种光模块I2C总线乱时序诊断装置,其特征在于,包括:
接收单元,用于通过I2C总线接收终端发送的开始时钟信号;所述开始时钟信号用于指示所述光模块在用户可操作区写入数据;
检测单元,用于根据所述开始时钟信号,检测在非用户可操作区是否存在I2C总线写操作;
处理单元,用于若所述检测单元检测到在非用户可操作区存在I2C总线写操作,则设置标识符,用以标记在所述非用户可操作区存在的I2C总线写操作,并将在所述非用户可操作区写入的数据存储在指定存储区域。
7.如权利要求6所述的装置,其特征在于,所述标识符为Flag,所述Flag的取值用以标记在非用户可操作区进行I2C总线写操作的累计次数;
所述处理单元用于:将标识符Flag的取值自增;
所述处理单元还用于:在所述光模块接收到所述终端发送的在所述用户可操作区写入数据的结束时钟信号时,根据所述结束时钟信号,将所述Flag自增后的取值写入到第一偏移地址对应的存储位置。
8.如权利要求6或7所述的装置,其特征在于,所述处理单元用于:将所述在非用户可操作区写入的数据作为I2C总线乱时序数据存储在内存中;
所述处理单元还用于:在所述光模块接收到所述终端发送的在用户可操作区写入数据的结束时钟信号时,根据所述结束时钟信号,将所述内存中存储的所述I2C总线乱时序数据转存在闪存中。
9.如权利要求8所述的装置,其特征在于,
所述接收单元还用于:接收所述终端发送的第一显示指令,所述第一显示指令是所述终端在确定所述光模块的非用户可操作区存在I2C总线数据的写操作时发送的;
所述处理单元还用于:根据所述第一显示指令,将所述闪存中存储的所述I2C总线乱时序数据写入到第二偏移地址对应的第一存储位置,并显示所述第一存储位置写入的所述I2C总线乱时序数据。
10.如权利要求9所述的装置,其特征在于,所述处理单元还用于:
在设置所述标识符之后,向所述终端发送通知消息,通知所述终端读取所述光模块的第一偏移地址对应的存储位置的数据;其中,若所述第一偏移地址对应的存储位置的数据为非0,则确定所述光模块的非用户可操作区存在I2C总线写操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610442449.2A CN106126362B (zh) | 2016-06-17 | 2016-06-17 | 一种光模块i2c总线乱时序诊断方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610442449.2A CN106126362B (zh) | 2016-06-17 | 2016-06-17 | 一种光模块i2c总线乱时序诊断方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106126362A CN106126362A (zh) | 2016-11-16 |
CN106126362B true CN106126362B (zh) | 2019-01-04 |
Family
ID=57470126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610442449.2A Active CN106126362B (zh) | 2016-06-17 | 2016-06-17 | 一种光模块i2c总线乱时序诊断方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106126362B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107465461B (zh) * | 2017-08-03 | 2020-05-05 | 青岛海信宽带多媒体技术有限公司 | Olt光模块的控制方法与装置以及olt的控制方法与装置 |
CN107423236B (zh) * | 2017-08-10 | 2020-12-04 | 青岛海信宽带多媒体技术有限公司 | 光模块中监测参数的处理方法、读取方法、装置及光模块 |
CN110399325B (zh) * | 2019-07-30 | 2023-05-30 | 江西理工大学 | 一种基于iic总线协议的改进型ip核 |
CN110609695A (zh) * | 2019-09-17 | 2019-12-24 | 青岛海信宽带多媒体技术有限公司 | 一种光模块的固件升级方法,***及光模块 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040094194A (ko) * | 2003-05-02 | 2004-11-09 | 황보준식 | 다양한 인스트럭션 코드들을 제공하는 아이2씨 통신프로토콜 방법 |
CN1912858A (zh) * | 2005-08-08 | 2007-02-14 | 中兴通讯股份有限公司 | 避免i2c总线锁定的方法与装置 |
CN101089838A (zh) * | 2007-07-28 | 2007-12-19 | 中兴通讯股份有限公司 | 一种实现i2c读写时序的方法 |
CN101719110A (zh) * | 2009-12-18 | 2010-06-02 | 烽火通信科技股份有限公司 | 光通信器件中多路i2c器件的实时监控方法 |
CN101770443A (zh) * | 2009-01-07 | 2010-07-07 | 成都市华为赛门铁克科技有限公司 | 一种内部集成电路总线时序调节方法、相应装置及*** |
CN101937413A (zh) * | 2010-10-21 | 2011-01-05 | 成都优博创技术有限公司 | 一种i2c总线的通信方法 |
CN102055521A (zh) * | 2009-11-11 | 2011-05-11 | 中兴通讯股份有限公司 | 读写光模块信息的控制方法及装置、光模块 |
CN104346254A (zh) * | 2013-07-25 | 2015-02-11 | 鸿富锦精密电子(天津)有限公司 | I2c总线监控装置 |
CN103530215B (zh) * | 2013-09-30 | 2015-12-02 | 杭州华为数字技术有限公司 | 一种内部集成电路主机的自检方法、装置及主机 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140244874A1 (en) * | 2012-01-26 | 2014-08-28 | Hewlett-Packard Development Company, L.P. | Restoring stability to an unstable bus |
-
2016
- 2016-06-17 CN CN201610442449.2A patent/CN106126362B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040094194A (ko) * | 2003-05-02 | 2004-11-09 | 황보준식 | 다양한 인스트럭션 코드들을 제공하는 아이2씨 통신프로토콜 방법 |
CN1912858A (zh) * | 2005-08-08 | 2007-02-14 | 中兴通讯股份有限公司 | 避免i2c总线锁定的方法与装置 |
CN101089838A (zh) * | 2007-07-28 | 2007-12-19 | 中兴通讯股份有限公司 | 一种实现i2c读写时序的方法 |
CN101770443A (zh) * | 2009-01-07 | 2010-07-07 | 成都市华为赛门铁克科技有限公司 | 一种内部集成电路总线时序调节方法、相应装置及*** |
CN102055521A (zh) * | 2009-11-11 | 2011-05-11 | 中兴通讯股份有限公司 | 读写光模块信息的控制方法及装置、光模块 |
CN101719110A (zh) * | 2009-12-18 | 2010-06-02 | 烽火通信科技股份有限公司 | 光通信器件中多路i2c器件的实时监控方法 |
CN101937413A (zh) * | 2010-10-21 | 2011-01-05 | 成都优博创技术有限公司 | 一种i2c总线的通信方法 |
CN104346254A (zh) * | 2013-07-25 | 2015-02-11 | 鸿富锦精密电子(天津)有限公司 | I2c总线监控装置 |
CN103530215B (zh) * | 2013-09-30 | 2015-12-02 | 杭州华为数字技术有限公司 | 一种内部集成电路主机的自检方法、装置及主机 |
Also Published As
Publication number | Publication date |
---|---|
CN106126362A (zh) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106126362B (zh) | 一种光模块i2c总线乱时序诊断方法及装置 | |
US10834586B2 (en) | System and method for controlling heterogeneous internet of things (IoT) devices using single application | |
CN100557582C (zh) | 在消息接收期间阻止发送的***、方法和设备 | |
US10042583B2 (en) | Device management method, device, and device management controller | |
JP6717026B2 (ja) | 制御装置、中継装置、制御装置の制御方法、中継装置の制御方法、制御プログラム、および記録媒体 | |
CN106502814B (zh) | 一种记录pcie设备错误信息的方法及装置 | |
JPWO2016114077A1 (ja) | データ判定装置、データ判定方法及びプログラム | |
CN112765082B (zh) | 多主机仲裁方法、装置和可读存储介质 | |
CN106372527A (zh) | 一种数据处理方法及终端 | |
EP2733613B1 (en) | Controller and program | |
CN110417464B (zh) | 一种故障处理方法及装置、计算机装置及可读存储介质 | |
CN113190427B (zh) | 卡顿监控方法、装置、电子设备及存储介质 | |
CN113424116B (zh) | 设定信息生成装置、设定信息生成方法及记录介质 | |
CN108983695A (zh) | 一种基于复杂可编程逻辑器件的主从切换方法和装置 | |
CN105281939A (zh) | 上报接收信号丢失告警rxlos的方法及装置 | |
CN109074343A (zh) | 通信设备、通信方法、程序、以及通信*** | |
WO2016179944A1 (zh) | 一种通信接口的功能复用方法及装置 | |
JP5286814B2 (ja) | 半導体装置、携帯可能な電子装置、自己診断方法、自己診断プログラム | |
CN114953787A (zh) | 一种芯片、装置及数据传输方法 | |
JP2015039805A (ja) | 画像形成装置、制御方法およびプログラム | |
CN114113855A (zh) | 静电放电检测处理方法及装置、终端设备 | |
US10635840B2 (en) | Banner notification in locked host monitor | |
US11847089B2 (en) | Electronic device and method for sharing data lanes of a network interface device between two or more computing devices | |
CN115525935B (zh) | 多安全芯片的并发数据运算方法、装置、设备及存储介质 | |
CN117407343B (zh) | 集成电路总线透传模式下时钟延展的处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |