Systemy wbudowane - Warunki

Licznik programu

Licznik programu jest 16- lub 32-bitowym rejestrem, który zawiera adres następnej instrukcji do wykonania. Komputer automatycznie przechodzi do następnej sekwencyjnej lokalizacji pamięci za każdym razem, gdy pobierana jest instrukcja. Operacje rozgałęzienia, skoku i przerwania ładują Licznik Programu z adresem innym niż następna kolejna lokalizacja.

Aktywacja resetowania po włączeniu zasilania spowoduje utratę wszystkich wartości w rejestrze. Oznacza to, że wartość komputera PC (licznik programu) wynosi 0 po zresetowaniu, zmuszając procesor do pobrania pierwszego kodu operacji z lokalizacji pamięci ROM 0000. Oznacza to, że musimy umieścić pierwszy bajt kodu upcode w lokalizacji ROM 0000, ponieważ to właśnie tam CPU oczekuje, że znajdzie pierwszą instrukcję

Zresetuj wektor

Znaczenie wektora resetowania polega na tym, że wskazuje on procesorowi adres pamięci, który zawiera pierwszą instrukcję oprogramowania układowego. Bez wektora resetowania procesor nie wiedziałby, gdzie rozpocząć wykonywanie. Po zresetowaniu procesor ładuje licznik programu (PC) z wartością wektora resetowania z predefiniowanej lokalizacji pamięci. W architekturze CPU08 jest to lokalizacja $ FFFE: $ FFFF.

Gdy wektor resetowania nie jest konieczny, programiści zwykle przyjmują go za pewnik i nie programują w ostatecznym obrazie. W rezultacie procesor nie uruchamia się na produkcie końcowym. Jest to częsty błąd, który ma miejsce podczas fazy debugowania.

Wskaźnik stosu

Stos jest zaimplementowany w pamięci RAM, a rejestr procesora jest używany, aby uzyskać do niego dostęp, zwany rejestrem SP (wskaźnik stosu). Rejestr SP jest rejestrem 8-bitowym i może adresować adresy pamięci z zakresu od 00h do FFh. Początkowo rejestr SP zawiera wartość 07 wskazującą na lokalizację 08 jako pierwszą lokalizację używaną dla stosu przez 8051.

Kiedy zawartość rejestru procesora jest przechowywana w stosie, nazywa się to operacją PUSH. Gdy zawartość stosu jest przechowywana w rejestrze procesora, nazywa się to operacją POP. Innymi słowy, rejestr jest umieszczany na stosie, aby go zapisać i zdejmowany ze stosu, aby go odzyskać.

Nieskończona pętla

Nieskończoną pętlę lub nieskończoną pętlę można zidentyfikować jako sekwencję instrukcji w programie komputerowym, która jest wykonywana bez końca w pętli, z następujących powodów:

  • pętla bez warunku zakończenia.
  • pętla z warunkiem zakończenia, którego nigdy nie można spełnić.
  • pętla z warunkiem zakończenia, który powoduje, że pętla zaczyna się od nowa.

Takie nieskończone pętle zwykle powodowały, że starsze systemy operacyjne przestały odpowiadać, ponieważ nieskończona pętla pochłania cały dostępny czas procesora. Operacje we / wy oczekujące na dane wejściowe użytkownika są również nazywane „nieskończonymi pętlami”. Jedną z możliwych przyczyn "zawieszania się" komputera jest nieskończona pętla; inne przyczyny obejmujądeadlock i access violations.

Systemy wbudowane, w przeciwieństwie do komputerów PC, nigdy nie „zamykają” aplikacji. Bezczynnie przechodzą przez nieskończoną pętlę, czekając, aż zdarzenie nastąpi w postaci przerwania lub plikupre-scheduled task. Aby oszczędzać energię, niektóre procesory wchodzą w specjalnesleep lub wait modes zamiast pracować na biegu jałowym przez nieskończoną pętlę, ale wyjdą z tego trybu albo po odliczeniu czasu, albo po zewnętrznym przerwaniu.

Przerwania

Przerwania to głównie mechanizmy sprzętowe, które instruują program, że wystąpiło zdarzenie. Mogą wystąpić w dowolnym momencie i dlatego są asynchroniczne z przepływem programu. Wymagają specjalnej obsługi przez procesor i ostatecznie są obsługiwane przez odpowiednią procedurę obsługi przerwania (ISR). Przerwania muszą być obsługiwane szybko. Jeśli obsługa przerwania zajmuje zbyt dużo czasu, możesz przegapić kolejne przerwanie.

Little Endian kontra Big Endian

Chociaż liczby są zawsze wyświetlane w ten sam sposób, nie są przechowywane w ten sam sposób w pamięci. Maszyny Big-Endian przechowują najbardziej znaczący bajt danych w najniższym adresie pamięci. Maszyna Big-Endian przechowuje 0x12345678 jako -

ADD+0: 0x12 
ADD+1: 0x34 
ADD+2: 0x56 
ADD+3: 0x78

Z drugiej strony maszyny Little-Endian przechowują najmniej znaczący bajt danych w najniższym adresie pamięci. Maszyna Little-Endian przechowuje 0x12345678 jako -

ADD+0: 0x78 
ADD+1: 0x56 
ADD+2: 0x34 
ADD+3: 0x12