Procesory osadzone ETD 7211 Wprowadzenie W1 8.10.2018
Informacje Prowadzący: mgr inż. Maciej Rudek Konsultacje: Strona kursu: Poniedziałek: 11 00-13 00 Środa: 11 00-13 00 http://www.w12.pwr.wroc.pl/mikro/ Kontakt: email: maciej.rudek@pwr.edu.pl lab. 015a/C2, 104b/C2 tel. 71 320 3651 2
Informacje Wykład: 1 X, 8 X, 15 X, 22 X, 5 XI, 12 XI, 19 XI, 26 XI, 3 XII 3 Zaliczenie: 10 XII termin I, 17 XII termin II,
Informacje laboratorium: Poniedziałek: B. Świadkowski + M. Rudek Czwarek: M. Rudek 4
Konsultacje Konsultacje 18 15 Konsultacje 5 Poniedziałek: 11 00-13 00 Środa: 11 00-13 00 104b, 015a w C-2
Zaliczenie Wykład: cykl 10 wykładów kolokwium zaliczeniowe -> test wyboru około 90 pytań (50 -?) termin ostatni wykład Pytania podciągające 6 Laboratorium: 15 godzin, zajęcia w TP, TN praca na zajęciach Kartkówki i sprawozdania projekt indywidualny wybór tematu założenia projektowe kod programu uruchomienie szczegółowa dokumentacja projektu
Materiały 7 http://www.w12.pwr.wroc.pl/mikro/po.html
Wymagania wstępne cel Zakładam, że podstawy już opanowane W tym roku ciąg edukacji w praktyce 8
Tematyka kursu wykład 9 15 wykładów 10 terminów!
10 Tematyka kursu - laboratorium
Literatura kursu W ramach powtórzenia techniki cyfrowej: [1] K. M. Noga, M. Radwański, Multisim, Technika cyfrowa w przykładach, Wydawnictwo BTC, 2009 [2] B. Wilkinson, Układy cyfrowe, Wydawnictwa Komunikacji i Łączności, 2003 [3], Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT Warszawa, 2000 11 Układy ARM seri LPC, STM, Cortex [1] Bryndza Lucjan, LPC2000 Mikrokontrolery z rdzeniem ARM7, Wydawnictwo BTC [2] Stawski Emil, Mikrokontrolery LPC2000 w przykładach, Wydawnictwo BTC [3] Jacek Majewski, Programowanie mikrokontrolerów LPC2000 w języku C pierwsze kroki, Wydawnictwo BTC [4] William Hohl, Asembler dla procesorów ARM. Podręcznik programisty, Wydawca: Helion [5] Lucjan Bryndza, Mikrokontrolery z rdzeniem ARM9 w przykładach, Wydawnictwo BTC [6] Krzysztof Paprocki, Mikrokontrolery STM32 w praktyce, Wydawnictwo BTC [7] J. Pasierbiński, P. Zbysiński, Układy programowalne w praktyce, Wydawnictwo WKŁ, 2001 [8] Joseph Yiu, The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors, Elsevier Science... i wiele wiele innych pozycji Źródła internetowe: [1] http://www.nxp.com/ [2] https://www.arm.com/ [3] http://www.st.com/ [4] http://www2.keil.com/mdk5/learn
Literatura kursu 12 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0234b/i1005422.html
Laboratorium Programowanie układów ARM: LPC2368, Język programowania: assembler, C, C++ (?), Środowisko: Keil uvision5 Zestaw: EVBmm + MMlpc236x firmy PROPOX + peryferia dodatkowe ARM 7-TDMI firmy NXP LPC2368 13 dokumentacja: http://propox.com/
A co jeśli Suma: ~511 zł 14 Źródło: https://kamami.pl/ http://www.propox.com/
Przydatne linki 15 http://www.propox.com/download/docs/evbmmtm_pl.pdf http://www.propox.com/download/docs/mmlpc236x_sch.pdf http://www.propox.com/download/docs/mmlpc236x_pl.pdf http://www.nxp.com/documents/data_sheet/lpc2364_65_66_67_68.pdf
Środowisko Keil uvision5 szeroka gama obsługiwanych układów rodziny ARM, możliwość debugowania, kodowanie w asemblerze, C, C++, darmowy do 32 kb kodu https://www.keil.com/download/product/ MDK-ARM 16
Jak instalować? 2 1 3 1. 2. 17 1. https://www.keil.com/download/product/ 2. http://www2.keil.com/mdk5/legacy
Dlaczego? C:\Keil_v5\UV4\ 18
19 Najważniejsze by
Analiza danych w czasie rzeczywistym Analizator stanów logicznych firmy Digilent pełni rolę: oscyloskopu, 16-kanałowego analizatora stanów logicznych, 2-kanałowego generatora 20
Coś o samym procesorze ARM
Szerokość bramki? Prawo Moore a 22 Prawo Moore a 1965 przewiduje wykładniczy wzrost liczby tranzystorów w układach scalonych co 12 18 miesięcy
Struktura osadzona PLD, CPLF, FPGA ARM: architektura ARM powstała w latach 80-tych ubiegłego wieku, Powstał w zamian procesora MOS Technology 6502 (Apple II) produkt firmy Acorn RISC Machine, ARM - Advanced RISC Machine około 90% stosowanych procesorów 32- bitowych typu RISC to procesory z jądrem ARM 23 MIKROKONTROLER, PROCESOR
Struktura osadzona PLD, CPLF, FPGA ARM: architektura ARM powstała w latach 80-tych ubiegłego wieku, Powstał w zamian procesora MOS Technology 6502 (Apple II) produkt firmy Acorn RISC Machine, ARM - Advanced RISC Machine około 90% stosowanych procesorów 32- bitowych typu RISC to procesory z jądrem ARM 24 MIKROKONTROLER, PROCESOR 5 września 2016 r. 32 miliardy $ 2017 roku: 100 miliardów procesorów ARM
Krótka historia ARM 25 1978 - powstanie firmy Acorn Computers w Cambridge 0 1985 - Acorn Computer Group opracowuje pierwszy procesor typu RISC processor - firma zostaje przejęta przez Olicetti The company was taken over by Olivetti, after coming close to bankruptcy following the collapse of the UK home computer market the previous year. 1987-procesor firmy Acorn - ARM jest dostępny w pierwszym tanim komputerze PC 1990 - Powstaje firma ARM jako spin-off firm: Acorn i Apple, 1992 - firmy Sharp i GEC Plessy wykorzystując technologię ARM 1998 - wejście na giełgę w Londynie - ARM Holdings 1999 - firma ARM staje się członkiem FTSE 1000 (Financial Times Stock Exchange - 100 największych spółek w GB) 2001 - ARM posiada 76,8 % udziału w 32-bitowym rynku procesoró typu RISC 2007-98 % z ponad 1 mld telefonów komórkowych sprzedawanych co roku wykorzystuje co najmniej jeden procesor ARM. 2008 - wytworzenie 10 miliardowego procesora 2011 - wkroczenie w rynek ARM firmy Microsoft Steve Ballmer, dyrektor wykonawczy firmy Microsoft, zapowiada plany oparcia nowej generacji systemu operacyjnego Microsoft Windows na procesorach ARM
Historia ARM 1999-2000 ARM zostaje przejęty przez Micrologic i Infinite Designs. 2001 ARM przechodzi do rąk Noral Micrologics 2003 ARM nabywa Adelante Technologies 2004 ARM wykupuje Axys Design Automation 2005 ARM odkupuje KEIL Software 2006 ARM nabywa Falanx 2016 następuje przejęcie spółki przez japoński koncern SoftBank 26
ARM w świecie 27 https://www.arm.com https://www.arm.com/support/university/students
Do jakiej rodziny należy ARM? CISC vs RISC CISC Complex Instruction Set Computer obszerna lista rozkazów 100-300, złożone polecenia, duża liczba trybów adresowania dostępna w rozkazach wewnętrznych, mała liczba rejestrów roboczych, zróżnicowane czasy wykonywania rozkazów rozbudowana architektura struktury krzemowej, większy pobór mocy RISC Reduced Instruction Set Computer zredukowana lista rozkazów do 128, rozkazy mają prostą treść operacyjną mała liczba trybów adresowanie dostępna w rozkazach wewnętrznych (do 4), jednakowa długość słowa rozkazowego, ujednolicony czas wykonania rozkazów, duża liczba rejestrów roboczych brak bezpośredniego odwołania do pamięci 28 Mały rozmiar kodu, znacznie większa liczba cykli zegara Nacisk na część sprzętową Niewielka liczba cykli zegarowych, znacznie obszerniejszy rozmiar kodu (prostsze instrukcje) Nacisk na część programową
Jaką architekturę posiada ARM? Architektura: von Neumanna vs harwardzka von Neumann Wspólna magistrala dla pamięci danych i pamięci programu Dane przechowywane są wspólnie z instrukcjami Pamięć składa się z ponumerowanych komórek Możliwość wprowadzenie programu przez urządzenia zewnętrzne harwardzka Rozdzielona magistrala zapewniająca dostęp do pamięci programu i danych Możliwość równoczesnego pobierania danych i instrukcji W wypadku mikrokontrolerów dane programu zapisywane są najczęściej w pamięci ROM natomiast dane tymczasowe w pamięci RAM Rdzeń ALU Pamięć Pamięć instrukcji Rdzeń Pamięć danych 29 Układy we/wy
Architektura układów ARM Warianty architektury układów ARM ARM v1 ARM v2 ARM v3 ARM v4 ARM v5 ARM v6 ARM v7 ARM v8 rok 1985 wersja testowa, rok 1987 I - wersja produkcyj na rok 1989 rok 1993 rok 1998 rok 2002 rok 2006 rok 2012 30 ARM1 ARM2 ARM250 ARM3 ARM6 ARM7 ARM8 ARM7TDMI ARM7TDMI-S ARM9TDMI SC100 ARM7EJ ARM9E ARM10E ARM11, Cortex-M0, Cortex-M0+, Cortex- M1, SC000, Cortex- M3, SecurCore SC300, Cortex-M4, Cortex-M7, Cortex- R4, Cortex-R5, Cortex-R7, Cortex-A5, Cortex-A7, Cortex-A8, Cortex-A9, Cortex- A12, Cortex-A15, Cortex-A17 Cortex-A53, Cortex-A57, Cortex-A72
Architektura układów ARM 31 ARM v1 ARM v2 ARM v2a ARM v3 ARM v4 ARM v5 ARM v6 ARM v7, ARM v8 pierwsza wersja procesora ARM, adresowanie 26-bitowe, brak mnożenia, brak koprocesora pierwsza wersja komercyjna, dodano mnożenie 32-bitowe, pojawia się koprocesor pierwsze użycie pamięci cache, do 12 MIPS przy 25 MHz adresowanie 32-bitowe, magistrala do pamięci cache oraz do koprocesora, kontroler pamięci, 40 MIPS przy 56 MHz 3 oraz 5 stanowe przetwarzanie potokowe (pipelining), instrukcje ARM/Thumb, układy kontroli pamięci, do 200 MIPS przy 200 MHz, najbardziej popularna wersja stosowana do dzisiaj 6 oraz 7 stanowe przetwarzanie potokowe (pipelining), instrukcje ARM/Thumb/Jazell/DSP, wielopoziomowy cache, do 1000 MIPS 8 oraz 9 stanowe przetwarzanie potokowe (pipelining), instrukcje ARM/Thumb/Jazell/DSP, wielopoziomowy cache, optymalizowany pod kątem audio i wideo rodzina Cortex (pomijając M0, M1), 13 stanowe przetwarzanie potokowe, sprzętowe mnożenie i dzielenie stało i zmiennoprzecinkowe, do 10000 MIPS, wsparcie dla kryptografi
Architektura układów ARM Rdzenie stosowane w układach Wersja architektury ARM Zestawy instrukcji i technologie 32
Rodzina układów CORTEX Cortex-A Cortex-R Cortex-M - procesory do zastosowań aplikacyjnych, - obsługa systemów operacyjnych, - stosowane w sprzętach ogólnego użytku: tablety, telefony, dekodery HDTV itp. - procesory przeznaczone do zastosowań w systemach czasu rzeczywistego, - niski pobór mocy, - stosowane w układach ABS, sterownikach HDD, Ethrnet Motoryzacja, lotnictwo, energetyka - procesor pełniący głównie rolę mikrokontrolera, - niski pobór mocy, - niska cena, - stosowane w aplikacjach homemade, inteligente czujniki itp. - wsparcie dla RTOS 33
34 Rodzina układów CORTEX
35 Rodzina układów CORTEX-M
36 Architektura układów ARM w liczbach
Oznaczenia rdzeni ARM ARM {x} {y} {z} {T} {D} {M} {I} {E} {J} {F} {S} 37 x y z T D M I E J F S rodzina rdzenia, na jej podstawie można określić architekturę zarządzanie pamięcią/ ochrona pamięcia pamięć cache Thumb, rdzeń może wykonywać 16-bitowe rozkazy Debug, rdzeń został wyposażony w JTAG umożliwiający debugowanie Multiplier, układ wyposażony w sprzętowy układ mnożący In-Circuie Emulator, możliwość debugowania w układzie Enhanced DSP, wydajne instrukcje DSP Tryb Jazelle Floating Point, wsparcie dla obliczeń zmiennoprzecinkowych Synthesizable dostępna wersja syntezowalna, kody źródłowe
Czy Thumb się opłaca? ARM/Thumb ARM polecenia 32-bitowe (szerokość słowa 32-bity) rozwiązanie mało ekonomiczne pamięć Flash składanie słów ogranicza prędkość działania Thumb po raz pierwszy w rdzeniach ARM v4 zmodyfikowany zestaw poleceń procesor może wykonywać program z pamięci o szerokości magistrali 8 lub 16-bitów, podczas gdy standardowa szerokość słowa wynosi 32-bity 38 Polecenia na liście Thumb są tak samo efektywne jak polecenia na liście ARM
Rozkazy procesora Rdzeń procesora ARM może pracować w jednym z następujących trybów: ARM Thumb Jazelle - 32-bitowe instrukcje, kod programu zostaje wyrównany do 4 bajtów, - szybszy nawet o 40% - Stosowany gdy wydajność jest parametrem krytyczny - zestaw 16-bitowych instrukcji, - upakowanie kodu większe nawet do 70% w stosunku do ARM, - zużycie mniejszej ilości pamięci/zasobów nawet do 30% - Mniejsze zużycie energii - tryb pozwalający na bezpośrednie wykonywanie instrukcji zgodnych ze specyfikacją języka Java, - wszystkie instrukcje są 8 bitowe, - procesor odczytuje zawsze 4 kolejne instrukcje 39
Potokowość (pipelining) podział zadania na odrębne części, 3 etapowe przetwarzanie potokowe każda instrukcja musi mieć te same fazy wykonania, jeśli dana instrukcja nie wykorzystuje wszystkich faz, procesor wykonuje puste cykle zegara dla tej instrukcji, w danym cyklu, procesor wykonuje jednocześnie kilka instrukcji, ale każda znajduje się w innym stopniu zaawansowania Instrukcja Pobranie Dekodowanie Wykonanie ADDS R0, R4, R8 ADCS R1, R5, R9 ADDS R0, R4, R8 ORR R0, R0, #3 ADCS R1, R5, R9 ADDS R0, R4, R8 ADCS R3, R7, R1 ORR R0, R0, #3 ADCS R1, R5, R9 ADDS R0, R4, R8 ADCS R3, R7, R1 ORR R0, R0, #3 ADCS R1, R5, R9 Cykl zegara N N+1 N+2 N+3 N+4 40
ARM7TDMI-S
Oznaczenia rdzeni ARM ARM {x} {y} {z} {T} {D} {M} {I} {E} {J} {F} {S} 42 x y z T D M I E J F S rodzina rdzenia, na jej podstawie można określić architekturę zarządzanie pamięcią/ ochrona pamięcia pamięć cache Thumb, rdzeń może wykonywać 16-bitowe rozkazy Debug, rdzeń został wyposażony w JTAG umożliwiający debugowanie Multiplier, układ wyposażony w sprzętowy układ mnożący In-Circuie Emulator, możliwość debugowania w układzie Enhanced DSP, wydajne instrukcje DSP Tryb Jazelle Floating Point, wsparcie dla obliczeń zmiennoprzecinkowych Synthesizable dostępna wersja syntezowalna, kody źródłowe
Oznaczenia rdzeni ARM ARM7 TDMI-S ARM {x} {y} {z} {T} {D} {M} {I} {E} {J} {F} {S} 43 x y z T D M I E J F S rodzina rdzenia, na jej podstawie można określić architekturę zarządzanie pamięcią/ ochrona pamięcia pamięć cache Thumb, rdzeń może wykonywać 16-bitowe rozkazy Debug, rdzeń został wyposażony w JTAG umożliwiający debugowanie Multiplier, układ wyposażony w sprzętowy układ mnożący In-Circuie Emulator, możliwość debugowania w układzie Enhanced DSP, wydajne instrukcje DSP Tryb Jazelle Floating Point, wsparcie dla obliczeń zmiennoprzecinkowych Synthesizable dostępna wersja syntezowalna, kody źródłowe
ARM7TDMI (architektura ARMv4) architektura ARM v4t, von Neumanna, rodzina ARM7 32 bitowa szerokość magistrali 44 LPC2368, ARM7TDMI-S
ARM7TDMI organizacja pamięci Ogólnie 37 rejestrów.. Rejestry R0 R12 przeznaczenie ogólne R13 SP wskaźnik stosu R14 LR rejestr powrotny R15 PC licznik programu CPSR (Current Program Status Register) rejestr statusowy Dane pamięć RAM Stałe pamięć Flash Pamięć posiada organizację bajtową 45. a co z pozostałymi rejestrami?
Rejestr statusowy Rejestr statusowy CPSR podaje aktualny stan w jakim znajduje się mikroprocesor. Rejestr ten podzielony jest na bity i pola bitowe. Znaczenie flag: N = ujemny wynik operacji Z = wynik operacji =0 C = przeniesienie/pożyczka V = przepełnienie Znaczenie bitów: I = wyłączenie przerwania IRQ F = wyłączenie przerwania FIQ T = tryb Thumb lub ARM 46
Rejestr statusowy tryby pracy Pole bitowe M4:0 w rejestrze CPSR odzwierciedlają aktualny tryb pracy rdzenia. Tryb pracy określa, z których zasobów w danym momencie można skorzystać: np. obszary pamięci, rejestry, układy peryferyjne 47 TRYB USER - tryb użytkownika, przeznaczony do wykonywania programów użytkownika, brak wpływu na CPSR FIQ - tryb obsługujący przerwania i wyjątki o wysokich priorytetach (super szybki) IRQ - obsługa przerwań z niskim priorytetem (może zostać przerwany przez FIQ) ABORT - obsługa wyjątków związanych z pamięcią UNDEF - obsługa nieznanych/niezdefiniowanych rozkazów SYSTEM - dostęp do rejestrów tak jak w trybie USER jednak możliwy dostęp do różnych obszarów pamięci SVC - tryb superużytkownika, zaraz po włączeniu zasilania
Pierwsze kroki podczas zajęć laboratoryjnych
Zakładanie projektu Keil uvision5 Pasek narzędzi Okno projektu Okno komunikatu 49
Zakładanie projektu Keil uvision5 1 2 3 Szukamy LPC 2368 4 5 6 50
Zakładanie projektu Keil uvision5 #include <lpc23xx.h> int main(void) { while(1); } 51
Programowanie programujemy z JTAG-iem programujemy z RS-em 52
53 Keil - programowanie JTAG
54 Keil - programowanie JTAG
55 Keil - programowanie JTAG
56 Debugger - podglądanie
57 Dziękuję za uwagę
Materiały do przygotowania Podstawowe wiadomości z obsługi Keil a, Co to jest JTAG, Czym różni się JTAG od szeregowego po SPI i RS-232, Jakie układy znajdują się na makiecie, Jak podłączyć ARM a do makiety, Materiały na stronie www.