一种基于IIC总线的制造信息的获取方法和设备转让专利

申请号 : CN201110108356.3

文献号 : CN102169463B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵志宇钱嘉林李星爽段琳张颖

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明公开了一种基于IIC总线的制造信息的获取方法和设备,该方法包括:当IIC控制设备使用IIC总线检测到IIC总线连接的EEPROM在位时,所述IIC控制设备获取所述EEPROM的IIC设备地址和厂商制造信息的长度;所述IIC控制设备通过所述EEPROM的IIC设备地址、读操作起始地址和厂商制造信息的长度获取所述EEPROM中存储的厂商制造信息。本发明中,缩短数据通信设备启动时间。

权利要求 :

1.一种基于双线串行总线IIC总线的制造信息的获取方法,IIC总线的一侧连接有数量不确定的电可擦除只读存储器EEPROM,另一侧连接有IIC控制设备,所述EEPROM中存储有所在模块的厂商制造信息,其特征在于,该方法包括以下步骤:当所述IIC控制设备使用IIC总线检测到IIC总线连接的EEPROM在位时,所述IIC控制设备获取所述EEPROM的IIC设备地址和厂商制造信息的长度;

所述IIC控制设备通过所述EEPROM的IIC设备地址、读操作起始地址和厂商制造信息的长度获取所述EEPROM中存储的厂商制造信息;

所述IIC控制设备获取所述EEPROM中存储的厂商制造信息的过程独立于系统启动软件,且与系统启动软件并行执行;

其中,所述IIC控制设备使用IIC总线检测IIC总线连接的EEPROM在位的过程,具体为:所述IIC控制设备向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作,如果指定IIC设备地址有ACK应答,则检测到指定IIC设备地址的IIC总线连接的EEPROM在位;如果指定IIC设备地址没有ACK应答,则检测到指定IIC设备地址的IIC总线连接的EEPROM不在位。

2.如权利要求1所述的方法,其特征在于,所述指定IIC设备地址包括:0xA1、0xA3、

0xA5、0xA7、0xA9、0xAB、0xAD、0xAF;

所述IIC控制设备向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作,具体包括:所述IIC控制设备按照0xA1、0xA3、0xA5、0xA7、0xA9、0xAB、0xAD、0xAF之间的预定顺序向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作。

3.如权利要求1或2所述的方法,其特征在于,所述IIC控制设备获取所述EEPROM的IIC设备地址的过程,具体为:当检测到指定IIC设备地址的IIC总线连接的EEPROM在位时,所述IIC控制设备获取所述EEPROM的IIC设备地址为所述指定IIC设备地址。

4.如权利要求1或2所述的方法,其特征在于,所述IIC控制设备获取所述EEPROM的厂商制造信息的长度的过程,具体为:当检测到指定IIC设备地址的IIC总线连接的EEPROM在位时,所述IIC控制设备通过读预设字节的操作获取所述EEPROM的厂商制造信息的长度。

5.如权利要求4所述的方法,其特征在于,所述预设字节包括2个字节,该2个字节为字节0和字节1,如果从字节0读取到指定标识,则通过字节1获取所述EEPROM的厂商制造信息的长度;否则,通过字节0获取所述EEPROM的厂商制造信息的长度。

6.如权利要求1所述的方法,其特征在于,所述IIC控制设备通过所述EEPROM的IIC设备地址、读操作起始地址和厂商制造信息的长度获取所述EEPROM中存储的厂商制造信息,之后还包括:所述IIC控制设备将所述厂商制造信息存储到内部随机存取存储器RAM或系统内存中;以用于当CPU需要获知所述厂商制造信息时,到所述内部RAM或系统内存中读取所述厂商制造信息。

7.如权利要求1所述的方法,其特征在于,所述IIC控制设备集成在复杂可编程逻辑器件CPLD或现场可编程门阵列FPGA中,所述IIC控制设备独立于运行系统启动软件的CPU;

或者,

所述IIC控制设备集成在多核CPU中非运行系统启动软件的一个核中,该核独立于多核CPU中运行系统启动软件的核。

8.一种双线串行总线IIC控制设备,IIC总线的一侧连接有数量不确定的电可擦除只读存储器EEPROM,另一侧连接有所述IIC控制设备,所述EEPROM中存储有所在模块的厂商制造信息,其特征在于,该设备包括:EEPROM在位检测子模块,用于使用IIC总线检测IIC总线连接的EEPROM的在位情况;

核心控制子模块,用于当检测到IIC总线连接的EEPROM在位时,获取所述EEPROM的IIC设备地址和厂商制造信息的长度,并通过所述EEPROM的IIC设备地址、读操作起始地址和厂商制造信息的长度获取所述EEPROM中存储的厂商制造信息;

获取所述EEPROM中存储的厂商制造信息的过程独立于系统启动软件,且与系统启动软件并行执行;其中,所述EEPROM在位检测子模块,具体用于向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作,如果指定IIC设备地址有ACK应答,检测到指定IIC设备地址的IIC总线连接的EEPROM在位;如果指定IIC设备地址没有ACK应答,检测到指定IIC设备地址的IIC总线连接的EEPROM不在位。

9.如权利要求8所述的IIC控制设备,其特征在于,所述指定IIC设备地址包括:0xA1、

0xA3、0xA5、0xA7、0xA9、0xAB、0xAD、0xAF;

所述EEPROM在位检测子模块,进一步用于按照0xA1、0xA3、0xA5、0xA7、0xA9、0xAB、

0xAD、0xAF之间的预定顺序向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作。

10.如权利要求8或9所述的IIC控制设备,其特征在于,

所述核心控制子模块,具体用于当检测到指定IIC设备地址的IIC总线连接的EEPROM在位时,获取所述EEPROM的IIC设备地址为所述指定IIC设备地址。

11.如权利要求8或9所述的IIC控制设备,其特征在于,

所述核心控制子模块,具体用于当检测到指定IIC设备地址的IIC总线连接的EEPROM在位时,通过读预设字节的操作获取所述EEPROM的厂商制造信息的长度。

12.如权利要求11所述的IIC控制设备,其特征在于,所述预设字节包括2个字节,该

2个字节为字节0和字节1,如果从字节0读取到指定标识,则通过字节1获取所述EEPROM的厂商制造信息的长度;否则,通过字节0获取所述EEPROM的厂商制造信息的长度。

13.如权利要求8所述的IIC控制设备,其特征在于,该IIC控制设备还包括:内部RAM和系统内存访问子模块;

所述核心控制子模块,还用于将所述厂商制造信息存储到内部RAM或通过系统内存访问子模块将所述厂商制造信息存储到系统内存中;

所述内部RAM,用于保存厂商制造信息,以用于当CPU需要获知所述厂商制造信息时,到所述内部RAM中读取所述厂商制造信息;

所述系统内存访问子模块,用于将所述厂商制造信息存储到系统内存,以用于当CPU需要获知所述厂商制造信息时,到所述系统内存中读取所述厂商制造信息。

14.如权利要求8所述的IIC控制设备,其特征在于,所述IIC控制设备集成在复杂可编程逻辑器件CPLD或现场可编程门阵列FPGA中,所述IIC控制设备独立于运行系统启动软件的CPU;或者,所述IIC控制设备集成在多核CPU中非运行系统启动软件的一个核中,该核独立于多核CPU中运行系统启动软件的核。

说明书 :

一种基于IIC总线的制造信息的获取方法和设备

技术领域

[0001] 本发明涉及通信技术领域,特别是涉及一种基于IIC总线的制造信息的获取方法和设备。

背景技术

[0002] IIC(Inter-Integrated Circuit,双线串行总线,又称为I2C)总线是两线式串行总线,用于连接CPU(Central Processing Unit,中央处理器)及其外围设备。IIC总线只需要两个线,减少了电路板的空间,降低了芯片管脚的数量,而且IIC总线支持多主控(multimastering),其中任何能够进行发送和接收的设备均可以成为主总线;一个主控能够控制信号的传输和时钟频率,且在任何时间点上只能有一个主控。
[0003] 具体的,IIC总线包括一根SDA(serial data,串行数据),一根SCL(serial clock,串行时钟),可发送和接收数据,具有连接简单的特点,在电子设备内部芯片互连设计中得到广泛使用。IIC总线在CPU与被控IIC设备之间、IIC设备与IIC设备之间进行双向传送;CPU和IIC设备并联在IIC总线上,每个IIC设备有唯一地址(IIC设备地址),同一条IIC总线上的IIC设备彼此独立。
[0004] 如图1所示的IIC总线数据传输示意图,IIC总线传送数据时,可为以下阶段:(1)开始阶段(START),SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。(2)传输目标IIC设备地址阶段(Calling Address),传送目标IIC设备地址以及读写标识。(3)应答阶段(ACK),接收到目标IIC设备地址后,向发送数据的CPU发出特定的低电平脉冲,表示已收到数据;如果CPU未收到应答信号,则判断为目标IIC设备不存在或故障。(4)数据阶段(Data),如果是CPU写IIC设备,则CPU收到ACK后,发出数据;如果是CPU读IIC设备,则IIC设备送出应答后,IIC设备发出数据。(5)结束阶段(STOP),SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。
[0005] 现有技术中,数据通信设备是IIC总线的主要应用领域,CPU通过IIC总线连接各种EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦除只读存储器)、RTC(real-time clock实时时钟)、温度传感器(可含有风扇控制器)等设备,EEPROM是数据通信设备中使用最普遍的IIC设备。
[0006] 如图2所示的集中式数据通信设备IIC应用示意图,CPU通过IIC总线连接各EEPROM,一个数据通信设备可具有10几个EEPROM(分别在主控板、固定业务接口、可插拔接口模块等模块上),各EEPROM存储了所在模块的厂商制造信息(如主控板EEPROM内存储了主控板的厂商制造信息)。
[0007] 如图2所示,当前设计中所有EEPROM均和CPU挂接在一条IIC总线上,所有EEPROM的访问均需要有CPU参与,所有初始化工作都由运行系统启动软件的CPU来完成,CPU运行系统启动软件,依次初始化各种硬件和软件资源,其中初始化读取EEPROM的厂商制造信息(系统软件初始化时必须要读取厂商制造信息),CPU首先通过与模块相关联的信号检测模块的EEPROM是否在位,如果在位,CPU需要通过IIC总线从不同IIC接口的EEPROM中读取相应的厂商制造信息;对于有多个模块的情况下,会依次执行上述操作。
[0008] 但是,由于EEPROM的访问需要有CPU参与,IIC总线是慢速总线(频率为10-100kHz量级),则CPU读取厂商制造信息的数据量在10-100kByte左右,因此会导致CPU读取厂商制造信息耗时超过10s,CPU长时间参与EEPROM的厂商制造信息的读操作,影响数据通信设备的启动速度。

发明内容

[0009] 本发明提供一种基于IIC总线的制造信息的获取方法和设备,以提高数据通信设备的启动速度。
[0010] 为了达到上述目的,本发明提供一种基于双线串行总线IIC总线的制造信息的获取方法,IIC总线的一侧连接有数量不确定的电可擦除只读存储器EEPROM,另一侧连接有IIC控制设备,所述EEPROM中存储有所在模块的厂商制造信息,该方法包括以下步骤:当所述IIC控制设备使用IIC总线检测到IIC总线连接的EEPROM在位时,所述IIC控制设备获取所述EEPROM的IIC设备地址和厂商制造信息的长度;所述IIC控制设备通过所述EEPROM的IIC设备地址、读操作起始地址和厂商制造信息的长度获取所述EEPROM中存储的厂商制造信息;所述IIC控制设备获取所述EEPROM中存储的厂商制造信息的过程独立于系统启动软件,且与系统启动软件并行执行。
[0011] 所述IIC控制设备使用IIC总线检测IIC总线连接的EEPROM在位的过程,具体为:所述IIC控制设备向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作,如果指定IIC设备地址有ACK应答,则检测到指定IIC设备地址的IIC总线连接的EEPROM在位;如果指定IIC设备地址没有ACK应答,则检测到指定IIC设备地址的IIC总线连接的EEPROM不在位。
[0012] 所述指定IIC设备地址包括:0xA1、0xA3、0xA5、0xA7、0xA9、0xAB、0xAD、0xAF;所述IIC控制设备向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作,具体包括:所述IIC控制设备按照0xA1、0xA3、0xA5、0xA7、0xA9、0xAB、0xAD、0xAF之间的预定顺序向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作。
[0013] 所述IIC控制设备获取所述EEPROM的IIC设备地址的过程,具体为:当检测到指定IIC设备地址的IIC总线连接的EEPROM在位时,所述IIC控制设备获取所述EEPROM的IIC设备地址为所述指定IIC设备地址。
[0014] 所述IIC控制设备获取所述EEPROM的厂商制造信息的长度的过程,当检测到指定IIC设备地址的IIC总线连接的EEPROM在位时,所述IIC控制设备通过读预设字节的操作获取所述EEPROM的厂商制造信息的长度。
[0015] 所述预设字节包括2个字节,该2个字节为字节0和字节1,如果从字节0读取到指定标识,则通过字节1获取所述EEPROM的厂商制造信息的长度;否则,通过字节0获取所述EEPROM的厂商制造信息的长度。
[0016] 所述IIC控制设备通过所述EEPROM的IIC设备地址、读操作起始地址和厂商制造信息的长度获取所述EEPROM中存储的厂商制造信息,之后还包括:所述IIC控制设备将所述厂商制造信息存储到内部随机存取存储器RAM或系统内存中;以用于当CPU需要获知所述厂商制造信息时,到所述内部RAM或系统内存中读取所述厂商制造信息。
[0017] 所述IIC控制设备集成在复杂可编程逻辑器件CPLD或现场可编程门阵列FPGA中,所述IIC控制设备独立于运行系统启动软件的CPU;或者,所述IIC控制设备集成在多核CPU中非运行系统启动软件的一个核中,该核独立于多核CPU中运行系统启动软件的核。
[0018] 本发明提供一种双线串行总线IIC控制设备,IIC总线的一侧连接有数量不确定的电可擦除只读存储器EEPROM,另一侧连接有所述IIC控制设备,所述EEPROM中存储有所在模块的厂商制造信息,该设备包括:EEPROM在位检测子模块,用于使用IIC总线检测IIC总线连接的EEPROM的在位情况;核心控制子模块,用于当检测到IIC总线连接的EEPROM在位时,获取所述EEPROM的IIC设备地址和厂商制造信息的长度,并通过所述EEPROM的IIC设备地址、读操作起始地址和厂商制造信息的长度获取所述EEPROM中存储的厂商制造信息;获取所述EEPROM中存储的厂商制造信息的过程独立于系统启动软件,且与系统启动软件并行执行。
[0019] 所述EEPROM在位检测子模块,具体用于向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作,如果指定IIC设备地址有ACK应答,检测到指定IIC设备地址的IIC总线连接的EEPROM在位;如果指定IIC设备地址没有ACK应答,检测到指定IIC设备地址的IIC总线连接的EEPROM不在位。
[0020] 所述指定IIC设备地址包括:0xA1、0xA3、0xA5、0xA7、0xA9、0xAB、0xAD、0xAF;所述EEPROM在位检测子模块,进一步用于按照0xA1、0xA3、0xA5、0xA7、0xA9、0xAB、0xAD、0xAF之间的预定顺序向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作。
[0021] 所述核心控制子模块,具体用于当检测到指定IIC设备地址的IIC总线连接的EEPROM在位时,获取所述EEPROM的IIC设备地址为所述指定IIC设备地址。
[0022] 所述核心控制子模块,具体用于当检测到指定IIC设备地址的IIC总线连接的EEPROM在位时,通过读预设字节的操作获取所述EEPROM的厂商制造信息的长度。
[0023] 所述预设字节包括2个字节,该2个字节为字节0和字节1,如果从字节0读取到指定标识,则通过字节1获取所述EEPROM的厂商制造信息的长度;否则,通过字节0获取所述EEPROM的厂商制造信息的长度。
[0024] 该IIC控制设备还包括:内部RAM和系统内存访问子模块;所述核心控制子模块,还用于将所述厂商制造信息存储到内部RAM或通过系统内存访问子模块将所述厂商制造信息存储到系统内存中;所述内部RAM,用于保存厂商制造信息,以用于当CPU需要获知所述厂商制造信息时,到所述内部RAM中读取所述厂商制造信息;所述系统内存访问子模块,用于将所述厂商制造信息存储到系统内存,以用于当CPU需要获知所述厂商制造信息时,到所述系统内存中读取所述厂商制造信息。
[0025] 所述IIC控制设备集成在复杂可编程逻辑器件CPLD或现场可编程门阵列FPGA中,所述IIC控制设备独立于运行系统启动软件的CPU;或者,所述IIC控制设备集成在多核CPU中非运行系统启动软件的一个核中,该核独立于多核CPU中运行系统启动软件的核。
[0026] 与现有技术相比,本发明至少具有以下优点:可独立于系统启动软件来自动学习IIC总线上各EEPROM是否在位,以及EEPROM的IIC设备地址和厂商制造信息的长度,从而可自动读取厂商制造信息;CPU运行系统启动软件不再直接从慢速EEPROM中读取制造信息,而是从高速的内部RAM或系统内存中读取厂商制造信息,缩短数据通信设备启动时间。

附图说明

[0027] 图1是现有技术中IIC总线数据传输示意图;
[0028] 图2是现有技术中集中式数据通信设备IIC应用示意图;
[0029] 图3是本发明中IIC控制设备集成在逻辑芯片或FPGA上的示意图;
[0030] 图4是本发明中IIC控制设备集成在多核CPU的一个核上的示意图;
[0031] 图5是本发明提供的一种基于IIC总线的制造信息的处理方法流程图;
[0032] 图6是现有技术中EEPROM的IIC设备地址组成示意图;
[0033] 图7是现有技术中字节0用于保存有效厂商制造信息长度的示意图;
[0034] 图8是现有技术中字节1用于保存EEPROM总容量的示意图;
[0035] 图9是本发明提供的一种IIC控制设备结构示意图。

具体实施方式

[0036] 本发明提供一种基于IIC总线的制造信息的获取方法,针对读取EEPROM的厂商制造信息导致数据通信设备启动速度慢的问题,通过自动加载厂商制造信息,使得厂商制造信息的获取独立于CPU系统软件,提高数据通信设备的启动速度。
[0037] 本发明中,针对数据通信设备,IIC总线的一侧连接有数量不确定的EEPROM(该EEPROM为IIC设备,且IIC总线最多连接8个EEPROM,但每个EEPROM是否在位不确定,因此EEPROM数量不确定),另一侧连接有IIC控制设备。该IIC控制设备可集成在CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)或FPGA(Field-Programmable Gate Array,现场可编程门阵列)中,且独立于运行系统启动软件的CPU;也可集成在多核CPU中非运行系统启动软件的一个核中,且该核独立于多核CPU中运行系统启动软件的核。如图3所示的IIC控制设备集成在CPLD或FPGA的示意图、以及图4所示的IIC控制设备集成在多核CPU中非运行系统启动软件的一个核中的示意图。
[0038] 需要注意的是,本发明中需要改变现有的IIC总线连接方式,当IIC控制设备集成在CPLD或FPGA时,将IIC总线一侧连接在IIC设备的EEPROM上,另一侧连接在集成有IIC控制设备的CPLD或FPGA上。当IIC控制设备集成在多核CPU中非运行系统启动软件的一个核时,将IIC总线一侧连接在IIC设备的EEPROM上,另一侧连接在集成有IIC控制设备的非运行系统启动软件的核上。
[0039] 本发明中,该EEPROM中存储有所在模块的厂商制造信息,该厂商制造信息包括但不限于:厂商名称、序列号、出厂日期、编码信息、校验码信息等。以图3和图4所示的场景为例,模块的EEPROM包括但不限于:内存条EEPROM、主控板EEPROM、光模块EEPROM和接口卡EEPROM,即内存条EEPROM中存储了内存条的厂商制造信息,主控板EEPROM中存储了主控板的厂商制造信息,光模块EEPROM存储了光模块的厂商制造信息,接口卡EEPROM中存储了接口卡的厂商制造信息。
[0040] 如图5所示,该基于IIC总线的制造信息的获取方法包括以下步骤:
[0041] 步骤501,IIC控制设备使用IIC总线(即不需要通过其他信号)检测IIC总线连接的EEPROM是否在位,如果是,执行步骤502,否则,继续执行步骤501,一直到IIC总线连接的所有EEPROM检测完成。实际应用中,一根IIC总线可连接8个EEPROM,当需要连接更多的EEPROM时,可通过多根IIC总线来实现,每根IIC总线的处理过程相同,以一根IIC总线最多连接8个EEPROM为例进行说明。
[0042] 具体的,考虑到IIC接口EEPROM的IIC设备地址位于固定的位置,通过结合IIC传输ACK的基本约束条件,IIC控制设备可向指定IIC设备地址执行从读操作起始地址(该读操作起始地址为约定地址,如约定读操作起始地址为0地址)开始读预设字节(如2Bytes)的操作,如果指定IIC设备地址有ACK应答,则检测到指定IIC设备地址的IIC总线连接的EEPROM在位;如果指定IIC设备地址没有ACK应答,则检测到指定IIC设备地址的IIC总线连接的EEPROM不在位。
[0043] 需要注意的是,该指定IIC设备地址包括:0xA1、0xA3、0xA5、0xA7、0xA9、0xAB、0xAD、0xAF,即IIC控制设备可按照0xA1、0xA3、0xA5、0xA7、0xA9、0xAB、0xAD、0xAF之间的预定顺序向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作;实际应用中只要向上述8个IIC设备地址执行从读操作起始地址开始读预设字节的操作即可,执行顺序可根据实际需要选择。以预定顺序为依次向0xA1、0xA3、0xA5、0xA7、0xA9、0xAB、0xAD、0xAF的IIC设备地址执行从读操作起始地址开始读预设字节的操作为例,则本步骤包括:
[0044] IIC控制设备向0xA1的IIC设备地址执行从读操作起始地址开始读预设字节的操作,如果没有ACK应答,指定IIC设备地址0xA1的IIC总线连接的EEPROM不在位,向0xA3的IIC设备地址执行从读操作起始地址开始读预设字节的操作;如果有ACK应答,指定IIC设备地址0xA1的IIC总线连接的EEPROM在位,执行后续步骤502-505,在后续步骤502-505执行完成后,向0xA3的IIC设备地址执行从读操作起始地址开始读预设字节的操作;以此类推,一直到0xAF的IIC设备地址的操作执行完成,本发明中不再赘述。
[0045] 步骤502,在检测到IIC总线连接的EEPROM在位的同时,IIC控制设备获取EEPROM的IIC设备地址和厂商制造信息的长度。
[0046] 需要注意的是,为了读取EEPROM中存储的厂商制造信息,需要获得EEPROM的IIC设备地址、厂商制造信息的长度、读操作起始地址。读操作起始地址为约定地址(如约定读操作起始地址为0地址);EEPROM的IIC设备地址取决于数据通信设备的硬件设计,无法统一约定;厂商制造信息的长度也取决于具体IIC设备的应用(各IIC设备的厂商制造信息可不相同),无法统一约定;因此IIC控制设备需要获取EEPROM的IIC设备地址和厂商制造信息的长度。
[0047] 如图6所示的EEPROM的IIC设备地址的组成示意图,高4bit的0b1010是IIC接口EEPROM的统一标识;中间3bit是硬件设计时规定的片选信号(取值是0-7,即一条IIC总线上最多只能有8个EEPROM,连接更多的EEPROM时需要多条IIC总线),硬件连线设计时,需要为不同的IIC接口的EEPROM分配不同的片选信号,最后1bit是读写标识(当为1时为读操作,为0时为写操作)。当片选信号设置为000时,则EEPROM的IIC设备地址为0xA1,当片选信号设置为001时,则EEPROM的IIC设备地址为0xA3,以此类推。
[0048] 为了获得EEPROM的IIC设备地址,当检测到指定IIC设备地址的IIC总线连接的EEPROM在位的同时,则IIC控制设备获取IIC设备地址为指定IIC设备地址。例如,当指定IIC设备地址0xA1的IIC总线连接的EEPROM在位时,则IIC设备地址为0xA1。
[0049] 为了获得厂商制造信息的长度,当检测到指定IIC设备地址的IIC总线连接的EEPROM在位的同时,则IIC控制设备通过读预设字节的操作获取EEPROM的厂商制造信息的长度;预设字节包括2个字节,该2个字节为字节0和字节1,如果从字节0读取到指定标识(如标识0),则通过字节1获取EEPROM的厂商制造信息的长度;否则,通过字节0获取EEPROM的厂商制造信息的长度。
[0050] 具体的,本发明中可扩展现有SPD(Serial Presence Detect,存在的串行检测)规范的方法来获得厂商制造信息的长度。现有DDR(Double Data Rate,双倍速率)SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存取存储器)的SPD是一种IIC接口的EEPROM,用于存放DDRSDRAM的厂商建议配置信息,如表1所示。对于字节0,用于保存EEPROM的厂商制造信息的长度,如图7所示的保存EEPROM的厂商制造信息的长度的示意图;对于字节1,用于保存EEPROM总容量,如图8所示的保存EEPROM总容量的示意图。
[0051] 表1
[0052]Byte 0 EEPROM的厂商制造信息的长度
Byte 1 EEPROM总容量
[0053] 从图7和图8可以看出,现有厂商制造信息的长度最多为256Bytes,对于DDR SDRAM来说,厂商制造信息长度256Bytes已经足够了,但对于其它应用的IIC接口EEPROM来说,厂商制造信息长度256Bytes还远远不够,因此本发明中扩展了SPD规范的定义,对于非DDR SDRAM SPD的EEPROM,Byte 0存放0,用于标识EEPROM的厂商制造信息的长度由Byte 1决定;Byte1用于保存EEPROM的厂商制造信息的长度,如表2所示。
[0054] 表2
[0055]Byte 0 0(标识EEPROM的厂商制造信息的长度由Byte 1决定)
Byte 1 EEPROM的厂商制造信息的长度
[0056] 综上所述,本发明中,IIC控制设备通过检测IIC接口的EEPROM在位时所读取的数据(即通过读2字节的数据),可获得EEPROM的厂商制造信息的长度。该扩展定义兼容了DDR SDRAM和非DDR SDRAM,DDR SDRAM的字节0声明EEPROM的厂商制造信息的长度,非DDR SDRAM的字节1声明EEPROM的厂商制造信息的长度,因此读2个字节的数据时可获得基于DDR SDRAM和非DDR SDRAM的厂商制造信息的长度。
[0057] 步骤503,IIC控制设备通过EEPROM的IIC设备地址、读操作起始地址和厂商制造信息的长度获取EEPROM中存储的厂商制造信息。本发明中,IIC控制设备获取EEPROM中存储的厂商制造信息的过程(即上述的步骤501-步骤503)独立于系统启动软件,且与系统启动软件并行执行。
[0058] 例如,当检测到0xA1的IIC总线连接的EEPROM在位时,以读操作起始地址开始,通过厂商制造信息的长度获取EEPROM中存储的厂商制造信息,从而获得0xA对应的厂商制造信息。
[0059] 步骤504,IIC控制设备将厂商制造信息存储到内部RAM(Random Access Memory,随机存取存储器)或者系统内存中。
[0060] 步骤505,在数据通信设备启动过程中,如果需要获取厂商制造信息,则直接从内部RAM或者系统内存中获取。
[0061] 本发明中,IIC控制设备可以将厂商制造信息保存到内部RAM(CPLD、FPGA、或多核CPU一般集成在内部RAM)中,供CPU系统软件有需要时从内部RAM中直接获取厂商制造信息。对于内部RAM,由于BIOS(Basic Input Output System,基本输入输出系统)需要先获取SPD信息才能初始化系统内存,则内部RAM可适用于提前获取DDR SDRAM的SPD信息。
[0062] 另外,不同IIC设备的厂商制造信息可保存在内部RAM中不同的地址(这些地址是预先约定好的),在保存厂商制造信息时,可保存厂商制造信息的首地址,且存放获取完成标志,默认内部RAM中所有获取完成标志均是未完成,当将厂商制造信息写入内部RAM后,修改获取完成标志为完成。
[0063] 本发明中,考虑到内部RAM空间有限,针对较大的厂商制造信息,IIC控制设备可以将厂商制造信息保存到系统内存中。不同IIC设备的厂商制造信息可保存在系统内存中不同的地址(这些地址是预先约定好的),在保存厂商制造信息时,可保存厂商制造信息的首地址,且存放获取完成标志,默认系统内存中所有获取完成标志均是未完成,当将厂商制造信息写入系统内存后,修改获取完成标志为完成。
[0064] 综上所述,本发明中,在数据通信设备系统软件启动后,在CPU运行系统启动软件,初始化其它各种硬件和软件资源时,可独立于系统启动软件来自动学习IIC总线上各EEPROM是否在位,以及EEPROM的IIC设备地址和厂商制造信息的长度,从而可自动读取厂商制造信息,保存到内部RAM或系统内存中,且上述获取过程独立于CPU系统软件,与运行系统启动软件的CPU并行启动;在CPU系统软件需要厂商制造信息时,CPU运行系统启动软件不再直接从慢速EEPROM中读取制造信息,而是从高速的内部RAM或系统内存中读取厂商制造信息,这样采用串行工作并行化的操作,缩短数据通信设备启动时间。
[0065] 进一步的,CPU运行系统启动软件从高速的内部RAM或系统内存中读取厂商制造信息,与从慢速EEPROM中读取制造信息相比,大幅提高CPU系统软件的访问速度(由100kbps提高到1Gbps以上);缩短数据通信设备启动时间(缩短了5%至40%之间);增强数据通信设备转发性能的稳定性;适用范围广,使用IIC总线的电子设备均可使用本发明提供的技术方案;无需CPU参与,可实现性强,逻辑设计简单;用户感受好,无需用户了解数据通信设备设计实现,无需特殊注意事项。
[0066] 基于与上述方法同样的发明构思,本发明还提供一种IIC控制设备,IIC总线的一侧连接有数量不确定的EEPROM,另一侧连接有IIC控制设备,EEPROM中存储有所在模块的厂商制造信息,IIC控制设备集成在CPLD或FPGA中,且独立于运行系统启动软件的CPU;或,IIC控制设备集成在多核CPU中非运行系统启动软件的一个核中,且独立于多核CPU中运行系统启动软件的核,如图9所示,该设备包括EEPROM在位检测子模块11、核心控制子模块12、内部RAM 13、系统内存访问子模块14和IIC访问接口子模块15。
[0067] 该IIC访问接口子模块15用于实现对EEPROM的访问,EEPROM在位检测子模块11和核心控制子模块12可调用IIC访问接口子模块15对IIC接口的EEPROM进行读操作;对EEPROM的访问过程中,IIC设备地址和厂商制造信息的长度由EEPROM在位检测子模块11和核心控制子模块12下发,被访问EEPROM的读操作起始地址固定为由IIC设备地址开始的第0字节。
[0068] EEPROM在位检测子模块11,用于使用IIC总线检测IIC总线连接的EEPROM的在位情况;EEPROM在位检测子模块11,具体用于向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作,如果指定IIC设备地址有ACK应答,检测到指定IIC设备地址的IIC总线连接的EEPROM在位;如果指定IIC设备地址没有ACK应答,检测到指定IIC设备地址的IIC总线连接的EEPROM不在位。
[0069] 指定IIC设备地址包括:0xA1、0xA3、0xA5、0xA7、0xA9、0xAB、0xAD、0xAF;EEPROM在位检测子模块11,进一步用于按照0xA1、0xA3、0xA5、0xA7、0xA9、0xAB、0xAD、0xAF之间的预定顺序向指定IIC设备地址执行从读操作起始地址开始读预设字节的操作。
[0070] 核心控制子模块12,用于当检测到IIC总线连接的EEPROM在位时,获取EEPROM的IIC设备地址和厂商制造信息的长度,并通过EEPROM的IIC设备地址、读操作起始地址和厂商制造信息的长度获取EEPROM中存储的厂商制造信息;获取EEPROM中存储的厂商制造信息的过程独立于系统启动软件,且与系统启动软件并行执行。
[0071] 核心控制子模块12,具体用于当检测到指定IIC设备地址的IIC总线连接的EEPROM在位时,获取EEPROM的IIC设备地址为指定IIC设备地址;当检测到指定IIC设备地址的IIC总线连接的EEPROM在位时,通过读预设字节的操作获取EEPROM的厂商制造信息的长度;预设字节包括2个字节,该2个字节为字节0和字节1,如果从字节0读取到指定标识,则通过字节1获取EEPROM的厂商制造信息的长度;否则,通过字节0获取EEPROM的厂商制造信息的长度。
[0072] 具体的,IIC控制设备上电后,EEPROM在位检测子模块11下发对IIC设备地址0xA1(硬件连线设计上可将DDR SDRAM SPD片选信号设置为000,IIC设备地址为0xA1,以最先读取SPD的信息给BIOS初始化DDR内存)的EEPROM读两个字节的动作给IIC访问接口子模块15;并在检测到0xA1对应的EEPROM返回ACK后,获知EEPROM在位,将获取到的两个字节(字节0和字节1)上报给核心控制子模块12,由核心控制子模块12解析出厂商制造信息的长度后,针对IIC设备地址的EEPROM下发读厂商制造信息的长度的操作给IIC访问接口子模块15,IIC访问接口子模块15完成IIC读操作后,将获取的数据(即厂商制造信息)上报给核心控制子模块12。在完成此次EEPROM的厂商制造信息获取后,核心控制子模块12触发EEPROM在位检测子模块11检测下一个IIC设备地址0xA3,依次类推,直到检测完成0xAF。
[0073] 进一步的,如果有多条IIC总线,EEPROM在位检测子模块11还需按照每条IIC总线依次搜索。另外,EEPROM在位检测子模块11检测到0xA1没有回复ACK,则说明0xA1地址对应的IIC接口的EEPROM不存在,该EEPROM在位检测子模块11自动检测0xA3,依次类推。
[0074] 本发明中,核心控制子模块12,还用于将厂商制造信息存储到内部RAM13或通过系统内存访问子模块14将厂商制造信息存储到系统内存中,此时:
[0075] 内部RAM 13,用于保存厂商制造信息,以用于当CPU(CPU系统软件)需要获知厂商制造信息时,到内部RAM 13中读取厂商制造信息;不同IIC设备的厂商制造信息可保存在内部RAM 13中不同的地址,在保存厂商制造信息时,可保存厂商制造信息的首地址,且存放获取完成标志,默认内部RAM13中所有获取完成标志均是未完成,当将厂商制造信息写入内部RAM 13后,修改获取完成标志为完成。
[0076] 系统内存访问子模块14,用于将厂商制造信息存储到系统内存,以用于当CPU需要获知厂商制造信息时,到系统内存中读取厂商制造信息。由于内部RAM 13空间有限,如果有较大的厂商制造信息,则需要保存到系统内存中;核心控制子模块12是通过系统内存访问子模块14实现将获取的厂商制造信息保存到系统内存中的。不同IIC设备的厂商制造信息可保存在系统内存中不同的地址,在保存厂商制造信息时,可保存厂商制造信息的首地址,且存放获取完成标志,默认系统内存中所有获取完成标志均是未完成,当将厂商制造信息写入系统内存后,修改获取完成标志为完成。
[0077] 本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0078] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0079] 本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0080] 本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0081] 上述本发明序号仅仅为了描述,不代表实施例的优劣。
[0082] 以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。