Download presentation
Presentation is loading. Please wait.
Published byBento Sequeira de Figueiredo Modified over 6 years ago
1
32-bitni mikrokontroleri i primena - MS1BMP
2016/2017 Nenad Jovičić
2
Organizacija kursa Predavač: Web: tnt.etf.rs/~ms1bmp
doc. Dr Nenad Jovičić Web: tnt.etf.rs/~ms1bmp Projekat 40% ocene Ispit (60% ocene): Demonstracija projekta Diskusija o projektu Diskusija o Cortex-u
3
Timeline U ovom kursu ćemo se baviti kako praktičnom realizacijom projekata koji u sebi sadrže Cortex mikrokontroler, tako i specifičnim teorijskim aspektima ove tehnologije. Gruba struktur kursa: Uvod u Cortex tehnologije. Pisanje softvera po CMSIS standardu. Detaljno proučavanje hardverskih sklopova STM Cortex mikrokontrolera. Specifičnosti arhitekture Cortex mikrokontrolera. Napredne tehnike debagovanja Cortex u DSP aplikacijama RTOS na Cortex platformi
4
Projekat Implementacija jednostavnog hardversko-softverskog sistema/uređaja na Cortex-M3 ili Cortex-M4 razvojnoj platformi. Projekat ne treba da bude obiman po broju korišćenih periferija, ali treba da bude detaljan u ispitivanju mogućnosti izabranih periferija. Ide se u dubinu a ne u širinu.
5
Projekat - rokovi danas – Prikupljanje predloga projekata. Izveštaj 1. - Idejno rešenje. – Definisanje spiska potrebnih komponenti. Izveštaj 2. - Dizajn hardvera na nivou električne šeme, i dostavljanje spiska komponenti. – Nabavka komponenti. – Rad na prototipu. Izveštaj 3. – Prototip hardvera i softvera. Minimalna konfiguracija koja potvrđuje izvodljivost projekta. – Finalizacija projekta. Ispitni rok januar 2016 – Finalni izveštaj.
6
Razvojni sistemi STM32VLDiscovery STM32F4Discovery
7
Projekti Primeri projekata na stranici:
8
Komponente Preferirani dobavljač modula je kompanija mikroelektronika. . Najzgodnije za upotrebu su Click pločice. Moguća je u posebnim slučajevima i nabavka nekih specijalnih komponenti iz stranih kataloga, kao na primer iz .
9
Komponente Povezivanje može da bude izvedeno pomoću kratkospojnika, ali može da se realizuje i preko namenski napravljene/izlemljene matične ploče. Nabavka standardnih elektronskih/električnih komponenti se vrši u kelco-u ili mikroprincu. ,
10
Literatura - knjige The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors, Joseph Yiu, Elsevier, 2013. The Designer's Guide to the Cortex-M Processor Family, Trevor Martin, Elsevier, 2013.
11
Literatura – ARM-ova dokumentacija
ARMv7-M Architecture Reference Manual (ARM DDI 0403) ARM Cortex-M3 Integration and Implementation Manual (ARM DII 0240) ARM AMBA® 3 AHB-Lite Protocol (v1.0) (ARM IHI 0033) ARM AMBA™ 3 APB Protocol Specification (ARM IHI 0024) AMBA® 3 ATB Protocol Specification (ARM IHI 0032) ARM CoreSight™ Components Technical Reference Manual (ARM DDI 0314) ARM Debug Interface v5 Architecture Specification (ARM IHI 0031) ARM Embedded Trace Macrocell Architecture Specification (ARM IHI 0014). IEEE Standard Test Access Port and Boundary-Scan Architecture (JTAG). ...
12
Razvojni sistem STM32VLDISCOVERY
13
STM32F100RB mikrokontroler
Core: ARM® 32-bit Cortex® -M3 CPU 24 MHz maximum frequency,1.25 DMIPS/MHz (Dhrystone 2.1) performance Memories 16 to 128 Kbytes of Flash memory, 4 to 8 Kbytes of SRAM Debug mode Serial wire debug (SWD) and JTAG interfaces DMA 7-channel DMA controller Peripherals supported: timers, ADC, SPIs, I2 Cs, USARTs and DACs 1 × 12-bit, 1.2 μs A/D converter (up to 16 channels) Temperature sensor 2 × 12-bit D/A converters Up to 80 fast I/O ports, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant Up to 12 timers Up to three 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter 16-bit, 6-channel advanced-control timer: up to 6 channels for PWM output, dead time generation and emergency stop One 16-bit timer, Two 16-bit timers, 2 watchdog timers (Independent and Window) SysTick timer: 24-bit downcounter Two 16-bit basic timers to drive the DAC Up to 8 communications interfaces Up to two I2 C interfaces (SMBus/PMBus) Up to 3 USARTs (ISO 7816 interface, LIN, IrDA capability, modem control) Up to 2 SPIs (12 Mbit/s) Consumer electronics control (CEC) interface
14
STM32F100RB mikrokontroler
Core: ARM® 32-bit Cortex® -M3 CPU 24 MHz maximum frequency,1.25 DMIPS/MHz (Dhrystone 2.1) performance Memories 16 to 128 Kbytes of Flash memory, 4 to 8 Kbytes of SRAM Debug mode Serial wire debug (SWD) and JTAG interfaces DMA 7-channel DMA controller Peripherals supported: timers, ADC, SPIs, I2 Cs, USARTs and DACs 1 × 12-bit, 1.2 μs A/D converter (up to 16 channels) Temperature sensor 2 × 12-bit D/A converters Up to 80 fast I/O ports, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant Up to 12 timers Up to three 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter 16-bit, 6-channel advanced-control timer: up to 6 channels for PWM output, dead time generation and emergency stop One 16-bit timer, Two 16-bit timers, 2 watchdog timers (Independent and Window) SysTick timer: 24-bit downcounter Two 16-bit basic timers to drive the DAC Up to 8 communications interfaces Up to two I2 C interfaces (SMBus/PMBus) Up to 3 USARTs (ISO 7816 interface, LIN, IrDA capability, modem control) Up to 2 SPIs (12 Mbit/s) Consumer electronics control (CEC) interface
15
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.
16
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.
17
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.
18
CMSIS - struktura
19
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.
20
CMSIS-DAP Debug-ovanje preko nekih “jegfitnih” debuggera.
21
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/…….
22
STM32CubeFx Firmware Package
23
HAL postaje komplikovan
Postoji i takozvani LL (low layer) set drajvera, ali samo za neke nove serije mikrokontrolera.
24
STM32CubeF1 U okviru workspace-a STM32CubeF1 foldera nalazi se projekat GPIO-IOToggle.
25
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.
26
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.
27
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
28
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!
29
Fajlovi koje menja korisnik
stm32f1xx_hal_conf.h main_X.c stm32f10x_It.c stm32f10x_It.h
30
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.
31
Opcije projekta Konretan mikrokontroler se definiše preko globalnog simbola što utiče na deklaracije u glavnom heder fajlu
32
Opcije projekta Korišćenje periferijskih biblioteka se kontroliše globalnim simbolom koji povezuje konfiguracione heder fajl.
33
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!
34
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
35
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.
36
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 Pitanje: Gde je definisan simbol 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.
37
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.
38
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
39
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
40
Tipičan main() Ovo je praktično inicijalizacija Cortex Periferija, ali ne i svih korišćenih periferija mikrokontrolera!
41
Tipičan main() Definiše korisnik
42
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()
43
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);
44
Primer Inicijalizacije
Ako je potrebno deinicijalizovati tj. Isključiti periferiju poziva se fun kcija HAL_PPP_DeInit()
45
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.
46
Kako započeti sopstveni HAL projekat?
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.