获取物理层芯片状态信息的方法及装置 【技术领域】
本发明涉及通信中的介质无关接口技术,特别涉及一种获取物理层芯片状态信息的方法及装置。
背景技术
数据输入/输出管理模块(Management Data Input/Output,MDIO)接口作为介质无关接口(Media Independent Interface,MII)的一部分,可以通过其接口时序实现对物理层芯片的读、写访问。图1给出了MDIO接口的基本结构,中央处理器(CPU)接口主要完成MDIO接口与CPU的通讯;物理层(PHY)接口主要完成MDIO接口与物理层芯片的通讯;控制模块为MDIO接口的主体模块,根据CPU的读、写命令,生成相应的读、写时序。因此,利用MDIO接口的读访问功能,可以获取物理层芯片的工作状态信息,包括双工状态、速度状态和链接状态。
现有技术是通过软件编程实现自动获取物理层芯片的工作状态。CPU定期向MDIO接口发出读PHY芯片的命令。MDIO的控制模块根据CPU的读命令,通过PHY接口,向PHY芯片发出读时序,然后从PHY芯片返回的读数据中,提取工作状态信息,并报送给CPU,从而实现自动获取物理层芯片的功能。但是利用软件编程来读到物理的状态信息会过多的占用软件资源;由于软件只能定期通过MDIO接口查询物理层芯片的状态信息,所以也不能够及时的获取物理层芯片最新的状态信息。
【发明内容】
本发明的目地在于提供一种获取物理层芯片状态信息的方法及装置,以解决现有技术中存在占用软件资源和获取状态信息不及时的问题。
为了实现上述目的,本发明提供以下技术方案:
一种获取物理层芯片状态信息的方法,所述物理层芯片通过介质无关接口连接到网络处理器,该网络处理器通过介质无关接口中的数据输入/输出管理接口获取物理层芯片端口的状态信息,当所述网络处理器没有访问请求时所述数据输入/输出管理接口进行下述步骤:
A、获取物理芯片端口状态信息的存储位置;
B、根据所述的存储位置从所述物理芯片中读取端口状态信息;
C、至少使网络处理器获得发生了变化的端口状态信息。
其中:
步骤C中,数据输入/输出管理接口将获取的端口状态信息直接上报网络处理器,由网络处理器判断端口状态信息是否发生了变化。
步骤C中,数据输入/输出管理接口将获取的端口状态信息与该端口的原状态信息进行比较,仅当端口状态信息发生了变化时,通知网络处理器获取发生了变化的端口状态信息或直接将发生了变化的端口状态信息上报网络处理器。
数据输入/输出管理接口采用计数方式轮循读取多个端口中每一端口的状态信息。
所述物理芯片状态信息的存储位预先配置在数据输入/输出管理接口中。
一种数据输入/输出管理接口,在连接网络处理器和物理层芯片的介质无关接口中用于访问物理层芯片,该数据输入/输出管理接口包括用于实现通讯的处理器接口和物理层接口,以及产生访问时序的控制模块,其中,所述数据输入/输出管理接口还包括智能访问模块和仲裁模块;所述控制模块和智能访问模块分别与处理器接口和仲裁模块连接,所述物理层接口与仲裁模块连接;所述仲裁模块根据是否存在外部访问请求,选择所述控制模块或智能访问模块控制物理层接口。
本发明通过硬件来获取物理层芯片的状态信息,降低了软件资源的消耗;同时可以实时的对物理层芯片进行监控,能够及时的反映物理层状态信息的变化;通过中CPU对MDIO内部寄存器的配置(主要是状态信息存储位置的配置),能够使得该方案适用于多款物理层芯片。
【附图说明】
图1为数据输入/输出管理接口的结构图;
图2为本发明数据输入/输出管理接口的结构图;
图3为本发明进行智能访问的流程图;
图4为智能模块的结构示意图。
【具体实施方式】
如图2所示,本发明在现有的数据输入/输出管理接口(MDIO)结构中增加两个模块来实现自动获取物理层芯片端口的状态信息。本发明的数据输入/输出管理接口(MDIO)包括中央处理器接口、物理层接口、控制模块、智能访问模块和仲裁模块;控制模块和智能访问模块分别与处理器接口和仲裁模块连接,物理层接口与仲裁模块连接。
中央处理器(CPU)接口主要完成MDIO接口与CPU的通讯;物理层(PHY)接口主要完成MDIO接口与物理层芯片的通讯;控制模块为MDIO接口根据CPU的读、写命令,生成相应的读、写时序;智能访问模块用于自动访问物理层芯片,从物理层芯片获端口的状态信息;仲裁模块用于从控制模块和智能访问模块中选择一个来控制物理层接口。
参阅图3所示,智能访问模块包括数据生成模块、端口轮循模块和状态提取模块。
数据生成模块主要提供智能访问所需要的PHY芯片中保存端口状态信息的寄存器地址和寄存器内的偏移地址。在产品所应用的PHY芯片确定后,其端口状态信息的存储位置也就确定下来,因此每个端口智能访问所需的地址信息也确定下来。
一方面一片PHY芯片一般包含多个物理层端口(每个端口对应一个以太网口),另一方面可能有多个PHY芯片同时应用,因此一个MDIO接口可能同时和多个物理层端口相连,需要获取多个物理层端口的状态信息。端口轮循模块利用计数器,来确定当前所访问的端口,从数据生成模块提取出相应端口的地址信息,送给仲裁模块。
状态提取模块主要完成端口状态信息的提取功能。根据仲裁模块提供的PHY芯片数据和端口轮循模块提供的当前访问端口信息,来决定当前所提取的端口状态信息是属于哪个物理层端口的,并将相应的信息报送给CPU接口。
虽然不同的PHY芯片,其状态信息存储的位置可能不同,但对同一款芯片而言,状态信息的存储位置是固定的,因此CPU针对不同的PHY芯片,预先配置智能访问模块的内部寄存器,主要将物理层芯片中保存状态信息的寄存器地址和寄存器内的偏移地址配置在智能访问模块中。配置完毕后,就不再需要CPU对PHY芯片的访问过程进行干预。
控制模块保持MDIO接口的基本功能,当CPU有读、写请求时,仲裁模块将PHY接口的操作权交给控制模块,控制模块产生读、写时序,通过仲裁模块和PHY接口从PHY芯片读取数据或向PHY芯片写数据。
当CPU没有读、写请求时,仲裁模块将PHY接口的操作权交给智能访问模块,此时,MDIO接口就处于智能访问状态。MDIO接口在对PHY芯片进行智能访问时,智能访问模块从配置寄存器获取状物理层芯片的状态信息的存储位置,然后向PHY芯片发出读时序,通过仲裁模块和PHY接口从PHY芯片读取端口的状态信息。MDIO接口在获取了PHY芯片的工作状态信息后,有两种方式通知CPU。一种方式是直接将工作状态信息送给CPU,由CPU负责对状态信息的维护和跟踪;另一种是MDIO接口对工作状态信息进行存储,然后将最新获取的状态信息与存储的状态信息进行比较,如果发现某个端口的状态信息发生变化时,向CPU发出状态变化中断,CPU通过执行中断程序,从MDIO接口获取到最新的物理层芯片的状态信息。
如果在智能访问过程中,MDIO接口接收到CPU的访问请求,仲裁模块判断当前的智能访问是否完成,若智能访问已完成,仲裁模块就将PHY接口的控制权交给控制模块进行CPU的读写访问;若智能访问未完成,则仲裁模块等待当前的智能访问完成后再进行CPU的读写访问。
参阅图4所示,仲裁模块的处理流程如下:
上电复位或无CPU的读/写操作时,仲裁模块将PHY接口的控制权交给智能访问模块,此时MDIO工作于对PHY的智能访问状态。MDIO模块会周期性的轮询访问各个物理层端口的内部寄存器,将该端口的链接状态、速度状态、双工状态进行上报(步骤10);
在每次智能访问的过程中,判断是否有CPU的读/写请求(步骤20);
若没有读写请求,PHY接口的控制权仍然属于智能访问模块;
如果有CPU读/写请求,判断是否正在进行智能(步骤30),若访问完成,则仲裁模块将PHY接口的控制权交给控制模块,MDIO进行CPU读/写操作(步骤50);若智能访问未完成,则等待当前的智能访问完成(步骤40),之后仲裁模块再将PHY接口的控制权交给控制模块,进行CPU的读写操作(步骤50)。