Presentation is loading. Please wait.

Presentation is loading. Please wait.

32-bitni mikrokontroleri i primena - MS1BMP

Similar presentations


Presentation on theme: "32-bitni mikrokontroleri i primena - MS1BMP"— Presentation transcript:

1 32-bitni mikrokontroleri i primena - MS1BMP
2017/2018 Nenad Jovičić

2 Režimi rada procesora Nakon reseta nema razlike između Thread i handler režima. Moguće je slobodno pristupati svim resursima procesora i celog sistema.

3 Ulazak u neprivilegovani Thread režim
Preko kontrolnog registra je moguće ograničiti mogućnosti softvera koji se izvršava u Thread režimu. To se vrši preko kontrolnog registra. Control registar poseduje samo dva bita (3 ako postoji FPU). Njime se kontroliše korišćenje steka i nivo privilegije softvera. Control registar može da se menja samo iz privilegovanog softvera. Bit 2 (FPCA) govori da li se FPU koristi ili ne.

4 Neprivilegovani režim
Nije dozvoljeno raditi sledeće stvari: Pristupati kontrolnom registru Od specijalnih registara moguće je pristupati samo APSR registru. Nije moguće uticati ni na maske za prekide u IPSR registru. Nije dozvoljeno pristupati NVIC-u, Systick-u, ni System Control Block-u. Drugim rečima moguće je samo izvršavati korisnički kod bilo da je u glavnom programu ili prekidnim rutinama.

5 Korišćenje steka Privilegovani Thread koristi MSP.
Neprivilegovani Thread koristi PSP. Potencijalni problem: PSP nije inicijalizovan i korisnik mora da ga inicijalizuje na pogodnu vrednost. Šta je pogodno?

6 Pristup registrima Postoje posebne intrinsic funkcije kojima je moguce pristupati registrima procesora.

7 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

8 Jednostavne OS aplikacije
Softver je praktično uvek privilegovan, ali se deo softvera koji je Kernel OS-a izvršava na MSP steku, a deo softvera koji je korisnički na PSP steku.

9 Vežba 5.1 Operating Modes MSP se inicijalizuje korišćenjem prva 4 bajta IVT tabele Prelazak u neprivilegovani režim

10 Korišćenje PSP

11 Modifikacija? Pokušati upis u CONTROL registar nakon prebacivanja u neprivielgovani režim. Šta se dešava?

12 Šta se dešava u prekidu? U prekidu se uvek koristi MSP

13 SVC – Supervisor Call Koristi se kada korisnički neprivilegovani softver ipak ima potrebu da izvrši određene operacije koje zahtevaju sve privilegije. SVC je nešto kao softverski prekid koji poziva određenu funkciju.

14 Vežba 5.2 Supervisor Call

15 Poziv funkcije kroz prekid

16 Poziv funkcije kroz prekid
Ako je potrebno da korisnički neprivilegovan softver implementira neku funkcionalnost koja traži privilegije, SVC-om se efektivno generiše prekid unutar koga se poziva određena funkcija.

17 Cortex-M4/M7 FPU IEEE 754 standard
Broj ciklusa potrebnih za izvršavanje osnovnih aritmetičkih operacija. tzv. Skalarani registri: 32 single precision ili 16 double precision registra. Svi registri su memorijski mapirani. Ali u njima je moguce cuvati i integere. Konverzija integer/float i obrnuto se vrši za samo jedan ciklus...!

18 FPU FPU je sastavni deo procesora i praktično se izvršavanje FPU instrukcija odvija paralelno izvršavanju klasičnih instrukcija. Po default-u FPU je disable-ovan. Enable-uje se setovanjem odgovarajućih bita u Co processor Access Control Register (CPARC) registru. It is necessary to use the data barrier instruction to ensure that the write is made before the code continues. The instruction barrier command is also used to ensure that the pipeline is flushed before the code continues.

19 FPU i prekidi Sa aktiviranim FPU kontekst koji se automatski čuva na steku se povećava sa 32 na 100 bajtova. Da ovo ne bi povećalo latency uvodi se tzv lazy stacking procedura.

20 Vežba EX 8.1 Floating Point Unit
Proveriti u opcijama projekta da li je uključeno korišćenje FPU.

21 Opcije projekta

22 Testiranje sa i bez FPU

23 Testiranje sa i bez FPU C nema operator za koren pa se forsiranje hardversko korenovanja vrši pozivom intrinsic funkcije __sqrtf(e) sqrt(e) je standardna math.h funkcija za korenovanje koja se implementira preko ostalih operacija

24 SIMD instrukcije Aritmetičke SIMD instrukcije sa modifikatorima

25 SIMD Sabiranje i oduzimanje sa “polovljenjem” rezultata
Množenje sa sabiranjem i oduzimanjem

26 SIMD - instrukcije za podršku

27 Vežba EX 8.2 SIMD Uporediti vreme izvršavanja za operaciju nad nizovima sa i bez SIMD instrukcije

28 DSP algoritmi na Cortex M4
Tipičan FIR filter

29 Vežba 8.5 CMSIS-DSP FIR Uključivanje CMSIS DSP biblioteke

30 Logic Analyzer BLOCK_SIZE postavimo na 1.
Uvodimo globalne promenljive koje mogu da se prikazuju u Logic Analyzer-u

31 Logic Analyzer


Download ppt "32-bitni mikrokontroleri i primena - MS1BMP"

Similar presentations


Ads by Google