You are on page 1of 37

Systemy wbudowane

Zakres przedmiotu

Laboratorium
Systemy mikroprocesorowe, systemy wbudowane
Rodzina procesorw ARM
Urzdzenia peryferyjne
Pamici i dekodery adresowe
Programy wbudowane na przykadzie procesorw ARM
Metodyki projektowania systemw wbudowanych
Interfejsy w systemach wbudowanych
Systemy czasu rzeczywistego

Katedra Mikroelektroniki i Technik Informatycznych DMCS

12

Systemy wbudowane

Definicje podstawowe (1)


Procesor (ang. Processor, Central Processing Unit)
Urzdzenie cyfrowe, sekwencyjne, potrafice pobiera dane z pamici,
interpretowa je i wykonywa jako rozkazy
Mikroprocesor (ang. Microprocessor)
Ukad cyfrowy wykonany jako pojedynczy ukad scalony o wielkim
stopniu integracji (VLSI) zdolny do wykonywania operacji cyfrowych
wedug dostarczonych mu informacji, np.: x86, Z80, 68k
Mikrokontroler (ang. Microcontroller)
Komputer wykonany w jednym ukadzie scalonym, uywany do
sterowania urzdzeniami elektronicznymi. Oprcz jednostki centralnej
CPU posiada zintegrowane pamici oraz urzdzenia peryferyjne, np.:
Intel 80C51, Atmel Atmega128, Freescale MCF5282, ARM926EJ-S

Katedra Mikroelektroniki i Technik Informatycznych DMCS

13

Systemy wbudowane

Historia mikroprocesorw (1)


1940 Russell Ohl demonstracja zcza pprzewodnikowego (dioda germanowa,
bateria soneczna)
1947 Shockley, Bardeen, Brattain prezentuj pierwszy tranzystor

Pierwszy tranzystor, Bell Laboratories

Pierwszy ukad scalony, TI

1958 Jack Kilby wynalaz pierwszy ukad scalony


1967 Laboratorium Fairchild oferuje pierwsz pami nieulotn ROM (64 bity)
1969 Noyce i Moore opuszczaj laboratorium Fairchild, powstaje niewielka firma
INTEL. INTEL produkuje pamici SRAM (64 bity). Japoska firma Busicom
zamawia 12 rnych ukadw realizujcych funkcje kalkulatorw.
Katedra Mikroelektroniki i Technik Informatycznych DMCS

14

Systemy wbudowane

Historia mikroprocesorw (2)


1970 - F14 CADC (Central Air Data Computer) mikroprocesor zaprojektowany przez
Steve'a Gellera i Raya Holta na potrzeby armii amerykaskiej (myliwiec F-14
Tomcat)
1971 - Intel 4004 4-bitowy procesor realizujce funkcje programowalnego
kalkulatora (powszechnie uznaje si za pierwszy na wiecie mikroprocesor), 3200
tranzystorw. INTEL wznawia prac nad procesorami, Faggin z Fairchild pomaga
rozwiza problemy.

Zdjcie 4-bitowego procesora INTEL 4004

8-bitowe procesory INTEL-a

1972 Faggin rozpoczyna prace nad 8-bitowym procesorem INTEL 8008. Rynek
zaczyna si interesowa ukadami programowalnymi - procesorami.
Katedra Mikroelektroniki i Technik Informatycznych DMCS

Systemy wbudowane

Historia mikroprocesorw (3)


1974 INTEL wprowadza na rynek ulepszona wersj 8008, procesor Intel 8080.
Faggin opuszcza firm Intel i zakada firm o nazwie Zilog. Motorola oferuje
8-bitowy procesor 6800 (NMOS, 5 V).
1975 8-bitowy procesor INTEL 6502 (technologia MOS) najtaszy proc. na rynku.
1978 Pierwszy 16-bitowy procesor 8086 (ulepszony 8080).
1979 Motorola oferuje 16-bitowy procesor 68000.
1980 Motorola wprowadza nowy 32-bitowy procesor 68020, 200,000 tranzystorw.
.........

Motorola 68020

Intel, Pentium 4 Northwood

Intel 386, 486, Pentium I, II, III, IV, Centrino, Pentium D, Duo/Quad core, ...
Motorola 68030, 68040, 68060, PowerPC, ColdFire, ARM 7, ARM 9, StrongARM, ...
Katedra Mikroelektroniki i Technik Informatycznych DMCS

16

Systemy wbudowane

Definicje podstawowe (2)


Komputer (ang. Computer)
Urzdzenie elektroniczne, maszyna cyfrowa zdolna do przetwarzania danych cyfrowych
zgodnie z dostarczonym programem

Komputer (system) wbudowany (ang. Embedded Computer)


Dedykowany system komputerowy, niewielkich rozmiarw sterownik wbudowany w
urzdzenie, przeznaczony do sterowania urzdzeniem mechanicznym, elektrycznym lub
elektronicznym

Komputer osobisty (ang. Personal Computer)


System komputery przeznaczony do uytku osobistego, domowego lub biurowego.
Komputer wyposaony w system operacyjny przeznaczony do wykonywania aplikacji
wykorzystywanych przez uytkownika

Architektura komputera (ang. Computer Architecture)


Sposb organizacji oraz wsppracy podstawowych elementw systemu
komputerowego, tj. procesora, pamici oraz urzdze peryferyjnych
Opis komputera z punktu widzenia programisty w jzyku niskiego poziomu
(asembler). Budowa procesora, potoku wykonawczego oraz model programowy
procesora
Katedra Mikroelektroniki i Technik Informatycznych DMCS

17

Systemy wbudowane

Komputer wbudowany (Embedded Computer)

Czujniki, np. czujnik


temperatury, obrotw, itd
Komunikacja z
komputerem zewntrznym
Kamera

Elementy
wykonawcze, np.
silniki, przekaniki
Katedra Mikroelektroniki i Technik Informatycznych DMCS

18

Systemy wbudowane

Komputer uniwersalny

Katedra Mikroelektroniki i Technik Informatycznych DMCS

19

Systemy wbudowane

Schemat blokowy komputera osobistego

Katedra Mikroelektroniki i Technik Informatycznych DMCS

20

Systemy wbudowane

Definicje podstawowe (3)


Pami komputerowa (ang. Computer Memory)
Pami komputerowa to urzdzenie elektroniczne lub mechaniczne suce do
przechowywania danych i programw (systemu operacyjnego oraz aplikacji).

Urzdzenia zewntrzne, peryferyjne (ang. Peripheral Device)


Urzdzenia elektroniczne doczone do procesora przez magistrale systemow
lub interfejs. Urzdzenia zewntrzne wykorzystywane s do realizowania
specjalizowanej funkcjonalnoci systemu.

Magistrala (ang. bus)


Poczenie elektryczne umoliwiajce przesyanie danym pomidzy
procesorem, pamici i urzdzeniami peryferyjnymi. Magistra systemowa
zbudowane jest zwyke z kilkudziesiciu pocze elektrycznych (ang. Parallel
Bus) lub szeregowego poczenia (ang. Serial Bus).

Interface (ang. Interface)


Urzdzenie elektroniczne lub optyczne pozwalajce na komunikacj midzy
dwoma innymi urzdzeniami, ktrych bezporednio nie da si ze sob
poczy.
Katedra Mikroelektroniki i Technik Informatycznych DMCS

21

Systemy wbudowane

Definicje podstawowe (4)


Komputer SoC (ang. System-on-Chip)
Ukad scalony wielkiej integracji zawierajcy kompletny system elektroniczny
zintegrowany z ukadami analogowymi, cyfrowo-analogowymi oraz
radiowymi. Poszczeglne moduy tego systemu, ze wzgldu na ich zoono,
pochodz zwykle od rnych dostawcw, np. rdze procesora od jednego
producenta, ukady peryferyjne od innego, interfejsy od jeszcze innego, itd...
Typowym obszarem zastosowa SoC s systemy wbudowane, a najbardziej
rozpowszechnionym przedstawicielem tego rozwizania s systemy oparte na
procesorach ARM.
W przypadku, gdy nie jest moliwa integracja wszystkich ukadw na jednym
podou pprzewodnikowym, poszczeglne moduy wykonuje si na osobnych
krysztaach, a cao zamyka si w jednej obudowie, SiP (ang. System-in-apackage).
SoC rni si od mikrokontrolerw znacznie wydajniejsz jednostka
obliczeniow CPU (pozwalajcej uruchamia systemy operacyjne, np. Linux,
Windows) oraz s zwyke wyposaone w specjalizowane ukady peryferyjne.

Katedra Mikroelektroniki i Technik Informatycznych DMCS

22

Systemy wbudowane

SoC - DaVinci, digital media processor


DaVinci DM355
SoC opracowany przez firm
Texas Instruments
Dedykowany co-procesor do
przetwarzania dwiku i
obrazu w czasie rzeczywistym
Niski pobr energii 400 mW
podczas dekodowania HD
MPEG4, 1 mW w stanie
czuwania (systemy przenone)
Bogate interfejsy i ukady
peryferyjne (sterownik HDD,
SD/MMC, USB, Ethernet,...)

rd: www.ti.com

Katedra Mikroelektroniki i Technik Informatycznych DMCS

23

Systemy wbudowane

Mikrokontroler AT91SAM9263 (3)


ROM/FLASH
LCD Display

MII/RMII 10/100 Base-T

SRAM
Keypad
LCD
Controller

SDRAM

USB Device Port


MMC/SD Card

Compact Flash

GPIO

ETHERNET
MAC

EBI
Power
Management

Keyboard

USB
Device MCI

Smart Card

AT91SAM9263

USB Host Port

USART

IrDA

USB Host
TWI

SPI

SSC

Serial DataFlash

Audio DAC

Mouse
Printer

EEPROM

Katedra Mikroelektroniki i Technik Informatycznych DMCS

RS232/RS485

Modem

24

Systemy wbudowane

Katedra Mikroelektroniki i Technik Informatycznych DMCS

25

Systemy wbudowane

GNU Tools for ARM processors


GNU ARM toolchain zestaw narzdzi programistycznych ddla
procesorw ARM dostpnych na zasadach licencji GNU GPL (General
Public License).
Dostpne narzdzia (http://www.gnuarm.org/):
GCC-4.3 toolchain (Linux):
Kompilator: gcc-4.3.2
Przydatne narzdzia: binutils-2.19
Biblioteki C/C++: newlib-1.16
Debugger zgodny z GDB: insight-6.8
Narzdzia zainstalowane w katalogu /opt/arm_tools/...
Pliki nagwkowe w katalogu /opt/arm_user/...

Cygwin (Windows):
binutils-2.19, gcc-4.3.2-c-c++, newlib-1.16.0, insight-6.8, setup.exe

Debuger JTAG with USB interface


(more information available in DMCS)
Katedra Mikroelektroniki i Technik Informatycznych DMCS

26

Systemy wbudowane

COFF vs ELF
COFF (Common Object File Format) standard plikw
wykonywalnych, relokowalnych i bibliotek dynamicznych
opracowany na potrzeby systemw operacyjnych bazujcych
na systemie Unix. COFF mia zastpi standard plikw a.out.
Wykorzystywany na rnych systemach, rwnie Windows.
Obecnie standard COFF wypierany jest przez pliki ELF.

ELF (Executable and Linkable Format) standard plikw


wykonywalnych, relokowalnych, bibliotek dynamicznych i
zrzutw pamici wykorzystywany na rnych komputerach i
systemach operacyjnych, np.: rodzina x86, PowerPC,
OpenVMS, BeOS, konsole PlayStation Portable, PlayStation 2,
PlayStation 3, Wii, Nintendo DS, GP2X, AmigaOS 4 oraz
Symbian OS v9.

Przydatne narzdzia:
readelf
elfdump
objdump
rd: wikipedia

Katedra Mikroelektroniki i Technik Informatycznych DMCS

27

Systemy wbudowane

Debuger GDB
arm-elf-gdb <nazwa pliku.elf>
run uruchomienie programu (zaadowanie i uruchomienie), load aduje program
c (continue) kontynuacja wykonywania programu
b (breakpoint) ustawienie puapki, np. b 54, b main, b sleep
n (next) wykonanie funkcji (bez zagbiania si do jej wntrza)
s (step) wykonanie funkcji, zatrzymuje si wewntrz funkcji
d (display) wywietlenie zmiennej/rejestru, disp Counter
p (print) wywietlenie (jednorazowe) zmiennej/rejestru
x wywietlenie obszaru pamici x/10x 0xFFFF.F000
i (info) wywietla informacje o puapkach, rejestrach, etc...
Modyfikatory:
/x wywietla w postaci szesnastkowej
/t - wywietla w postaci binarnej
/d - wywietla w postaci dziesitnej
Katedra Mikroelektroniki i Technik Informatycznych DMCS

28

Systemy wbudowane

Rejestry procesora a GDB

(gdb) info r
r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
sp
lr
pc
fps
cpsr

0x2
0x20000ba4
0x57b
0x270f
0x300069
0x3122dc
0x1000
0x800bc004
0x3122c4
0x407c81a4
0x441029ab
0x313f2c
0x313f30
0x313f18
0x20000a7c
0x20000474
0x0
0x80000053

0x2
0x20000ba4
0x57b
0x270f
0x300069
0x3122dc
0x1000
0x800bc004
0x3122c4
0x407c81a4
0x441029ab
0x313f2c
0x313f30
0x313f18
0x20000a7c
0x20000474 <delay+60>
0x0
0x80000053

Katedra Mikroelektroniki i Technik Informatycznych DMCS

29

Systemy wbudowane

Mikroprocesor
Mikroprocesor to ukad cyfrowy wykonany jako pojedynczy ukad scalony o
wielkim stopniu integracji zdolny do wykonywania operacji cyfrowych
wedug dostarczonych mu instrukcji.
Jednostka
arytmetyczno-logiczna
(ang. Arithmetic Logic Unit),
realizuje podstawowe
operacje matematyczne
8, 16, 32, 64-bit

Rejestry procesora obszar (plik) rejestrw


(ang. registers file)
- komrki szybkiej pamici
statycznej, umieszczonej,
wewntrz procesora,
8, 16, 32, 64, 128-bit,

Mikroprocesor

ALU

Jednostka
sterujca

Przerwania
Dekoder rozkazw

Rejestry (PC, SP, D, A)

RAM

ROM

Katedra Mikroelektroniki i Technik Informatycznych DMCS

Magistrale:
adresowa,
danych,
sterujca.

30

Systemy wbudowane

Architektura procesora (2)

Katedra Mikroelektroniki i Technik Informatycznych DMCS

31

Systemy wbudowane

Architektura procesora CISC


Cechy architektury CISC (Complex Instruction Set Computers):
Dua liczba rozkazw (instrukcji),
Niektre rozkazy potrzebuj duej liczby cykli procesora do
wykonania,
Wystpowanie zoonych, specjalistycznych rozkazw,
Dua liczba trybw adresowania,
Do pamici moe si odwoywa bezporednio dua liczba rozkazw,

Mniejsza od ukadw RISC czstotliwo taktowania procesora,


Powolne dziaanie dekodera rozkazw, ze wzgldu na du ich liczb i
skomplikowane adresowanie
Przykady rodzin procesorw o architekturze CISC to:
x86
M68000
PDP-11
AMD

Katedra Mikroelektroniki i Technik Informatycznych DMCS

32

Systemy wbudowane

Architektura procesora RISC


Cechy architektury RISC (Reduced Instruction Set Computer):
Zredukowana liczba rozkazw. Upraszcza to znacznie dekoder rozkazw.
Redukcja trybw adresowania, dziki czemu kody rozkazw s prostsze,
Ograniczenie komunikacji pomidzy pamici, a procesorem. Do przesyania danych
pomidzy pamici, a rejestrami su dedykowane instrukcje (load, store) .
Zwikszenie liczby rejestrw (np. 32, 192, 256),
Dziki przetwarzaniu potokowemu (ang. pipelining) wszystkie rozkazy wykonuj si w
jednym cyklu maszynowym.

Przykady rodzin mikroprocesorw o architekturze RISC:


IBM 801
PowerPC
MIPS
Alpha
ARM
Motorola 88000
ColdFire
SPARC
PA-RISC
Atmel_AVR
Obecnie produkowane procesory Intela z punktu widzenia programisty s widziane jako CISC, ale ich rdze
jest zgodny z RISC. Rozkazy CISC s rozbijane na mikrorozkazy (ang. microops), ktre s nastpnie
wykonywane przez szybki blok wykonawczy zgodny z architektur RISC.

Katedra Mikroelektroniki i Technik Informatycznych DMCS

33

Systemy wbudowane

Architektura systemu komputerowego


Architektura polega na cisym podziale komputera na trzy podstawowe czci:
procesor,
pami (zawierajca dane oraz program),
urzdzenia wejcia/wyjcia (I/O).
PAMI PODSTAWOWA

URZDZENIA ZEWNTRZ.

PROCESOR

Katedra Mikroelektroniki i Technik Informatycznych DMCS

34

Systemy wbudowane

Magistrale komputera

Magistrala adresowa

Magistrala danych
Magistrala sterujca

1. Rodzaj magistrali
2. Szeroko magistrali
3. Czstotliwo zegara szybko transmisji

Katedra Mikroelektroniki i Technik Informatycznych DMCS

35

Systemy wbudowane

Przykadowy komputer 8-bitowy

Katedra Mikroelektroniki i Technik Informatycznych DMCS

36

Systemy wbudowane

Architektura von Neumanna


Cechy architektury von Neumanna:
rozkazy i dane przechowywane s w tej samej pamici,
nie da si rozrni danych o rozkazw (instrukcji),
dane nie maja przypisanego znaczenia,
pami traktowana jest jako liniowa tablica komrek, ktre identyfikowane
s przy pomocy dostarczanego przez procesor adresu,
procesor ma dostp do przestrzeni adresowej, dekodery adresowe
zapewniaj mapowanie pamici na rzeczywiste ukady.
Magistrala adresowa

Magistrala danych

Katedra Mikroelektroniki i Technik Informatycznych DMCS

37

Systemy wbudowane

Architektura Harwardzka
Prostsza (w stosunku do architektury Von Neumanna) budowa przekada si na
wiksz szybko dziaania - dlatego ten typ architektury jest czsto wykorzystywany
w procesorach sygnaowych oraz przy dostpie procesora do pamici cache.
Cechy architektury Harwardzkiej:
rozkazy i dane przechowywane s w oddzielnych pamiciach,
organizacja pamici moe by rna (inne dugoci sowa danych i
rozkazw),
moliwo pracy rwnolegej jednoczesny odczyt danych z pamici
programu oraz danych,
stosowana w mikrokontrolerach jednoukadowych.
Magistrala
adresowa
Magistrala
danych

Magistrala
adresowa
Magistrala
danych

Pami programu

Pami danych
Katedra Mikroelektroniki i Technik Informatycznych DMCS

38

Systemy wbudowane

Kolejno bajtw w pamici (1)

Bajt najmniejsza adresowalna jednostka pamici komputerowej

Endianess
Big-endian

middle-endian

...pod najmodszym
adresem umieszczony
jest najstarszy bajt
podobnie jak w jzyku
polskim, angielskim

Motorola, SPARC, ARM

Little-endian
...pod najstarszym
adresem umieszczony
jest najstarszy bajt

liczby zmiennoprzecinkowe podobnie jak w jzykach


arabskich, hebrajski
podwjnej precyzji

VAX and ARM

Intel x86, 6502 VAX

Bi-Endian
ARM, PowerPC (za wyjtkiem PPC970/G5), DEC Alpha, MIPS, PA-RISC oraz IA64
Katedra Mikroelektroniki i Technik Informatycznych DMCS

39

Systemy wbudowane

Kolejno bajtw w pamici (2)

Architektura 8-bitowa
7
0x0000.0000

0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5

0x0000.0001
0x0000.0002
0x0000.0003
0x0000.0004
7

Podwjne
sowo (DW):
0x1234.5678

0x0000.0000
0x0000.0001
0x0000.0002
0x0000.0003
0x0000.0004

0
0x12
0x34
0x56
0x78
0x90

Katedra Mikroelektroniki i Technik Informatycznych DMCS

40

Systemy wbudowane

Kolejno bajtw w pamici (3)


Byte 4 ... Byte 1
MSB
LSB

Big-endian
0x0000.0000
0x0000.0004
0x0000.0008
0x0000.000C
0x0000.0010

Byte 4
Byte 8
Byte 12

Byte 3
Byte 7
...

Byte 2
Byte 6
...

Byte 1
Byte 5
...

Byte 3
Byte 7
...

Byte 4
Byte 8
...

Little-endian
0x0000.0000
0x0000.0004
0x0000.0008
0x0000.000C
0x0000.0010

Byte 1
Byte 5
Byte 9

Byte 2
Byte 6
...

Katedra Mikroelektroniki i Technik Informatycznych DMCS

41

Systemy wbudowane

Kolejno bajtw w pamici (4)


Podwjne sowo (DW): 0x1234.5678

Big-endian
0
31
24 23
16 15
8 7
0x12
0x34
0x56
0x78
0x0000.0000
0x0000.0004 Byte 5
Byte 6
Byte 7
Byte 8
...
...
...
0x0000.0008 Byte 9
0x0000.000C
0x0000.0010

Little-endian

0
8 7
31
24 23
16 15
0x0000.0000 0x78
0x56
0x34
0x12
0x0000.0004 Byte 8
Byte 7
Byte 6
Byte 5
...
...
...
0x0000.0008 Byte 12
0x0000.000C
0x0000.0010
Katedra Mikroelektroniki i Technik Informatycznych DMCS

42

Systemy wbudowane

Kolejno bajtw w pamici (5)

Jak rozpozna architektur procesora


oraz rozkad bajtw w pamici?
#define LITTLE_ENDIAN 0
#define BIG_ENDIAN
1
int machineEndianness()
{
long int i = 1;
const char *p = (const char *) &i;

/* 32 bit = 0x0000.0001 */
/* wskanik do ......? */

if (p[0] == 1) /* Lowest address contains the least significant byte */


return LITTLE_ENDIAN;
else
return BIG_ENDIAN;
}

Katedra Mikroelektroniki i Technik Informatycznych DMCS

43

Systemy wbudowane

Systemy liczbowe
System dziesitny

10

14

29

System szesnastkowy

0x05

System binarny

0101b

05

System semkowy

Katedra Mikroelektroniki i Technik Informatycznych DMCS

44

Systemy wbudowane

Operowanie bitami rejestrw (1)


volatile unsigned char* PORTA=0x4010.000A;
*PORTA

= 0x1;

*PORTA

= 7;

*PORTA

= 010;

*PORTA

= *PORTA | 0x2;

*PORTA |= 0x1 | 0x2 | 0x8 ;


*PORTA &= ~(0x2 | 0x4);
*PORTA ^=

(0x1 | 0x2);

*PORTA ^=

0x3;

If (*PORTA & (0x1 | 0x4)) == 0 {...}


while (*PORTA != 0x6) {...}
do {...} while (*PORTA & 0x4)

Katedra Mikroelektroniki i Technik Informatycznych DMCS

45

Systemy wbudowane

Operowanie bitami rejestrw (2)


#define PB0 0x1
#define PB1 0x2
#define PB2 1<<2
#define PB3 1<<3
volatile unsigned char* PORTA=0x4010.000A;
*PORTA |= PB1 | PB2;
*PORTA &= ~(PB1 | PB2);
*PORTA ^= (PB1 | PB2);
If (*PORTA & (PB1 | PB2)) == 0
enum {PB0=1<<0, PB1=1<<2, PB2=1<<3, PB3=1<<3};

Katedra Mikroelektroniki i Technik Informatycznych DMCS

46

Systemy wbudowane

Operowanie bitami rejestrw (3)


volatile unsigned char* PORTA=0x4010.000A;
/* makro generujce mask bitow */
#define BIT(x)

(1 << (x))

*PORTA |= BIT(0);
*PORTA &=~BIT(1);
*PORTA ^= BIT(2);
/* makra ustawiajce lub zerujce bity */
#define SETBIT(P, B)

(P) |= BIT(B)

#define CLRBIT(P, B)

(P) &= ~BIT(B)

SETBIT(*PORTA, 7);
CLRBIT(*PORTA, 2);

Katedra Mikroelektroniki i Technik Informatycznych DMCS

47

Systemy wbudowane

Operacje czenia rejestrw


int main(void) {
unsigned char reg1=0x15, reg2=0x55;
unsigned char = reg3, reg4;
unsigned int tmp;
/* operacja czenia rejestrw */
tmp = reg1;
tmp = tmp<<8 | reg2;
/* operacja rozczenia rejestrw */
reg3 = tmp>>8;
/* uwaga na liczby ze znakiem */
reg4 = tmp & 0xFF;
}

Katedra Mikroelektroniki i Technik Informatycznych DMCS

48