Vietnamese (machine translation)

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:

Firmware Upload API

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)
{

const char *fw_name, *truncate; cấu trúc m10bmc_sec *giây; struct fw_upload *fwl; int len ​​không dấu;

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