Wbudowany Linux Samouczek-Urządzenie typu smartfon, którego używasz, jest przykładem systemu wbudowanego, prawdopodobnie działającego pod kontrolą wbudowanego systemu Linux. Wykonuje on określone operacje, w przeciwieństwie do komputera ogólnego przeznaczenia, który nie posiada żadnej konkretnej funkcji. Sprawdź ten wbudowany samouczek Linux, w którym wyjaśnimy, dlaczego komponent oprogramowania jest najlepszy dla systemów wbudowanych.
Czym jest wbudowany Linux?

Rys. 1: System operacyjny Linux
System wbudowany to system komputerowy przeznaczony do wykonywania określonych operacji. Dlatego większość urządzeń elektroniki użytkowej to systemy wbudowane.
Embedded Linux jest formą jądra Linuksa, która jest przydatna w programach użytkowych systemów wbudowanych. Na przykład Android, popularne oprogramowanie do tworzenia aplikacji dla smartfonów, działa na kodzie jądra. W ten sposób oprogramowanie aplikacyjne jest wbudowanym systemem Linux.
Dodatkowo, obiekt jądra reprezentuje rdzeń systemu operacyjnego, który jest kluczowy w uruchamianiu docelowego sprzętu. W szczególności obejmuje on procesor i pamięć.
Dlaczego warto wybrać Linuksa dla systemów wbudowanych?
Jądro systemu Linux jest najczęściej spotykanym oprogramowaniem aplikacyjnym w wielu urządzeniach elektroniki użytkowej. Oto niektóre z powodów jego popularności.
Open Source

Rys. 2: Linux Kernel jest popularny ponieważ jest systemem operacyjnym o otwartym kodzie źródłowym
Przede wszystkim, oprogramowanie Linux jest otwartym kodem jądra. Dlatego łatwo jest dostosować kod źródłowy do swoich specyficznych potrzeb. Ponadto, możesz swobodnie usuwać lub dodawać składniki obiektu Kernel podczas tworzenia obrazu Linuksa dla docelowego sprzętu.
Dlatego właściciele mogą swobodnie tworzyć obrazy jądra dla urządzeń elektroniki użytkowej z ograniczoną pamięcią.
Możliwość ponownego wykorzystania
Praca z programami użytkowymi open-source sprawia, że projektowanie obiektów wbudowanych jest stosunkowo łatwiejsze. Przede wszystkim dlatego, że Linux ma szerokie wsparcie społeczności dedykowane do rozwoju różnych aplikacji.
Stąd też dostępne są liczne programy użytkowe jak I2C, biblioteki graficzne, biblioteki SPI, stos TCP/IP itp. Dlatego też, niezależnie od rodzaju systemu plików z jakim masz do czynienia, społeczność Linuksa ma cię w zasięgu ręki. Uwalnia to czas, aby przede wszystkim skoncentrować się na rozwoju głównej aplikacji.
Niski koszt/wolny

Rys. 3: Społeczność systemu operacyjnego Linux tworzy większość aplikacji
Z Linuksem możesz pominąć etap tworzenia aplikacji, ponieważ większość z nich jest łatwo dostępna. Jedyne czego potrzebujesz to wybór aplikacji w zależności od docelowego sprzętu.
Ponieważ wszystkie niestandardowe aplikacje są swobodnie dostępne, tworzenie aplikacji w systemie operacyjnym Linux jest tanie. W konsekwencji obniża to cenę urządzenia wbudowanego. Wsparcie sprzętowe/ Rozszerzenie
zapewnienie kompatybilności
Linux oferuje wsparcie dla szerokiej gamy architektur procesorów, które obejmują następujące elementy:
SuperH
RiscV
ARM
PowerPC
x86
MIPS
Przede wszystkim system operacyjny funkcjonuje na mikroprocesorze o architekturze MMS, ale działa również pod architekturą inną niż MMS, choć z ograniczeniami.
Klasyfikacja wbudowanych systemów Linux
Rys. 4: Wbudowany system Linux Systemy wbudowane klasyfikuje się przede wszystkim ze względu na wielkość.
Kryterium klasyfikacji systemów wbudowanych opiera się przede wszystkim na strukturze systemu. Mimo to można klasyfikować z uwzględnieniem wielkości i ograniczeń czasowych. Oto trzy główne klasyfikacje oparte na wielkości.
Wbudowany Linux Samouczek-Małe systems
Charakteryzują się one procesorem o małej mocy oraz pamięcią boot ROM nie przekraczającą 4MB. Dodatkowo taki system posiada pamięć RAM o pojemności od 8MB do 16MB.
System średniej wielkości
Jego procesor jest średniej mocy i posiada 32MB początkowego systemu plików RAM. Ponadto posiada wymienną kartę pamięci.
Wbudowany Linux Samouczek-Systemy dużych rozmiarów
Większość będzie miała mocny procesor lub w niektórych przypadkach wiele procesorów. Pamięć RAM jest również większa niż w przypadku systemu średniej wielkości. Wreszcie, posiada system pamięci stałej.
Minimalne wymagania sprzętowe do użycia Linuksa na procesorach wbudowanych
Rys. 5: Programista kodujący w systemie Linux
Przede wszystkim obiekt Linux Kernel obsługuje architektury procesorów takie jak poniższe:
Nie należy również zapominać, że uruchomienie oprogramowania aplikacyjnego Linux na docelowym procesorze wbudowanym będzie wymagało początkowego systemu plików RAM o pojemności co najmniej 32MB. Ponadto, udany proces uruchamiania będzie wymagał systemu plików pamięci masowej o wielkości 4MBs.
Dla wymagań pamięci masowej, można zdecydować się na NOR surowego Flash, SD lub MMC karty.
Wbudowany Linux Samouczek-Architektura Embedded Linux
Poniższy schemat blokowy przedstawia architekturę wbudowanego komponentu oprogramowania Linux.

Rys. 6: Architektura wbudowanego systemu Linux
Proces budowy systemu wbudowanego dzieje się na komputerze gospodarza, a narzędzia kompilacji krzyżowej są niezbędne w tej procedurze. Przede wszystkim, docelowy sprzęt nie ma wymaganych narzędzi do generowania obrazu binarnego do uruchomienia klasy sprzętu wbudowanego.
Dlatego kompilacja krzyżowa polega przede wszystkim na kompilacji kodu (pliku inicjalizacyjnego) na jednym systemie serwerowym. Następnie kod z systemu hosta jest uruchamiany na innym systemie serwerowym.
Główne składniki wbudowanych systemów Linux
Wbudowany Linux Samouczek-Główny system plików

Rys. 7: Programista pracujący na systemie Linux
System plików root jest niezbędny do organizacji danych w postaci plików i katalogów w urządzeniach pamięci masowej płyt rozwojowych. Zasadniczo w systemie Linux wszystko jest plikiem głównym.
Również ładowalne moduły jądra będą wymagały systemu plików root w procesie rozruchu. Główny system plików jest repozytorium plików konfiguracyjnych, które jest przydatne w tworzeniu środowiska wykonawczego urządzenia wbudowanego.
Poza tym, jest on kluczowy w procesie Init Process/ Standardowy proces inicjalizacji uruchomienia programu w systemie Linux.
Wbudowany Linux Samouczek-Kernel
Jest to podstawowe oprogramowanie aplikacyjne systemu wbudowanego. Oprogramowanie aplikacyjne jest przede wszystkim podzielone na dwie części: pamięć przestrzeni jądra i przestrzeń użytkownika.
Jego funkcje obejmują;
Zarządzanie plikami.
Zarządzanie procesami i ustalanie harmonogramów.
Ułatwianie pracy w sieci.
Komunikacja między procesami.
Zarządzanie wejściami/wyjściami.
Interfejsowanie sprzętu poprzez sterowniki urządzeń.
Zarządzanie pamięcią.
Wbudowany Linux Samouczek-Drew urządzeń

Rys. 8: Ilustracja drzewa urządzeń (Device Tree)
Drzewo urządzeń jest kanałem wbudowanego systemu Linux Kernel, niezbędnym do identyfikacji obecności dodatkowych urządzeń. Dlatego drzewo urządzeń reprezentuje drzewiastą strukturę danych, która wspomaga identyfikację dodatkowych urządzeń, które nie są łatwo wykrywalne.
Zauważ, że niektóre dodatkowe urządzenia są odkrywalne, podczas gdy inne są domyślnie nieodkrywalne. Przykłady nieodkrywalnych urządzeń peryferyjnych na chipie obejmują interfejs ethernet, UART, I2C i SP.
Z drugiej strony, komponent taki jak urządzenie USB jest domyślnie odkrywany.
Wbudowany Linux Samouczek-Bootloader
Kod/plik inicjalizacyjny uruchamiany po pierwszym zastosowaniu zasilania na sprzęcie klasy embedded. Jego funkcje obejmują:
Inicjalizacja sprzętu docelowego i ładowanie binarne aplikacji,
Ułatwienie podłączenia zewnętrznej pamięci RAM do SOC i wykonanie kodu głównego systemu operacyjnego.
Łańcuch narzędziowy Cross-development
Zawiera takie narzędzia jak biblioteki C, kompilator GCC i debugger GNU. Te narzędzia są kluczowe w tworzeniu kodu źródłowego dla urządzeń na płytach docelowych.
Zauważ, że toolchainy do kompilacji krzyżowej są wykorzystywane tylko we wbudowanym systemie Linux. Głównie dlatego, że większość docelowych urządzeń peryferyjnych nie posiada wymaganych zasobów wspierających toolchain.
Dlatego też, aby zakończyć kompilację krzyżową, konieczny jest interfejs ethernet, aby przenieść kod źródłowy do docelowych urządzeń dodatkowych. Tam, gdzie interfejs ethernet MAC jest niedostępny, można użyć dowolnego innego dostępnego interfejsu komunikacji szeregowej.
Inne kluczowe komponenty obejmują programy systemowe i aplikacje.
Podsumowanie
Nasz samouczek wbudowanego Linuksa objął wszystkie najważniejsze informacje na ten temat. Ale jeśli są szare strefy lub pytania, które chciałbyś zadać, odezwij się — chętnie odpowiemy.