Produkty Novinky Články Návody Kontakty

Provoz procesoru

Po resetu je procesor nastaven do provozního režimu Thread, nastaven je hlavní zásobník MSP, registr LR je nastaven na hodnotu 0xFFFFFFFF, do registru SP je načten obsah paměti na adrese 0x00000000 a do registru PC obsah paměti na adrese 0x00000004.
Procesor po resetu začíná provádět kód od adresy uložené v paměti na adrese 0x00000004 a ukazatel vrcholu zásobníku obsahuje adresu, která byla při resetu uložena v paměti na adrese 0x00000000. Adresa začátku provádění kódu, uložená v paměti na adrese 0x00000004, musí mít nastavený nejméně významný bit na jedničku, jinak dojde k pokusu o přepnutí do stavu ARM a tím k vygenerování chybové výjimky.
Cortex-M3 má dva provozní režimy (operation mode) a dvě úrovně přístupových práv. Přehledně to zobrazuje tabulka 1.4.

Režimy provozu

Práva
Mód Privilegovaná Uživatelská
Handler CONTROL[1] = 0 zakázáno
Thread CONTROL[0] = 0 CONTROL[0] = 1
Tabulka 1.4 Provozní režimy
Procesor může pracovat ve dvou provozních režimech, buď v režimu vlákna (procesu) nebo v režimu handleru (ovladače).
  • Thread mode (režim vlákna) je určen pro provádění normálního kódu programu. Po resetu je procesor nastaven do režimu vlákna a má privilegovaná přístupová práva. V režimu vlákna může být používán hlavní zásobník MSP nebo zásobník procesu PSP. Volbu zásobníku řídí nastavení bitu CONTROL[1].
  • Handler mode (režim handleru) je určen pro kód obsluhy výjimek a přerušení. Do režimu handleru je procesor přepnut při vstupu do rutiny obsluhy přerušení a po jejím ukončení je přepnut zpět do režimu vlákna. V režimu handleru jsou přístupová práva prováděného kódu vždy privilegovaná a je používán hlavní zásobník MSP.
obrázek CM3-operating-mode-status-diagram
Obrázek 1.1 Stavový diagram režimů provozu
Obrázek 1.1 ukazuje stavový diagram přechodů mezi jednotlivými provozními režimy.

Práva přístupu

Procesor disponuje dvěma úrovněmi přístupových práv:
  • Privileged - kód má přístup ke všem zdrojům procesoru a může používat všechny instrukce
  • User - práva prováděného kódu jsou omezena
Kód, který běží s přístupovými právy User úrovně, má tato omezení
  • nemůže použít instrukce CPS
  • instrukce MSR, MRS může použít omezeně
  • nemá přístup k systémovému timeru (SysTick) a k registrům řadiče přerušení (NVIC)
  • může mít omezený přístup k některým oblastem paměti a k některým periferiím
Program, který je prováděn s privilegovanými přístupovými právy může přepnout přistupová práva na uživatelskou úroveň nastavením bitu CONTROL[0] na hodnotu 1. Do registru CONTROL může zapisovat pouze privilegovaný kód a tak je změna z uživatelských práv zpět na privilegovaná možná pouze vyvoláním výjimky a přechodem do handler módu. K tomu lze použít instrukci SVC (Supervisor call).
U jednoduchých aplikací většinou není třeba řešit omezení práv prováděného kódu a program je prováděn pouze s privilegovanými právy. Pro složitější systémy ale může být výhodné práva některých částí kódu omezit. Pokus o přístup ke zdrojům procesoru, které jsou pro neprivilegovaným kód nepřístupné (například registry maskování přerušení nebo CONTROL registr), vyústí v generování chybové výjimky.

Paměťový prostor

Od adresy Do adresy Užití
0x00000000 0x1FFFFFFF Code
0x20000000 0x3FFFFFFF SRAM
0x40000000 0x5FFFFFFF Peripherals
0x60000000 0x9FFFFFFF External RAM
0xA0000000 0xDFFFFFFF External Peripherals
0xE0000000 0xFFFFFFFF System Level
Tabulka 1.5 Paměťový prostor
Procesor má pevně definovanou mapu paměti. To umožňuje, aby byly vestavěné periferie jednoduše přístupné jako paměťově mapované. Většina prvků procesoru je tedy přímo přístupná z programovacího jazyka C. Paměťový prostor 4 GB je rozdělen do oblastí, které zobrazuje tabulka 1.5. Oblast paměti System Level obsahuje registry řadiče přerušení a ladícího subsystému. Tyto periferie mají pevně stanovené adresy a díky tomu je portace aplikací mezi různými mikrokontroléry jednodušší .