37
PRIMENA MIKROKONTROLERA- MS1PMK 2. deo 2015 Nenad Jovičić

PRIMENA MIKROKONTROLERA- MS1PMKtnt.etf.bg.ac.rs/~ms1pmk/index_files/PMK_2015_2.pdfCPU with FPU at 84MHz •512 KBytes Flash •12bit ADC 2.4 Msps up to 10 channels •Up to 10 timers

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • PRIMENA MIKROKONTROLERA- MS1PMK

    2. deo

    2015 Nenad Jovičić

  • NXP i MBED

    • Šta je NXP LPC17xx serija mikrokontrolera? LPC17xx predstavljaju C bazirane na Cortex-M3 tehnologiji namenjenje za namenskih sistema sa visokim stepenom integracije i sa malom potrošnjom. LPC17xx uključuju do 512 kB fleš memorije, 64 kB RAM, Ethernet MAC, USB interfejs, 8-kanalni DMA kontroler, 4xUART, 2xCAN, 2xSSP kontrolera, SPI interfejs, 3xI2C, 8-kanalni 12-bitni ADC, 10-bitni DAC, PWM modul, 4 tajmera, RTC i do 70 I/O pinova...

    • Šta je mbed? mbed je razvojna ploča sa NXP LPC1768 mikrokontrolerom koja omogućava jednostavan razvoj funkcionalnog prototipa sistema, implementaciju algoritama upravljanja, razvoj aplikativnog softvera.

  • mbed (http://mbed.org/)

    http://mbed.org/

  • MBED – LPC1768

    • MBED – LPC1768 je razvojna pločica namenjena za brzi razvoj aplikacija na ARM CORTEX M3 mikrokontroleru LPC1768.

  • MBED – LPC11U24

    • MBED – LPC11U24 je razvojna pločica namenjena za brzi razvoj aplikacija na ARM CORTEX M0 mikrokontroleru LPC11U24.

  • ST Nucleo F401RE

    • ARM Cortex-M4 CPU with FPU at 84MHz

    • 512 KBytes Flash • 12bit ADC 2.4 Msps

    up to 10 channels • Up to 10 timers • Up to 3x I2C, 3x

    USARTs, 4x SPIs, SDIO

    • USB 2.0 Full Speed with on-chip PHY

  • Programiranje

    • Glavna prednost MBED arhitekture nad drugim arhitekturama je mogućnost brzog razvoja proof-of-concept aplikacija korišćenjem podrške na sajtu www.mbed.com

    • Nakon logovanja sa korisničkim imenom dobijenim registrovanjem MBED-a, korisnik ima pristup web sadržajima vezanim za standardnu zvaničnu MBED biblioteku, ali i pristup bibliotekama i programima koje kreiraju drugi kosinici.

    • MBED biblioteci se pristupa preko stranice Handbook, a ostalim bibliotekama preko stranice Cookbook.

    http://www.mbed.com/

  • Arhitektura softvera

    • MBED se oslanja na CMSIS standard koji definiše Low Level pristup resursima mikrokontrolera, dok MBED biblioteke obezbeđuju visoki aplikativni nivo apstrakcije.

  • Programiranje – pisanje programa

    • Jedan od načina da se napiše program za MBED je korišćenje MBED online kompajlera. To naravno zahteva da se ulogujete na sajt www.mbed.org i kliknete na link compiler.

    • Kompajler zna da bude spor i nekomforman za editovanje, ali prevođenje radi brzo i nema ograničenja u veličini fajla.

    http://www.mbed.org/

  • Korišćenje offline

    kompajlera

  • Programiranje – biblioteke • Osnovna biblioteka MBED

    kompajlera nosi naziv MBED.xx, i header za pristup njenim funkcijama i konstantama nosi naziv mbed.h.

    • Biblioteka MBED se sastoji iz mnogo podbiblioteka i svaka od njih pseduje svoj .h fajl.

    • Svaki program koji koristi bilo koju MBED funkciju ili konstatnu treba na početku da ima direktivu #include “mbed.h”.

    • Za razliku od klasičnih kompajlera koji dozvoljavaju čitanje .h fajlova online compiler to ne dozvoljava.

    • NA sreću na sajtu se može naći hello_world verzija projekta prilagođena KEIL kompajleru u kojoj se nalaze i svi .h fajlovi.

  • ARM – evolucija arhitektura

  • ARM – evolucija arhitektura

  • Cortex familije

    Cortex-R4

    Cortex-A8

    SC300™

    Cortex-M1

    Cortex™-M3

    ...2.5GHz x1-4

    Cortex-A9

    12k gates...

    Cortex-M0

    x1-4

    Cortex-A5

    x1-4

    Cortex-A15

    ARM Cortex-A family (v7-A): Applications processors for full OS and 3rd party applications

    ARM Cortex-R family (v7-R): Embedded processors for real-time signal processing, control applications

    ARM Cortex-M family (v7-M): Microcontroller-oriented processors for MCU and SoC applications

  • Cortex familije

  • ARM Cortex-M tehnologije

    • Svaka od Cortex-M serije procesora je specifična, ali poseduje i sledeće zajedničke karakteristike:

    RISC procesorsko jezgro Thumb-2® instukcijski set

    •32-bit CPU

    •Predvidiv rad

    •3-stepena protočna obrada

    •Kompromis između 16/32-bitnih instrukcija

    •3x manja veličina koda nego kod 8-bitnih

    platformi

    •Bez negativnog uticaja na performanse

    Modovi rada sa smanjenom potrošnjom Nested Vectored Interrupt Controller (NVIC)

    •Integrisani modovi rada

    •Više modova potrošnje

    •Softverska kontrola

    •Malo kašnjenje servisiranja prekida

    •Bez potrebe za programiranjem u asembleru

    •Servisne rutine u C kodu

    Alati i RTOS Podrška za debagovanje

    •Široka lepeza alata

    •Cortex Microcontroller Software Interface

    Standard

    •Software reuse podrška

    • JTAG ili 2-pin Serial Wire Debug

    •Podrška za višeprocesorki rad

    •Debagovanje u realnom vremenu

    http://www.arm.com/products/processors/cortex-m/index.phphttp://www.arm.com/products/processors/cortex-m/index.phphttp://www.arm.com/products/processors/cortex-m/index.php

  • Cortex-M3 Osnovni pojmovi

    • Šta je Cortex-M3? Cortex-M3 je tip 32-bitnog procesorskog jezgra baziran na ARMv7-M (Harvard) arhitekturi i Cortex-M tehnologiji, koji je namenjen za primenu kod mikrokontrolera, industrijskih upravljačkih sistema, bežičnoj komunikaciji i senzorskim aplikacijama.

    • Šta je ARMv7-M arhitektura? ARMv7 (M profil) arhitekture namenjen je razvoju klasičnih namenskih aplikacija, obezbeđuje kratko izvršavanje instrukcija, malo vreme odziva na prekid, mogućnost jednostavne implementacije C/C++ kompajlera, mali broj pinova, protočna obrada sa malim brojem nivoa, interfejse za implementaciju raznovrsnih periferijskih modula.

  • Cortex-M3

    • Obezbeđuje visoke performanse i puno funkcionalnosti – Cortex-M3 je vodeći ARM procesor razvijen za mikrokontrolerske aplikacije.

    • Dobar odnos performanse/potrošnja – Niska dinamička potrošnja i dobre performanse (power efficiency = 12.5

    DMIPS/mW). Takođe, podržani su modovi rada sa smanjenom potrošnjom. • Posebne osobine

    – Procesor koristi Thumb®-2 instrukcijski set za optimalan odnos veličine koda i performansi. Obezbeđena je HW podrška za operacije deljenja, množenje u jednom ciklusu, kao i bit-operacije. Integrisani kontroler prekida omogućava preko 240 sistemskih prekida sa individualnim prioritetima, dinamičkom promenom prioriteta.

    • Raznovrsne mogućnosti povezivanja – Cortex-M3 podržava mnoštvo I/O kanala, kao i standardne protokole kao

    što su USB, Ethernet...

    http://www.arm.com/products/processors/technologies/instruction-set-architectures.phphttp://www.arm.com/products/processors/technologies/instruction-set-architectures.phphttp://www.arm.com/products/processors/technologies/instruction-set-architectures.php

  • Cortex-M3 osnovne karakteristike Arhitektura ARMv7-M (Harvard)

    Instrukcijski set Thumb® / Thumb-2

    Protočna obrada 3-stepena + spekulacija skoka

    Dhrystone test 1.25 DMIPS/MHz

    MPU Optional 8 region

    Prekidi NMI + 1 to 240 physical interrupts

    Kašnjenje prekida 12 taktnih ciklusa

    Kašnjenje gnježdenja prekida 6 taktnih ciklusa

    Nivoi prioriteta prekida 8 do 256 nivoa prioriteta

    Prekidni kontroler Do 240 prekida

    Redukcija potrošnje Sleep/deep sleep modovi rada

    Bit-operacije Integrisane instrukcije (atomske)

    Posebne instrukcije HW deljenje (2-12 ciklusa) & množenje (32x32) 1 ciklus.

    Podrška za debagovanje Opciono JTAG & Serial-Wire Debug portovi.

    Performanse se odnose na implementaciju na 100MHz u TSMC 0.18 procesu

    http://www.arm.com/products/processors/technologies/instruction-set-architectures.phphttp://www.arm.com/products/processors/technologies/instruction-set-architectures.phphttp://www.arm.com/products/processors/technologies/instruction-set-architectures.phphttp://www.arm.com/products/processors/technologies/instruction-set-architectures.phphttp://www.arm.com/products/processors/technologies/instruction-set-architectures.phphttp://www.arm.com/products/processors/technologies/instruction-set-architectures.phphttp://www.arm.com/products/system-ip/debug-trace/coresight-soc-components/serial-wire-debug.phphttp://www.arm.com/products/system-ip/debug-trace/coresight-soc-components/serial-wire-debug.phphttp://www.arm.com/products/system-ip/debug-trace/coresight-soc-components/serial-wire-debug.php

  • Šta je arhitektura?

  • Cortex-M3 – procesor baziran na ARMv7-M arhitekturi

    RISC procesor Harward arhitektura

  • Cortex-M3 core periferije

    • NVIC (Nested Vector Interrupt Controller) – integrisani prekidni kontroler koji omogućava procesiranje prekida sa malim kašnjenjem

    • WIC (Wakeup Interrupt Controller) – opcioni kontroler zahteva za buđenje iz režima smanjene potrošnje.

    • SYSTICK – sistemski tajmer tj. 24bitni brojač na dole namenjen za podršku generisanju sistemskog prekida za operativne sisteme.

    • MPU (Memory Protection Unit) – opciona jedinica za kontrolu pristupa pojedinim regionima u memoriji

    • ETM (Embedded Trace Macrocell) – modul koji obezbeđuje logovanje izvršavanja instrukcija

    • DWT (Data Watchpoint and Trace Unit) – modul koji implementira data watchpoint

    • FPB (Flash Patch and Breakpoint Unit) – modul koji omogućava preusmeravanje izvršavanja programa iz CODE memorije u neki drugi deo memorije.

  • Magistrale za pristup instrukcijama i

    podacima

    • ICode memorijska magistrala bazirana na AHB-Lite standardu – koristi se za prenos instrukcija iz Code adresnog prostora (0x00000000 do 0x1FFFFFFF).

    • Dcode memorijska magistrala bazirana na AHB-Lite standardu – koristi se za prenos podataka iz Code adresnog prostora (0x00000000 do 0x1FFFFFFF).

    • System memorijska magistrala bazirana na AHB-Lite standardu – koristi se za prenos i instrukcija i podataka iz System adresnog prostora (0x20000000 do 0xDFFFFFFF i 0xE0100000 do 0xFFFFFFFF).

    • PPB magistrala – pristup internim i eksternim privatnim periferijama.

  • AMBA – advanced microcontroller bus architecture

    AHB – advanced high-performance bus APB – advanced peripheral bus

    High Performance ARM processor

    High-bandwidth on-chip RAM

    High Bandwidth External Memory Interface

    DMA Bus Master

    APB Bridge

    Keypad

    UART

    PIO

    Timer AHB

    APB

    Visoke performanse Protočni prenos Burst prenosi Višestruki masteri

    Niska potrošnja Mala brzina Jednostavan interfejs Veza sa Slave periferijama

  • Tipična arhitektura Cortex-M3 mikrokontrolera

  • Registri procesora

    Registri opšte namene:

    – 13 registara opšte namene, r0-r12

    – Pokazivač steka SP (r13)

    – Link registra LR (r14)

    – Programski brojač PC (r15)

    – Registri r0-r7 (niži registri) su dostupni preko svih instrukcija

    – Registri r8-r12 (viši registri) su dostupni preko svih 32-bitnih instrukcija.

    Specijalni registri:

    – Programski statusni registar xPSR

    – Registri za kontrolu prekida PRIMASK, FAULTMASK, BASEPRI

    – Kontrlni registra CONTROL

  • Stanja i režimi rada procesora

    • Dva stanja – thumb (radno stanje) i debug (zaustavljen rad)

    • Dva režima rada procesora – thread i handler režim.

    • Dva nivoa privilegija – privilegovani nivo (OS, prekidi) i neprivilegovani (korisnički softver).

  • Modovi “rada” softvera

    • Privilegovani mod: U njega se automatski

    prelazi ulaskom u prekid. Potpuno su dostupni svi

    sistemski resursi. U ovom modu je moguće

    menjati nivo privilegije.

    • Neprivilegovani mod: Uobičajeni režim običnog

    programa. Nisu dostupni svi sistemski

    resursi. Promena nivoa privilegija

    moguća samo nakon prekida.

    • Za razliku od moda rada procesora, nivo privilegija se menja programski.

  • Privilegovani/neprivilegovani rad • Promena nivoa privilegije je moguća samo u privilegovanom modu rada. • U prekidu je moguće uticati na nivo privilegije prilikom povratka u thread

    režim procesora.

    OS aplikacije

    Jednostavne aplikacije

  • Modovi rada procesora kod najnaprednijih ARM arhitektura

    (ARMv7-A)

    • U različitim modovima rada dozvoljeni su pristupi različitim resursima procesora.

  • SP – Stack pointer

    • Registar koji se fizički realizuje kao dva 32-bitna registra. • Main Stack Pointer (MSP) – ovaj registar je podrazumevani registar

    posle reseta i mogu da ga koriste i korisnički program i prekidne rutine. U slučaju korišćenja operativnog sistema, ovaj registar koriste Kernel i prekidi, kao i neki delovi korisničkih Thread-ova sa posebnim privilegijama.

    • Process Stack Pointer (PSP) – ovaj registar je namenjen za korišćenje od strane neprivilegovanih delova softvera. Na primer, to su korisnički Thread-ovi u Operativnom sistemu. Može da se koristi samo u Thread modu.

    • U zavisnosti od odgovarajućeg konfiguracionog bita u CONTROL registru pristupa se jednom ili drugom od ova dva registra.

    • Jednostavne aplikacije bey OS-a uglavnom korsite samo MSP. • Kod Cortex-M3 familije stek je realizovan kao Full Descending Stack,

    što znači da stek raste prema nižim adresama i pokazuje na poslednju zauzetu adresu. Sve PUSH i POP operacije su 32-bitne.

  • LR – Link Register

    • LR se koristi za čuvanje adrese povratka iz potprograma - na primer kada je skok izvršen BL (Branch with Link) instrukcijom:

  • Statusni registri

    • Application Program Status Register, APSR – Sadrži flegove koje koristi korisnički neprivilegovani aplikativni

    softver

    • Interrupt Program Status Register, IPSR – Sadrži broj izuzetka/prekida koji se trenutno izvršava

    • Execution Program Status Register, EPSR – Sadrži specijalne flegove koji kontrolišu rad procesora. Na

    primer biti ICI/IT se koriste za kontrolu prekidanja uslovnih blokova instrukcija i instrukcija koje rade višestruke Load/store operacije (LDM/STM)

  • Registri za kontrolu prekida

    • Setovanje PM bita u PRIMASK registru maskira sve prekide osim NMI i HardFault prekida.

    • Setovanje FM bita u FAULTMASK registru maskira sve prekide osim NMI prekida.

    • BASEPRI registra definiše nivo prioriteta prekida kojima je dozvoljeno generisanje.

  • Pristup registrima kontrole prekida

    • Iz C-a:

    • Iz Asembler-a:

  • CONTROL registar

    • Control registar poseduje samo dva bita. • Njime se kontroliše korišćenje steka i nivo privilegije softvera. • Control registar može da se menja samo iz privilegovanog softvera.