Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka Architektura komputerów dr inż. Bartosz Pękosławski Łódź, dn. 17.01.2014, 24.01.2014
Plan wykładu 1. Rodzaje mikrokontrolerów 2. Rodzina 8-bitowych mikrokontrolerów AVR 3. Mikrokontroler ATmega32 jako przykład architektury RISC 4. Assembler AVR 5. Tryby adresowania 6. Stos 7. Przerwania 8. Wewnętrzne układy peryferyjne 2
Mikrokontroler Mikrokontroler - układ scalony mikroprocesora z wbudowanymi dodatkowymi układami peryferyjnymi (autonomiczny system mikroprocesorowy) Inna nazwa: mikrokomputer jednoukładowy Zastosowanie mikrokontrolerów: sterowanie urządzeniami Mikroprocesor scalony, sekwencyjny układ cyfrowy działający zgodnie z pobieranymi z pamięci i interpretowanymi rozkazami (programem) 3
Rys historyczny Pierwsze mikroprocesory: F14 CADC (F-14A Central Air Data Computer, 1970), Intel 4004 (1971), Intel 8008 (1972), National Semiconductor IPC-16A/520 PACE (1975), Motorola MC68000 (1979). Pierwsze mikrokontrolery: Texas Instruments TMS1000 (1971), Intel 4048 (1975). 4
Struktura mikrokontrolera Główne elementy: jednostka arytmetyczno-logiczna (ALU), układ sterowania (CU/dekoder rozkazów), rejestry (danych, adresowe, akumulator, PC, IR, SP), pamięć danych (RAM), pamięć programu, porty wejścia-wyjścia (I/O), wewnętrzne układy peryferyjne. 5
Układy peryferyjne układy czasowo-licznikowe (timery), kontrolery transmisji szeregowej (UART, SPI, I2C, USB, itd.), przetworniki A/C i C/A, zegar czasu rzeczywistego (RTC), układ kontroli poprawnej pracy (watchdog), czujniki wielkości nieelektrycznych (np. czujniki temperatury), układy PWM, komparatory analogowe, transceivery radiowe, dekodery MP3, sterowniki wyświetlaczy LCD, itd. 6
Inne elementy systemu mikroprocesorowego pamięci zewnętrzne, przełączniki / klawiatury, diody LED / wyświetlacze, sygnalizatory (przetworniki piezoelektryczne), czujniki zewnętrzne, elementy wykonawcze (silniki, przekaźniki, zawory itp.), zewnętrzne układy peryferyjne, układy taktujące. 7
Układy taktujące rezonator kwarcowy lub ceramiczny, wewnętrzny układ taktujący (oscylator RC, PLL), zewnętrzne źródła sygnału zegarowego. 8
Programowanie fabryczne (pamięć stała ROM), w programatorze (pamięć EPROM, EEPROM, Flash), w systemie (ISP), programowanie zewnętrznej pamięci. 9
Języki programowania kod maszynowy zera i jedynki, np. 001000 opcode 10100 operand 1 10101 operand 2 asembler język niskiego poziomu, rozkazy zapisane w postaci symboli (mnemoników), np. ADD R20, R21 języki wysokiego poziomu (głównie C), np. c = a + b; 10
Rodzaje mikroprocesorów i mikrokontrolerów Długość słowa (rozmiar szyny danych i rejestrów): 4 bitowe, 8 bitowe, 16 bitowe, 32 bitowe, 64 bitowe. Rodzaj architektury: von Neumanna, harwardzka, zmodyfikowana harwardzka. Złożoność listy rozkazów (zestawu instrukcji): CISC (ang. Complex Instruction Set Computer), RISC (ang. Reduced Instruction Set Computer), MISC (ang. Medium Instruction Set Computer). 11
Rodziny mikrokontrolerów Wielu producentów / wiele rodzin, m.in.: Atmel: AVR (8 bitowe), AVR32 (32 bitowe). Freescale (Motorola): 68HC11 (8 bitowe), S08 (8 bitowe), ColdFire (32 bitowe). Intel (i wielu innych producentów): MCS-51 (8 bitowe). Hitachi: H8 (8 bitowe / 16 bitowe), SuperH (32 bitowe). Microchip: PIC (8 bitowe / 16 bitowe / 32 bitowe) NEC: V850 (32 bitowe). ST Microelectronics: ST (8 bitowe / 16 bitowe). Texas Instruments: MSP430 (16 bitowe), C2000 (32 bitowe), Stellaris (32 bitowe). Toshiba: TLCS (8 bitowe / 16 bitowe). Zilog: ez80 (8 bitowe), ez8 (16 bitowe). ARM (różni producenci): ARM7 (32 bitowe), Cortex-M3 (32 bitowe). 12
Architektury mikroprocesorów i mikrokontrolerów Architektura Harvard: Pamięć programu Architektura von Neumanna: ALU I/O CU Pamięć danych Pamięć programu i danych (wspólna) ALU I/O CU Zmodyfikowana architektura harwardzka osobna pamięć programu i danych, ale wspólna przestrzeń adresowa Cechy/zalety architektury RISC: mniejsza liczba rozkazów (prostszy dekoder rozkazów), brak mikrokodu i prostsze instrukcje (instrukcje wykonywane w mniejszej liczbie cykli maszynowych - wydajność), mniej trybów adresowania (prostszy w pisaniu kod), mniej odwołań do pamięci dzięki dużej liczbie rejestrów roboczych (wydajność). 13
Architektura big endian / little endian Kolejność zapisu i przesyłania bajtów: od najstarszego do najmłodszego (big endian), od najmłodszego do najstarszego (little endian). Pamięć: Rejestr: 0A 0B 0C 0D 0D 0C rosnące adresy 0A 0B 0B 0C 0A 0D Big-endian Little-endian 14
Rodzina AVR 8-bit Architektura harwardzka, RISC 8-bitowe rejestry i szyna danych 16-bitowa szyna adresowa 32 rejestry R0 R31 timery 8- i 16-bitowe 1 cykl zegara/cykl maszynowy 10-bitowy przetwornik A/C ISP 15
Rodzina AVR 8-bit Rodzaje: ATtiny 0,5 8 kb pamięci programu obudowy 6- do 32- pinowe ograniczone zasoby niski pobór mocy ATmega 4 256 kb pamięci programu obudowy 28- do 100- pinowe rozbudowany zestaw instrukcji rozbudowane zasoby 16
ATmega 32 Pamięć Flash, SRAM, EEPROM USART, SPI Przetwornik A/C Timery PWM Komparator analogowy JTAG Vcc = 4,5 5,5 V (ATmega32L : 2,7 5,5 V) f = 0 16 MHz (ATmega32L : 0 8 MHz) 17
ATmega 32 - wyprowadzenia port B port D port A port C 18
Mapa pamięci Flash 16384 * 2B = 32kB ATmega 32 0x3FFF RAM 2144B 0x085F EEPROM 1024B = 1kB 0x03FF 0x0000 0x0000 0x0000 19
Rejestry 32 rejestry robocze: R0 R31 64 rejestry specjalne 20
Rejestry specjalne Rejestr statusowy SREG: I Global Interrupt Enable; T Bit Copy Storage; H Half Carry Flag; S Sign Bit V Two s Complement Overflow Flag; N Negative Flag; Z Zero Flag; C Carry Flag Wskaźnik stosu SP: 21
Rejestry robocze wskaźnikowe 3 rejestry wskaźnikowe: 22
Asembler - rodzaje instrukcji instrukcje przesyłu danych, instrukcje arytmetyczne, instrukcje operacji bitowych, instrukcje porównań, instrukcje skoków bezwarunkowych, instrukcje skoków i powrotów z podprogramów, instrukcje skoków warunkowych, instrukcje dodatkowe. 23
Asembler instrukcje arytmetyczne r1, r2 = R0..R31 rh = R16..R31 rd =R24,R26,R28,R30 k63 = 0..63 c255 = 0..255 Również mnożenie (wynik R1:R0): MUL r1, r2 MULS r1, r2 MULSU r1, r2 FMUL r1, r2 FMULS r1, r2 FMULSU r1, r2 24
Asembler instrukcje arytmetyczne: wybrane przykłady (dodawanie) Instrukcja Początkowa zawartość rejestrów Wynik SREG ADD R21, R22 R21=0xFF R22=0x22 R21=0x21 C=1 INC R21 R21=0xFF R21=0x00 Z=1 (C bez zmian) ADC R21, R22 R21=0x11 R22=0x22 C(SREG) = 1 R21=0x34 C=0 ADIW R24, 2 R24=0xFF R25=0x00 R24=0x01 R25=0x01 25
Asembler instrukcje arytmetyczne: wybrane przykłady (odejmowanie) Instrukcja Początkowa zawartość rejestrów Wynik SREG SUB R21, R22 R21=0x01 R22=0x02 R21=0xFF C=1 N=1 DEC R21 R21=0x01 R21=0x00 Z=1 SUBI R21, 2 R21=0x02 R21=0x00 Z=1 (C bez zmian) SBC R21, R22 R21=0x03 R22=0x03 C(SREG)=1 R21=0xFF C=1 N=1 SBCI R21, 3 R21=0x04 C(SREG)=1 R21=0x00 C=0 Z=1 SBIW R24, 4 R24=0x03 R25=0x01 R24=0xFF R25=0x00 26
Asembler instrukcje arytmetyczne: wybrane przykłady (mnożenie) Instrukcja Początkowa zawartość rejestrów Wynik MUL R21, R22 R21=0xFF (255) R0=0x02 R22=0xFE (254) R1=0xFD (64770) MULS R21, R22 R21=0xFF (-1) R22=0xFE (-2) MULSU R21, R22 R21=0xFF (-1) R0=0x02 R22=0xFE (254) R1=0xFF (-254) SREG R0=0x02 R1=0x00 (2) C=1 27
Asembler instrukcje operacji bitowych 28
Asembler instrukcje operacji bitowych: wybrane przykłady (przesuwanie) Instrukcja Początkowa zawartość rejestrów Wynik SREG LSL R21 R21=0x81 R21=0x02 C=1 LSR R21 R21=0x81 R21=0x40 C=1 ROL R21 R21=0x81 C(SREG)=1 R21=0x03 C=1 ROR R21 R21=0x81 C(SREG)=1 R21=0xC0 C=1 ASR R21 R21=0x81 R21=0xC0 C=1 SWAP R21 R21=0x23 R21=0x32-29
Asembler instrukcje operacji bitowych: wybrane przykłady (bitowe) Instrukcja Początkowa zawartość rejestrów Wynik AND R21, R22 R21=0x21 R22=0x20 R21=0x20 ANDI R21, 0x02 R21=0x21 R21=0x00 OR R21, R21 R21=0x21 R22=0x20 R21=0x21 ORI R21, 0xFF R21=0x21 R21=0xFF EOR R21, R22 R21=0x21 R22=0x20 R21=0x01 COM R21 R21=0x01 R21=0xFE NEG R21 R21=0x01 R21=0xFF SREG Z=1 30
Asembler instrukcje porównań 31
Asembler instrukcje porównań: wybrane przykłady Instrukcja Początkowa zawartość rejestrów Wynik SREG CP R21, R22 R21=0x03 R22=0x02 CP R21, R22 R21=0x03 R22=0x03 Z=1 CP R21, R22 R21=0x03 R22=0x04 C=1 N=1 CPC R21, R22 R21=0x03 R22=0x03 C(SREG)=1 C=1 N=1 CPI R21, 3 R21=0x04 TST R21 R21=0x00 Z=1 32
Asembler skoków warunkowych 33
Asembler instrukcje skoków warunkowych: wybrane przykłady Instrukcja SREG Skok BREQ etykieta Z=1 tak BRNE etykieta Z=0 tak BRCS etykieta C=1 tak BRCC etykieta C=0 tak BRSH etykieta C=0 lub Z=1 tak BRLO etykieta C=1 i Z=0 tak BRMI etykieta N=1 tak BRPL etykieta N=0 tak BRGE etykieta N=0 i V=0 lub N=1 i V=1 tak BRLT etykieta N=1 i V=0 lub N=0 i V=1 tak 34
Tryby adresowania Adresowanie natychmiastowe, Adresowanie bezpośrednie, Adresowanie bezpośrednie rejestrowe, Adresowanie pośrednie rejestrowe, Adresowanie pośrednie rejestrowe z przesunięciem, Adresowanie pośrednie rejestrowe z predekrementacją, Adresowanie pośrednie rejestrowe z postinkrementacją, Adresowanie pamięci programu, Adresowanie pośrednie pamięci programu, Adresowanie względne pamięci programu. 35
Adresowanie natychmiastowe Drugi operand wartość natychmiastowa w argumencie LDI r1, n SUBI r1, n ANDI r1, n ORI r1, n CPI r1, n ADIW rd, n - zapis wartości n do rejestru r1 (R16 R31) (rd = R24, R26, R28, R30) 36
Adresowanie bezpośrednie Argument (liczba) jest adresem efektywnym operandu w pamięci danych STS addr, r1 - zapisanie wartości rejestru r1 pod adres addr LDS r1, addr 37
Adresowanie bezpośrednie rejestrowe Argumenty są nazwami rejestrów, w których są operandy INC r1 DEC r1 CLR r1 SER r1 ADD r1, r2 SUB r1, r2 AND r1, r2 OR r1, r2 EOR r1, r2 CP r1, r2 MOV r1, r2... 38
Adresowanie pośrednie rejestrowe Adres efektywny operandu znajduje się w rejestrze wskaźnikowym LD LD LD ST ST ST r1, X r1, Y r1, Z X, r1 Y, r1 Z, r1 39
Adresowanie pośrednie rejestrowe z przesunięciem Adres efektywny operandu = adres z rejestru wskaźnikowego + przesunięcie LD LD ST ST r1, Y+dis r1, Z+dis Y+dis, r1 Z+dis, r1 40
Adresowanie pośrednie rejestrowe z predekrementacją Adres efektywny operandu z rejestru wskaźnikowego jest zmniejszany o 1 przed wykonaniem operacji LD LD LD ST ST ST r1, r1, r1, -X, -Y, -Z, -X -Y -Z r1 r1 r1 41
Adresowanie pośrednie rejestrowe z postinkrementacją Adres efektywny operandu z rejestru wskaźnikowego jest zwiększany o 1 po wykonaniu operacji LD LD LD ST ST ST r1, r1, r1, X+, Y+, Z+, X+ Y+ Z+ r1 r1 r1 42
Adresowanie pamięci programu LPM - kopiuje do rejestru R0 starszy lub młodszy bajt z pamięci programu spod adresu wskazywanego przez Z 43
Adresowanie pośrednie pamięci programu IJMP - załadowanie do PC wartości z rejestru Z ; bez powrotu ICALL jak wyżej; z możliwością powrotu (RET) 44
Adresowanie względne pamięci programu - załadowanie do PC adresu będącego sumą adresu bieżącego oraz różnicy adresu bieżącego i adresu etykiety; bez powrotu RCALL label - z możliwością powrotu (RET) RJMP label 45
Asembler struktura programu.include m32def.inc.def moj_rejestr=r18.equ stala=10....cseg.org 100 LDI moj_rejestr,0x23... dyrektywy inicjalizacja ;komentarz loop:... RJMP loop pętla główna 46
Asembler makra i podprogramy.macro delay1 NOP NOP NOP NOP.endmacro delay2: NOP NOP NOP RET... delay1...... RCALL delay2... 47
Asembler instrukcje warunkowe IF r1 = 0 THEN i1 ELSE i2 TST r1 BRNE else i1 RJMP exit else: i2 exit: CASE r1 OF 0, 1, 2,... TST r1 BREQ case0 DEC r1 BREQ case1 DEC r1 BREQ case2... RJMP exit case0: i1 RJMP exit case1: i2 RJMP exit case2: i3 RJMP exit... exit: 48
Asembler pętle WHILE r1 <> 0 DO... next: TST r1 BREQ exit... RJMP next exit: FOR r1 = 0 TO N CLR r1 next:... INC r1 CPI r1, N BRNE next exit: DO... WHILE r1 <> 0 next:... TST r1 BRNE next exit: FOR r1 = N DOWNTO 0 LDI r1, N next:... DEC r1 BRNE next exit: 49
Obsługa portów I/O {x} = A, B, C, D (port) Rejestry: DDRx PINx PORTx - kierunek wejście (bit=0) / wyjście (bit=1) - stan wejść (tylko odczyt) - stan wyjść Instrukcje: IN r1, PINx OUT PORTx, r1 SBI PORTx, n CBI PORTx, n - odczyt stanu wejść do r1 - ustawienie stanu wyjść zgodnie z r1 - stan wysoki na wyjściu n - stan niski na wyjściu n 50
Pierwszy program.include "m32def.inc".cseg.org 100 CLR OUT SER OUT R16 DDRB, R16 R16 DDRC, R16 loop: IN R17, PINB OUT PORTC, R17 RJMP loop wejścia Port B wyjścia Port C 51
Stos Stos obszar pamięci danych, do którego dane są odkładane na wierzch i pobierane z wierzchołka Struktura LIFO (Last-In-First-Out) 52
Stos 1. Stos rosnący, wskaźnik stosu wskazuje na pierwszy wolny adres 2. Stos rosnący, wskaźnik stosu wskazuje na ostatni zajęty adres 3. Stos malejący, wskaźnik stosu wskazuje na pierwszy wolny adres (AVR) 4. Stos malejący, wskaźnik stosu wskazuje na ostatni zajęty adres Wskaźnik stosu rejestry 8-bitowe SPH i SPL 53
Stos - instrukcje PUSH r1 POP r1 - odłożenie wartości rejestru r1 na stos - zdjęcie ze stosu wartości i zapisanie w rejestrze r1 Automatyczna aktualizacja wskaźnika stosu Liczba użytych instrukcji PUSH i POP jednakowa (inaczej - przepełnienie stosu) Odwrócona kolejność odkładanych i zdejmowanych wartości Przed użyciem należy ustawić jednorazowo wskaźnik stosu na adres powyżej $5F 54
Podprogram przekazywanie parametrów (rejestry)... LDI R16, 0x23 LDI R17, 0x45 RCALL podprogram... zapisanie wartości parametrów do rejestrów podprogram: MUL R16, R16 MUL R17, R17 ADD R16, R17 RET 55
Podprogram przekazywanie parametrów (stos)... LDI R16, 0x23 LDI R17, 0x45 PUSH R16 PUSH R17 RCALL podprogram POP R17 POP R16... podprogram: IN ZH, SPH IN ZL, SPL ADIW Z, 2 LD R17, Z+ LD R16, Z... RET zapisanie wartości parametrów na stos SP Adres powrotu Parametr 2 Z+2 Parametr 1 (Z+2)+1 Trudniejszy sposób, ale możliwość przekazania dużej liczny parametrów i rekurencyjnego wywoływania podprogramów 56
Podprogram kopia wartości rejestrów roboczych... LDI R20, 0x0A next: RCALL podprogram DEC R20 BRNE next... podprogram: PUSH R20 PUSH R21 LDI R20, 0x0B... POP R21 POP R20 RET pętla indeksowana R20 Rejestr R20 zachowuje oryginalną wartość 57
Przerwania Przerwanie (interrupt, IRQ) sygnał powodujący wstrzymanie wykonania aktualnego programu i wykonanie procedury obsługi przerwania (interrupt handler) Źródła przerwań (ATmega): przerwania zewnętrzne (zmiana stanu wejść), timery, interfejsy UART, SPI, 2-wire, przetwornik A/C, komparator analogowy, pamięć EEPROM Brak konieczności odpytywania urządzenia (odczytywania rejestru w pętli) program główny może realizować inne zadania 58
ATmega 32 przerwania zewnętrzne 59
Wektory przerwań Priorytet 60
Przerwania procedury obsługi.include m32def.inc....cseg.org $0000 RJMP start.org $... RJMP procedura... start: LDI R16, HIGH(RAMEND) OUT SPH, R16 LDI R16, LOW(RAMEND) OUT SPL, R16 SEI... procedura:... RETI wektor przerwania powrót i ustawienie I = 1 61
Przerwania przykład.include m32def.inc.cseg.org $0000 RJMP start.org INT1addr RJMP int_1 start: LDI R16, HIGH(RAMEND) OUT SPH, R16 LDI R16, LOW(RAMEND) OUT SPL, R16 LDI R16, 1 << INT1 OUT GICR, R16 SEI... int_1: INC R20 RETI włączenie przerwania INT1 62
ATmega32 wewnętrzne układy peryferyjne Timery/liczniki, Układ watchdog, Przetwornik A/C, Komparator analogowy, Kontroler komunikacji (USART, SPI, Two-Wire, JTAG). 63
Timer/licznik 0 8-bitowy, porównanie z jedną wartością zadaną, kasowanie przy wartości zadanej, modulator PWM, licznik zdarzeń zewnętrznych, 10-bitowy preskaler (dzielnik częstotliwości), 2 przerwania (przepełnienie, porównanie) TOV0, OC0 64
Timery 1 i 2 Timer 1: 16-bitowy, 2 niezależne wartości zadane, możliwość rejestrowania czasu zajścia zmian na wejściu ICP1 lub na wyjściu komparatora analogowego, 4 źródła przerwań, zmienny okres przebiegu PWM Timer 2: 8-bitowy, 1 wartość zadana, 2 źródła przerwań, możliwość taktowania zewnętrznym kwarcem 32 khz (praca asynchroniczna) 65
Watchdog Watchdog sprzętowy układ licznikowy chroniący system mikroprocesorowy przed zbyt długim przebywaniem w stanie zawieszenia poprzez zresetowanie mikroprocesora w przypadku nieotrzymania w określonym czasie sygnału generowanego przez program (reset watchdoga). 1 MHz 66
Przetwornik A/C Rozdzielczość 10 bitów (maksymalnie) Przetwornik z sukcesywną aproksymacją (SAR) Tryby konwersji pojedynczej lub ciągłej (cyklicznej lub wyzwalanej zewnętrznie) 8 kanałów (16 kanałów różnicowych) Częstotliwość próbkowania: maks. 15 ksps (tysięcy próbek/s) dla rozdzielczości 10 bit 67
Komparator analogowy Wejście + 1,23V Przerwanie Wejście - Wyjście 68
Kontroler USART Universal Synchronous and Asynchronous Receiver and Transmitter Połączenie z innym mikrokontrolerem lub komputerem PC (RS232) Możliwość wykorzystania dla RS232, RS422, RS485, IrDA, Bluetooth, itd. Komunikacja szeregowa, synchroniczna lub asynchroniczna Full-duplex lub half-duplex Kontrola poprawności transmisji (parzystość) Prędkość transmisji maks. 2,5 Mbps dla ATmega32 Linie: RXD TXD XCK (transmisja synchroniczna) dodatkowe np. CTS, RTS, dla RS232 (opcjonalnie) 69
Interfejs USART ramka Transmisja asynchroniczna 1 bit startu St 5-9 bitów danych 1 bit parzystości/nieparzystości [P] (opcjonalny) 1 lub 2 bity stopu Sp1 [Sp2] Jednakowe ustawienia prędkości transmisji i liczby bitów dla nadajnika i odbiornika 70
Kontroler interfejsu SPI Serial Peripheral Interface (Motorola) Połączenie mikrokontrolera z zewnętrznym zegarem RTC, przetwornikiem A/C lub C/A, czujnikiem, innym mikrokontrolerem, itd. Komunikacja szeregowa, synchroniczna Full-duplex, do 10 Mbit/s (maks. 8 Mbit/s dla ATmega 32) Magistrala master-slave Linie: MOSI (Master Output Slave Input) MISO (Master Intput Slave Output) SS (Slave Select) SCK (Serial Clock) 71
Interfejs SPI - magistrala Rejestry przesuwne + generator sygnału zegarowego Wejście SS tylko po stronie slave (sterowane po stronie master dowolnym wyjściem) 72
Kontroler interfejsu Two-Wire (TWI) Odpowiednik I2C (Inter-Integrated Circuit, Philips, lata 80-te) Podobnie jak SPI komunikacja z peryferiami Komunikacja szeregowa synchroniczna, half-duplex Brak złożonej logiki przy wielu slave (adresowanie, mniejsza liczba linii) Do 128 urządzeń Mniejsza prędkość transmisji maksymalnie 400 kbit/s Linie: SDA (Serial Data) SCL (Serial Clock) 73
Interfejs Two-Wire (TWI) - ramka MSB LSB MSB LSB Bit kontrolny R/W kierunek transmisji (odczyt/zapis) Bit potwierdzenia stan niski na SDA wymuszany przez slave Adres (7 bitów + 1 bit kontrolny R/W + 1 bit potwierdzenia) Pakiet danych (8 bitów + 1 bit potwierdzenia) Adres zerowy - adres rozgłoszeniowy (general call) Możliwa transmisja kilku bajtów danych po transmisji adresu i przed sygnalizacją końca transmisji 74
Interfejs JTAG Joint Test Action Group Protokół zgodny z IEEE 1149.1 Dostęp do zasobów wewnętrznych (rejestry, RAM, EEPROM, pamięć programu, jednostka sterująca wykonaniem programu) i portów I/O Używany do: testowania połączeń na płytce drukowanej (boundary scan), programowania pamięci flash, EEPROM i bitów konfiguracyjnych (fuse/lock bits) w systemie (ISP), uruchamiania i debugowania programów. 75
Interfejs JTAG Gniazdo (header) dla JTAGa (widok z góry) 76
Dziękuję za uwagę.