Communication system and communication method between multiple nodes and I2C (Inter-Integrated Circuit) equipment

By building a communication system of CPLD modules and multiplexing switch modules within the I2C device, the communication conflict caused by BMC competition for I2C bus access rights in multi-node devices is resolved, achieving improved stability and reliability and reducing design complexity and cost.

CN120803824APending Publication Date: 2025-10-17EVEX TECHNOLOGY CO LTD
View PDF 0 Cites 1 Cited by

Patent Information

Application Number
CN202510882468.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-06-27
Publication Date
2025-10-17

AI Technical Summary

Technical Problem

In a multi-node device, when multiple BMCs compete for I2C bus access rights, communication conflicts and anomalies are prone to occur, affecting system stability and reliability.

Method used

A CPLD module, a multiplexing switch module, and multiple connectors are set up in the I2C device to build a direct connection channel between the BMC and the CPLD. The CPLD module centrally processes permission requests and accurately controls the multiplexing switch module to select the target channel, thereby achieving reasonable allocation of I2C bus access rights.

Benefits of technology

It effectively avoids I2C bus anomalies, improves communication stability and reliability, reduces system design difficulty and cost, improves design efficiency, and ensures efficient flow and utilization of resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120803824A_ABST
    Figure CN120803824A_ABST
Patent Text Reader

Abstract

The invention provides a communication system and a communication method used between multiple nodes and I2C equipment, and relates to the technical field of servers. The system is arranged in I2C equipment and comprises a CPLD (Complex Programmable Logic Device) module, a multiplexing switch module and a plurality of connectors, and the connectors are connected with a BMC (Baseboard Management Controller) and the CPLD module of a node to form a direct connection channel of the BMC and the CPLD; the multiplexing switch module is connected with the CPLD module, and the connector is also connected with I2C equipment through the multiplexing switch module; the CPLD module receives a permission request instruction of a multi-node BMC to an I2C bus through a direct connection channel, generates a channel selection instruction for indicating to gate a channel between a target BMC and I2C equipment, and sends the instruction to the multiplexing switch module; and the multiplexing switch module only gates the communication connection between the target BMC and the I2C equipment based on the instruction, so that the problem of I2C bus abnormity caused by communication arbitration of a plurality of BMCs is effectively avoided.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present application relates to the technical field of servers, and in particular to a communication system and a communication method for communication between multiple nodes and I2C devices. BACKGROUND

[0002] In a multi-node device, each node usually has its own baseboard management controller (BMC), so there are multiple BMCs in the multi-node device. The multiple BMCs are connected with devices through an Inter-Integrated Circuit (I2C) bus, and the connected devices are I2C devices. Among them, the I2C devices can be shared, that is, multiple BMCs can access the shared I2C devices. In this case, since the I2C bus is a shared resource, multiple BMCs need to compete for access to the I2C bus to avoid communication conflicts.

[0003] In related technologies, a communication arbitration mechanism among multiple BMCs is used to determine the BMC that obtains access to the I2C bus. However, this approach is prone to I2C bus abnormalities. SUMMARY

[0004] The present application provides a communication system and a communication method for communication between multiple nodes and I2C devices to improve the problem of I2C bus abnormalities when a communication arbitration mechanism among multiple BMCs is used to determine the BMC that obtains access to the I2C bus.

[0005] In a first aspect, the present application provides a communication system for communication between multiple nodes and I2C devices, which is arranged in an I2C device, and includes a Complex Programmable Logic Device (CPLD) module, a multiplexing switch module, and multiple connectors, wherein:

[0006] One end of the connector is connected with a BMC of a corresponding node, and the other end of the connector is connected with the CPLD module, forming a direct connection channel between the BMC and the CPLD module; the control end of the multiplexing switch module is connected with the CPLD module, and the connector is further connected with the I2C device through the multiplexing switch module;

[0007] The CPLD module is configured to receive a permission request instruction of the BMCs of the multiple nodes for the I2C bus through the direct connection channel, and based on the permission request instruction, generate a channel selection instruction indicating a channel between a target BMC and the I2C device, the target BMC being one of the BMCs that issues the permission request instruction; and send the channel selection instruction to the control end of the multiplexing switch module.

[0008] The multiplexing switch module is configured to select the communication connection between the target BMC and the I2C device based on a channel selection instruction.

[0009] In a possible implementation, the CPLD module includes a control module and an I2C slave module connected to the BMC of each node in the multi-node respectively, and the I2C slave module is configured to record the permission state of the BMC. The control module is specifically configured to: parse a permission request instruction to obtain the node identifier and the permission flag of the corresponding BMC; update the permission state of the corresponding BMC recorded by the I2C slave module based on the node identifier and the permission flag, and determine the target BMC; and generate a channel selection instruction indicating the channel between the target BMC and the I2C device.

[0010] In a possible implementation, the I2C slave module includes a first register, a second register, and a third register. The first register is configured to store the node identifier currently having the access permission of the I2C bus. The second register is configured to record the permission flag of the corresponding node, and the permission flag includes a permission request flag or a permission release flag. The third register is configured to record the node identifier currently performing the permission request. When the control module is used to update the permission state of the corresponding BMC recorded by the I2C slave module based on the node identifier and the permission flag, and determine the target BMC, the control module is specifically configured to: update the second register in the I2C slave module based on the node identifier and the permission flag; when the second register is detected to write the permission request flag, aggregate the permission flags recorded in the second register of each I2C slave module, and notify the aggregated permission flag information to other nodes; and determine the target BMC in response to detecting that the node currently having the permission releases the permission.

[0011] In a possible implementation, the I2C slave module is further configured to: release the access permission of the target BMC after the target BMC completes the access to the I2C bus, and switch the access permission to the BMC corresponding to a default node in the multi-node.

[0012] In a possible implementation, the connector is a modular pluggable connector.

[0013] In a possible implementation, the modular pluggable connector includes: a control signal interface configured to transmit the control signal between the CPLD module and the BMC of the corresponding node; a data signal interface configured to transmit the data signal between the multiplexing switch module and the BMC of the corresponding node; and a state indication pin configured to feed back the connection state of the channel between the BMC of the corresponding node and the I2C device.

[0014] In a possible implementation, the CPLD module is further configured to: force release the access right of the BMC of the node when the holding time of the access right of the BMC of the node exceeds a corresponding holding time threshold; record a BMC timeout event of the corresponding node and trigger an exception handling process.

[0015] In a second aspect, the present application provides a multi-node device, comprising:

[0016] a plurality of nodes, each of which is provided with a baseboard management controller (BMC);

[0017] an I2C device;

[0018] The communication system for the multi-node and the I2C device according to any one of the first aspect.

[0019] In a third aspect, the present application provides a communication method for a multi-node and an I2C device, which is applied to a CPLD module in a communication system for a multi-node and an I2C device, and the communication system further comprises a multiplexing switch module; the communication method comprises:

[0020] generating a channel selection instruction indicating the channel between the target BMC and the I2C device in response to receiving a right request instruction of the BMC of the target node in the multi-node to the I2C bus;

[0021] controlling the multiplexing switch module to only select the communication connection between the target BMC and the I2C device based on the channel selection instruction.

[0022] In a possible implementation, the CPLD module comprises a control module and an I2C slave module independently connected with the BMC of each node in the multi-node, and generating the channel selection instruction indicating the channel between the target BMC and the I2C device based on the right request instruction comprises: analyzing the right request instruction to obtain the node identifier and the right flag of the corresponding BMC; updating the right state of the corresponding BMC recorded by the I2C slave module based on the node identifier and the right flag, and determining the target BMC; and generating the channel selection instruction indicating the channel between the target BMC and the I2C device.

[0023] The present application provides a communication system and method for multiple nodes and an I2C device. The communication system is arranged in an I2C device and includes a CPLD module, a multiplexing switch module, and multiple connectors. One end of the connector is connected to the BMC of a corresponding node, and the other end of the connector is connected to the CPLD module, forming a direct connection channel between the BMC and the CPLD module. The control end of the multiplexing switch module is connected to the CPLD module, and the connector is also connected to the I2C device through the multiplexing switch module. The CPLD module is configured to receive permission request instructions for the I2C bus from the BMCs of multiple nodes through the direct connection channel, and based on the permission request instructions, generate a channel selection instruction instructing to select a channel between a target BMC and the I2C device, where the target BMC is one of the BMCs that issued the permission request instruction; send the channel selection instruction to the control end of the multiplexing switch module; and the multiplexing switch module is configured to select only the communication connection between the target BMC and the I2C device based on the channel selection instruction. This application establishes a direct connection between the BMC and the CPLD by placing a CPLD module, a multiplexing switch module, and multiple connectors within the I2C device. The CPLD module centrally processes permission requests and precisely controls the multiplexing switch module to select the target channel. This effectively avoids the I2C bus anomalies caused by multiple BMC communication arbitration in the existing technology, greatly improving the stability and reliability of communication. Furthermore, it reduces the complexity of interaction between BMCs, effectively reducing the difficulty of system software and hardware design, making system design more modular, significantly improving design efficiency and reducing design costs, and providing reliable guarantees for efficient and stable communication between multi-node devices and I2C devices. BRIEF DESCRIPTION OF THE DRAWINGS

[0024] The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments consistent with the present application and, together with the description, serve to explain the principles of the present application.

[0025] Figure 1 A schematic diagram of the connection between multiple nodes and I2C devices in the related art;

[0026] Figure 2 A schematic structural diagram of a communication system between multiple nodes and I2C devices provided by an exemplary embodiment of the present application;

[0027] Figure 3 A schematic diagram of the connection between the BMC of a node and an I2C slave module provided in an exemplary embodiment of the present application;

[0028] Figure 4 A schematic structural diagram of a multi-node device provided by an exemplary embodiment of the present application;

[0029] Figure 5A flowchart of a method for communication between multiple nodes and I2C devices is provided for exemplary embodiments of the present application.

[0030] The present application has been shown and described in terms of specific embodiments herein, which are to be considered illustrative in nature and are not intended to limit the scope of the application as defined in the appended claims. The following drawings and detailed description are included to provide a full appreciation of the scope of the present application and to demonstrate by way of example the principles of the application. DETAILED DESCRIPTION

[0031] The illustrative embodiments will be described with reference to the accompanying drawings in which like reference numerals in different drawings identify the same or similar constituents. The following description of illustrative embodiments is not presented to limit the scope of what the application has in store but is presented to illustrate at least one example of how the application can be made and used. A detailed description of the embodiments of the application will be made with reference to the accompanying drawings.

[0032] The terms "first", "second", and the like, in the description and in the claims of this application are used for distinguishing between similar elements and not necessarily for describing a particular sequential or chronological order. It is to be understood that the use of these terms in the description is solely intended to distinguish the comparable elements from other comparable elements unless the context clearly indicates otherwise. It is further understood that the use of the terms "first", "second", and the like are in no way limiting and are merely used for purposes of nomenclature. It is also to be understood that the description and the claims can use relative terms to describe the orientation and / or position of components. These terms are used to describe the relative location and / or orientation of the components illustrated in the figures. These terms are in no way limiting and are intended to encompass different positional relationships to components than those depicted in the figures, unless the context clearly indicates otherwise.

[0033] It should be noted that the user information (including but not limited to user equipment information, user personal information, etc.) and data (including but not limited to data for analysis, stored data, displayed data, etc.) involved in the present application are all information and data authorized by the user or authorized by all parties, and the collection, use and processing of related data need to comply with relevant laws, regulations and standards, and provide corresponding operation portal for user to choose authorization or refusal.

[0034] Exemplarily, Figure 1 A connection diagram between multiple nodes and I2C devices in the related art is shown. As Figure 1As shown, the board of the I2C device contains an Electrically Erasable Programmable Read-Only Memory (EEPROM), a sensor (SENSOR), a power supply unit (PSU), and an I / O expansion chip such as PCA9555, and each type of device has only one instance on the I2C bus. Multiple BMCs such as BMC1 and BMC2 are connected to the same I2C bus. Correspondingly, when multiple BMCs need to access the same I2C device such as EEPROM or SENSOR, multiple BMCs compete for access to the I2C bus through communication arbitration. The arbitration process may fail, causing I2C bus abnormalities and affecting the stability of the entire system. In addition, multiple BMCs need to communicate and arbitrate through hardware connections, which makes the correlation between modules high and makes it difficult to design and maintain independent modules.

[0035] To solve the above problems, the embodiment of the present application provides a communication scheme between multiple nodes and I2C devices. By constructing a communication system in the I2C device, a direct connection channel is built for each BMC and CPLD module using multiple connectors, so that the BMC can directly send a permission request instruction to the CPLD, reducing the intermediate links and reducing the communication error probability. The CPLD module serves as the core control unit, receives and processes the permission request instruction, accurately generates a channel selection instruction, and realizes reasonable allocation of I2C bus access permissions, avoiding the confusion of traditional arbitration mechanisms. The multiplexing switch module selects only the communication connection between the target BMC and the I2C device according to the instruction of the CPLD module, ensuring that only one BMC accesses the device at the same time and reducing I2C bus conflicts. Through this design, each BMC does not need to interact directly, the correlation between modules is greatly reduced, and independent design, development and maintenance are possible, greatly improving the scalability, stability and maintainability of the system.

[0036] The technical solutions of the present application and how the technical solutions of the present application solve the above technical problems will be described in detail below with specific embodiments. The following specific embodiments can be combined with each other, and the same or similar concepts or processes may not be described again in some embodiments. The embodiments of the present application will be described below with reference to the accompanying drawings.

[0037] Figure 2 A structural schematic diagram of a communication system between multiple nodes and I2C devices is provided for the exemplary embodiments of the present application. As shown in Figure 2 The communication system 20 between multiple nodes and I2C devices is arranged in the I2C device, and the communication system includes a CPLD module 21, a multiplexing switch module 22, and multiple connectors 23.

[0038] One end of the connector 23 is connected with the BMC of the corresponding node, and the other end of the connector 23 is connected with the CPLD module 21, forming a direct connection channel of the BMC and the CPLD module 21; the control end of the multiplexing switch module 22 is connected with the CPLD module 21, and the connector 23 is also connected with the I2C device through the multiplexing switch module 22;

[0039] The CPLD module 22 is configured to receive the permission request instruction of the BMCs of multiple nodes to the I2C bus through the direct connection channel, and generate a channel selection instruction indicating a channel between a target BMC and an I2C device based on the permission request instruction, the target BMC being one of the BMCs that send the permission request instruction; and send the channel selection instruction to the control end of the multiplexing switch module 22.

[0040] The multiplexing switch module 23 is configured to select the communication connection between the target BMC and the I2C device based on the channel selection instruction.

[0041] The connector 23 is an interface module for realizing physical connection, and each connector corresponds to the BMC of a node; one end is connected with the BMC of the corresponding node, and the other end is connected with the CPLD module 21, forming a direct connection channel of the BMC and the CPLD module 21, for example, BUS1_I2C; in addition, the connector 23 is also connected with the I2C device through the multiplexing switch module 22, providing an interface for the BMC to access the I2C device through the multiplexing switch, for example, BUS2_I2C; the CPLD module 21 is a core control unit of the communication system, responsible for processing the permission management and channel switching of the I2C bus, receiving the permission request instruction of the BMCs of multiple nodes to the I2C bus through the direct connection channel BUS1_I2C; the multiplexing switch module 22 is a hardware module for realizing the switching of the I2C bus signals, for example, using a 74HC4052PW chip, based on the channel selection instruction sent by the CPLD module 21, only selecting the communication connection between the target BMC and the I2C device, realizing the time division multiplexing of the I2C bus, and ensuring the signal isolation between other BMCs and the I2C device in the unselected state, avoiding signal interference.

[0042] For example, when the BMC of each node wants to access the I2C device through the multiplexing switch module 23, the BMC needs to send a permission request instruction to the CPLD module 21 through the direct channel BUS1_I2C first; after receiving the permission request instruction, the CPLD module 21 generates a channel selection instruction according to a preset permission management strategy, such as first come first served or priority allocation, to instruct the multiplexing switch module 22 to select the channel between the target BMC and the I2C device; the CPLD module 21 sends the channel selection instruction to the multiplexing switch module 22, and the multiplexing switch module 22 selects the communication connection between the target BMC and the I2C device based on the instruction. Correspondingly, the target BMC accesses the I2C device through the selected channel and performs data reading and writing operations.

[0043] The communication system between the multiple nodes and the I2C device provided by the embodiments of the present application can effectively avoid the I2C bus abnormality problem caused by the communication arbitration of multiple BMCs in the prior art by setting the CPLD module, the multiplexing switch module and the plurality of connectors in the I2C device, constructing the direct channel between the BMC and the CPLD, centrally processing the permission request by the CPLD module and accurately controlling the target channel selected by the multiplexing switch module, greatly improving the stability and reliability of the communication. In addition, the interaction complexity between the BMCs is reduced, the difficulty of system software and hardware design is effectively reduced, the system design is more modular, the design efficiency is significantly improved and the design cost is reduced, and the reliable guarantee for the efficient and stable communication between the multiple node devices and the I2C device is also provided.

[0044] In some embodiments, the CPLD module includes a control module and an I2C slave module independently connected with the BMC of a node in the multiple nodes, and the I2C slave module is configured to record the permission state of the BMC, and the control module is specifically configured to: parse the permission request instruction to obtain the node identifier and the permission flag of the corresponding BMC; update the permission state of the corresponding BMC recorded by the I2C slave module based on the node identifier and the permission flag, and determine the target BMC; and generate the channel selection instruction indicating the selected channel between the target BMC and the I2C device.

[0045] For example, the control module and N independent I2C_SLAVE modules (i.e., I2C slave modules) are arranged in the CPLD module. For example, Figure 3 The connection diagram of the BMC of the node and the I2C slave module provided by the exemplary embodiments of the present application is shown in FIG. 2. As shown in FIG. 2, the BMC of the node is connected with the I2C slave module through the direct channel BUS1_I2C. Figure 3As shown, one end of the connector is connected with the BMC of the corresponding node, and the other end of the connector is connected with the I2C slave module in the CPLD module, forming a direct channel between the BMC and the I2C slave module in the CPLD module. The I2C slave module records the permission state of the BMC connected thereto in real time. Correspondingly, when the BMC of a certain node needs to access the I2C device, the I2C slave module corresponding to the BMC sends a permission request instruction to the CPLD module, the permission request instruction containing the node identifier (such as node ID) of the BMC and the permission flag (such as request access); the control module receives and parses the permission request instruction, extracts the node identifier and the permission flag; based on the node identifier and the permission flag, the permission state of the corresponding BMC recorded by the I2C slave module is updated, the corresponding BMC is added to the candidate target BMC, and the final target BMC is determined from the candidate target BMC according to the permission management strategy such as first come first served or priority allocation; further, a channel selection instruction indicating the channel between the selected target BMC and the I2C device is generated.

[0046] In some embodiments, the I2C slave module includes a first register, a second register and a third register, wherein the first register is used to store the node identifier currently having access permission to the I2C bus; the second register is used to record the permission flag corresponding to the corresponding node, the permission flag including a permission request flag or a permission release flag; and the third register is used to record the node identifier currently performing permission request. When the control module is used to update the permission state of the corresponding BMC recorded by the I2C slave module based on the node identifier and the permission flag, and determine the target BMC, it is specifically used to: update the second register in the I2C slave module based on the node identifier and the permission flag; when detecting that the second register writes the permission request flag, aggregate the permission flags recorded in the second register of each I2C slave module, and notify the aggregated permission flag information to other nodes; and determine the target BMC in response to detecting that the node currently having the permission releases the permission.

[0047] For example, Table 1 is an example of the information stored in each register of the I2C slave module provided in the exemplary embodiments of the present application.

[0048] Table 1

[0049]

[0050]

[0051] As shown in Table 1, "0X01", "0X02" and "0X03" in the first column represent the addresses of the first register, the second register and the third register in the I2C slave module respectively; the first register has a read-write attribute of readable, and is used to store the node identification currently having access permission to the I2C bus, for example, when stored as "0X01", it indicates that the BMC of node 1 currently has access permission to the I2C bus, when stored as "0X02", it indicates that the BMC of node 2 currently has access permission to the I2C bus, when stored as "0X03", it indicates that the BMC of node 3 currently has access permission to the I2C bus, and so on. Correspondingly, the second register has a read-write attribute of writable, and is used to record the corresponding permission flag of the corresponding node, the permission flag includes a permission request flag or a permission release flag, for example, when currently stored as "0X01", it indicates that the corresponding node requests access permission, and when currently stored as "0X02", it indicates that the corresponding node requests to release the permission. Correspondingly, the third register has a read-write attribute of readable, and is used to record the node identification currently making a permission request, and is used to represent whether other nodes are also requesting access permission to the I2C bus, for example, when currently stored as "4' b0001", it indicates that the BMC of node 1 requests access permission to the I2C bus, when currently stored as "4' b0010", it indicates that the BMC of node 2 requests access permission to the I2C bus, when currently stored as "4' b0100", it indicates that the BMC of node 3 requests access permission to the I2C bus, and when currently stored as "4' b0011", it indicates that the BMC of node 2 and the BMC of node 3 both request access permission to the I2C bus, and so on.

[0052] Correspondingly, when the BMC of a certain node sends a permission request or release instruction to the corresponding I2C slave module, the control module receives and parses the instruction, extracts the node identification and the permission flag, finds the corresponding I2C slave module according to the node identification, and updates the permission flag of the second register in the I2C slave module, for example, if the BMC of node 2 sends a permission request instruction, the control module updates the value of the second register to "0x01" (indicating that access permission is requested); the control module continuously monitors the write operation of the second register in each I2C slave module, and when it is detected that a certain second register is written with a permission request flag (such as 0x01), the control module aggregates the permission flags recorded in the second registers of the I2C slave modules, and notifies the aggregated permission information to other nodes through the I2C bus or other communication modes, so that each node can know the current use of the I2C bus, for example, if the BMC of node 2 requests permission, the control module updates the value of the third register in each I2C slave module to 4'b0010, and if node 2 and node 3 request permission at the same time, the control module updates the value of the third register in each I2C slave module to 4'b0011. Further, in response to detecting that the node currently having the permission releases the permission, the target BMC is determined.

[0053] For example, 2 nodes are taken as an example for illustration. Specifically, the default I2C bus channel is switched at the BMC of node 1, i.e., the BMC of node 1 has the access right to the I2C bus by default; if the BMC of node 2 wants to have the access right to the I2C bus, it needs to write "0X01" into the second register of the I2C slave module 2 in the CPLD module, indicating that it wants to obtain the access right to the I2C bus; the CPLD module will aggregate the values in the second registers of each channel and write them into the third register of each I2C slave module; if the BMC of node 2 writes "0X01" into the second register of the I2C slave module 2, the BMC of node 1 can read "4'b0010" (indicating that the BMC of node 2 wants to obtain the access right to the I2C bus) in the third register of the I2C slave module 1; if the BMC of node 1 does not need to continue to access the I2C bus, it releases the control right to the I2C bus by writing "0X00" into the second register of the I2C slave module 1 corresponding to the BMC of node 1; after detecting that the BMC of node 1 performs the operation, the CPLD module switches the control right to the I2C bus to the BMC of node 2, and the value in the first register of each I2C slave module becomes "0X02" (indicating that the BMC of node 2 currently has the access right to the I2C bus); when detecting that the value in the first register of the I2C slave module 2 becomes "0X02", the BMC of node 2 can start to access the I2C bus.

[0054] It should be noted that for the scenario of multiple nodes, if multiple nodes simultaneously apply for the access right to the I2C bus, the target BMC is determined according to, for example, a first-come-first-served or priority allocation strategy.

[0055] In the embodiments of the present application, the first, second and third registers are arranged in the I2C slave module, and each register stores corresponding information, so that the CPLD module can quickly determine the target BMC based on the information, and then can quickly respond to the permission request and release operation of the node, effectively avoiding permission conflicts, and further improving the efficiency and accuracy of I2C bus resource allocation.

[0056] In some embodiments, the I2C slave module is further configured to release the access right of the target BMC after the target BMC completes the access to the I2C bus, and switch the access right to the BMC corresponding to the default node in the multiple nodes.

[0057] For example, when the target BMC, such as the BMC of node 2, finishes the access, the access right to the I2C bus is released in time, and specifically, the value in the second register of the I2C slave module 2 corresponding to the target BMC is updated to "0X00". The CPLD module scans the second registers of all nodes. If the values in the second registers of all nodes are "0X00", it indicates that all nodes have no demand for accessing the I2C bus, and then the access right to the I2C bus is switched to the BMC of the default node, such as the BMC of node 1.

[0058] In the embodiments of the present application, after the target BMC finishes the access to the I2C bus, the access right is automatically released and switched to the BMC corresponding to the default node, so that the automatic recycling and reasonable allocation of the access right to the I2C bus are realized, the bus resources can be efficiently circulated among multiple nodes, the resource idling caused by the failure to release the access right in time is reduced, and thus the resource utilization and operation efficiency of the whole system are effectively improved.

[0059] In some embodiments, the connector is a modular pluggable connector.

[0060] For example, the connector is a modular pluggable connector, which has a standardized interface specification and can adapt to the connection requirements of multiple different functional modules (such as BMC modules and I2C device modules of different models), and can be easily pulled out or inserted from the system without complex operations and tools. For example, it is a miscellaneous (Miscellaneous, abbreviated as MISC) connector, which indicates that the connector is not designed for a single specific function, but has multiple purposes and can be connected to multiple different types of low-speed devices.

[0061] In the embodiments of the present application, the connector is set as a modular pluggable connector, so that the system can flexibly replace different functional modules according to actual needs, and the ability of the system to adapt to different application scenarios is significantly improved. When the system fails, the maintenance personnel can quickly locate the module that may have a problem, check and replace the module connected by the corresponding modular pluggable connector, which can reduce the time for troubleshooting and repair, and help reduce maintenance costs. In addition, when the system needs to add new functional modules or nodes, only the corresponding modular pluggable connector and related modules need to be added, and the expansion of the system can be easily realized, so as to meet the growing business needs.

[0062] In some embodiments, the modular pluggable connector includes: a control signal interface for transmitting control signals between the CPLD module and the BMC of the corresponding node; a data signal interface for transmitting data signals between the multiplexing switch module and the BMC of the corresponding node; and a state indication pin for feeding back the connection state of the channel between the BMC of the corresponding node and the I2C device.

[0063] For example, the control signal interface is connected with the CPLD module and the BMC corresponding to each node. When the CPLD module needs to perform a control operation on the BMC of a certain node, such as starting or shutting down the node, adjusting system parameters, etc., the control signal is accurately transmitted through this interface. The data signal interface is connected with the multiplexing switch module and the BMC of each node. The multiplexing switch module is responsible for switching between multiple data channels. When the BMC needs to interact with different I2C devices (such as EEPROM, sensors, etc.), the data signal is efficiently transmitted between the multiplexing switch module and the BMC through the interface, ensuring accurate data transmission. The state indication pin is used to feedback the connection state of the channel between the BMC of the corresponding node and the I2C device. For example, when the BMC of a certain node attempts to communicate with a temperature sensor, the state indication pin will feedback information such as whether the channel is connected normally and whether the data transmission is stable in real time. If the connection is abnormal, the system can quickly troubleshoot and handle the problem according to the feedback information of the state indication pin.

[0064] In the embodiments of the present application, the clear division of the control signal interface and the data signal interface makes the signal transmission between the CPLD module and the BMC and between the multiplexing switch module and the BMC more accurate and efficient, avoiding signal interference and confusion, and improving the response speed of the system and the accuracy of data transmission. In addition, the state indication pin can feedback the connection state of the channel between the BMC and the I2C device in real time. When the system has a communication failure, the operation and maintenance personnel can quickly locate the problem, thereby effectively shortening the troubleshooting and repair time.

[0065] In some embodiments, the CPLD module is further configured to: when the access permission of the BMC of a node is held for a duration exceeding a corresponding holding time threshold, forcibly release the access permission; record the timeout event of the BMC of the corresponding node and trigger an exception handling process.

[0066] For example, the system sets a corresponding I2C bus access permission holding time threshold for the BMC of each node. Accordingly, during the operation of the system, when the BMC of a certain node continuously occupies the I2C bus access permission due to program exceptions or other reasons without releasing, causing the BMCs of other nodes to be unable to normally access the I2C device, the CPLD module continuously monitors the duration for which the BMC holds the access permission, and once it is found that the holding time threshold is exceeded, the CPLD module forcibly releases the access permission of the BMC, so that the I2C bus resource is released for use by other BMCs in need; at the same time, the CPLD module records the timeout event of the BMC of the node, including the time when the timeout occurs, the identification information of the node, etc.; after the recording is completed, an abnormal processing procedure is triggered, for example, an alarm information is sent to the system management software to inform the operation and maintenance personnel that the BMC of the node has an abnormal condition, so that the operation and maintenance personnel can timely process, and the possibility of further expansion of the abnormality is reduced as much as possible.

[0067] The embodiments of the present application ensure the fair allocation of I2C bus resources among the BMCs of various nodes by forcibly releasing the access permission of the BMC that has been occupied for a long time, reduce the situation that a single BMC occupies the bus resource for a long time due to an exception, causing other BMCs to be unable to normally work, and effectively improve the operation efficiency and stability of the entire server cluster; by recording the timeout event of the BMC and triggering the abnormal processing procedure, detailed fault information can be provided for the operation and maintenance personnel, so that the operation and maintenance personnel can quickly locate the problematic node and BMC according to the recorded timeout event, thereby effectively shortening the fault processing time and reducing the impact of the fault on the business; in summary, the reliability and security of the system are significantly enhanced by the permission management and abnormal processing mechanism, not only can the abnormal condition be timely discovered and processed, but also the chain reaction of the entire system caused by the failure of a single node can be effectively prevented, the stable operation of the server cluster in a complex environment is ensured, and the security of the data and the continuity of the business are ensured.

[0068] Figure 4 A structural schematic diagram of a multi-node device provided for an exemplary embodiment of the present application is shown. As shown in Figure 4 The multi-node device 40 includes a multi-node 41, an I2C device 42, and a communication system 20 for communication between the multi-node and the I2C device as described in the above embodiments.

[0069] Each node 41 is provided with a BMC; the communication system 20 for communication between the multi-node and the I2C device can be integrated inside the I2C device 42, or can be arranged between the multi-node 41 and the I2C device 42, which is not limited here.

[0070] Figure 5A flowchart of a method for communication between multiple nodes and an I2C device is provided for exemplary embodiments of the present application. The method for communication between multiple nodes and an I2C device provided by embodiments of the present application is applied to a CPLD module in a communication system for communication between multiple nodes and an I2C device, and the communication system further includes a multiplexing switch module. As shown in Figure 5 the method includes:

[0071] S501, in response to receiving a permission request instruction of a BMC of a target node in multiple nodes to an I2C bus, generating a channel selection instruction indicating a channel between the target BMC and an I2C device.

[0072] For example, when the BMC of each node wants to access the I2C device through the multiplexing switch module, it needs to first send a permission request instruction to the CPLD module through the direct channel BUS1_I2C; after the CPLD module receives the permission request instruction, it generates a channel selection instruction according to a pre-set permission management strategy such as first-come-first-served or priority allocation, etc., to instruct the multiplexing switch module to select the channel between the target BMC and the I2C device.

[0073] S502, based on the channel selection instruction, control the multiplexing switch module to only select the communication connection between the target BMC and the I2C bus.

[0074] For example, the CPLD module sends a channel selection instruction to the multiplexing switch module, and the multiplexing switch module selects the communication connection between the target BMC and the I2C device based on the instruction. Correspondingly, the target BMC accesses the I2C device through the selected channel and performs data read / write operations, etc.

[0075] On the basis of the above-mentioned embodiments, in some embodiments, the CPLD module includes a control module and an I2C slave module independently connected with the BMC of a node in multiple nodes, respectively, based on the permission request instruction, generating a channel selection instruction indicating a channel between the target BMC and the I2C device, including: parsing the permission request instruction to obtain the node identifier and the permission flag of the corresponding BMC; based on the node identifier and the permission flag, updating the permission state of the corresponding BMC recorded by the I2C slave module, and determining the target BMC; generating a channel selection instruction indicating a channel between the target BMC and the I2C device.

[0076] For example, when the BMC of a certain node needs to access an I2C device, the corresponding I2C slave module sends a permission request instruction to the CPLD module, the permission request instruction containing the node identification (such as node ID) of the BMC and a permission flag (such as a request for access); the control module receives and parses the permission request instruction, extracts the node identification and the permission flag; based on the node identification and the permission flag, the permission state of the corresponding BMC recorded by the I2C slave module is updated, the corresponding BMC is added to the candidate target BMC, and the final target BMC is determined from the candidate target BMC according to the permission management strategy such as first-come-first-served or priority allocation; further, a channel selection instruction indicating the channel between the target BMC and the I2C device is generated.

[0077] In some embodiments, the I2C slave module includes a first register, a second register and a third register, wherein the first register is used to store the node identification of the node currently having access to the I2C bus; the second register is used to record the permission flag corresponding to the node, the permission flag including a permission request flag or a permission release flag; and the third register is used to record the node identification of the node currently making a permission request. When the control module updates the permission state of the corresponding BMC recorded by the I2C slave module based on the node identification and the permission flag, and determines the target BMC, it is specifically used to: update the second register in the I2C slave module based on the node identification and the permission flag; when detecting that the second register writes the permission request flag, aggregate the permission flags recorded in the second register of each I2C slave module, and notify the aggregated permission flag information to other nodes; and in response to detecting that the node currently having the permission releases the permission, determine the target BMC. Further, after the target BMC completes the access to the I2C device, the access permission of the target BMC is released, and the access permission is switched to the BMC corresponding to the default node in the multi-node.

[0078] In summary, the present application has at least the following advantages:

[0079] I. By setting the CPLD module, the multiplexing switch module and the plurality of connectors in the I2C device, a direct channel between the BMC and the CPLD is constructed, the permission request is centrally processed by the CPLD module, and the target channel is precisely controlled by the multiplexing switch module, which effectively avoids the I2C bus abnormality problem caused by the communication arbitration of multiple BMCs in the prior art, greatly improves the stability and reliability of the communication. In addition, the interaction complexity between the BMCs is reduced, the difficulty of system software and hardware design is effectively reduced, the system design is more modular, the design efficiency is significantly improved, the design cost is reduced, and reliable protection is provided for efficient and stable communication between the multi-node device and the I2C device.

[0080] II. By setting the first, second and third registers in the I2C slave module, each register respectively stores corresponding information, so that the CPLD module can quickly determine the target BMC based on this information, and in turn can quickly respond to the node's permission request and release operation, effectively avoiding permission conflicts, further improving the efficiency and accuracy of I2C bus resource allocation.

[0081] III. By automatically releasing the access permission of the target BMC after completing the I2C bus access and switching to the BMC corresponding to the default node, the automatic recycling and reasonable allocation of the I2C bus access permission are realized, effectively ensuring that the bus resources can be efficiently circulated among multiple nodes, reducing the resource idling caused by the failure to release the permission in time, thereby effectively improving the resource utilization and operation efficiency of the entire system.

[0082] Other embodiments of the application will be apparent to those skilled in the art from consideration of the specification and practice of the application disclosed herein. It is intended that the specification and examples be considered as exemplary only, with the true scope and spirit of the application being indicated by the following claims.

[0083] It should be understood that the application is not limited to the precise construction that has been described above and shown in the accompanying drawings, and that various modifications and changes can be made by those skilled in the art without departing from the scope of the application. The scope of the application is limited only by the appended claims.

Claims

1. A communication system for multiple nodes and I2C devices, characterized in that: The communication system is provided in the I2C device, and the communication system includes a complex programmable logic device (CPLD) module, a multiplexing switch module, and a plurality of connectors, wherein: One end of the connector is connected to the baseboard management controller (BMC) of a corresponding node, and the other end of the connector is connected to the CPLD module, forming a direct connection channel between the BMC and the CPLD module; the control end of the multiplexing switch module is connected to the CPLD module, and the connector is also connected to the I2C device through the multiplexing switch module; The CPLD module is configured to receive permission request instructions for the I2C bus from the BMCs of the multiple nodes through the direct connection channel, and generate a channel selection instruction instructing to select a channel between a target BMC and the I2C device based on the permission request instruction, wherein the target BMC is one of the BMCs that issued the permission request instruction; and send the channel selection instruction to the control end of the multiplexing switch module; The multiplexing switch module is used to enable only the communication connection between the target BMC and the I2C device based on the channel selection instruction.

2. The communication system between multiple nodes and I2C devices according to claim 1, wherein: The CPLD module includes a control module and an I2C slave module independently connected to the BMC of one of the multiple nodes, wherein the I2C slave module is used to record the permission status of the BMC, and the control module is specifically used to: Parsing the permission request instruction to obtain the node identifier and permission flag of the corresponding BMC; Based on the node identifier and the permission flag, updating the permission status of the corresponding BMC recorded by the I2C slave module, and determining the target BMC; A channel selection instruction is generated to instruct to select a channel between the target BMC and the I2C device.

3. The communication system between multiple nodes and I2C devices according to claim 2, wherein: The I2C slave module includes a first register, a second register, and a third register, wherein the first register is used to store the node identifier that currently has access rights to the I2C bus; the second register is used to record the permission flag corresponding to the corresponding node, wherein the permission flag includes a permission request flag or a permission release flag; and the third register is used to record the node identifier that is currently making a permission request. When the control module is used to update the permission status of the corresponding BMC recorded by the I2C slave module based on the node identifier and the permission flag, and determine the target BMC, it is specifically used to: Based on the node identifier and the permission flag, updating the second register in the I2C slave module; When the second register write permission request flag is detected, the permission flags recorded in the second registers of the I2C slave modules are aggregated, and the aggregated permission flag information is notified to other nodes; In response to detecting that the node currently holding the authority releases the authority, the target BMC is determined.

4. The communication system between multiple nodes and I2C devices according to claim 2, wherein: The I2C slave module is also used to: After the target BMC completes access to the I2C bus, the access permission of the target BMC is released, and the access permission is switched to the BMC corresponding to the default node in the multiple nodes.

5. The communication system between multiple nodes and I2C devices according to any one of claims 1 to 4, characterized in that: The connector is a modular pluggable connector.

6. The communication system between multiple nodes and I2C devices according to claim 5, characterized in that: The modular pluggable connector comprises: A control signal interface, used to transmit control signals between the CPLD module and the BMC of the corresponding node; A data signal interface, used to transmit data signals between the multiplexing switch module and the BMC of the corresponding node; The status indication pin is used to feedback the connection status of the channel between the BMC of the corresponding node and the I2C device.

7. The communication system between multiple nodes and I2C devices according to any one of claims 1 to 4, characterized in that: The CPLD module is further used for: When the BMC of a node holds access rights for longer than the corresponding holding time threshold, its access rights are forcibly released; The BMC timeout event of the corresponding node is recorded and an exception handling process is triggered.

8. A multi-node device, characterized in that: include: Multiple nodes, each node is equipped with a baseboard management controller BMC; I2C devices; A communication system between multiple nodes and I2C devices according to any one of claims 1 to 7.

9. A communication method between multiple nodes and I2C devices, characterized in that: A complex programmable logic device (CPLD) module used in a communication system between multiple nodes and an I2C device, wherein the communication system is arranged in the I2C device and further comprises a multiplexing switch module; The communication method comprises: In response to receiving a permission request instruction for the I2C bus from a baseboard management controller (BMC) of a target node among the multiple nodes, generating a channel selection instruction for instructing to select a channel between the target BMC and the I2C device; Based on the channel selection instruction, the multiplexing switch module is controlled to only enable the communication connection between the target BMC and the I2C device.

10. The communication method according to claim 9, wherein: The CPLD module includes a control module and an I2C slave module independently connected to the BMC of one of the multiple nodes. The generating, based on the permission request instruction, a channel selection instruction for instructing to select a channel between the target BMC and the I2C device includes: Parsing the permission request instruction to obtain the node identifier and permission flag of the corresponding BMC; Based on the node identifier and the permission flag, updating the permission status of the corresponding BMC recorded by the I2C slave module, and determining the target BMC; A channel selection instruction is generated to instruct to select a channel between the target BMC and the I2C device.

Citation Information

Cited By

  • Complex programmable logic device refreshing method and electronic equipment

    CN121050744A