SoC Bootloader
Układy FPGA Intel® SoC używają bootloadera do ładowania i uruchamiania aplikacji użytkownika końcowego w systemie procesorów twardych (HPS). Aplikacja użytkownika końcowego może być prostą aplikacją typu bare-metal lub złożonym systemem operacyjnym, takim jak system operacyjny Linux*.
Ta strona opisuje, czym jest bootloader, zawiera listę dostępnych programów ładujących i ich główne cechy, opisuje, jak rozpocząć pracę z bootloaderami i zawiera listę dodatkowych zasobów.
1. Co to jest Bootloader
Definicja bootloadera
Po uruchomieniu urządzenia SoC najpierw uruchamiane jest oprogramowanie o nazwie BootROM. Z kilku powodów BootROM ma następującą ograniczoną funkcjonalność:
- Musi zmieścić się w wbudowanej pamięci ROM, więc musi być mała
- Zmiana jest bardzo kosztowna, więc musi być bardzo solidna, co oznacza mniej funkcji
- Nie wie, jak system został skonfigurowany, więc nie może wywołać wszystkiego
Z drugiej strony aplikacja użytkownika końcowego jest zazwyczaj duża i wymaga skonfigurowania systemu zgodnie z życzeniem użytkownika końcowego przed jego uruchomieniem.
Zadaniem bootloadera jest wypełnienie luki między BootROM a aplikacją użytkownika końcowego.
Typowe zadania bootloadera obejmują:
- Konfigurowanie ustawień multipleksowania pinów i pinów, takich jak szybkość nachylania, napięcie i pull-up/pull-down
- Konfigurowanie zegarów w drzewie zegarów
- Przywoływanie i kalibrowanie pamięci SDRAM
- Inicjowanie pamięci flash
- Ładowanie aplikacji końcowej z pamięci flash
- Przekazywanie kontroli do aplikacji końcowej
Oprócz funkcji wymienionych powyżej, bootloadery oferują również następujące zaawansowane funkcje, które mogą umożliwić bardziej złożone wdrażanie i wygodniejsze programowanie:
- Dostęp do sieci, który przenosi aplikację użytkownika końcowego z chmury.
- Narzędzia debugujące, które umożliwiają wygodniejszą diagnozę problemów.
- Interfejs wiersza poleceń dla poleceń interaktywnych.
- Aplikacja z uruchomioną strukturą, która może umożliwić załadowanie prostych aplikacji użytkownika końcowego i uruchomienie ich do końca przez bootloader. Po zakończeniu aplikacji kontrola jest przekazywana z powrotem do bootloadera.
Wielostopniowe bootloadery
Czasami proces bootloadera można podzielić na wiele etapów, zazwyczaj dwa.
W przypadku układów SoC Cyclone® V BootROM może załadować tylko program ładujący o rozmiarze do 64 KB, ponieważ SDRAM nie jest jeszcze uruchomiony na tym etapie. Ze względu na ograniczenie rozmiaru nie można uzyskać zaawansowanych funkcji, takich jak sieć lub dostęp do złożonego systemu plików. Jeśli takie funkcje są pożądane, pierwszy etap bootloadera wywołuje SDRAM, a następnie ładuje drugi etap z większą funkcjonalnością. Dwustopniowy bootloader jest domyślną opcją dla SoC Cyclone V i SoC Arria® V.
Intel® Arria® 10 SoC mają większy rozmiar pamięci RAM. Dzięki 256 KB wbudowanej pamięci RAM pierwszy stopień bootloadera może mieć więcej funkcji niż SoC Cyclone V i Arria V. Z tego powodu zazwyczaj wymagany jest tylko jeden etap. Jednak w jeszcze bardziej złożonych przypadkach, takich jak dostęp do kilku typów pamięci flash, złożonych systemów plików i sieci, użytkownik może swobodnie korzystać z dodatkowego etapu bootloadera.
W przypadku układów SoC Intel® Stratix® 10 zwykle używany jest dwustopniowy bootloader. Pierwszy mały etap bootloadera jest częścią strumienia konfiguracji FPGA i jest ładowany przez bezpiecznego menedżera urządzeń (SDM) do wbudowanej pamięci RAM HPS, podczas gdy drugi większy etap bootloadera może być przechowywany w dowolnym miejscu, do którego HPS ma dostęp.
2. Przekazywanie sprzętu
Przegląd funkcji Handoff
Wszystkie projekty Intel SoC FPGA rozpoczynają się od projektu sprzętowego, w którym użytkownik wprowadza różne ustawienia systemowe mające wpływ na HPS. Należą do nich:
- Multipleksowanie pinów
- Ustawienia pinów
- Ustawienia SDRAM
- Ustawienia zegara
Zadaniem bootloadera jest zastosowanie tych ustawień, a proces bootloadera otrzymującego te ustawienia nazywa się przekazaniem sprzętu do oprogramowania.
W zależności od dokładnego bootloadera i rodziny urządzeń SoC, przekazywanie może przybierać różne formy. Typowo:
- W przypadku Układów SoC Cyclone V i Arria V przekazywanie jest kombinacją plików XML, plików binarnych i plików kodu źródłowego, które są konwertowane na kod źródłowy, a następnie kompilowane do preloadera
- W przypadku Intel Arria 10 SoC przekazywanie jest zawarte w pojedynczym pliku XML, który jest konwertowany na plik drzewa urządzeń i używany przez bootloader
- W przypadku układów SoC Intel Stratix 10 informacje o przekazywaniu są częścią strumienia bitów konfiguracji FPGA
Podstawową metodą wprowadzania lub zmieniania informacji przekazywanych jest ich edycja w Qsys.
Oprócz informacji o przekazywaniu, bootloadery mają również różne ustawienia, które mogą być wybrane przez użytkownika za pomocą następujących metod:
- Zmiana ustawień w edytorze BSP
- Edytowanie kodu źródłowego bootloadera
- Edytowanie drzewa urządzeń bootloadera, gdy drzewo urządzeń jest używane
Cyclone V Soc i Arria V SoC Handoff

Intel Arria 10 SoC Handoff

Intel Stratix 10 SoC Handoff

3. Dostępne bootloadery
Przegląd dostępnych bootloaderów
W poniższej tabeli wymieniono dostępne programy ładujący, typy licencji, obsługiwane układy SoC oraz dostępność dwustopniowej obsługi:
Bootloader |
Typ licencji |
Cyklon V SoC |
Arria V SoC |
Intel Arria 10 SoC |
Intel Stratix 10 SoC |
Dwustopniowe wsparcie |
---|---|---|---|---|---|---|
U-Boot |
GPL |
Tak |
Tak |
Tak |
Tak |
Tak |
MPL |
BSD |
Tak |
Tak |
Tak |
- |
- |
UEFI |
BSD |
- |
- |
Tak |
Tak |
Tak |
ATF |
BSD |
- |
- |
- |
Tak |
- |
U-Boot
U-Boot to bootloader, który jest szeroko stosowany w branży i oferuje liczne możliwości:
- Opcjonalny pierwszy stopień o nazwie "SPL" dla systemów z ograniczoną pamięcią RAM na chipie (na przykład Cyclone V SoC i Arria V SoC)
- Możliwości sieciowe
- Obsługa pamięci Flash
- Interfejs wiersza poleceń
- Skryptów
- Niestandardowe aplikacje U-Boot
U-Boot jest rozwijany na licencji ogólnopublicznej (GPL), więc wszelkie wkłady, które są wnoszone do produktu, który jest dostarczany publicznie, muszą być również upubliczniane.
Kod źródłowy U-Boot jest dostępny na stronie U-Boot SoC FPGA w witrynie GitHub.
W przypadku Intel Arria 10 SoC, Arria V SoC i Cyclone V SoC kod źródłowy U-Boot jest dołączony do pakietu Intel SoC FPGA Embedded Development Suite (SoC EDS), ułatwiając prosty i wygodny proces programowania.
Zauważ, że wsparcie dla Cyclone V i Arria V SoC zostało włączone do oficjalnego drzewa git U-Boot na stronie GitHub. Trwają prace nad obsługą głównych układów SoC Intel Arria 10.
Główna ogólna strona główna U-Boot znajduje się na stronie Das U-Boot - Universal Boot Loader.
MPL
Minimal Preloader (MPL) to bootloader opracowany przy użyciu bibliotek Intel SoC FPGA Bare-metal Hardware Abstraction Libraries (HWLIBs). Jest to jednostopniowy bootloader zaprojektowany z myślą o minimalnej powierzchni.
MPL jest dostępny dla następujących urządzeń:
- Cyklon V SoC
- Arria V SoC
- Intel Arria 10 SoC
MPL jest oferowany z licencją Berkeley Software Distribution (BSD), która umożliwia wygodniejsze programowanie i wdrażanie.
MPL jest dostarczany jako część SoC EDS i jest archiwum projektu w <folderze instalacyjnym SoC EDS> / embedded / examples / software / Intel® FPGA-SoCFPGA-HardwareLib-MPL.tar.gz pliku. Archiwum zawiera plik o nazwie README.txt, który zawiera szczegółowe opisy MPL i informacje o użytkowaniu.
UEFI
Unified Extensible Firmware Interface (UEFI) to znormalizowana specyfikacja oprogramowania układowego, która upraszcza inicjowanie platformy i uruchamianie oprogramowania układowego.
Bootloader UEFI jest dostępny dla następujących urządzeń:
- Intel Arria 10 SoC
- Intel Stratix 10 SoC
Ponieważ UEFI jest bardzo dobrze określony i używany przez setki firm technologicznych, wiele kodu można ponownie wykorzystać, umożliwiając szybsze cykle rozwoju.
UEFI zaimplementowany na układach FPGA Intel SoC składa się z dwóch różnych etapów:
- Faza inicjalizacji przed Efi (PEI). Ten etap konfiguruje platformę i ładuje aplikację użytkownika końcowego lub DXE.
- Driver eXecution Environment (DXE). Ten etap ładuje dodatkowe sterowniki UEFI i umożliwia bardziej rozszerzone możliwości, takie jak sieć i interfejs wiersza polecenia.
Bootloader UEFI oferuje również możliwość uruchamiania specjalnych aplikacji, które są przeznaczone dla środowiska DXE. Takie aplikacje mogą być wykonywane po powrocie kontroli wyjścia do DXE.
UEFI jest oferowany z licencją BSD, co pozwala na wygodniejsze programowanie i wdrażanie.
Kod źródłowy UEFI jest dostępny na stronie UEFI SoC FPGA w witrynie GitHub.
W przypadku układów SoC Intel Arria 10 UEFI jest również dostarczany z SoC EDS umożliwiającym taki sam przepływ rozwoju jak U-Boot.
ATF
ARM Trusted Firmware (ATF) jest referencyjną implementacją oprogramowania bezpiecznego świata dla ARMv8-a, implementującą różne standardy interfejsu ARM, takie jak Trusted Board Boot Requirements (TBBR) i Secure Monitor call.
ATF jest rozwijany wspólnie na licencji BSD, co pozwala na wygodny rozwój i wdrażanie.
ATF zajmuje niewiele miejsca i został zaprojektowany jako bootloader pierwszego stopnia (FSBL). Jest używany z UEFI do ładowania PXE, a następnie DXE, ale może być również na przykład używany do ładowania prostej aplikacji bare-metal.
Kod źródłowy portu Intel SoC FPGA ATF można uzyskać pod adresem https://github.com/Intel FPGA-opensource/arm-trusted-firmware.
4. Pierwsze kroki
U-Boot Pierwsze kroki
Dostępne są następujące zasoby, aby rozpocząć pracę z U-Boot:
- Generowanie i kompilowanie preloadera Cyclone V
- Generowanie i kompilowanie Arria 10 U-Boot
MPL Pierwsze kroki
MPL jest dostarczany jako część SoC EDS i jest archiwum projektu w pliku <SoC EDS Installation Folder>/embedded/examples/software/Intel FPGA-SoCFPGA-HardwareLib-MPL.tar.gz. Archiwum zawiera plik o nazwie README.txt ze szczegółowymi informacjami o użytkowaniu układów SoC Intel Arria 10, SoC Arria V i Cyclone V SoC.
UEFI Pierwsze kroki
Dostępne są następujące zasoby, aby rozpocząć pracę z interfejsem UEFI:
- Intel Arria 10 SoC UEFI Pierwsze kroki
- Intel Arria 10 SoC UEFI Boot Loader Podręcznik użytkownika
- Intel Stratix 10 SoC UEFI Boot Loader Podręcznik użytkownika
5. Zasoby
Podręczniki użytkownika
Dostępne są następujące podręczniki użytkownika:
Kod źródłowy
Kod źródłowy można uzyskać z następujących stron internetowych:
- Intel SoC FPGA U-Boot na GitHub
- Oficjalny kod źródłowy Denx U-Boot
- Intel SoC FPGA UEFI na GitHub
- Zaufane oprogramowanie układowe ARM w serwisie GitHub
- SoC EDS dla kodu źródłowego Cyclone V, Arrial V i Arria 10 U-Boot oraz kodu źródłowego Arria 10 UEFI. Kod źródłowy jest generowany przez uruchomienie narzędzia bsp-editor. Więcej informacji można znaleźć w Podręczniku użytkownika SoC EDS,rozdział "Podręcznik użytkownika narzędzi rozruchowych".
- SoC EDS dla kodu źródłowego SoC U-Boot S10, w < Folder instalacyjny EDSoC> / embedded / host_tools / Intel FPGA / bootloaders / stratix10 / u-boot / uboot-socfpga.tar.gz pliku.
- SoC EDS dla kodu źródłowego MPL, znajdującego się w pliku <SoC EDS>/embedded/examples/software/Intel FPGA-SoCFPGA-HardwareLib-MPL.tar.gz.
Materiały zawarte na tej stronie są tłumaczeniem z języka angielskiego, wykonanym częściowo przez człowieka, a częściowo automatycznie. Materiały te są udostępnione dla Twojej wygody i należy je traktować jedynie jako ogólne źródło informacji. Nie ma jednak gwarancji, że są one kompletne bądź poprawne. Jeśli istnieje jakakolwiek rozbieżność między wersją angielską tej strony a jej tłumaczeniem, wersja angielska jest wersją obowiązującą i ma rozstrzygające znaczenie. Wyświetl anglojęzyczną wersję tej strony.