Download presentation
Presentation is loading. Please wait.
1
32-bitni mikrokontroleri i primena - MS1BMP 2. deo
2015 Nenad Jovičić
2
Tipična arhitektura Cortex-M3 mikrokontrolera
3
Cortex-M3/M4 – procesori bazirani na ARMv7-M arhitekturi
RISC procesor Harward arhitektura
4
Šta je arhitektura?
5
Cortex-M 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.
6
Magistrale za pristup instrukcijama i podacima
ICode memorijska magistrala bazirana na AHB-Lite standardu – koristi se za prenos instrukcija iz Code adresnog prostora (0x do 0x1FFFFFFF). Dcode memorijska magistrala bazirana na AHB-Lite standardu – koristi se za prenos podataka iz Code adresnog prostora (0x do 0x1FFFFFFF). System memorijska magistrala bazirana na AHB-Lite standardu – koristi se za prenos i instrukcija i podataka iz System adresnog prostora (0x do 0xDFFFFFFF i 0xE do 0xFFFFFFFF). PPB magistrala – pristup internim i eksternim privatnim periferijama.
7
Mapa adresnog prostora
8
NVIC – Nested Vector Interrupt Controller
9
NVIC – Nested Vector Interrupt Controller
NVIC podržava do 240 prekida sa 256 nivoa prioriteta koji se mogu dinamički menjati. NVIC implementira mehanizme za malo vreme kašnjenja servisiranja prekida. Puni pristup registrima NVIC je moguć iz privilegovanog moda izvršavanja u bilo kom formatu (bajt, polureč, reč). Registri NVIC su sistemski registri u little endian formatu zapisa koji sadrže informacije o broju prekidnih linija, podešavanje sistemskog intervala, dozvoli prekida, baferisanju prekida (pending, pre-empted), prioritetima prekida, informacije o broju i verziji CPU, procesiranju izuzetaka (prioritetima, dozvoli), adresi početka VT, kontroli stanja CPU sa smanjenom potrošnjom. Omogućeno gneždenje prekida
10
IVT – Interrupt Vector Table
Mogućnost remapiranja tabele vektora preko podešavanja registra ofseta tabele Adresa početka tabele poravnata na granicu 1024 bajta. Prekidi periferijskih modula Izuzeci
11
Inicijalizacija procesora
Inicijalizacija SP registra ADR: 0x POR: SPmem(0x ) Tabela prekidnih vektora (IVT) Počinje od adrese 0x Sadrži 32-bitne adrese ISR Ulaz #1: reset vektor ADR: 0x POR: PCmem(0x ) Izvršavanje programskog koda
12
Razvojni sistem STM32VLDISCOVERY
13
Programiranje i debagovanje
Kratkosponicima na konektoru CN3 se određuje da li je ST-link povezan na ovu pločicu ili neki spoljašnji mikrokontroler. Više podataka o razvojnom sistemu se može naći u dokumentu UM0919.
14
Memorija i butovanje programa
Neposredno pre reseta na osnovu stanja na pinovima BOOT1 i BOOT2 određuje se zona iz koje se startuje izvršavanje programa.
15
CMSIS - Cortex Microcontroller Software Interface Standard
Razvijen u težnji da se standardizuje pristup hervderskim resursima Cortex mikrokontrolera i obezbedi portabilnost softvera među različitim proizvođačima. CMSIS omogućava razvoj ponovo iskoristljivih (reusable) komponenti softvera za sisteme bazirane na ARM Cortex-M. Sistemi bazirani na ARM Cortex-M tehnologiji imaju veliki broj zajedničkih komponenti hardvera pa i Hardware Abstraction Layer (HAL) može biti veoma sličan.
16
CMSIS - struktura
17
CMSIS - komponente CMSIS-Core (Cortex-M processor support) –
CMSIS-Driver – podrška za middleware komponente, tj. Drajvere poizvođača CMSIS-DSP library – od 2010. CMSIS-SVD e the CMSIS System View Description – set XML fajlova koje kreiraju proizvođači mikrokontrolera i preko kojih na stadardizovan način opisuju hardver. Ovo dalje mogu da koriste recimo proizvođači mikrokontrolera. CMSIS-RTOS – univerzalna podrška za razne proizvođače operativnih sistema CMSIS-DAP (Debug Access Port) – set funkcija koje obezbeđuju debug interfejs preko USB ili JTAG/Serial veze. Namenjen za podršku razvoju jeftinih hardveraskih debug interfejsa. CMSIS-Pack – primeri, template-ovi i slični kodovi koji pomažu pri razvoju aplikacija.
18
Za početak mi treba mala pomoć
Napraviti folder D:/MS1MBP/ Download-ovati sledeći zip fajl: Raspakovati ga u taj folder tako da struktura bude sledeća: D:/MS1MBP/ STM32Cube_FW_F1_V1.2.0/…….
19
STM32CubeFx Firmware Package
20
STM32CubeF1 U okviru workspace-a STM32CubeF1 foldera nalazi se projekat GPIO-IOToggle.
21
Prvi projekat U glavnom programu se u beskonačnoj petlji neizmenično uključuju i isključuju diode LED3 i LED4 sa čekanjem implementiranim korišćenjem dummy petlje.
22
Šta ARM generalno proporučuje
23
STM CUBE CMSIS Struktura projekta
Startup fajl – definiše ga proizvođač kompajlera BSP Osnovni konfiguracioni heder fajl za odabranu familiju mikrokontrolera Cortex-M3 prekidi i izuzetci Peripheral header file Ovaj fajl prilagodjava korisnik NVIC i SysTick drivers Low-level & API funkcije koje čine biblioteku periferijskih drajvera.
24
CMSIS - fajlovi Fajlovi koje definiše isključivo ARM:
core_cm3.c - Core Peripheral Access Layer Source File Ovaj fajl sadži implementaciju CMSIS intrinsic funkcija koje su za razliku od intrinsic funkcija u oviru C kompajlera nezavisne od vrste kompajlera core_cm3.h - Core Peripheral Access Layer Header File Ovaj fajl sadrži definicije registara periferija jezgra i funkcije za pristup tim registrima, kao i deklaraciju intrinsic funkcija CMSIS layer Device Peripheral Access Layer čine sledeći fajlovi: system_stm32f1xx.c - Device Peripheral Access Layer Source File Ovaj fajl sadži definiciju funkcije SystemInit koja vrši inicijalizaciju dela mikrokontrolera zaduženog za generisanje klok signala i koja se poziva u okviru startup koda system_stm32f1xx.h - Device Peripheral Access Layer Header File Ovaj fajl sadži deklaraciju funkcije SystemInit stm32f1xx.h Device Peripheral Access Layer Header File Ovaj fajl sadrži definiciju registara periferija mikrokontrolera kao i definiciju bitova u okviru svakog definisanog registra, bazne adrese registara i numeraciju vektora prekida
25
CMSIS - fajlovi Stm32f1xx_hal_conf.h Device Peripheral Access Layer Configuration Header File Ovaj fajl sadrži kontroliše korišćenje periferijskih biblioteka koje definiše isključivo proizvođač mikrokontrolera. Stm32f1xx_hal_cortex.c Stm32f1xx_hal_cortex.h Ovi fajlovi definišu specifičnosti kontrole prekida, sistemskog takta i reset-a. Formu propisuje ARM, ali ga neznatno redefiniše svaki proizvođač. stm32f1xx_hal_PPP.x Ovi fajlovi pšredstavljaju drajvere za odgovarajuće periferije i razlikuju se od proizvođača do proizvođača. Specifičnosti različitih razvojnih okruženja se definišu sledećim fajlom: startup_stm32f100xb.s - STM32F100xB Devices vector table for MDK-ARM toolchain. Ovaj fajl sadrži vektor tabelu i Reset_Handler ISR u kojoj se vrši setovanje SP, inicijalizacija dela mikrokontrolera zaduženog za generisanje klok signala i pozicioniranje PC na labelu __iar_program_start gde se nalazi kod za inicijalizaciju promenljivih, nakon čega se poziva main funkcija Napomena: Ovaj fajl se po pravilu razlikuje od okruženja do okruženja!
26
Fajlovi koje menja korisnik
stm32f1xx_hal_conf.h main_X.c stm32f10x_It.c stm32f10x_It.h
27
Korišćenje CMSIS-a Počev od verzije KEIL 5 CMSIS Core je sastavni deo kompjalera i uključuje se kroz opcije projekta. Iz tog razloga unutar projektnog direktorijuma nema fajlova core_3m.c i core_3m.h. Na sličan način vrši se i kontrola korišćenja DSP i RTOS biblioteka.
28
Opcije projekta Konretan mikrokontroler se definiše preko globalnog simbola što utiče na deklaracije u glavnom heder fajlu
29
Opcije projekta Korišćenje periferijskih biblioteka se kontroliše globalnim simbolom koji povezuje konfiguracione heder fajl.
30
Periferijske biblioteke
U konfiguracionom fajlu se uključuju biblioteke vendor-specific periferija koje obezbeđuje proizvođač mikrokontrolera. U tim hederima se nalaze deklaracije registara, ali i prototipovi specifičnih funkcija za pristup toj periferiji. Korišćenje funkcija zahteva uključivanje i odgovarajućih source fajlova u projekat!
31
Provera parametara inicijalizacije
Poželjno je obezbediti kontrolu inicijalizacije periferija i proizvođači to čine preko funkcija za proveru parametara assert_param() Parametri funkcije su logički izrazi definisani obično u heder fajlovima odgovarajuće periferijske biblioteke
32
Kontrola provere parametara
Funkcije i logički uslovi za proveru parametara su deo proizvođačkih biblioteka i kao takvi se ne menjaju, a globalna kontrola provere se vrši definisanjem globalnog simbola USE_FULL_ASSERT Na kraju korisnik ima mogućnost da u definiše sopstvenu funkciju koja se poziva u slučaju da neki parametar nije prošao runtime proveru.
33
Opcije projekta - debug
Programming Algorithm. Ovaj algoritam definiše proizvođač kompajlera (KEIL) Bez ovog algoritma neće biti moguće spustiti program na uC.
34
Generisanje takta Sistemski takt: Dodatni taktovi:
Klok HSI oscillatora Klok HSE oscillatora Klok PLL - a Dodatni taktovi: 40kHz low speed interni RC oscilator koji se može koristiti za WDT ili RTC 32.768Khz low speed eksterni kristal koji se može koristitii za RTC
35
SystemInit() funkcija
Reset vektor poziva SystemInit() funkciju za psnovu inicijalizaciju, a potom i korisničku main() funkciju Kroz SystemInit() funkciju proizvođač obezbeđuje osnovnu konfiguraciju Resetc Clock Control modula
36
Tipičan main() Ovo je praktično inicijalizacija Cortex Periferija
37
Tipičan main() Definiše korisnik
38
Inicijalizacija periferija I
Pre konfigurisanja bilo koje periferije potrebno je dovesti joj takt korišćenjem odgovarajuće funkcije iz RCC drajvera: __HAL_RCC_PPP_CLK_ENABLE()
39
Inicijalizacija periferija II
Inicijalizacija periferija se uvek izvododi korišćenjem struktura karakterističnih za te periferije: PPP_InitStucture.memberX = valX; PPP_InitStructure.memberY = valY; HAL_PPP_Init(PPPx, &PPP_InitStructure);
40
Primer Inicijalizacije
Ako je potrebno deinicijalizovati tk. Isključiti periferiju poziva se fun kcija HAL_PPP_DeInit()
41
CMSIS Struktura - rezime
Startup fajl – definiše ga proizvođač kompajlera BSP Osnovni konfiguracioni heder fajl za odabranu familiju mikrokontrolera Cortex-M3 prekidi i izuzetci Peripheral header file Ovaj fajl prilagodjava korisnik NVIC i SysTick drivers Low-level & API funkcije koje čine biblioteku periferijskih drajvera.
42
Kako započeti sopstveni projekat?
43
STM Cortex-M3 - GPIO - Portovi
5V tolerantni ulazi Kapacitet po pinu 25mA 18 MHz učestanost toglovanja Konfigurabilna izlazna brzina do 50 MHz Do 16 analognih ulaza Alternativne funkcije (USARTx, TIMx, I2Cx, SPIx,…) Svaki pin može da generiše spoljašnji prekid Jedan pin može da se koristi za buđenje iz STANDBY moda (PA.00) Jedan pin može da bude Tamper Pin (za watcdog) (PC.13) Pinovi grupisani u 5 16-bitnih portova (GPIOA..GPIOE) Mehanizam zaključavanja konfiguracije
44
GPIO Konfiguracije I/O pin To On-chip Peripherals Input Data Register
Analog Input Configuration Mode CNF1 CNF0 MOD1 MOD0 To On-chip Peripherals ON/OFF Pull - UP Pull - Down VDD VSS Analog Input 00 Alternate Function Input Input Floating (Reset State) 1 ON OFF Input Pull-Up(2) 1 Read Input Data Register VDD or VDD_FT(1) Input Pull-Down(2) TTL Schmitt Trigger Output Push-Pull 01: 10 MHz 10: 2 MHz 11: 50 MHz Input Driver I/O pin Output Open-Drain 1 VDD VSS Output Driver AF Push-Pull 1 Write Bit Set/Reset Registers OUTPUT CONTROL Output Data Register VSS AF Open-Drain 1 Push-Pull or Open Drain Read / Write or disabled From On-chip Peripherals (2) Input Pull-Up and Input Pull-Down are differentiated by the PxODR.y bit field. Alternate Function Output
45
Izlazna konfiguracija
U Open-Drain modu: “0” u Output Data registru aktivira N-MOS transistor, dok “1” u Output Data registru ostavlja pin u stanju visoke impedanse(P-MOS transistor se nikada ne aktivira). U Push-pull modu: : “0” u Output Data registru aktivira N-MOS transistor, dok “1” u Output Data registru aktivira P-MOS tranzistor. Schmitt Trigger kolo je uključeno Interni pull-up i pull-down otpornici su isključeni Stanje koje je na pinu se sempluje i upisuje u Input Data registar na svaki APB2 klok Čitanjem Input Data registra očitava se stanje pina kada je konfigurisan u Open-Drain modu Čitanjem Input Data registra očitava se stanje pina kada je konfigurisan u Push-pull modu
46
Konfiguracija alternativne funkcije
Izlazni dajver je u Open Drain ili Push-Pull konfiguraciji Schmitt Trigger ulaz je aktiviran Pull-up i pull-down otpornici su deaktivirani Podatak na pinu se sempluje u ulazni registar na svaku ivicu APB2 takta Ako je izlaz u open drain modu očitavanje ulaznog registra daje stanje na pinu Čitanje izlaznog registra u Push-Pull modu daje poslednje upisano stanje u registar
47
Konfiguracija analognog ulaza
Izlazni bafer je isključen (otkačen) Schmitt Trigger kolo je isključeno zbog smanjenja potrošnje. Pull-up i pull-down otpornici su isključeni Očitavanje ulaznog registra uvek daje “0”
48
GPIO registri Dva 32-bitna konfiguraciona registra (GPIOx_CRL, GPIOx_CRH) Dva 32-bitna data registra (GPIOx_IDR, GPIOx_ODR) Jedan 32-bitni set/reset registar (GPIOx_BSRR) Jedan 16-bitni reset registar (GPIOx_BRR) Jedan 32-bitni locking registar (GPIOx_LCKR)
49
Port configuration register low (GPIOx_CRL) (x=A..G)
50
Port configuration register high (GPIOx_CRH) (x=A..G)
51
Port input data register (GPIOx_IDR) (x=A..G)
Port output data register (GPIOx_ODR) (x=A..G)
52
Port bit set/reset register (GPIOx_BSRR) (x=A..G)
53
Port bit reset register (GPIOx_BRR) (x=A..G)
54
Port configuration lock register (GPIOx_LCKR) (x=A..G)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.