Name Date Size #Lines LOC

..--

conf/H--169127

recipes-bsp/H--7460

recipes-connectivity/ssh-pregen-hostkeys/H--53

recipes-extended/rsyslog/H--14599

recipes-kernel/linux/H--202177

recipes-phosphor/H--326286

wic/H--3128

README.mdH A D29-Jul-20257.4 KiB123101

README.md

1# meta-evb-fvp-base
2
3This layer contains a reference implementation of OpenBMC for Armv-A Base RevC AEM FVP. FVPs (Fixed Virtual Platforms) are a complete simulations of an ARM system, including processor, memory and peripherals.
4
5## Diagram
6
7The diagram below illustrates this setup.
8- The Neoverse FVP represents the server host SoC.
9- The Base FVP represents the management controller.
10- The management controller communicates with the following components of the server SoC:
11    - With the Manageability Control Processor (MCP): Using PLDM over MCTP over UART.
12    - With the Application Processor (AP): Using IPMI In-band (UART) interface.
13
14```
15                                                                           AP debug console
16                                                                                 |
17         +--------------------------+                                  +-------------------------+
18         |         Base FVP         |                                  |  Neoverse RD-V3-R1 FVP  |
19         |                          |                                  |     ______________      |
20         |                          |                                  |    |              |     |
21    SOL--|------------ /dev/ttyAMA3 |------- Host Serial Console ------|----|              |     |
22         |                          | (terminal_3) (terminal_ns_uart0) |    |              |     |
23         |                          |                                  |    |      AP      |     |
24         |                          |                                  |    |              |     |
25         |             /dev/ttyAMA2 |--------- IPMI over UART ---------|----|              |     |
26         |                          | (terminal_2)        (terminal_3) |    |______________|     |
27         |                          |                                  |                         |
28         |                          |                                  |                         |
29         |                          |             PLDM over            |                         |
30         |                          |             MCTP over            +-------+         +-------+
31Redfish--|             /dev/ttyAMA1 |-------------- UART --------------|       |         |       |
32         |                          | (terminal_1)        (terminal_2) |  MCP  |         |  SCP  |
33         | /dev/ttyAMA0             |                                  |       |         |       |
34         +--------------------------+                                  +-------+---------+-------+
35                 |                                                         |                |
36          FVP debug console                                                |             debug console
37          (terminal_0)                                                     |             (terminal_uart_scp)
38                                                                     debug console
39                                                                     (terminal_uart_mcp)
40```
41
42## Features
43
44- The IPMI in-band interface runs over a UART connection between the AP and the BMC, and can be accessed in UEFI as well as the OS.
45- The MCP exposes a temperature sensor which our image then exposes over redfish
46    - pldmd should automatically pick up this sensor and expose it on dbus
47- The MCP has a PLDM Event which can be retrieved by pldmd upon using ```pldm event``` command from MCP debug console
48- Host serial console access in BMC (SOL).
49
50## Setup
51
521. Clone the OpenBMC repository and build the FVP
53    ```sh
54    git clone https://github.com/openbmc/openbmc.git
55    cd openbmc
56
57    source setup fvp
58    bitbake obmc-phosphor-image
59    ```
602. Source the Neoverse Reference Design FVP (RD-V3-R1) from the referenced link below.
61    - Link: https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms/Infrastructure%20FVPs#v3-r1
623. Extract the ```.tgz``` and store in your local environment.
63    - Make sure to export this as MODEL before launching the model, ```export MODEL=<absolute path to the platform FVP binary>
644. Navigate to the Neoverse Reference Design Docs and Follow the Getting Started user guide.
65    - Use the platform ```rdv3r1```
66    - Use the manifest titled ```pinned-rdv3r1-bmc.xml```
67    - Use the latest release tag of ```RD-INFRA-2025.01.29```
68    - Follow the Buildroot Boot steps in order to build the software stack and boot the FVP
69
70## Usage
71
721. Start Base FVP with OpenBMC Image
73    - ```./meta-arm/scripts/runfvp build/fvp/tmp/deploy/images/fvp/obmc-phosphor-image-fvp.fvpconf```
74    - The serial /dev/ttyAMA1 will be automatically configured
75    - pldmd will find ```/usr/share/pldm/host_eid``` which is hardcoded as 18
76    - pldmd will start communicating with the MCP once it's ready
772. Start Neoverse RD-V3-R1 FVP
78    - ```cd model-scripts/rdinfra; ./boot-buildroot.sh -p rdv3r1```
79    - Can observe SCP FW logs on MCP debug console
80    - Can enter MCP Debug Prompt by pressing Ctrl+e on MCP debug console
813. Connect the UART of Neoverse FVP to Base FVP with `socat` command as required.
82    - The port numbers mentioned in this document (for the `socat` command) are just examples.
83    - They can be hardcoded in the FVP config. Otherwise, the FVP will assign them dynamically.
84    - The `-x` option tells `socat` to print the bytes being transferred
85
86### In-band Communication Channel (IPMI)
87
881. Connect the UART of AP (terminal_3) to Base FVP (terminal_2) with
89    - ```socat -x tcp:localhost:5066 tcp:localhost:5166```
90    - The AP debug console will show the BMC IP address and subnet mask
91    - During boot, the host sends IPMI commands to get the BMC IP address and subnet mask
92
93### Side-band Communication Channel (PLDM)
94
951. Connect the UART of MCP (terminal_2) to Base FVP (terminal_1) with
96    - ```socat -x tcp:localhost:5065 tcp:localhost:5165```
972. In BMC debug console execute the following command to restart MCTP discovery process
98    - ```systemctl restart mctpd.service```
993. Query Redfish Sensor and Event
100    - ```curl --insecure -u root:0penBmc -X GET https://127.0.0.1:4223/redfish/v1/Chassis/SatMC/Thermal```
101    - ```curl --insecure -u root:0penBmc -X GET https://127.0.0.1:4223/redfish/v1/Managers/bmc/LogServices/FaultLog/Entries/```
102
103### Out-of-band Communication Channel (SOL)
104
1051. Connect host console (terminal_ns_uart0) to BMC (terminal_3) with
106    - ```socat -x tcp:localhost:5005 tcp:localhost:5067```
1072. In BMC debug console execute following command to update host state as running.
108    - ```busctl set-property xyz.openbmc_project.State.Host /xyz/openbmc_project/state/host0 xyz.openbmc_project.State.Host CurrentHostState s xyz.openbmc_project.State.Host.HostState.Running```
1093. Log-in to BMC webui (Access via ```https://127.0.0.1:4223```).
1104. In the Overview page click the ```SOL console``` button to access host serial console.
111
112## Known Issues
113
114- Because both FVP are running independently, there can be an issue with timeout. That's why a large timeout was configured for pldmd.
115
116## References
117
118- Neoverse System Architecture https://developer.arm.com/documentation/107734/0002/Technical-overview?lang=en
119- Neoverse Reference SW https://neoverse-reference-design.docs.arm.com/en/latest/features/bmc.html
120- Neoverse FVP Download https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms/Infrastructure%20FVPs#v3-r1
121- Base FVP Download https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms
122- PLDM + MCTP Specifications https://www.dmtf.org/standards/pmci
123