Podstawowe informacje dotyczące programowania systemów wbudowanych

Slides:



Advertisements
Podobne prezentacje
Watchdog Paweł Trojanowski
Advertisements

Tryby adresowania Prawie każda operacja wykonywana przez mikroprocesor wykonywana jest na pewnych argumentach (lub argumencie). Sposoby wskazywania argumentów.
Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Architektura jednostki centralnej RD MBR MAR IRPC +1 WR jednostka sterująca ALU A F Adres Dane Rejestry: MAR – (Memory Address Register) rejestr adresowy.
UKŁADY ARYTMETYCZNE.
Wykład 6: Stałoprzecinkowe mikroprocesory sygnałowe: architektura
Wykonał : Marcin Sparniuk
Język asemblera Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
CPU.
Lista rozkazów Działanie mikroprocesora jest kontrolowane poprzez rozkazy (instrukcje). Dla każdego typu mikroprocesora istnieje specyficzny zbiór rozkazów,
Architektura szynowa systemu mikroprocesorowego szyna danych szyna sterująca szyna adresowa µP szyna danych szyna adresowa D7,..., D1, D0 A15,..., A1,
Wykład 9 Dedykowane procesory DSP oraz mikrokontrolery z jednostką DSP
Mapa pamięci mikrokontrolera
Wykład 5 Przerwania w systemie SAB80C537 dr inż. Andrzej Przybył
Wykład 4 Przetwornik Analogowo-Cyfrowy
Podstawowe składniki funkcjonalne procesora i ich rola.
Mikrokontrolery - - podstawowe architektury
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Magistrala & mostki PN/PD
Komputer, procesor, rozkaz.
Temat nr 10: System przerwań
ARCHITEKTURA WEWNĘTRZNA KOMPUTERA
Budowa Komputera.
Mikroprocesory i mikrokontrolery
ZESTAW KOMPUTEROWY.
Procesory jednoukładowe
Układy wejścia-wyjścia
Elektronika cyfrowa i mikroprocesory
ogólne pojęcia struktury
Komputer a system komputerowy
Architektura komputerów
przykładowy 8-bitowy mikroprocesor uniwersalny CISC
Technika Mikroprocesorowa 1
Układy kombinacyjne cz.2
MCS51 - wykład 2.
MCS51 - wykład 6.
Architektura komputerów
Mikrokontrolery PIC.
Cyfrowe układy logiczne
ARCHTEKTURA KOMPUTERA
Zasada działania komputera
Urządzenia wewnętrzne komputera
Budowa komputera.
Etapy pracy biosu.
ZASADY PODZIAŁU SIECI NA PODSIECI, OBLICZANIA ADRESÓW PODSIECI,
Budowa i rodzaje procesorów.
Mikroprocesory.
Przerwanie ang. interrupt.
Pamięć komputerowa S t r u k t u r a p a m i ę c i.
Architektura PC.
Budowa komputera ProProgramer.
Elementy zestawu komputerowego
SPRZET KOMPUTEROWY.
Złożone układy kombinacyjne
Zintegrowany sterownik przycisków. Informacje podstawowe Każdy przycisk jest podłączony do sterownika za pośrednictwem dwóch przewodów, oraz dwóch linii.
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Procesor, pamięć, przerwania, WE/WY, …
Struktura wewnętrzna mikrokontrolera zamkniętego
Zasady arytmetyki dwójkowej
Przerwania timera i przerwania zewnętrzne
Tryby adresowania i formaty rozkazów mikroprocesora
PWM, obsługa wyświetlacza graficznego
POLITECHNIKA POZNAŃSKA
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
Płyta główna. Magistrale I/O
Technika Mikroprocesorowa 1
POLITECHNIKA POZNAŃSKA
Wstęp do Informatyki - Wykład 6
Mikrokontrolery System przerwań
Format rozkazu Tryby adresowania.
Zapis prezentacji:

Podstawowe informacje dotyczące programowania systemów wbudowanych Wykład 2 Podstawowe informacje dotyczące programowania systemów wbudowanych Programowanie rdzenia procesora SAB80C537 dr inż. Andrzej Przybył Katedra Inżynierii Komputerowej Politechnika Częstochowska

Wiadomości podstawowe Przypomnijmy sobie, co będziemy robić: *) Oprogramowanie (firmware) dla urządzeń wbudowanych stanowi specyficzną gałąź programowania narzucającą restrykcyjne ograniczenia na rozmiar, budowę oraz szybkość działania programu (oprogramowanie czasu rzeczywistego, tworzenie sterowników dla urządzeń oraz systemów operacyjnych dedykowanych dla konkretnych platform sprzętowych, ...). ... a także realizacja typowych algorytmów sterowania, takich jak regulatory typu P-I-D, regulatory histerezowe, regulatory dwustanowe w reżimie czasu rzeczywistego przy wykorzystaniu mechanizmu przerwań sprzętowych implementacja pomocniczych procedur obliczeniowych: limitowanie zakresu sygnału na zadanej wartości (nasycanie), operacje typu MAC (Multiply-Accumulate), różniczkowanie i całkowanie sygnałów dostęp i konfiguracja specjalizowanych rejestrów sterujących sterowanych urządzeń komunikacja za pośrednictwem standardów transmisji szeregowej z urządzeniami wykonawczymi lub pomiarowymi, takimi jak: przetworniki AC, nieulotne pamięci szeregowe itp. realizacja interfejsu użytkownika *definicja znaleziona, za pomocą wyszukiwarki google, na stronie internetowej http://www.codeconcept.pl/pl/Services_FW_Embedded.php

Symbol graficzny mikrokontrolera, do użycia na schemacie ideowym w systemie mikroprocesorowym Widoczne są tzw. „nóżki” mikrokontrolera („piny”), i oznaczenia ich funkcji. Główną funkcją nóżek kontrolera są porty wejścia/wyjścia. Porty są zgrupowane po osiem i nazwane P0, P1, P2, ... itd. (każdy port to 8 sygnałów = 8 bitów w słowie procesora) Pozostałe sygnały to: zasilanie (VAGND, VSS, VCC) sygnał resetu (RESET), sygnał zegara taktującego (XTAL1, XTAL2) itp.

Pierwszy program dla systemu wbudowanego z mikrokontrolerem SAB80C537 (Siemens/Infineon) – sterowanie portami wyjściowymi (GPIO) NAME PROGRAM $INCLUDE (REG517.INC) ; dołączenie pliku definicji rejestrów procesora 80C537 PROGRAM SEGMENT CODE ;definicja segmentu zawierającego kod programu org 0x0000 ;ustawienie adresu początku programu (pierwszej instrukcji) JMP START RSEG PROGRAM ;informacja dla linkera - następne dane to kod programu ;(będzie umieszczony w segmencie pamięci CODE) START : ;… tu zamieszczamy instrukcje, które maja się wykonac jednorazowo po uruchomieniu programu PETLA: ;poczatek petli glownej programu mov P1,#00000000b ; wpisanie do wszystkich bitów portu P1 wartości zero ;= ustawienie stanu niskiego na 8 liniach wyjściowych mikrokontrolera mov P1,#00000010b ; wpisanie do wszystkich bitów portu P1 wartości binarnej ;= ustawienie stanu niskiego na 7 liniach wyjściowych mikrokontrolera, ;oraz stanu wysokiego na linii P.1 ;(bit numer 1 – bity są numerowane od prawej do lewej: nr bitu = 76543210 jmp PETLA ; instrukcja skoku – zmiana naturalnej kolejności ;wykonywania instrukcji – „skok” do miejsca oznaczonego ;etykieta tekstową ‘PETLA’ END poznane instrukcje: MOV, JMP poznane dyrektywy: ORG, SEGMENT CODE, END poznana składnia: struktura projektu, adresowanie natychmiastowe (#) wykorzystanie etykiet, dołączanie plików nagłówkowych ($include)

Drugi program - obsługa portów wejściowych GPIO, np Drugi program - obsługa portów wejściowych GPIO, np. sygnałów z czujników lub klawiatury … org 0x0000 ;ustawienie adresu początku programu (pierwszej instrukcji) ETYKIETA1: JNB P5.1, STAN_NISKI_NA_LINII_1 ; przetestowanie linii wejściowej P5.1 mikrokontrolera i skok do etykiety ;STAN_NISKI_NA_LINII_1 w przypadku wykrycie stanu niskiego ;gdy program dotarł do tego miejsca, to znaczy że na linii P5.1 był stan wysoki ;tu wstawiamy instrukcje procesora, które mają się wykonać w takim przypadku mov P1,#00000010b jmp ETYKIETA1 ; powrót do początku programu (pętla główna) STAN_NISKI_NA_LINII_1: ;gdy program dotarł do tego miejsca, to znaczy że na linii P5.1 był stan niski mov P1,#00000000b poznane instrukcje: JNB oraz JB

Mikrokontroler SAB80C537 Procesory z rodziny ‘51 są najpopularniejszą Jest to jeden z mikrokontrolerów z rodziny ’51 (tzw. „pięćdziesiątka jedynka”). Inne kontrolery z tej rodziny to 80C51, 80C2051, 80C535, itp. UWAGA – dostępna jest bardzo obszerna liczba publikacji dotycząca procesorów z rodziny ’51 – LITERATURA Procesory z rodziny ‘51 są najpopularniejszą oraz produkowaną i używaną do dziś rodziną mikrokontrolerów! Po lewej SAB80C537 produkcji Intel (rok produkcji 1980 (!), szybkośc 16 MHz – procesor 12-taktowy. Wykonywanie jednej instrukcji zajmuje 12 taktów zegara. Po prawej SAB-C515 produkcji Infineon (Siemens) – rok produkcji 1992 – nieco uboższa, kolejna z odmian podstawowej wersji procesora 80C51 (zdjęcie po lewej stronie u dołu) Strona prawa u dołu – zdjęcie płytki laboratoryjnej używanej w Katedrze Inżynierii Komputerowej Politechniki Częstochowskiej. Widoczne są: przyciski, potencjometry, wyświetlacz alfanumeryczny LCD, wyświetlacz 7-segmentowy LED oraz w górnej części pamięci RAM i EPROM i złącze do komunikacji szeregowej w standardzie RS232.

Budowa mikrokontrolera SAB80C537 (Siemens)/Infineon W schemacie blokowym wyróżnić można: CPU (Central Processor Unit) – centralna jednostka przetwarzająca odpowiedzialna za wykonywanie rozkazów procesora. Wewnętrzna pamięć RAM 256 bajtów oraz opcjonalna ROM, Porty wejścia/wyjścia (I/O – Input/Output) – P0 – P8 Jednostka mnożąco dzieląca – Div./Mul. –Unit Uniwersalne oraz specjalizowane układy czasowo- licznikowe, tzw. Timery: T0, T1, T2, Capture/Compare Unit Moduły do obsługi komunikacji szeregowej: Serial channel 0 i 1 Przetwornik analogowo/cyfrowy: A/D Converter Elementy dodatkowe: oscylator, watchdog, itp. Uwaga: możliwe jest podłączenie zewnętrznej pamięci o pojemności maksymalnie 64kbajty. Wykorzystywane są w tym celu specjalne właściwości niektórych portów I/O. Porty zajęte do obsługi komunikacji z pamięcią zewnętrzną nie mogą być użyte do innych celów.

Budowa jednostki centralnej CPU - „rdzeń” mikrokontrolera Procesor 8-bitowy – to znaczy, że jego podstawowa jednostka przetwarzająca operuje na słowie 8-bitowym Grupa rejestrów uniwersalnych R0-R7 Dwa tzw. ”Akumulatory” (A, B ) – nazwa wywodzi się od ich pierwotnego zastosowania w procesorach: Akumulacji czyli sumowania. Podstawowy akumulator to A. Operacje arytmetyczne (dodawanie, odejmowanie, mnożenie, itp.) oraz logiczne (operacje na bitach typu AND, OR, NOT, XOR, itp.) dozwolone są tylko na akumulatorach A i B Pozostałe rejestry rdzenia procesora są specjalizowane – służą do konkretnych celów, np.: DPTR – Data PoinTeR – wskaźnik danych w pamięci zewnętrznej. Jest to jeden z dwu rejestrów 16-bitowych w tym 8-bitowym procesorze. Służy do zadawania adresu podczas odczytu z komórki pamięci zewnętrznej. (Do procesora można podłączyć pamięć zewnętrzną o pojemności maksymalnie 64kbajty = 216 bajtów, która wymaga 16-bitowego adresowania). PSW – Program Status Word – słowo statusowe programu składające się z tzw. flag statusowych. PC - Program Counter – 16 bitowy rejestr wskazujący adres aktualnie wykonywanego rozkazu z pamięci procesora. SP – Stack Pointer – wskaźnik stosu, służący do obsługi specjalnej struktury danych w pamięci wewnętrznej procesora.

Podstawowe instrukcje rdzenia procesora oraz wybrane tryby adresowania MOV przykłady użycia: tryb adresowania rejestrowy: MOV A,B ;kopiowanie wartości z rejestru B do rejestru A (kierunek operacji dwu-argumentowych zawsze z prawej na lewą) MOV A, R0 ; kopiowanie wartości z rejestru R0 do A MOV R0, A ; kopiowanie wartości z rejestru A do R0 tryb adresowania natychmiastowy: MOV A,#10 ;kopiowanie stałej wartości dziesiętnej (podanej natychmiastowo) do rejestru A MOV A,#0Ah ;j.w. – ale liczbę dziesięć zapisano w kodzie szesnastkowym MOV A,#00001010b ;j.w. – ale liczbę dziesięć zapisano w kodzie binarnym tryb adresowania bezpośredni: MOV A,10 ;kopiowanie zawartości komórki o adresie 10, z pamięci wewnętrznej

Instrukcje arytmetyczne ADD, SUBB oraz flaga przeniesienia/pożyczki AC przykład użycia: tryb adresowania rejestrowy (w operacjach arytmetycznych jeden z argumentów jest zawsze w Akumulatorze A, wynik zawsze zostanie zapisany w A): ADD A,B ;dodawanie wartości z rejestru B do rejestru A ADD A, R0 ;dodawanie wartości z rejestru R0 do A tryb adresowania natychmiastowy: ADD A,#10 ;dodawanie stałej wartości licbowej (podanej po symbolu # w postaci dziesiętnej, szesnastkowej lub binarnej) do rejestru A tryb adresowania bezpośredni: ADD A,10 ;dodawanie zawartości komórki o adresie 10, z pamięci wewnętrznej do zawartości A

Rejestr statusowy PSW – Program Status Word Rejestr zawiera flagi wskazujące na wynik ostatniej wykonanej operacji arytmetycznej lub logicznej w rdzeniu procesora. Symbol Numer Bitu Opis CY 7 Flaga przeniesienia i pożyczki AC 6 Flaga przeniesienia dodatkowego dla operacji BCD F0 5 Flaga 0 ogólnego przeznaczenia RS1 4 Wybór położenia banku rejestrów uniwersalnych R0-R7: RS1,RS0 = 00 = Bank 0, adres 00H-07H RS1,RS0 = 01 = Bank 1, adres 08H-0FH RS1,RS0 = 10 = Bank 2, adres 10H-17H RS1,RS0 = 11 = Bank 3, adres 18H-1FH RS0 3 OV 2 flaga przepełnienia F1 1 Flaga ogólnego przeznaczenia P Flaga parzystości

Flaga przeniesienia i pożyczki CY funkcjonowanie podczas dodawania Ustawiana jest, gdy wynik operacji arytmetycznej (np. dodawanie) nie mieści się na jednym bajcie. Przykład mov A, #255 add A, #1 ;w trakcie wykonywania tej instrukcji nastąpi tzw. przeniesienie – czyli ustawienie flagi CY Wytłumaczenie: Wynik prawidłowy to 256, ale maksymalna wartość liczbowa jaką da się zapisać na 8 bitach (bajcie) wynosi 255. 1111 1111b = 255 +0000 0001b = 1 =1 0000 0000b = 256 (wartość zero na 8-bitowym rejestrze wyniku + ustawiona flaga sygnalizująca przeniesienie)

Flaga przeniesienia i pożyczki CY funkcjonowanie podczas odejmowania Ustawiana jest również, gdy wynik operacji arytmetycznej (np. dodawanie) nie mieści się na jednym bajcie. Przykład wystąpienie pożyczki mov A, #0 clr c ;konieczne jest skasowanie flagi CY przed wykonaniem instrukcji odejmowania, gdyż instrukcja SUBB odejmuje od A (oprócz ;argumentu) również wartość tej flagi wynosząca zero lub jeden. subb A, #1 ;w trakcie wykonywania tej instrukcji nastąpi tzw. pożyczka – czyli ;ustawienie flagi CY Wytłumaczenie: Wynik prawidłowy to -1, ale minimalna wartość liczbowa jaką da się zapisać na 8 bitach w naturalnym kodzie binarnym (NKB) wynosi 0. 0000 0000b = 255 -0000 0001b = 1 =1 1111 1111b = 255 =w NKB 8-bitów, ale należy uwzględnić, że wystąpiła pożyczka, prawidłowy wynik = -1)

Instrukcje skoków warunkowych JC, JNC JC ETYKIETA ;”skok” warunkowy do miejsca oznaczonego jako ETYKIETA Warunkiem wykonania skoku jest USTAWIONA flaga CY JNC ETYKIETA ;”skok” warunkowy do miejsca oznaczonego jako ETYKIETA SKASOWANA flaga CY

Instrukcje skoków warunkowych JZ, JNZ JZ ETYKIETA ;”skok” warunkowy do miejsca oznaczonego jako ETYKIETA Warunkiem wykonania skoku jest ZEROWA wartość akumulatora A JNZ ETYKIETA ;”skok” warunkowy do miejsca oznaczonego jako ETYKIETA Warunkiem wykonania skoku jest NIEZEROWA wartość akumulatora A

Trzeci program konstrukcja prostej pętli analogiczny zapis w języku symbolicznym R0=0; do ... R0=R0+1 while (R0<10) org 0x0000 ;ustawienie adresu początku programu (pierwszej instrukcji) mov R0,#0 ; ustawienia wartości początkowej zmiennej R0 POCZATEK_PETLI: ;... dowolne instrukcje mov A,R0 ;zwiększenie wartości R0:=R0+1 add A,#1 mov R0,A mov A,R0 ;ta instrukcja jest zbędna (aktualna wartość R0 jest już w A) clr C subb A,#10 jc POCZATEK_PELI ; powrót do początku pętli, JEŚLI flaga C jest ustawiona – czyli wartość ;odjemnej (A) była mniejsza od liczby 10

Podsumowanie poznane instrukcje: MOV, JMP, JC, JNC, JZ, JNZ, JB, JNB, ADD, SUBB, CLR C poznane dyrektywy: ORG poznana składnia: adresowanie natychmiastowe (#), absolutne, rejestrowe wykorzystanie etykiet dołączanie plików nagłówkowych ($include) poznane elementy budowy mikrokontrolera: porty I/O, rejestry uniwersalne A,B, R0-R7, rejestr PSW i flagi statusowe poznane techniki programowania: rozgałęzienia programu konstruowanie prostych pętli wykorzystanie operacji wielokrotnej precyzji

Przykładowe pytania testowe Opisać rejestry uniwersalne mikrokontrolera z rodziny ’51. Opisać podstawowe tryby adresowania na przykładzie instrukcji dodawania? Co to jest i do czego służy rejestr statusowy PSW? Jakie są ograniczenia związane ze stosowaniem instrukcji arytmetycznych w procesorze z rodziny ‘51? Co to są instrukcje skoków warunkowych? Skonstruować prosta pętlę programową o podanych parametrach?