Lưu ý
Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.
- Bản gốc:
- Người dịch:
Google Translate (machine translation)
- Phiên bản gốc:
8541d8f725c6
Cảnh báo
Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.
Tải lên chương trình cơ sở API¶
Trình điều khiển thiết bị đăng ký với trình tải chương trình cơ sở sẽ hiển thị các nút sysfs liên tục để cho phép người dùng bắt đầu cập nhật chương trình cơ sở cho thiết bị đó. Đó là trách nhiệm của người điều khiển thiết bị và/hoặc chính thiết bị để thực hiện bất kỳ xác nhận nào trên dữ liệu nhận được. Phần sụn tải lên sử dụng cùng các tệp sysfs ZZ0000ZZ và ZZ0001ZZ được mô tả trong tài liệu về dự phòng phần sụn. Nó cũng bổ sung thêm các tập tin sysfs để cung cấp trạng thái chuyển hình ảnh chương trình cơ sở sang thiết bị.
Đăng ký tải lên chương trình cơ sở¶
Trình điều khiển thiết bị đăng ký tải lên chương trình cơ sở bằng cách gọi
firmware_upload_register(). Trong danh sách tham số có tên
xác định thiết bị trong/sys/class/firmware. Người dùng có thể bắt đầu một
tải lên chương trình cơ sở bằng cách lặp lại 1 vào tệp sysfs ZZ0000ZZ cho mục tiêu
thiết bị. Tiếp theo, người dùng ghi image firmware vào sysfs ZZ0001ZZ
tập tin. Sau khi ghi dữ liệu phần sụn, người dùng lặp lại 0 đến ZZ0002ZZ
sysfs để báo hiệu hoàn thành. Echoing 0 tới ZZ0003ZZ cũng kích hoạt
chuyển phần sụn sang trình điều khiển thiết bị đòn bẩy thấp hơn trong ngữ cảnh
của một luồng công nhân hạt nhân.
Để sử dụng phần mềm tải lên chương trình cơ sở API, hãy viết trình điều khiển triển khai một bộ
ôi. Hàm thăm dò gọi firmware_upload_register() và xóa
gọi hàm firmware_upload_unregister() chẳng hạn như
- cấu trúc const tĩnh fw_upload_ops m10bmc_ops = {
.prepare = m10bmc_sec_prepare, .write = m10bmc_sec_write, .poll_complete = m10bmc_sec_poll_complete, .cancel = m10bmc_sec_cancel, .cleanup = m10bmc_sec_cleanup,
};
- int tĩnh m10bmc_sec_probe(struct platform_device *pdev)
- giây = devm_kzalloc(&pdev->dev, sizeof(*sec), GFP_KERNEL);
- nếu (! giây)
trả về -ENOMEM;
- giây->dev = &pdev->dev;
giây->m10bmc = dev_get_drvdata(pdev->dev.parent); dev_set_drvdata(&pdev->dev, giây);
- fw_name = dev_name(giây->dev);
cắt ngắn = strstr(fw_name, “.auto”); len = (cắt ngắn) ? cắt ngắn - fw_name : strlen(fw_name); giây->fw_name = kmemdup_nul(fw_name, len, GFP_KERNEL);
- fwl = firmware_upload_register(THIS_MODULE, giây->dev, giây->fw_name,
&m10bmc_ops, giây);
- nếu (IS_ERR(fwl)) {
dev_err(sec->dev, “Trình điều khiển tải lên chương trình cơ sở không khởi động đượcn”); kfree(giây->fw_name); trả về PTR_ERR(fwl);
}
- giây->fwl = fwl;
trả về 0;
}
- int tĩnh m10bmc_sec_remove(struct platform_device *pdev)
- {
struct m10bmc_sec*sec = dev_get_drvdata(&pdev->dev);
- firmware_upload_unregister(giây->fwl);
kfree(giây->fw_name); trả về 0;
}
firmware_upload_register¶
firmware_upload_unregister¶
Hoạt động tải lên chương trình cơ sở¶
Mã tiến trình tải lên chương trình cơ sở¶
Các mã tiến trình sau đây được trình tải chương trình cơ sở sử dụng nội bộ. Các chuỗi tương ứng được báo cáo thông qua nút sysfs trạng thái được mô tả bên dưới và được ghi lại trong tài liệu ABI.
Mã lỗi tải lên chương trình cơ sở¶
Các mã lỗi sau đây có thể được trình điều khiển trả về trong trường hợp thất bại:
Thuộc tính Sysfs¶
Ngoài các tệp sysfs ZZ0000ZZ và ZZ0001ZZ, còn có các tệp bổ sung sysfs để theo dõi trạng thái truyền dữ liệu đến mục tiêu thiết bị và để xác định trạng thái đạt/không đạt cuối cùng của quá trình truyền. Tùy thuộc vào thiết bị và kích thước của hình ảnh phần sụn, phần sụn cập nhật có thể mất vài mili giây hoặc vài phút.
Các tệp sysfs bổ sung là:
trạng thái - cung cấp dấu hiệu về tiến trình cập nhật chương trình cơ sở
lỗi - cung cấp thông tin lỗi cho bản cập nhật chương trình cơ sở không thành công
kích thước còn lại - theo dõi phần truyền dữ liệu của bản cập nhật
cancel - echo 1 tới file này để hủy cập nhật