Jaka jest różnica między nimi?
Obraz : ogólny plik obrazu binarnego jądra Linuksa.
zImage : skompresowana wersja samorozpakowującego się obrazu jądra Linuksa.
uImage : plik obrazu z opakowaniem U-Boot (zainstalowanym przez narzędzie mkimage ), które zawiera typ systemu operacyjnego i informacje o module ładującym.
Bardzo powszechną praktyką (np. Typowy plik Makefile jądra Linuksa) jest użycie pliku zImage. Ponieważ plik zImage jest samorozpakowujący się (tj. Nie potrzebuje zewnętrznych dekompresorów), opakowanie wskazywałoby, że to jądro nie jest skompresowane, mimo że tak jest.
Zauważ, że autor / opiekun U-Boot uważa (powszechne) użycie zImage wewnątrz uImage za wątpliwe:
Właściwie to dość głupie używać zImage wewnątrz uImage. Znacznie lepiej jest użyć normalnego (nieskompresowanego) obrazu jądra, skompresować go za pomocą samego gzip i użyć go jako poayload dla mkimage. W ten sposób U-Boot dekompresuje zamiast dołączać kolejny dekompresor do każdego obrazu jądra.
(cytat z https://lists.yoctoproject.org/pipermail/yocto/2013-October/016778.html )
Jakiego typu obrazu jądra muszę używać?
Możesz wybrać cokolwiek chcesz zaprogramować.
Ze względu na oszczędność pamięci prawdopodobnie powinieneś wybrać skompresowany obraz zamiast nieskompresowanego.
Uważaj, wykonanie jądra (prawdopodobnie jądra Linuksa) wymaga czegoś więcej niż tylko załadowania obrazu jądra do pamięci. W zależności od architektury (np. ARM) i wersji jądra Linuksa (np. Z DTB lub bez), istnieją rejestry i bufory pamięci, które mogą być przygotowane dla jądra. W jednym przypadku wystąpiła również inicjalizacja sprzętu wykonana przez U-Boot, która musiała zostać zreplikowana.
UZUPEŁNIENIE
Wiem, że u-boot potrzebuje jądra w formacie uImage.
Dotyczy to wszystkich wersji U-Boot, które mają tylko polecenie bootm .
Ale nowsze wersje U-Boot mogą również mieć polecenie bootz, które może uruchomić zImage.