Procesory osadzone ETD 7211 W

Podobne dokumenty
Procesory osadzone ETD 7211 W

Struktura i działanie jednostki centralnej

Szkolenia specjalistyczne

Programowanie w asemblerze ARM wprowadzenie

Wstęp Architektura... 13

Architektura typu Single-Cycle

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

2. Architektura mikrokontrolerów PIC16F8x... 13

Architektura komputerów

MIKROKONTROLERY I MIKROPROCESORY

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Technika Mikroprocesorowa

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Lista Rozkazów: Język komputera

Organizacja typowego mikroprocesora

Politechnika Świętokrzyska

AGH Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Systemy wbudowane. Przykłady kodu Assembler

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Magistrala systemowa (System Bus)

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

Podstawy Techniki Mikroprocesorowej

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

Programowanie Mikrokontrolerów

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Programowanie niskopoziomowe

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Procesory osadzone ETD Wprowadzenie W

Jerzy Nawrocki, Wprowadzenie do informatyki

Architektura komputerów. Asembler procesorów rodziny x86

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Kurs Elektroniki. Część 5 - Mikrokontrolery. 1/26

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Charakterystyka mikrokontrolerów. Przygotowali: Łukasz Glapiński, Mateusz Kocur, Adam Kokot,

Mikrokontroler ATmega32. Język symboliczny

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Programowalne układy logiczne

Mikrokontroler AVR ATmega32 - wykład 9

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

Mikrokontrolery STR91x od podstaw, część 1

Podstawy programowania w języku C i C++

Hardware mikrokontrolera X51

Projektowanie. Projektowanie mikroprocesorów

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

Logiczny model komputera i działanie procesora. Część 1.

Mikroprocesory i mikrosterowniki

ARCHITEKTURA PROCESORA,

Projekt prostego procesora

Język programowania: Lista instrukcji (IL Instruction List)

Schemat blokowy procesora rdzeniowego ATmega16. Głównym zadaniem JC jest zapewnienie poprawnego i szybkiego wykonywania programu.

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

7. Technika mikroprocesorowa test

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

organizacja procesora 8086

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Programowanie w asemblerze ARM: instrukcje

Metody obsługi zdarzeń

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

Wprowadzenie - Keil µvision, konfiguracja...

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Kurs Zaawansowany S7. Spis treści. Dzień 1

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32)

7. Technika mikroprocesorowa test

Architektura mikroprocesorów TEO 2009/2010

Przykładowe pytania DSP 1

PROGRAMOWALNE SYSTEMY MECHATRONIKI

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Technika mikroprocesorowa I Wykład 2

Kompilator języka C na procesor 8051 RC51 implementacja

Architektura komputerów

Mikroprocesory i Mikrosterowniki

Architektura mikroprocesorów z rdzeniem ColdFire

Opis funkcjonalny i architektura. Modu³ sterownika mikroprocesorowego KM535

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Wykład Mikroprocesory i kontrolery

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Wstęp Podstawowe informacje o mikroprocesorach AT91SAM9...11

Mikroprocesory i Mikrosterowniki

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Transkrypt:

Procesory osadzone ETD 7211 W3 22.10.2018

Oscylator kwarcowy Częstotliwość: 32 768 Hz Temperatura pracy: 25 28 C Dokładność pomiaru: 0.035 ppm/ C 2 (±1) 2 0,035 ppm = 0,035 ppm 1 C : 1,1 s/rok 10 C : 110 s/rok https://en.wikipedia.org/wiki/quartz_clock

Agenda Organizacja pamięci Obsługa programatora Ratowanie makiety Assembler i układy architektury ARM Obsługa wejść i wyjść ARM - Acorn RISC Machine do 1990 r. ARM - Advanced RISC Machine od 1990 r.

Odczyt Rej Shift ALu Zapis do Rej Potokowość (pipelining) - rozwiniecie 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 Pobranie instrukcji Zamiana instrukcji Thumb -> ARM Dekodowanie Wybór rejestrów

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 6

Rejestry specjalne Rejestry podstawowe Rejestry ogólnego przeznaczenia ARM7TDMI organizacja pamięci R0 R1 R12 R13 (SP) R14 (LR) R15 (PC) PSR PRIMASK CONTROL Stack Pointer Link Register Program Counter Program Status Reg. Primary Mask Reg. CONTROL Register 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 6+1 trybów ochrony 31 [16*] rejestrów ogólnego przeznaczenia, 6 rejestrów statusu W sumie 37 rejestrów * Dostępnych jednocześnie R0 R15

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 8

Laboratorium wiadomości istotne

Na dobry początek - wyjaśnienie OK, programator działa hmm raczej spodziewalibyśmy się sygnatury 0x4Fxxxxxx

Keil uvision - mapa pamięci Zmapowanie wg specyfikacji urządzenia. bardzo ważne aby zaznaczyć 11

LPC2368 - mapa pamięci Wektory wyjątków i wektor resetu zajmują pierwsze 64 bajty przestrzeni adresowej przed uruchomieniem programu z pamięci Flash sprawdzana jest jego poprawność na podstawie unikalnej sygnatury, która jest umieszczona w nieużywanym wektorze 0x00000014. Sygnatura ta jest sumą kontrolną w uzupełnieniu do dwóch zawartości tablicy wektorów wyjątków. BOOT ROM AND FLASH 32 kb ON-CHIP STATIC RAM - w skrócie wewnętrzna pamięć RAM 12 512 kb ON-CHIP NON-VOLATILE MEMORY - w skrócie wewnętrzna pamięć FLASH

LPC2368 - mapa pamięci BOOT ROM AND FLASH ROM RAM 32 kb ON-CHIP STATIC RAM - w skrócie wewnętrzna pamięć RAM 13 512 kb ON-CHIP NON-VOLATILE MEMORY - w skrócie wewnętrzna pamięć FLASH

Jednak.

LPC2368 - mapa pamięci BOOT ROM AND FLASH ROM RAM 32 kb ON-CHIP STATIC RAM - w skrócie wewnętrzna pamięć RAM 15 512 kb ON-CHIP NON-VOLATILE MEMORY - w skrócie wewnętrzna pamięć FLASH

LPC2368 - wektory przerwań w pamięci Wektor Przerwanie/wyjątek Uwagi 0x0 RESET po resecie lub włączeniu zasilania rdzeń rozpoczyna pracę w trybie SVC od adresu 0x0 0x4 UNDEF obsługa nieznanych/niezdefiniowanych rozkazów 0x8 SVC tryb superużytkownika, zaraz po włączeniu zasilania 0xC ABORT wyjątek wystąpił w trakcie pobierania rozkazu 0x10 ABORT wyjątek wystąpił podczas dostępu do danych 0x14 Zarezerwowane sygnatura programu 0x18 IRQ obsługa przerwań z niskim priorytetem (może zostać przerwany przez FIQ) 0x1C FIQ tryb obsługujący przerwania i wyjątki o wysokich priorytetach (super szybki) 16

A co z zablokowanym procesorem?

Programowanie szeregowe - RS232 ISP, kasowanie pamięci 18 RX RS232 Linia P0.3 TX RS232 Linie P0.2

Flash Magic bootloader - RS232 ISP, kasowanie pamięci Linia P2.10 - w stan niski (zwarcie do GND) Power Off Power On Kasujemy pamięć Chip Erase Linia P2.10 odłączona od GND Reset lub Power Off Power On 19

Wracając do wykładu

ARM7 przetwarzanie danych ARM7 - typowa architektura Load and Store co oznacza, że wszystkie operacje wykonywane są na rejestrach Brak rozkazów operujących bezpośrednio na pamięci - wyjątek stanowi: LOAD, STORE 21

ARM7TDMI Rdzeń ARM7TDMI stanowi mózg systemu, kręgosłupem są poszczególne magistrale a kończynami peryferia.

ARM7 - przesuwnik bitowy (ang. Barrel shifter) Barrel shifter wielopozycyjny przesuwnik bitowy, wykonujący przesunięcia arytmetyczne, logiczne oraz rotacje użytego w rozkazie operandu. Co daje: uzupełnia możliwości rdzenia o brakujące na liście rozkazów przesunięcia i rotacje, służy do skalowania jednego z argumentów w rozkazach arytmetycznych i logicznych (operacje mnożenia/dzielenia przez potęgę liczby 2 bez potrzeby wykonywania osobnej operacji) Rd rejestr przeznaczenia, Rn, Rm rejestry źródłowe 23 http://www.davespace.co.uk/arm/introduction-to-arm/organisation.html

ARM7 - przesuwnik bitowy (ang. Barrel shifter) Użycie przesuwnika bitowego zdefiniowane jest w 2 operandzie, za pomocą dodatkowego mnemonika kodującego Słowo wejściowe: a 3 a 2 a 1 a 0 Rn Rm LSL LSR ASR przesunięcie logiczne w lewo a 2 a 1 a 0 0 przesunięcie logiczne w prawo 0 a 3 a 2 a 1 przesunięcie arytmetyczne w prawo 0 a 3 a 2 a 1 5 bitowa stała natychmiastowa, lub 8 najmłodszych bitów rejestru specyfikującego ROR rotacja w prawo a 0 a 3 a 2 a 1 RRX Rotacja w prawo z uwzględnieniem flagi C, flaga C jest wsuwana do najstarszego bitu rejestru Rm, zaś najmłodszy bit rejestru Rm jest przesuwany do C 24 SUB R4, R5, R6, ASR #2 ASR - przesunięcie operandu w rejestrze R6 MOV R4, #0 MOV R5, #100 MOV R6, #16 Jaka wartość zostanie umieszczona w rejestrze R4?

ARM7 - przesuwnik bitowy (ang. Barrel shifter) SUB R4, R5, R6, ASR #2 ASR - przesunięcie operandu w rejestrze R6 MOV R4, #0 MOV R5, #100 MOV R6, #16 W rejestrze R4 zostanie umieszczona wartość??? R4 R5 R6 0 100 16 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 R6, ASR #2 25 R6 4 SUB R4, R5, R6 R4 60 0 0 0 0 0 1 0 0 R4 = R5 - R6 0 1 1 0 0 0 0 0

Asembler - składnia operand 1, np. wartość zapisana w rejestrze operand 2 rejestr docelowy (miejsce zapisu wyniku) <MNEMONIK> {<warunek>} {S} Rd, Rn, Operand kod operacji warunek wykonania instrukcji aktualizacja rejestru CPSR ADDEQS R0, R1, R3 26 Rozkazy standardowe, nie zawierające modyfikatora S domyślnie nie uaktualniają flag statusu w rejestrze CPSR, wyjątek: CMP, CMN, TST, TEQ

Assembler 27 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.kui0100a/armasm_cihdafai.htm

Assembler - instrukcje http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.kui0100a/armasm_cihdafai.htm

Asembler - instrukcje warunkowe nieco inaczej Prawie każda instrukcja może zawierać warunek określający kiedy dana instrukcja powinna być wykonana (np. kombinacja flag) Mnemonik Rozwinięcie mnemonika Warunek Stan flagi EQ equal równy Z=1 NE not equal nie równy Z=0 CS CARRY set ustawiona flaga przeniesienia CARRY; większy lub równy C=1 CC CARRY clear wyzerowana flaga przeniesienia CARRY, mniejszy C=0 MI minus/negative ujemny N=1 PL plus/positive or zero dodatni lub zerowy N=0 VS overflow set ustawiona flaga przepełnienia V=1 VC overflow clear wyzerowana flaga przepełnienia V=0 HI unsigned higher większy (liczby bez znaku) C=1 i Z=0 LS unsigned lower or same mniejszy lub równy (liczby bez znaku) C=0 lub Z=1 GE signed greater than or equal większy lub równy N=V LT signed less than mniejszy N V GT signed greater than większy Z=0 i (N=V) 29 LE signed greater then or equal mniejszy lub równy Z=1 lub (N V) AL always zawsze (mnemonik można pominąć) bez znaczenia

Asembler - instrukcje warunkowe nieco inaczej if (Z == 1) R1 = R2 + (R3*4) ADDEQ R1, R2, R3 LSL #2 Instrukcja warunkowa: add if equal Zostanie wykonana jeżeli wynik poprzedniej operacji uaktualniającej rejestr CPSR np. w operacji porównanie bądź arytmetycznej zwrócił zero W skrócie: jeżeli flaga Z w CPSR ustawiona na 1 wówczas R1 = Litera S w mnemoniku rozkazu oznacza, że instrukcja modyfikuje bity warunkowe fachowo S nazywany jest modyfikatorem uaktualniania rejestru CPSR 30 Zalety instrukcji warunkowych: wykonywanie instrukcji warunkowych pozwala na unikanie rozgałęzień

Asembler - ciekawsze instrukcje Jednostka mnożąca ALU rdzenia ARM7TDMI ma organizację 8*32 bity. Rozkazy mnożenia zależnie od wartości w rejestrze Rs wykonywane są w czasie od 1-4 cykli maszynowych. MUL Rd, Rz, Rs MLA Rd, Rz, Rs, Rn // mnożenie Rd=Rz*Rs // mnożenie z dodawaniem Rd=Rn+(Rz*Rs)!!! Powyższe rozkazy zachowuję tylko młodszą część 64-bitowego wyniku!!! MULEQ R0, R1, R2 //mnożenie będzie wykonane gdy Z=1 MULS R0, R1, R2 //nastąpi uaktualnienie flag stanu w rejestrze CPSR Rozkazy 64-bitowego mnożenie i mnożenia z dodawaniem mają następującą postać: UMULL Rd LOW, Rd HIGH, Rm, Rs UMLAL Rd LOW, Rd HIGH, Rm, Rs // wynik < Rd LOW, Rd HIGH > = Rm*Rs // wynik < Rd LOW, Rd HIGH > = Rm*Rs 31

Keil uvision5 - asembler i C Kod pisany w języku C/C++ bez problemu można wzbogacić fragmentami pisanymi w asemblerze: #include "LPC23xx.h" // miejsce na deklarację zmiennych // oraz funkcji int main (void){ while(1) { //ciało funkcji asm { } ADD r1, a, #100 32 } } Wstawka asemblerowa możliwość kodowania funkcji, newralgicznych części systemu, należy jednak pamiętać, że nazwy rejestrów nie muszą oznaczać fizycznych, jawnych rejestrów

Język C vs Asembler - przykład, implementacja pętli for int total; int i; total = 0; for (i = 10; i > 0; i--) { total += i; } prosty przykład w C i jego odpowiednik w asemblerze BNE - Branch if Not Equal przeskok warunkowy 33 etykiety: dalej, stop dalej: stop: MOV R0, #0 MOV R1, #10 ; wyzerowanie rejestru R0 ; zapisanie wartości 10 do R1 ADD R0, R0, R1 ; R0 - analogia zmiennej total SUBS R1, R1, #1 BNE dalej B stop ; pętla nieskończona

Język C vs Asembler - przykład, implementacja pętli while 34 a = 40; b = 25; while (a!= b) { if (a > b) a -= b; else b -= a; } CMP - Compare, wpływa na flagi N, Z, C, V; operacja (R0 R1) CMN - Compare Negative; operacja (R0 + R1) BEQ - Branch if Equal (Z=1) BLT - Branch if Less Than (N V) prosty przykład w C i jego odpowiednik w asemblerze MOV R0, #40 MOV R1, #25 ; R0 odpowiednik a ; R1 odpowiednik b dalej: CMP R0, R1 jeżeli Z=1, czyli R0=R1 BEQ stop BLT mniej SUB R0, R0, R1 B dalej mniej: SUB R1, R1, R0 jeżeli N=1 B dalej stop: B stop

Język C vs Asembler - implementacja pętli while ten sam przykład nieco inaczej a = 40; b = 25; while (a!= b) { if (a > b) a -= b; else b -= a; } prosty przykład w C i jego odpowiednik w asemblerze CMP - Compare, wpływa na flagi N, Z, C, V; operacja (R0 R1) BNE - Branch if Not Equal (Z=0) 35 SUBGT Subtract if Greater Than Z=0 i (N=V) SUBLT Subtract if Less Than N V dalej: stop: MOV R0, #40 MOV R1, #25 CMP R0, R1 SUBGT R0, R0, R1 SUBLT R1, R1, R0 BNE dalej B stop ; R0 odpowiednik a ; R1 odpowiednik b

Struktura osadzona Kod pisany w języku C Instrukcje asemblera 5 instrukcji 5 lub 6 cykli zegarowych 36

ARM magistrale połączeniowe 37 Magistrala Local Bus komunikacją z pamięcią operacyjną Magistrala AHB - Advanced High Performance Bus komunikacja z urządzeniami peryferyjnymi jak: VIC, pamięć RAM portu USB, Ethernet Magistrala VBP - VLSI Peripheral Bus komunikacja z pozostałymi urządzeniami peryferyjnymi, możliwość pracy z wolniejszymi urządzeniami

LPC2368 - sterowanie portami wyjściowymi - UM10211 Chapter 8 Układów LPC2368 posiada 4 porty I/O, Każda z linii może spełniać jedną z wielu funkcji np.: 38 http://www.nxp.com/documents/user_manual/um10211.pdf

LPC2368 - sterowanie portami wyjściowymi - UM10211 Chapter 9 GPIO P0.0 RD1 TXD3 SDA1 00 01 10 11 P0.0/RD1/TXD3/SDA1 PINSEL0 bity 1 0 RESET 0x00000000 http://www.nxp.com/documents/user_manual/um10211.pdf s158 39 Stany Opis funkcji 00 domyślnie, port GPIO 01 odbiornik linii CAN, RD1 10 nadajnik UART, TXD3 11 Linia danych I2C, SDA1 Za wybór odpowiedniej funkcji linii wyjściowej odpowiada odpowiedni rejestr PINSELx, a dokładniej bity 1 i 0 Po włączeniu zasilania i po każdym resetowaniu układu wszystkie linie I/O działają jako GPIO (General Purpose Input/Output)

PORT P0 LPC2368 - sterowanie portami wyjściowymi - UM10211 Chapter 9 IOPIN0 P0.0/RD1/TXD3/SDA1 IODIR0 IOCLR0 IOSET0 Każda linia I/O jest sterowana za pomocą bitów w rejestrach: IODIR odpowiada za kierunek portu: 1 wyjście, 0 - wejście IOPIN pozwala odczytać stan linii portu skonfigurowanego jako wejście, zapis wartości powoduję zmianę stanu portu IOCLR odpowiada za zerowanie stanu linii wyjściowej IOSET odpowiada za ustawienie wartości 1 na linii wyjściowej 40

LPC2368 - sterowanie portami wyjściowymi - UM10211 Chapter 9 IODIR odpowiada za kierunek portu: 1 wyjście, 0 - wejście IOPIN pozwala odczytać stan linii portu skonfigurowanego jako wejście IOCLR odpowiada za zerowanie stanu linii wyjściowej IOSET odpowiada za ustawienie wartości 1 na linii wyjściowej Sposób użycia w C: IODIR0=0x00FF0000; IOSET0=0x00F00000; IOCLR0=0x00F00000; // linie 16 23 portu P0 ustawiono jako wyjście // linie 20 23 ustawiono w stan wysoki // linie 20 23 ustawiono w stan niski IOCLR, IOSET zmieniają tylko i wyłącznie stan określonej linii bez modyfikacji pozostałych IOSET0=0xF1000081; 1 1 1 1 1 1 1 41 31 28 25 11 7 3 0

LPC2368 - sterowanie portami wyjściowymi - UM10211 Chapter 9 Nieco inną odmianę wyjść GPIO stanowią szybie wyjścia FGPIO, (Fast General Purpose Input/Output), Szybkie linie/porty wyjściowe komunikują się z rdzeniem ARM za pośrednictwem szybkiej magistrali local bus. FIOnDIR rejestr kierunku FIOnPIN odczyt wartości panującej na porcie, zapis do tego rejestru zmienia stan portu FIOnSET ustawienie wartości 1 na danym pinie portu FIOnCLR ustawienie wartości 0 na danym pinie portu FIOnMASK rejestr maski portu, pozwala na określenie, które linie portu mogą być zmienione, zapis i odczyt jest możliwy tylko do/z tych linii portu, które odpowiadają bitom rejestru o wartości 0 IOPIN0 = (IOPIN0 && 0xFFFF00FF) 0x0000A500 FIO0MASK = 0xFFFF00FF; FIO0PIN = 0x0000A500; 42

LPC2368 - sterowanie portami wyjściowymi pull up, pull down. Podobnie jak w układach AVR, dla wyjść GPIO możliwe jest ustawienie rezystora podciągającego do VCC lub GND, Za ustawienie odpowiada rejestr PINMODE, a dokładniej każde jego 2 bity Pull-up/pull-down może być ustawiony dla każdej linii niezaleznie or realizowanej funkcji P0.15 P0.0 pull-up pull-down 31 30 PINMODE0 bity 1 0 RESET 0x00000000 43 Stany Opis funkcji 00 domyślnie, na linii portu pull-up 01 wartość zarezerwowana 10 brak pull-up oraz pull-down 11 na linii portu pull-down PINMODE0 P0.0 P0.15 PINMODE1 P0.16 P0.26 PINMODE2 P1.0 P1.15 PINMODE3 P1.16 P1.31 PINMODE4 P2.0 P2.15 PINMODE5 zarezerwowany PINMODE6 P3.0 P3.15

Programowanie układów ARM - plik Startup.s LPC2300.s oprogramowanie wektora resetu oraz wektorów przerwań oprogramowanie kluczowych urządzeń peryferyjnych: kontroler pamięci, PLL alokacja miejsca na stosy oraz inicjalizacja wskaźników stosu 1 2 3 Definicja stałych symbolicznych Oprogramowanie wektorów przerwań Oprogramowanie specyficznych urządzeń peryferyjnych Skoki do odpowiednich procedur obsługi Inicjalizacja adresów tych procedur Konfiguracja zegara PLL Wyłączenie układu watchdog Odblokowanie sygnału RESET Mapowanie pamięci 4 Inicjalizacja rdzenia ARM7TDMI Inicjalizacja wskaźników stosu w poszczególnych trybach pracy układu 44 5 Inicjalizacja bibliotek wymaganych przez kompilator oraz zmiennych globalnych lub skok do dalszej części programu Wywołanie funkcji inicjalizującej zmienne i biblioteki języka C lub asembler

Programowanie układów ARM - plik Startup.s LPC2300.s 1 Definicja stałych symbolicznych określenie wartości bitów M4-M0 Definicja stałych symbolicznych rozmiar stosu w bajtach rozmiar stosów należy dostosować do wymagań docelowej aplikacji 45

Dziękuję za uwagę http://geekandpoke.typepad.com/geekandpoke/2011/09/simply-explained-1.html