Das U-Boot - Das U-Boot

Das U-Boot
U-Boot Logo.svg
Deweloper(zy) Inżynieria oprogramowania DENX
Pierwsze wydanie 15 października 1999 ; 22 lata temu ( 1999-10-15 )
Wersja stabilna
v2021.01 / 11 stycznia 2021 ; 9 miesięcy temu ( 2021-01-11 )
Wersja zapoznawcza
v2021.04-rc4 / 15 marca 2021 ; 7 miesięcy temu ( 15.03.2021 )
Magazyn
Napisane w C , montaż
Dostępne w język angielski
Rodzaj Program rozruchowy
Licencja GPL-2.0-lub-później
Strona internetowa www .denx .de /wiki /U-Boot / Edytuj to na Wikidanych

Das U-Boot (podtytuł „Uniwersalny program ładujący ” i często skracany do U-Boot ; zobacz Historia, aby uzyskać więcej informacji na temat nazwy) to podstawowy program ładujący typu open source używany w urządzeniach osadzonych do pakowania instrukcji uruchamiania urządzenia jądro systemu. Jest dostępny dla wielu architektur komputerowych , w tym 68k , ARM , Blackfin , MicroBlaze , MIPS , Nios , SuperH , PPC , RISC-V i x86 .

Funkcjonalność

U-Boot jest zarówno bootloaderem pierwszego, jak i drugiego etapu. Jest ładowany przez systemowy ROM lub BIOS z obsługiwanego urządzenia rozruchowego, takiego jak karta SD, dysk SATA, NOR flash (np. za pomocą SPI lub I²C ) lub NAND flash. Jeśli istnieją ograniczenia dotyczące rozmiaru, U-Boot może zostać podzielony na etapy: platforma załaduje mały SPL (Secondary Program Loader), który jest okrojoną wersją U-Boot, a SPL wykona początkową konfigurację sprzętową i załaduje większa, w pełni funkcjonalna wersja U-Boot. Niezależnie od tego, czy używany jest SPL, U-Boot wykonuje zarówno pierwszy etap (np. konfigurowanie kontrolerów pamięci i SDRAM), jak i drugi etap (wykonywanie wielu kroków w celu załadowania nowoczesnego systemu operacyjnego z różnych urządzeń, które muszą być skonfigurowane, prezentowanie menu umożliwiającego użytkownikom interakcję i kontrolę procesu rozruchu itp.).

U-Boot implementuje podzbiór specyfikacji UEFI zgodnie ze specyfikacją Embedded Base Boot Requirements (EBBR). Pliki binarne UEFI, takie jak GRUB lub jądro Linux, można uruchomić za pomocą menedżera rozruchu lub interfejsu wiersza poleceń.

U-Boot uruchamia interfejs wiersza poleceń na konsoli lub porcie szeregowym. Korzystając z CLI, użytkownicy mogą ładować i uruchamiać jądro, prawdopodobnie zmieniając parametry z domyślnych. Dostępne są również polecenia do odczytu informacji o urządzeniu, odczytu i zapisu pamięci flash, pobierania plików (jądra, obrazów rozruchowych itp.) z portu szeregowego lub sieci, manipulowania drzewami urządzeń i pracy ze zmiennymi środowiskowymi (które można zapisać w pamięci trwałej). , i są używane do kontrolowania zachowania U-Boot, takiego jak domyślne polecenie rozruchu i limit czasu przed automatycznym uruchomieniem, a także dane sprzętowe, takie jak adres MAC Ethernet).

W przeciwieństwie do programów ładujących komputery PC, które zasłaniają lub automatycznie wybierają lokalizacje pamięci jądra i innych danych rozruchowych, U-Boot wymaga, aby polecenia rozruchowe wyraźnie określały adresy pamięci fizycznej jako miejsca docelowe kopiowania danych (jądro, ramdysk, drzewo urządzeń itp.) i do skoku do jądra i jako argumenty dla jądra. Ponieważ polecenia U-Boot są dość niskopoziomowe, uruchomienie jądra wymaga kilku kroków, ale dzięki temu U-Boot jest bardziej elastyczny niż inne programy ładujące, ponieważ te same polecenia mogą być używane do bardziej ogólnych zadań. Możliwe jest nawet uaktualnienie U-Boot za pomocą U-Boot, po prostu odczytując nowy bootloader z dowolnego miejsca (pamięci lokalnej, portu szeregowego lub sieci) do pamięci i zapisując te dane do trwałej pamięci masowej, do której należy bootloader.

U-Boot obsługuje USB, więc może używać klawiatury USB do obsługi konsoli (oprócz wejścia z portu szeregowego), a także może uzyskiwać dostęp i uruchamiać się z urządzeń pamięci masowej USB, takich jak czytniki kart SD.

Przechowywanie danych i źródła rozruchu

U-Boot uruchamia system operacyjny, odczytując jądro i inne wymagane dane (np. drzewo urządzenia lub obraz ramdysku) do pamięci, a następnie wykonując jądro z odpowiednimi argumentami.

Polecenia U-Boot są w rzeczywistości uogólnionymi poleceniami, które można wykorzystać do odczytu lub zapisu dowolnych danych. Za pomocą tych poleceń dane mogą być odczytywane lub zapisywane w dowolnym systemie pamięci masowej obsługiwanym przez U-Boot, który obejmuje:

(Uwaga: są to źródła rozruchowe, z których U-Boot jest w stanie ładować dane (np. jądro lub obraz ramdysku) do pamięci. Sam U-Boot musi być uruchamiany przez platformę i musi to być wykonane z urządzenia, które jest ROM lub BIOS może się uruchamiać, co oczywiście zależy od platformy.)

  • Wbudowana lub dołączona pamięć masowa
    • karta SD
    • SATA
    • SCSI
    • I²C (np. EEPROM lub NOR flash)
    • SPI (np. NOR lub NAND flash)
    • ONFI (surowy flash NAND)
    • eMMC (zarządzany flash NOR lub NAND)
    • NVMe
    • Urządzenie pamięci masowej USB
  • Port szeregowy (transfer plików)
  • Rozruch sieciowy (opcjonalnie przy użyciu DHCP, BOOTP lub RARP)

Zgodne systemy plików

U-Boot nie musi być w stanie odczytać systemu plików, aby jądro mogło używać go jako głównego systemu plików lub początkowego ramdysku; U-Boot po prostu dostarcza odpowiedni parametr do jądra i/lub kopiuje dane do pamięci bez zrozumienia ich zawartości.

Jednak U-Boot może również odczytywać (aw niektórych przypadkach zapisywać) systemy plików. W ten sposób, zamiast wymagać, aby dane, które załaduje U-Boot były przechowywane w stałej lokalizacji na urządzeniu pamięci masowej, U-Boot może odczytywać system plików w celu wyszukania i załadowania jądra, drzewa urządzeń itp. według nazwy ścieżki.

U-Boot obsługuje następujące systemy plików:

Drzewo urządzeń

Drzewo urządzeń to struktura danych opisująca układ sprzętu. Korzystając z drzewa urządzeń, dostawca może być w stanie użyć niezmodyfikowanego głównego U-Boota na sprzęcie specjalnego przeznaczenia. Podobnie jak w jądrze Linuksa, drzewo urządzeń ma na celu poprawę sytuacji w branży systemów wbudowanych , gdzie istnieje ogromna liczba widełek specyficznych dla produktu (U-Boot i Linux). Możliwość uruchomienia głównego oprogramowania praktycznie zapewnia klientom zabezpieczenie przed brakiem aktualizacji dostawców.

Historia

U-Boot na XPedite5501

Początkiem projektu jest bootloader 8xx PowerPC o nazwie 8xxROM napisany przez Magnusa Damma. W październiku 1999 Wolfgang Denk przeniósł projekt na SourceForge.net i przemianował go na PPCBoot , ponieważ SF.net nie zezwalał na nazwy projektów rozpoczynające się cyframi. Wersja 0.4.1 PPCBoot została po raz pierwszy opublikowana 19 lipca 2000 roku.

W 2002 roku poprzednia wersja kodu źródłowego została krótko rozwidlona w produkcie o nazwie ARMBoot , ale wkrótce potem została ponownie włączona do projektu PPCBoot. 31 października 2002 został wydany PPCBoot-2.0.0 . Oznaczało to ostatnie wydanie pod nazwą PPCBoot, ponieważ zmieniono jego nazwę, aby odzwierciedlić jego zdolność do pracy na innych architekturach poza PPC ISA.

PPCBoot-2.0.0 stał się U-Boot-0.1.0 w listopadzie 2002 r. i został rozszerzony do pracy na architekturze procesora x86 . Dodatkowe możliwości architektury zostały dodane w następujących miesiącach: MIPS32 w marcu 2003, MIPS64 w kwietniu, Nios II w październiku, ColdFire w grudniu i MicroBlaze w kwietniu 2004. Wydanie U-Boot-1.1.2 z maja 2004 pracowało nad produktami 216 producentów płyt w różnych architekturach.

Obecna nazwa Das U-Boot dodaje niemiecki określony rodzajnik , aby stworzyć dwujęzyczną kalambur na klasycznym niemieckim filmie podwodnym Das Boot z 1981 roku , który rozgrywa się na niemieckim U-bootu z czasów II wojny światowej . Jest to wolne oprogramowanie wydane na warunkach Powszechnej Licencji Publicznej GNU . Można go zbudować na komputerze z procesorem x86 dla dowolnej zamierzonej architektury przy użyciu łańcucha narzędzi GNU , na przykład crosstool, Embedded Linux Development Kit (ELDK) lub OSELAS.Toolchain.

Znaczenie U-Boot w wbudowanych systemach Linux jest dość zwięźle opisane w książce Building Embedded Linux Systems , autorstwa Karima Yaghmoura, którego tekst o U-Boot zaczyna się: „Chociaż istnieje wiele innych programów ładujących, 'Das U-Boot' , uniwersalny bootloader, jest prawdopodobnie najbogatszym, najbardziej elastycznym i najaktywniej rozwijanym bootloaderem typu open source”.

Zastosowania

  • Chromebooki oparte na architekturze ARM są dostarczane z U-Bootem. Chromebooki z procesorami Celeron i i5 używają go jako ładunku do coreboot .
  • W PowerPC serii opartej na AmigaOne komputerach z systemem AmigaOS użyć U-Boot, w szczególności sam440ep i Sam460ex przez ACube Systems Srl oraz AmigaOne X5000 od A-EON, następca AmigaOne X1000 .
  • Urządzenia Ubiquiti Networks używają U-Boot
  • Urządzenia Amazon Kindle używają U-Boot jako swojego bootloadera.
  • TP-Link i kilka innych routerów bezprzewodowych opartych na MIPS zgodnych z OpenWRT/LEDE używa U-Boot do ładowania.
  • Routery komórkowe Teltonika wykorzystują bootloader oparty na U-Boot.
  • Zarówno Falcon, jak i Dragon SpaceX używają U-Boot

Zobacz też

Uwagi

Bibliografia

Zewnętrzne linki