commit | f6470b5e95618fa0eeb8b03b37c53a311dfc1ef3 | [log] [tgz] |
---|---|---|
author | Daniel Hsu <Daniel-Hsu@quantatw.com> | Wed Feb 26 15:03:47 2025 +0800 |
committer | Jagpal S Gill <paligill@gmail.com> | Wed May 28 23:42:13 2025 +0000 |
tree | 29d77dbbe92fb9304b193bc0b4233401ea503bb4 | |
parent | cec147525b9bccd15767b1042ac406a24a2ae6aa [diff] |
fw-update: cpld code updater This commit introduces a code updater for CPLD. The Key features of this updater include: - configuring chip vendor and name - update CPLD through I2C 1. Display the fw inventory curl ... -X GET https://localhost/redfish/v1/UpdateService/FirmwareInventory { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", "Members": [ ... { "@odata.id": ".../LCMXO3LF_4300C_6194" }, ... ], "Members@odata.count": 26, "Name": "Software Inventory Collection" } 2. Query CPLD version curl ... -X GET https://localhost/redfish/v1 /UpdateService/FirmwareInventory/LCMXO3LF_4300C_6194 { "@odata.id": "/.../LCMXO3LF_4300C_6194", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "LCMXO3LF_4300C_6194", "Name": "Software Inventory", "Status": { "Health": "Warning", "HealthRollup": "OK", "State": "Disabled" }, "Updateable": false, "Version": "00000220" } 3. Trigger the fw update via redfish curl -k -H "X-Auth-Token: $token" -H "Content-Type:multipart/form-data" -X POST -F UpdateParameters="{\"Targets\": [\"/redfish/v1/UpdateService/FirmwareInventory/LCMXO3LF_4300C_6194\"], \"@Redfish.OperationApplyTime\":\"Immediate\"};type=application/json" -F "UpdateFile=@testcpld.pldm;type=application/octet-stream" https://${bmc}/redfish/v1/UpdateService/update { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "Id": "0", "TaskState": "Running", "TaskStatus": "OK" } 4. Query Task status curl ... -X GET https://localhost/redfish/v1/TaskService/Tasks/0 { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "EndTime": "2025-05-28T08:10:22+00:00", "HidePayload": false, "Id": "0", "Messages": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has started.", "MessageArgs": [ "0" ], "MessageId": "TaskEvent.1.0.TaskStarted", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 15 percent complete.", "MessageArgs": [ "0", "15" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 20 percent complete.", "MessageArgs": [ "0", "20" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 25 percent complete.", "MessageArgs": [ "0", "25" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 30 percent complete.", "MessageArgs": [ "0", "30" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 40 percent complete.", "MessageArgs": [ "0", "40" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 50 percent complete.", "MessageArgs": [ "0", "50" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 60 percent complete.", "MessageArgs": [ "0", "60" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 70 percent complete.", "MessageArgs": [ "0", "70" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 80 percent complete.", "MessageArgs": [ "0", "80" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 90 percent complete.", "MessageArgs": [ "0", "90" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "... progress 100 percent complete.", "MessageArgs": [ "0", "100" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '0' has completed.", "MessageArgs": [ "0" ], "MessageId": "TaskEvent.1.0.TaskCompletedOK", "MessageSeverity": "OK", "Resolution": "None." } ], "Name": "Task 0", "Payload": { "HttpHeaders": [], "HttpOperation": "POST", "JsonBody": "null", "TargetUri": "/redfish/v1/UpdateService/update" }, "PercentComplete": 100, "StartTime": "2025-05-28T08:10:06+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Completed", "TaskStatus": "OK" } 5. Display the fw inventory with newly updated fw. curl ... -X GET https://localhost/redfish/v1/UpdateService/FirmwareInventory { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", "Members": [ ... { "@odata.id": ".../LCMXO3LF_4300C_1571" }, ... ], "Members@odata.count": 26, "Name": "Software Inventory Collection" } 6. Query CPLD version again After AC cycle ..., so the number would be different. curl ... -X GET https://localhost/redfish/v1 /UpdateService/FirmwareInventory/LCMXO3LF_4300C_4643 { "@odata.id": "/.../LCMXO3LF_4300C_4643", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "LCMXO3LF_4300C_4643", "Name": "Software Inventory", "Status": { "Health": "Warning", "HealthRollup": "OK", "State": "Disabled" }, "Updateable": false, "Version": "00000224" } Change-Id: Ife8e30a00bfbb307e6e4eb55838a397c8a8162bd Signed-off-by: Daniel Hsu <Daniel-Hsu@quantatw.com>
Phosphor BMC Code Management provides a set of system software management applications. More information can be found at Software Architecture
To build this package, do the following steps:
meson build
ninja -C build
To clean the repository run rm -r build
.