一种更新寄存器的方法及装置的制造方法

文档序号:9417142阅读:412来源:国知局
一种更新寄存器的方法及装置的制造方法
【技术领域】
[0001]本发明涉及通信技术领域,尤其涉及一种更新寄存器的方法及装置。
【背景技术】
[0002]光模块的功能是将光信号与电信号互相转换,并通过IIC(Inter-1ntegratedCircuit,集成电路总线)与主机进行信息交互。根据INF-8074标准的要求,光模块的IIC总线协议是使用CMOS (Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)EEPROM(Electrically Erasable Programmable Read-Only Memory,带电可擦写可编程只读存储器)器件AT24C02的两线串行协议,支持读写操作。
[0003]光模块中有些特殊的寄存器,这种特殊的寄存器中存储的比特序列中有用来实时反映光模块的状态比特位,有用于指示关断光模块发射部分的比特位,该比特位的值由主机写入。符合SFF-8472标准的光模块都有这种特别的寄存器。例如,寄存器地址为110的寄存器就是这种特殊的寄存器,该寄存器中存储的比特序列中的Bit7是用来实时反映TXDisable引脚的状态,由光模块输出,为了让主机能够随时读取到光模块的当前状态,光模块需要不断的更新110寄存器的第7比特位。而该寄存器中存储的比特序列中的第6比特位是用来关断光模块的发射部分,由主机输入。
[0004]由于寄存器的读写入口只有一个,在对这种特殊寄存器进行更新时,如果同时主机对该寄存器进行写操作,如图1所示,这两种操作就会产生冲突,主机写入到光模块的信息被覆盖,导致通信失效。因此,如何安全更新寄存器保证其可靠性,是目前亟待解决的问题。

【发明内容】

[0005]本发明实施例提供一种更新寄存器的方法及装置,用以提高寄存器更新操作的可靠性。
[0006]本发明的一个实施例提供的一种更新寄存器的方法,包括:
[0007]执行更新寄存器的第一线程,所述第一线程对应的操作包括:读取寄存器的数据,将读取到的数据存储到第一内存区域,更新所述第一内存区域中的数据,将更新后的数据写入所述寄存器;
[0008]在所述第一线程执行期间,若接收到主机发送的请求写寄存器的指令,则根据所述请求写寄存器的指令中断执行所述第一线程,执行第二线程,所述第二线程对应的操作包括:根据所述请求写寄存器的指令在第二内存区域写入数据,恢复执行所述第一线程,在所述第一线程执行完成后,再次执行第一线程;所述请求写寄存器的指令的优先级高于所述第一线程的优先级;
[0009]所述再次执行的第一线程对应的操作包括:读取寄存器的数据,将读取到的数据存储到第三内存区域,根据所述第二内存区域中的数据更新所述第三内存区域中的数据,将所述第三内存区域更新后的数据写入所述寄存器。
[0010]所述更新所述第一内存区域的数据,包括:更新所述第一内存区域中存储的寄存器数据中的第一比特位数据;在所述第二内存区域写入的数据为寄存器数据中的第二比特位数据。
[0011]所述根据所述第二内存区域中的数据更新所述第三内存区域的数据,包括:根据所述第二内存区域中的所述第二比特位数据,更新所述第三内存区域中的寄存器数据中的第二比特位数据,保持所述第三内存区域中的寄存器数据中的其余比特位数据不变。
[0012]所述第一比特位的数据为所述光模块的状态数据或控制数据,所述第二比特位的数据为所述光模块的状态和控制数据。
[0013]所述执行更新寄存器的第一线程,还包括:根据设定周期执行所述更新寄存器的第一线程。
[0014]本发明的一个实施例提供的一种寄存器的装置,包括:控制模块、寄存器处理模块和中断处理模块;
[0015]所述控制模块:用于指示所述寄存器处理模块执行更新寄存器的第一线程,所述第一线程对应的操作包括:读取寄存器的数据,将读取到的数据存储到第一内存区域,更新所述第一内存区域中的数据,将更新后的数据写入所述寄存器;
[0016]在所述第一线程执行期间,若接收到请求写寄存器的指令,则根据所述请求写寄存器的指令指示所述寄存器处理模块中断执行所述第一线程,执行第二线程,指示所述中断处理模块根据所述请求写寄存器的指令在第二内存区域写入数据,指示所述寄存器处理模块恢复执行所述第一线程,在所述第一线程执行完成后,指示寄存器处理模块再次执行所述第一线程;所述请求写寄存器的指令的优先级高于所述第一线程的优先级;以及
[0017]所述再次执行的第一线程对应的操作包括:读取寄存器的数据,将读取到的数据存储到第三内存区域,根据所述第二内存区域中的数据更新所述第三内存区域中的数据,将所述第三内存区域更新后的数据写入所述寄存器。
[0018]所述寄存器处理模块,具体用于:更新所述第一内存区域中存储的寄存器数据中的第一比特位数据;在所述第二内存区域写入的数据为寄存器数据中的第二比特位数据。
[0019]所述寄存器处理模块,具体用于:根据所述第二内存区域中的所述第二比特位数据,更新所述第三内存区域中的寄存器数据中的第二比特位数据,保持所述第三内存区域中的寄存器数据中的其余比特位数据不变。
[0020]所述第一比特位的数据为所述光模块的状态数据或控制数据,所述第二比特位的数据为所述光模块的状态和控制数据。
[0021]所述寄存器处理模块,还用于:根据设定周期执行所述更新寄存器的第一线程。
[0022]本发明的上述实施例中,在更新寄存器时,执行更新寄存器的第一线程,读取寄存器的数据,将读取到的数据存储到第一内存区域,更新所述第一内存区域中的数据,再将更新后的数据写入所述寄存器。若在更新寄存器的过程中,接收到主机发送的请求写寄存器的指令,则根据所述请求写寄存器的指令中断执行所述第一线程,执行第二线程,根据所述请求写寄存器的指令在第二内存区域写入数据,恢复执行所述第一线程,在所述第一线程执行完成后,再次执行第一线程,读取寄存器的数据,将读取到的数据存储到第三内存区域,根据所述第二内存区域中的数据更新所述第三内存区域中的数据,将所述第三内存区域更新后的数据写入所述寄存器。根据上述实施例,主机请求写入的数据不是直接写入寄存器,而是先写入第二内存区域,待寄存器更新完成后再将第二内存区域中的数据写入寄存器,避免了在执行第一线程的过程中,基于接收到的主机请求写寄存器的指令触发写寄存器操作所导致的主机写入寄存器的信息在寄存器更新过程中被覆盖进而导致通信失效的情况发生,确保了主机写入信息的正确性与可靠性。
【附图说明】
[0023]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0024]图1为现有技术中更新光模块寄存器的流程示意图;
[0025]图2为本发明实施例中提供的更新寄存器的流程示意图;
[0026]图3为本发明实施例中提供的更新寄存器的装置示意图。
【具体实施方式】
[0027]为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0028]参见图2,为本发明实施例提供的更新寄存器的流程示意图,如图所示,具体步骤如下:
[0029]执行更新寄存器的第一线程,所述第一线程对应的操作包括:步骤201:读取寄存器的数据,将读取到的数据存储到第一内存区域,步骤202:更新所述第一内存区域中的数据,步骤203:将更新后的数据写入所述寄存器。
[0030]在所述第一线程执行期间,若接收到主机发送的请求写寄存器的指令,则执行步骤204:根据所述请求写寄存器的指令中断执行所述第一线程,执行第二线程,根据所述请求写寄存器的指令在第二内存区域写入数据,恢复执行所述第一线程,在所述第一线程执行完成后,再次执行第一线程;所述主机发送的请求写寄存器的指令的优先级高于所述第一线程的优先级;
[0031]所述再次执行的第一线程对应的操作包括:步骤205:读取寄存器的数据,将读取到的数据存储到第三内存区域,步骤206:根据所述第二内存区域中的数据更新所述第三内存区域中的数据,步骤207将所述第三内存区域更新后的数据写入所述寄存器。
[0032]若在第一线程执行期间,接收
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1