Hình ảnh so với zImage và uImage


83

sự khác biệt giữa chúng là gì?

Tôi biết rằng u-boot cần một nhân ở định dạng uImage.

Hệ thống mà tôi sử dụng khởi động đầu tiên từ bộ nạp giai đoạn 1 và sau đó nó gọi là u-boot. Tôi muốn loại bỏ u-boot và khởi động trực tiếp từ trình tải giai đoạn 1. Tôi phải sử dụng loại ảnh hạt nhân nào?


Electronics.stackexchange.com/questions/106958/… bạn có thể giúp tôi trong bối cảnh này không?
user3217310 19/04

Có vẻ như vấn đề của bạn là về cách bạn làm theo khi tạo tệp BOOT.BIN. Tôi cũng sử dụng ZedBoard, nhưng không gặp phải vấn đề như vậy.
yildizabdullah

vâng tôi đã sử dụng một phiên bản sai của u-boot.el để tạo ra các BOOT.bin
user3217310

Câu trả lời:


116

sự khác biệt giữa chúng là gì?

Hình ảnh : tệp hình ảnh nhị phân hạt nhân Linux chung.

zImage : phiên bản nén của ảnh hạt nhân Linux có khả năng tự giải nén.

uImage : tệp hình ảnh có trình bao bọc U-Boot (được cài đặt bởi tiện ích mkimage ) bao gồm loại hệ điều hành và thông tin trình tải.
Một thực tế rất phổ biến (ví dụ: Makefile của nhân Linux điển hình) là sử dụng tệp zImage. Vì tệp zImage có thể tự giải nén (tức là không cần bộ giải nén bên ngoài), trình bao bọc sẽ chỉ ra rằng hạt nhân này "không được nén" mặc dù nó thực sự là như vậy.


Lưu ý rằng tác giả / người bảo trì U-Boot xem việc sử dụng (phổ biến) việc sử dụng zImage bên trong uImage là một vấn đề:

Trên thực tế, việc sử dụng zImage bên trong uImage là khá ngu ngốc. Sẽ tốt hơn nhiều nếu sử dụng ảnh hạt nhân bình thường (không nén), nén nó chỉ bằng gzip và sử dụng nó làm poayload cho mkimage. Bằng cách này, U-Boot thực hiện việc giải nén thay vì đưa vào một trình giải nén khác với mỗi hình ảnh hạt nhân.

(trích dẫn từ https://lists.yoctoproject.org/pipermail/yocto/2013-October/016778.html )


Tôi phải sử dụng loại ảnh hạt nhân nào?

Bạn có thể chọn bất cứ thứ gì bạn muốn để lập trình.
Để tiết kiệm dung lượng lưu trữ, có lẽ bạn nên chọn ảnh nén thay vì ảnh không nén.
Hãy lưu ý rằng việc thực thi hạt nhân (có lẽ là hạt nhân Linux) không chỉ liên quan đến việc tải ảnh hạt nhân vào bộ nhớ. Tùy thuộc vào kiến ​​trúc (ví dụ: ARM) và phiên bản nhân Linux (ví dụ có hoặc không có DTB), có các thanh ghi và bộ đệm bộ nhớ có thể phải được chuẩn bị cho hạt nhân. Trong một trường hợp, cũng có sự khởi tạo phần cứng mà U-Boot thực hiện phải được sao chép.

BỔ SUNG

Tôi biết rằng u-boot cần một nhân ở định dạng uImage.

Điều đó là chính xác cho tất cả các phiên bản của U-Boot chỉ có lệnh bootm .
Nhưng các phiên bản mới hơn của U-Boot cũng có thể có lệnh bootz có thể khởi động zImage .


1
Điều còn tồn đọng của tôi là zImage = Hình ảnh nén uImage = Hình ảnh + trình bao bọc uBoot, hãy sửa cho tôi nếu tôi sai, trình bao bọc uBoot chứa tiêu đề uBoot và các thông tin bổ sung như địa chỉ tải thiết bị khởi động, điểm nhập, nhưng tôi không thể tìm thấy tham chiếu hiển thị toàn bộ Định dạng của một uImage bạn có thể xin vui lòng chia sẻ liên kết trên đó
Mouin

Cảm ơn bạn đã phản hồi, tôi đã tìm thấy tài nguyên về định dạng tiêu đề uImage . Điều tôi không hiểu là: 1- tôi có thể tìm địa chỉ tải ở đâu (địa chỉ tải thiết bị khởi động) và điểm nhập trong uImage (chúng không tồn tại trong tiêu đề) 2- zImage có chứa những thông tin này không (địa chỉ tải và điểm nhập cảnh), số này là lý do tại sao i'am hỏi về định dạng của cả một zImage và uImage
Mouin

"Những gì tôi không hiểu ..." - Đừng cố bắt đầu thảo luận bằng bình luận. Đăng một câu hỏi mới.
mùn cưa vào

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.