Name Date Size #Lines LOC

..--

conf/H--164124

recipes-bsp/H--7460

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

recipes-extended/rsyslog/H--152102

recipes-kernel/linux/H--202177

recipes-phosphor/H--326286

wic/H--3128

README.mdH A D25-Apr-20257.2 KiB11899

README.md

1# meta-fvp-base
2
3This layer contains a reference implementation of OpenBMC for Armv-A Base RevC AEM FVP.
4
5The diagram below illustrates this setup. The Base FVP represents the management controller.
6The Neoverse FVP represents the server host SoC.
7The management controller communicates with the following components of the server SoC:
8
9- With the Manageability Control Processor (MCP): Using PLDM over MCTP over UART.
10- With the Application Processor (AP): Using IPMI In-band (UART) interface.
11
12## Diagram
13
14
15```
16                                                                           AP debug console
17                                                                                 |
18         +--------------------------+                                  +-------------------------+
19         |         Base FVP         |                                  |  Neoverse RD-V3-R1 FVP  |
20         |                          |                                  |     ______________      |
21         |                          |                                  |    |              |     |
22    SOL--|------------ /dev/ttyAMA3 |------- Host Serial Console ------|----|              |     |
23         |                          | (terminal_3) (terminal_ns_uart0) |    |              |     |
24         |                          |                                  |    |      AP      |     |
25         |                          |                                  |    |              |     |
26         |             /dev/ttyAMA2 |--------- IPMI over UART ---------|----|              |     |
27         |                          | (terminal_2)        (terminal_3) |    |______________|     |
28         |                          |                                  |                         |
29         |                          |                                  |                         |
30         |                          |             PLDM over            |                         |
31         |                          |             MCTP over            +-------+         +-------+
32Redfish--|             /dev/ttyAMA1 |-------------- UART --------------|       |         |       |
33         |                          | (terminal_1)        (terminal_0) |  MCP  |         |  SCP  |
34         | /dev/ttyAMA0             |                                  |       |         |       |
35         +--------------------------+                                  +-------+---------+-------+
36                 |                                                         |                |
37          FVP debug console                                                |             debug console
38          (terminal_0)                                                     |             (terminal_uart_scp)
39                                                                     debug console
40                                                                     (terminal_uart_mcp)
41```
42
43## Features
44
45- 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.
46- The MCP exposes a temperature sensor which our image then exposes over redfish
47    - pldmd should automatically pick up this sensor and expose it on dbus
48- The MCP has a PLDM Event which can be retrieved by pldmd upon using ```pldm event``` command from MCP debug console
49- Host serial console access in BMC (SOL).
50
51## Setup
52
531. Clone the OpenBMC repository and build the FVP
54    ```sh
55    git clone https://github.com/openbmc/openbmc.git
56    cd openbmc
57
58    source setup fvp
59    bitbake obmc-phosphor-image
60    ```
612. Source the Neoverse Reference Design FVP (RD-V3-R1) from the referenced link below.
62    - Link: https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms/Infrastructure%20FVPs#v3-r1
633. Extract the ```.tgz``` and store in your local environment.
64    - This binary will be used in step 3, make sure to export this as MODEL before launching the model
654. Navigate to the Neoverse Reference Design Docs and Follow the Getting Started user guide.
66    - Use the platform ```rdv3r1```
67    - Use the manifest titled ```pinned-rdv3r1-bmc.xml```
68    - Use the latest release tag of ```RD-INFRA-2025.01.29```
69    - Follow the Buildroot Boot steps in order to build the software stack and boot the FVP
70
71## Usage
72
731. Start Base FVP with OpenBMC Image
74    - ```./meta-arm/scripts/runfvp build/fvp/tmp/deploy/images/fvp/obmc-phosphor-image-fvp.fvpconf```
75    - The serial /dev/ttyAMA1 will be automatically configured
76    - pldmd will find ```/usr/share/pldm/host_eid``` which is hardcoded as 18
77    - pldmd will start communicating with the MCP once it's ready
782. Start Neoverse RD-V3-R1 FVP
79    - ```cd model-scripts/rdinfra; ./boot-buildroot.sh -p rdv3r1```
80    - Can observe SCP FW logs on MCP debug console
81    - Can enter MCP Debug Prompt by pressing Ctrl+e on MCP debug console
823. Connect the UART of MCP to Base FVP with
83   ```socat -x tcp:localhost:5065 tcp:localhost:5165```
84   - The port numbers are just examples. They can be hardcoded in the FVP config. Otherwise, the FVP will assign them dynamically
85   - ```-x``` tells socat to print the bytes being transferred
864. Connect the UART of AP to Base FVP with
87   ```socat -x tcp:localhost:5066 tcp:localhost:5166```
88   - The port numbers are just examples. They can be hardcoded in the FVP config. Otherwise, the FVP will assign them dynamically
89   - ```-x``` tells socat to print the bytes being transferred
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
925. Query Redfish Sensor and Event
93   - ```curl --insecure -u root:0penBmc -X GET https://127.0.0.1:4223/redfish/v1/Chassis/PLDM_Device_1/Thermal```
94   - ```curl --insecure -u root:0penBmc -X GET https://127.0.0.1:4223/redfish/v1/Systems/system/LogServices/PldmEvent/Entries/```
95
96### SOL Access
97
981. Connect host console (terminal_ns_uart0) to BMC (terminal_3) with
99   ```socat -x tcp:localhost:5005 tcp:localhost:5067```
100   - The port numbers are just examples. They can be hardcoded in the FVP config. Otherwise, the FVP will assign them dynamically
101   - ```-x``` tells socat to print the bytes being transferred
1022. In BMC debug console execute following command to update host state as running.
103   - ```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```
1043. Log-in to BMC webui (Access via ```https://127.0.0.1:4223```).
1054. In the Overview page click the ```SOL console``` button to access host serial console.
106
107## Known Issues
108- Because both FVP are running independently, there can be an issue with timeout.
109  That's why a large timeout was configured for pldmd.
110
111## References
112
113- Neoverse System Architecture https://developer.arm.com/documentation/107734/0002/Technical-overview?lang=en
114- Neoverse Reference SW https://neoverse-reference-design.docs.arm.com/en/latest/features/bmc.html
115- Neoverse FVP Download https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms/Infrastructure%20FVPs#v3-r1
116- Base FVP Download https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms
117- PLDM + MCTP Specifications https://www.dmtf.org/standards/pmci
118