Programowanie mikroprocesorów jednoukładowych MPU Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 1 / 21
Plan MPU Nakładanie regionów Tło regionów Rejestry MPU Inicjalizacja MPU Dostęp do pamięci regionu Demonstracja systemu MPU Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 2 / 21
Niektóre systemy wbudowane korzystające z wielozadaniowości lub systemy kontroli muszą zapewnić taką pracę zadania, żeby jego działanie nie uszkodziło innego zadania w systemie. Ochrona zasobów systemowych oraz pozostałych zadań od niechcianego dostępu nazywana jest ochroną pamięci, która jest tematem tego wykładu. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 3 / 21
Oddzielne regiony Oddzielna konfiguracja Rdzeń Ilość regionów danych i instrukcji regionów instrukcji i danych ARM740T 8 nie nie ARM940T 16 tak tak ARM946E-S 8 nie tak ARM1026EJ-S 8 nie tak Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 4 / 21
Zasady rządzące regionami Regiony mogą nachodzić na siebie. Regiony mogą posiadać priorytety niezależne od przywilejów przypisanych regionowi. Kiedy regiony nachodzą na siebie, wtedy atrybuty regionu o wyższym priorytecie mają pierwszeństwo przed pozostałymi regionami. Adres startowy regionu musi być wielokrotnością jego rozmiaru. Rozmiar regionu może być dowolną wielokrotnością liczby będącą potęgą liczby dwa w zakresie 4KB 4GB innymi słowy może posiadać wartości: 4KB, 8KB, 16KB,32KB, 64KB,..., 2GB, 4GB. Dostęp do obszaru pamięci poza wyznaczonym regionem wywołuje wyjątek abort. MPU generuje prefetch abort w przypadku instrukcji albo data abort w przypadku danych. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 5 / 21
Nakładanie regionów Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 6 / 21
Tło regionów Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 7 / 21
Rejestry koprocesora MPU Funkcja Pierwszy rejestr Drugie rejestry Kontrola systemu c1 c0 Atrybuty cache regionu c2 c0 Atrybuty bufora zapisu regionu c3 c0 Zezwolenia dostępu regionu c5 c0 Rozmiar i lokalizacja regionu c6 c0 do c7 Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 8 / 21
Inicjalizacja MPU Zdefiniowanie rozmiaru i lokalizacji regionu instrukcji i danych używając CP15:c6. Ustawienie praw dostępu dla każdego regionu przy użyciu CP15:c5. Ustawienia atrybutów pamięci cache buforów zapisu dla każdego regionu przy użyciu CP15:c2 dla cache i CP15:c3 dla buforów zapisu. Aktywacja pamięci cache oraz MPU używając CP15:c1. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 9 / 21
Definicja rozmiaru i lokalizacji regionu Nazwa pola Bity pola Komentarz Adres bazowy [31:12] Adres większy od 4KB powinien być wielokrotnością wartości w [5:1] SBZ [11:6] Wartość która powinna być zerem( should be zero ) N [5:1] Rozmiar powinien być 2 N+1, gdzie 11 N 31 E [0] Aktywizacja regionu, 1 = aktywny, 0 = nieaktywny Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 10 / 21
Rozmiar Wartość dziesiętna Wartość binarna 4 KB 11 01011 8 KB 12 01100 16 KB 13 01101 32 KB 14 01110 64 KB 15 01111 128 KB 16 10000 256 KB 17 10001 512 KB 18 10010 1 MB 19 10011 2 MB 20 10100 4 MB 21 10101 8 MB 22 10110 16 MB 23 10111 32 MB 24 11000 64 MB 25 11001 128 MB 26 11010 Mariusz Naumowicz 256 MB 27Programowanie mikroprocesorów jednoukładowych 11011 2 stycznia 2017 11 / 21
Listing 1: Inicjalizacja 1 MOV r1, #0x300000 ; s e t s t a r t i n g a d d r e s s 2 ORR r1, r1, #0x11 << 1 ; s e t s i z e to 256 KB 3 MCR p15, 0, r1, c6, c3, 0 Listing 2: Odczytywanie rozmiaru i lokalizacji regionu 5 1 MRC p15, 0, r2, c6, c5, 0 ; r2 = base / s i z e Data Region 5 2 MRC p15, 0, r3, c6, c5, 1 ; r3 = base / s i z e I n s t Region 5 Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 12 / 21
Przywileje dostępu I Supervisor Użytkownik Standardowe kodowanie AP Rozszerzone kodowanie Brak dostępu Brak dostępu 00 0000 Odczyt/zapis Brak dostępu 01 0001 Odczyt/zapis Odczyt wyłącznie 10 0010 Odczyt/zapis Odczyt/zapis 11 0011 Nieprzewidywalny Nieprzewidywalny - 0100 Odczyt wyłącznie Brak dostępu - 0101 Odczyt wyłącznie Odczyt wyłącznie - 0110 Nieprzewidywalny Nieprzewidywalny - 0111 Nieprzewidywalny Nieprzewidywalny - 1000 do 1111 Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 13 / 21
Przywileje dostępu II Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 14 / 21
Cache i bufor zapisu w regionach pamięci I Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 15 / 21
Cache i bufor zapisu w regionach pamięci II Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 16 / 21
Cache i bufor zapisu w regionach pamięci III Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 17 / 21
Charakterystyka testowanego sprzętu: rdzeń ARM z MPU Demonstracja systemu MPU I 256 KB fizycznej pamięci zaczynającej się od 0x0 kończącej się na 0x40000 Kilka urządzeń mapowanych jako kilka megabajtów pamięci od 0x10000000 do 0x12000000 Komponenty programowe systemu: Rozmiar oprogramowania jest mniejszy niż 64 KB. Zawarte są w nim: tablica wektorowa, obsługa wyjątków, oraz stos danych do wsparcia wyjątków. Oprogramowanie systemów musi być niedostępne z poziomu trybu użytkownika; tzn. zadanie w trybie użytkownika musi wykorzystać wywołanie systemowe aby uruchomić kod albo mieć dostęp do danych regionu. Istnieje współdzielone oprogramowanie o rozmiarze mniejszym niż 64 KB. Zawiera ono jedynie najczęściej używane biblioteki oraz przestrzeń danych do przesyłania wiadomości między zadaniami użytkownika. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 18 / 21
Demonstracja systemu MPU II Są trzy zadania użytkownika, która kontrolują funkcję w systemie. Te zadania mają rozmiar mniejszy od 32 KB. Kiedy zadanie jest uruchomione, musi być chronione przed dostępem dwóch pozostałych zadań. Funkcja Poziom dostępu Adres początkowy Rozmiar Region Protect memory-mapped system 0x10000000 2 MB 4 peripheral devices Protected system system 0x00000000 4 GB 1 Shared system user 0x00010000 64 KB 2 User task 1 user 0x00020000 32 KB 3 User task 2 user 0x00028000 32 KB 3 User task 3 user 0x00030000 32 KB 3 Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 19 / 21
Demonstracja systemu MPU III Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 20 / 21
References Andrew Sloss, Dominic Symes, and Chris Wright. ARM System Developer s Guide: Designing and Optimizing System Software. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2004. Mariusz Naumowicz Programowanie mikroprocesorów jednoukładowych 2 stycznia 2017 21 / 21