Jak przebiega wykonywanie programu w oprogramowaniu układowym?


9

Słyszałem od osób pracujących w domenie oprogramowania układowego, że nie ma systemu operacyjnego kontrolującego oprogramowanie układowe (np. Oprogramowanie układowe na dysku USB). W pętli while działa tylko jeden wątek, który czeka na zewnętrzne polecenie, i jest to punkt początkowy do przerwania, po którym następuje ISR i kontrola płynąca do samego sprzętu. Ale zasadniczo, jaka jest ta część sprzętu, która wykonuje kod oprogramowania układowego? Czy istnieje procesor lub kod oparty na ASIC, który jest wyzwalany, dopóki urządzenie jest zasilane. Nie rozumiem zmiany paradygmatu ze zwykłego systemu opartego na procesorze na oprogramowanie układowe.


Jeśli to możliwe, ktoś może wziąć przykład oprogramowania układowego, wskazując markę procesora oraz wszelkie inne szczegóły dotyczące sprzętu i oprogramowania. Przykładami mogą być oprogramowanie układowe na kartach SD, USB, kontrolerach dysków twardych itp.
Abhijit K Rao, 15'12

Odpowiedzi:


13

Nie ma zmiany paradygmatu; w obu przypadkach procesor wykonuje oprogramowanie / oprogramowanie układowe.

Oprogramowanie układowe i oprogramowanie to to samo; jedynym rozróżnieniem jest sposób ich przechowywania. Oprogramowanie jest zwykle przechowywane na urządzeniu pamięci masowej (np. Na dysku) i ładowane do pamięci ulotnej (np. DRAM) przed uruchomieniem. Łatwo jest zmienić oprogramowanie, po prostu zastępując plik zawierający go innym.

Oprogramowanie układowe jest zwykle przechowywane w nieulotnej pamięci (np. FLASH) podłączonej mniej więcej bezpośrednio do procesora. Trudniej jest go modyfikować (stąd „firma”) i może zostać przeniesiony do innej pamięci w celu wykonania.

Naprawdę, działanie komputera z „systemem operacyjnym” zasadniczo nie różni się od opisu oprogramowania układowego. Pamiętaj, że sam system operacyjny to po prostu kolejne oprogramowanie - lub, co bardziej prawdopodobne, ogromny zbiór wzajemnie zależnych programów. Na najniższym poziomie procesor nadal siedzi w jakiejś pętli i czeka na rzeczy do zrobienia. Tyle, że ta pętla jest zakopana w systemie operacyjnym.


9

Nawet „zwykły” procesor z systemem operacyjnym musi uruchamiać oprogramowanie układowe ... zwykle nazywa się to BIOS w zwykłym komputerze. Oprogramowanie układowe dowolnego procesora to tylko oprogramowanie, które jest zawsze dostępne po włączeniu zasilania, niezależnie od tego, czy procesor jest podłączony do dowolnego urządzenia peryferyjnego (napędy dyskowe, USB itp.). Jeśli masz w pełni funkcjonalny system operacyjny, oprogramowanie układowe po prostu zorientuje się, które urządzenie (dysk, dysk USB itp.) Przechowuje kod systemu operacyjnego, kopiuje kod do pamięci RAM i uruchamia go. W przypadku małych urządzeń wbudowanych nie jest potrzebny pełny system operacyjny, ponieważ nie będziesz ładować różnych aplikacji ani podłączać różnych urządzeń, więc małe procesory po prostu używają bardzo prostego systemu operacyjnego lub być może „harmonogramu zadań”. Różne zadania mogą obejmować odczyty czujników, oczekiwanie na naciśnięcie przycisków i aktualizację wyświetlacza. W przypadku bardzo prostych aplikacji procesor ma mnóstwo czasu na wykonanie wszystkich zadań, więc po prostu wykonuje każde z nich po kolei, co jest również znane jako podejście „round robin”. Bardziej wyrafinowani planiści biorą pod uwagę priorytet zadań.

Podstawową kwestią jest to, że każdy procesor musi mieć jakiś kod, który jest zawsze dostępny do wykonania po włączeniu zasilania. Ten kod jest zwykle przechowywany w stosunkowo małej pamięci „ROM tylko do odczytu”, chociaż współczesne procesory umieszczają oprogramowanie układowe w pamięci Flash ROM, „najczęściej czytanej”. Tak przechowywany kod to „oprogramowanie układowe” procesora.


6

Wydaje się, że w twoim pytaniu są pewne nieporozumienia.

Oprogramowanie układowe to po prostu oprogramowanie w ustalonej formie, używane w zwykłej pamięci ROM (jednokrotnej lub nawet programowanej maską), teraz głównie w pamięci ROM (do wielokrotnego zapisu). W niektórych systemach oprogramowanie to jest jedynym dostępnym oprogramowaniem, w innych (jak zwykły komputer) jego główną funkcją jest ładowanie innego oprogramowania.

Aplikacja może działać pod kontrolą systemu operacyjnego lub może działać bez systemu operacyjnego. Ta ostatnia sytuacja jest często nazywana „gołym metalem”: aplikacja działa bez niczego pomiędzy sprzętowym „metalem”. Funkcje znajdujące się w sytuacji z systemem operacyjnym wykonywane przez system operacyjny, na przykład obsługa systemu plików i obsługa wielowątkowości, mogą być nadal obecne w systemie bez systemu operacyjnego, ale w postaci bibliotek powiązanych z aplikacją .

Oprogramowanie może mieć wiele różnych architektur. Bardzo prostą formą jest pętla „pobierz dane wejściowe, wykonaj przetwarzanie, zapisz dane wyjściowe”. Bardziej skomplikowane formularze mogą obejmować odpytywanie, przerwania lub wielowątkowość. Zarówno aplikacje zależne od systemu operacyjnego, jak i bez systemu operacyjnego mogą korzystać ze wszystkich tych architektur.

Te trzy problemy są niezależne: na przykład oprogramowanie wewnętrzne może działać bez systemu operacyjnego i korzystać z architektury wielowątkowej. Lub oprogramowanie układowe może być systemem operacyjnym, który ładuje aplikację z dyskietki (przepraszam, karta flash ...), która wykorzystuje prostą architekturę pętli get-do-write.


5

System operacyjny i procesor to różne koncepcje. Tak, w sercu maszyny znajduje się procesor, który jest kluczowym elementem sprzętu. Pobiera instrukcje oprogramowania wewnętrznego z pamięci oprogramowania i wykonuje je. (Obecnie powszechne jest nawet małe systemy mają wiele procesorów do wykonywania równoległego, nawiasem mówiąc, jest więc nieco nieaktualne mówić wyłącznie o tym . CPU)

Firmware to oprogramowanie przechowywane w nieulotnej (a może nawet tylko do odczytu) pamięci. Ponieważ znajduje się w takiej pamięci, oprogramowanie układowe jest dostępne po włączeniu urządzenia. Maszyna może niemal natychmiast rozpocząć wykonywanie oprogramowania układowego po włączeniu lub jakiś mały program rozruchowy (samo oprogramowanie układowe) może pobrać większe oprogramowanie układowe z pamięci elektronicznej, takiej jak flash, i umieścić je w pamięci RAM, a następnie uruchomić. Współczesne wykorzystanie pamięci flash powoduje, że czasami można usłyszeć zwrot „flashowanie nowego oprogramowania układowego”, odnoszący się do procedury aktualizacji. Firmware nie musi być łatwo aktualizować w ten sposób. Może on pochodzić z układu scalonego, więc aktualizacja urządzenia do nowego oprogramowania układowego może obejmować usunięcie układu scalonego („układ EPROM”) z gniazda i podłączenie nowego. BIOS komputera s były w ten sposób aktualizowane i niezliczone inne urządzenia. To tak naprawdę pochodzi słowo. Niektórzy ludzie czuli się niekomfortowo, nazywając program „oprogramowaniem”, jeśli musieli zamienić układ scalony lub płytkę drukowaną, aby go wymienić, co bardziej przypomina aktualizację sprzętu. Stąd powstało „oprogramowanie wewnętrzne”: coś „trudniejszego” do zmiany niż oprogramowanie.

Oprogramowanie układowe może być „w pełni funkcjonalnym” systemem operacyjnym. Na przykład Tomato to oprogramowanie układowe dla routerów bezprzewodowych oparte na systemie Linux:

http://www.polarcloud.com/tomato

Możemy zalogować się do Tomato za pośrednictwem ssh i otrzymać monit o Linuksa. Jest to więc zaawansowany system operacyjny i oprogramowanie układowe. Ale jeśli router miał dysk twardy i jeśli ten sam system operacyjny musiałby zostać załadowany z tego dysku podczas uruchamiania, nie mógłby być już legalnie nazywany oprogramowaniem układowym. Oprogramowanie układowe musi znajdować się w pamięci elektronicznej, która jest dostępna dla procesora natychmiast po włączeniu, takiej jak pamięć flash lub układy EPROM.

Wiele urządzeń konsumenckich ma obecnie oprogramowanie układowe z możliwością aktualizacji. Jeśli masz na przykład aparat cyfrowy, powinieneś znaleźć jego stronę internetową i sprawdzić, czy nowsza wersja oprogramowania układowego nie jest dostępna, co rozwiązuje niektóre problemy, które mogą występować w fabrycznie zainstalowanym oprogramowaniu. Aktualizacja oprogramowania układowego jest obecnie łatwa nawet dla stosunkowo nietechnicznych użytkowników końcowych. Wspomniany Tomato to przykład oprogramowania firm trzecich typu open source, które zastępuje oprogramowanie fabryczne.

Słowo „system operacyjny” po prostu odnosi się do programu sterującego, który ma pewien stopień zaawansowania i kompletności w zarządzaniu zasobami maszyny i zapewnianiu programom usług na odpowiednio wysokim poziomie: funkcje takie jak systemy plików, protokoły sieciowe, zarządzanie pamięcią i procesami, wysoki poziom dostępu do urządzeń, a być może jakiś model użytkownika, a także bezpieczeństwo. Nie wszystkie z nich muszą być obecne w systemie operacyjnym. Zwykle kluczem jest pamięć, zarządzanie procesami i operacje we / wy. Jeśli program sterujący zezwala na uruchamianie innych programów, nadając tym programom tożsamość, dzięki której są one powiązane z ich własnymi zasobami, i jeśli zapewnia im usługi zarządzania procesorem i pamięcią oraz wykonywania operacji we / wy, możemy nazwać tę kontrolę zaprogramuj system operacyjny.

Ponieważ jesteś ciekawy, możesz naprawdę polubić podręczniki o architekturze komputerów, takie jak William Stallings lub Hennesy i Patterson.


4

Na najbardziej podstawowym poziomie procesor jest po prostu maszyną stanu przechodzącą przez sekwencję instrukcji, które zmieniają własny stan wewnętrzny i / lub generują pewną moc wyjściową. Wyodrębnij i dopracuj tę koncepcję na bardzo wysokim poziomie, a otrzymasz najnowsze oferty procesorów do komputerów stacjonarnych i mobilnych od Intela. Ale podstawowa zasada jest dość prosta - możesz zbudować bardzo prosty procesor z około tuzinem układów scalonych TTL, a mikroprocesory od początku do połowy lat siedemdziesiątych, zaprojektowane do użytku w kalkulatorach biurkowych i kontrolerach sygnalizacji świetlnej, nie były strasznie bardziej skomplikowane niż to . Oczywiście prawo Moore'a podniosło to na zupełnie inny poziom, a współczesne wysokowydajne procesory mało przypominają swoich przodków sprzed 35 lat.

Mimo to wciąż istnieje ogromny rynek procesorów (zwanych zwykle mikrokontrolerami), które są znacznie mniej skomplikowane niż najnowsze technologie; są to na przykład typy procesorów, które można znaleźć na dysku USB. Aby odpowiedzieć na twoje pytanie - możliwe jest, że niektóre funkcje wspomnianych urządzeń mogą być obsługiwane przez ASIC, ale jeśli twoi koledzy mówią o wątkach i przerwach, ogólnie oznacza to, że procesor zajmuje pewien czas, prawdopodobnie na mikrokontrolerze . Są to rzeczywiście pełnoprawne komputery w tym sensie, że mają ALU, rejestry, licznik programów, stos itp., Ale mają bardzo małą moc i są bardzo tanie i mogą mieć tylko kilkadziesiąt instrukcji, a nie setki architektury x86.

Nie ma wymogu, aby te urządzenia miały system operacyjny jakiegokolwiek rodzaju lub jakąkolwiek koncepcję przełączania kontekstu (chociaż jest to możliwe w niektórych przypadkach), wszystko, czego wymaga się od niego do zastosowania, to przejrzeć instrukcje w swoim programie jeden po drugi, i jak mówisz, może to być bardzo prosty program.


1

Pomijając niektóre uprawnienia, procesor nie będzie wiedział, czy wykonuje kod z systemu operacyjnego lub innego rodzaju programu. Dla procesora to po prostu wykonywanie instrukcji pobranych z pamięci.

Nie zapominajmy, czym jest system operacyjny: program, który jest zawsze w pamięci i jest odpowiedzialny za bezpieczną obsługę i planowanie wielu zadań. Terminologia, której używamy do opisania niezależnego zadania, jest „procesem”. Systemy operacyjne umożliwiają procesom bezpieczne dzielenie się zasobami (sprzętem, pamięcią itp.) Oraz ustalanie harmonogramu i priorytetów ich wykonania, a także zapewniają funkcje takie jak komunikacja między procesami. Wszystko to wynika z potrzeby obsługi wielu współbieżnych zadań. Pomijając niektóre poziomy uprawnień, procesor wykonuje po prostu instrukcje OS lub brak OS - nie zna różnicy.

Kiedy piszemy oprogramowanie dla mikrokontrolera, zwykle nie mamy tego dodatkowego programu (OS) zawsze w pamięci, aby zarządzać za nas zadaniami. Dlaczego? Ponieważ nie potrzebujemy wielu równoczesnych zadań - systemy osadzone są zwykle projektowane i programowane tak, aby dobrze wykonywać tylko jedną aplikację. Porównaj to z komputerem PC, który ma być bardzo elastyczny i być zdolny do uruchamiania wszystkich rodzajów aplikacji jednocześnie.

Nie ma już problemu z tym, że jeden proces zajmuje i zajmuje miejsce w pamięci innego procesu lub jeden proces pochłania cały procesor. Wynika to z faktu, że piszemy pojedynczy program, który ma dostęp do wszystkich zasobów w dowolnym momencie, ponieważ jest to jedyny program działający w systemie, a zatem nie potrzebujemy innego programu takiego jak system operacyjny do zarządzania nim. Ponownie, do procesora, po prostu wykonuje instrukcje pobrane z pamięci, nie może odróżnić systemu operacyjnego lub systemu operacyjnego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.